This file contains client patches I've made for various versions of PSO.

Places to find more codes/patches:
- GC-Forever: https://www.gc-forever.com/forums/viewtopic.php?t=2050 (3OE0, 3OE2)
- GC-Forever: https://www.gc-forever.com/forums/viewtopic.php?t=2049 (3OP0)
- BB Patch Project: https://github.com/Solybum/Blue-Burst-Patch-Project (59NL)

Version codes (from README.md):
  1OJ1: PSO DC Network Trial Edition
  1OJ2: PSO DC 11/2000 prototype
  1OJ3: PSO DC 12/2000 prototype
  1OJ4: PSO DC 01/2001 prototype
  1OJF: PSO DC v1 JP
  1OEF: PSO DC v1 US
  1OPF: PSO DC v1 EU
  2OJ5: PSO DC 08/2001 prototype
  2OJF: PSO DC v2 JP
  2OEF: PSO DC v2 US
  2OPF: PSO DC v2 EU
  2OJW: PSO PC (v2) 04/2002
  2OJZ: PSO PC (v2) 02/2003
  3OJT: PSO GC Trial Edition
  3OJ2: PSO GC v1.2 JP
  3OJ3: PSO GC v1.3 JP
  3OJ4: PSO GC v1.4 (Plus) JP
  3OJ5: PSO GC v1.5 (Plus) JP
  3OE0: PSO GC v1.0 US
  3OE1: PSO GC v1.1 US
  3OE2: PSO GC v1.2 (Plus) US
  3OP0: PSO GC v1.0 EU
  3SJT: PSO GC Ep3 Trial Edition
  3SJ0: PSO GC Ep3 JP
  3SE0: PSO GC Ep3 US
  3SP0: PSO GC Ep3 EU
  4OJB: PSO Xbox Beta
  4OJD: PSO Xbox JP Disc
  4OJU: PSO Xbox JP TU
  4OED: PSO Xbox US Disc
  4OEU: PSO Xbox US TU
  4OPD: PSO Xbox EU Disc
  4OPU: PSO Xbox EU TU
  59NJ: PSO BB JP 1.25.11
  59NL: PSO BB JP 1.25.13 (including the Tethealla client)

The menu code
This code makes all disabled items in menus selectable, which allows you to e.g. use items you can't normally use
3OJ2 => 04263B80 48000028
        042AC548 48000020
3OJ3 => 04264758 48000028
        042AD3F0 48000020
3OJ4 => 042657B4 48000028
        042AE51C 48000020
3OJ5 => 04265554 48000028
        042AE2D0 48000020
3OE0 => 04264458 48000028
        042ACF04 48000020
3OE1 => 04264458 48000028
        042ACF48 48000020
3OE2 => 04265818 48000028
        042AE484 48000020
3OP0 => 04265060 48000028
        042ADC18 48000020
3SJT => 0417ADD0 48000028
3SJ0 => 0416B5A4 48000028
3SE0 => 0416B458 48000028
3SP0 => 0416B904 48000028

Disable serial number validation (untested)
2OEF => 8C1E743E 01E0
        8C2670B6 01E0

Disable item equip restrictions ("God of equip")
3OE1 => 0410521C 38000005
59NL => 005C9F31 E9A7000000

All rareable enemies are rare
3OE1 => 040AC944 60000000 // Hildeblue
        040C1B70 60000000 // Rappies
        040C3FC8 60000000 // Nar Lily
        040EB050 48000010 // Pouilly Slime

Unlock all songs in BGM test
Note: sadly, there are no secret/unused ones
3OJ2 => 04367A68 38600001
        04367A6C 4E800020
3OJ3 => 04368ED8 38600001
        04368EDC 4E800020
3OJ4 => 0436A434 38600001
        0436A438 4E800020
3OJ5 => 0436A1E8 38600001
        0436A1EC 4E800020
3OE0 => 0436891C 38600001
        04368920 4E800020
3OE1 => 04368960 38600001
        04368964 4E800020
3OE2 => 0436A5B4 38600001
        0436A5B8 4E800020
3OP0 => 043699A8 38600001
        043699AC 4E800020
3SJT => 041EA948 38600001
        041EA94C 4E800020
3SJ0 => 041D8CF0 38600001
        041D8CF4 4E800020
3SE0 => 041D8D7C 38600001
        041D8D80 4E800020
3SP0 => 041D93F0 38600001
        041D93F4 4E800020

Play lobby (and event) music in Morgue also
3OJ2 => 0417DD34 60000000
3OJ3 => 0417E0E8 60000000
3OJ4 => 0417E24C 60000000
3OJ5 => 0417E1AC 60000000
3OE0 => 0417E0F0 60000000
3OE1 => 0417E0F0 60000000
3OE2 => 0417E210 60000000
3OP0 => 0417E6D4 60000000
3SJT => 040B8C7C 60000000
3SE0 => 040B7028 60000000
3SJ0 => 040B7044 60000000
3SP0 => 040B746C 60000000

Skip white logo screens during startup
3OJ2 => 0413EE54 38000007
3OJ3 => 0413F1DC 38000007
3OJ4 => 0413F338 38000007
3OJ5 => 0413F298 38000007
3OE0 => 0413F190 38000007
3OE1 => 0413F190 38000007
3OE2 => 0413F2A8 38000007
3OP0 => 0413F524 38000007
3SJT => 0409E10C 38000007
3SJ0 => 0409D810 38000007
3SE0 => 0409D774 38000007
3SP0 => 0409D9A4 38000007

Skip agreement prompts before online game
3OJ2 => 0432737C 38000003
3OJ3 => 043283CC 38000003
3OJ4 => 043298E8 38000003
3OJ5 => 04329690 38000003
3OE0 => 04327D3C 38000003
3OE1 => 04327D80 38000003
3OE2 => 0432984C 38000003
3OP0 => 04328C58 38000003
3SJT => 041C67D0 38000003
3SJ0 => 041B5234 38000003
3SE0 => 041B50C8 38000003
3SP0 => 041B574C 38000003

Disable rate limit for pressing A during loading screens
3SJT => 042E1030 38000000
3SJ0 => 042F8BE4 38000000
3SE0 => 042F9B30 38000000
3SP0 => 042FA734 38000000

Auto-press A as fast as possible during loading screens
3SP0 => 042FA6C4 60000000
3SE0 => 042F9AC0 60000000
3SJT => 040C2C48 60000000
3SJ0 => 042F8B74 60000000

Change type of all loading screens
Values for X: 0 = lobby/game join, 1 = quest load, 3 = pipe up, 4 = pipe down, anything else = silent black screen
3OE1 => 0401CA04 3BE0000X
        0401CA08 48000038

Replace loading screen A button sounds with random sounds
3SJT => 042E1018 480309A9
        042E101C 5463063E
        042E1020 60631400
        042E1024 64630005
        042E1028 38800000
3SE0 => 042F9B18 4804BB19
        042F9B1C 5463063E
        042F9B20 60631400
        042F9B24 64630005
        042F9B28 38800000

Change color of loading screens
Replace AA, RR, GG, BB appropriately
3SE0 => 042FA704 3CC0AARR
        042FA708 60C6GGBB

Use 16:9 aspect ratio
3SE0 => 04383DC8 4BC87F99
        0400BD60 C042DED0
        0400BD64 EC5D00B2
        0400BD68 4E800020

Disable darkening effect during battle details mode
3SJT => 042E09D8 4E800020
3SJ0 => 042F85D0 4E800020
3SE0 => 042F951C 4E800020
3SP0 => 042FA120 4E800020

Unlock all COM decks
3SJ0 => 042C9B34 38600001
3SP0 => 042CB414 38600001
3SE0 => 042CA908 38600001

Enable all lobby counter options in non-CARD lobbies
3SE0 => 04096A8C 480000C0
        04096B4C 38800007
        04096BFC 4BFFFF2C

Enable Change Marker option in all lobbies
3OJ2 => 04138208 4800004C
3OJ3 => 04138510 4800004C
3OJ4 => 041390B4 4800004C
3OJ5 => 041385B8 4800004C
3OE0 => 041384C4 4800004C
3OE1 => 041384C4 4800004C
3OE2 => 041385C8 4800004C
3OP0 => 04138848 4800004C

Change HUD color mask
3SE0 => 0438CA8C 3C00RRGG
        0438CA90 6000BBAA

Disable lobby event music (but keep the visuals)
3SE0 => 040B705C 38000000

Enable Pinz's Shop Super Card Capsule Machine as a fourth option
3SE0 => 043101C0 38800004
        04310238 2C1D0004
        04487E8C 000000C8

Change color of pulsing orange text (e.g. card ability names)
3SE0 => 0457EE18 RRRRRRRR  // Phase 1 (long) red component as 32-bit float (0.0-255.0)
        0457EE20 GGGGGGGG  // Phase 1 (long) green component as 32-bit float (0.0-255.0)
        0457EE10 BBBBBBBB  // Phase 1 (long) blue component as 32-bit float (0.0-255.0)
        0457EE1C RRRRRRRR  // Phase 2 (short) red component as 32-bit float (0.0-255.0)
        0457EE24 GGGGGGGG  // Phase 2 (short) green component as 32-bit float (0.0-255.0)
        0457EE14 BBBBBBBB  // Phase 2 (short) blue component as 32-bit float (0.0-255.0)

Change color of pulsing orange text to be random every frame
3SE0 => 04155D78 7CA802A6
        04155D7C 7C661B78
        04155D80 481EF8B1
        04155D84 7C671B78
        04155D88 481EF8A9
        04155D8C 50677822
        04155D90 64E7FF00
        04155D94 90E60024
        04155D98 7CA803A6
        04155D9C 4E800020

Enable color and symbol codes in info board text
Use codes like e.g. $CG to change text colors, as described in CommandFormats.hh
3SE0 => 040F2E80 4BF0D41D
        040F0274 4BF10025
        040EFC58 4BF10641
        04000298 38810008
        0400029C 38C3FFFF
        040002A0 8CA60001
        040002A4 28050024
        040002A8 4082000C
        040002AC 38000009
        040002B0 98060000
        040002B4 28050000
        040002B8 4082FFE8
        040002BC 7C633050
        040002C0 4E800020

Unlock all offline free battle maps
This unlocks ALL maps, including a bunch of maps with garbage names that crash if you try to play them
3SJT => 042BE538 38600001
3SJ0 => 042C9C2C 38600001
3SP0 => 042CB50C 38600001
3SE0 => 042CAA00 38600001

Talk to auction counter offline to get all cards
3SE0 => 042F5D18 4BD160E8
        0400BE00 9421FFE0
        0400BE04 7C0802A6
        0400BE08 90010024
        0400BE0C 93E10010
        0400BE10 93C10014
        0400BE14 93A10018
        0400BE18 9381001C
        0400BE1C 3C60802A
        0400BE20 60631BAC
        0400BE24 7C6903A6
        0400BE28 38600000
        0400BE2C 4E800421
        0400BE30 7C7F1B78
        0400BE34 3C60802A
        0400BE38 606315BC
        0400BE3C 7C6903A6
        0400BE40 7FE3FB78
        0400BE44 4E800421
        0400BE48 3F80802A
        0400BE4C 639C17AC
        0400BE50 3BC00001
        0400BE54 3BA00063
        0400BE58 7FE3FB78
        0400BE5C 7FC4F378
        0400BE60 7F8903A6
        0400BE64 4E800421
        0400BE68 3BBDFFFF
        0400BE6C 281D0000
        0400BE70 4082FFE8
        0400BE74 3BDE0001
        0400BE78 281E02F0
        0400BE7C 4081FFD8
        0400BE80 3C60802A
        0400BE84 6063160C
        0400BE88 7C6903A6
        0400BE8C 7FE3FB78
        0400BE90 4E800421
        0400BE94 83E10010
        0400BE98 83C10014
        0400BE9C 83A10018
        0400BEA0 8381001C
        0400BEA4 80010024
        0400BEA8 38210020
        0400BEAC 7C0803A6
        0400BEB0 482E9FC0

Press L for enemy debug; enable various other debug messages
TODO: Figure out more debug message conditionals (vars/functions) and add them here
3OE1 => 040FD9D8 38600001  # Various enemy debug messages
        00153E53 00000001  # Poison fog debug 1
        00153E4B 00000001  # Poison fog debug 2
        040FDA18 60000000  # TObjRoomId
        025CB6AA 00000000  # disable enemy debug
        4A588EA0 00000040  # if L is held...
        025CB6AA 00000001  # enable enemy debug

Able to find VIP cards offline (but they're still rare)
3SP0 => 042C15DC 4800000C
3SJ0 => 042BFE24 4800000C
3SE0 => 042C0B20 4800000C

Hold L when starting battle to enter debug menu
3SE0 => 042C5460 4BD3AF78
        040003D8 3C60804A
        040003DC 60630518
        040003E0 3C800002
        040003E4 480C9F35
        040003E8 2C030000
        040003EC 4082000C
        040003F0 8801001A
        040003F4 48000008
        040003F8 3800001A
        040003FC 482C5068

Dressing room always accessible
3SJT => 041B2A2C 38600001
3SJ0 => 041A1920 38600001
3SP0 => 041A1C84 38600001
3SE0 => 041A16FC 38600001

Full dressing room v1
Original Ep1&2 code by Ralf @ GC-Forever
Can't change your class, but you start with your existing appearance
Go online with this code on after using the dressing room to fully save changes
3SE0 => 0418EB5C 60000000
        042A0184 389D0370
        042A0188 387E2120

Full dressing room v2
Original Ep1&2 code by Ralf @ GC-Forever
Can change your class, but you start with the default appearance
Go online with this code on after using the dressing room to fully save changes
3SE0 => 04186ECC 4BFFFFD8
        042A0184 389D0370
        042A0188 387E2120

Replace Options menu with debug menu
3SE0 => 04149E70 38600019

Jukebox is free
3SJT => 042248C4 48000024 (useless because the jukebox isn't loaded in NTE, but apparently the code for it exists)
3SJ0 => 0430C178 48000024
3SE0 => 0430D1DC 48000024
3SP0 => 0430DE3C 48000024

Use own character in battle (online only)
3SE0 => 041FFAB0 4800001C
        042A54D8 4BD5B0F9
        04200A34 4BDFFB9D
        041FFA9C 4BE00B35
        040005D0 38600000
        040005D4 3CA08049
        040005D8 80A54160
        040005DC 2805000F
        040005E0 41820008
        040005E4 481E8E24
        040005E8 80ADA448
        040005EC 7C042800
        040005F0 41820008
        040005F4 481E8E14
        040005F8 38600001
        040005FC 4E800020

Disable chat smut filter
3SE0 => 0412FA4C 60000000

Metal tiles don't appear in Simulator (Cyber) map
3SJT => 0428FED8 4E800020
3SJ0 => 04296054 4E800020
3SE0 => 04296904 4E800020
3SP0 => 04297278 4E800020

Enable Boooo and Laughter soundchat sounds
Note: Without a TextEnglish.pr2/pr3 patch, the menu items for these sounds will be blank (but they will still work)
3SE0 => 0430B734 38800029
        0430B770 2C1F0029
        0430B59C 2C030029
        0430B5A8 5460083C
        0430B5B4 7C63022E
        0442B690 80258026
        0442B694 8227852D
        0442B698 80308031
        0442B69C 8A3F8532
        0442B6A0 8A408533
        0442B6A4 8A418A28
        0442B6A8 8A388A29
        0442B6AC 8A39852E
        0442B6B0 802F853D
        0442B6B4 85348535
        0442B6B8 853B8536
        0442B6BC 8537852B
        0442B6C0 853A853C
        0442B6C4 853E8044
        0442B6C8 80458046
        0442B6CC 80478048
        0442B6D0 8049804A
        0442B6D4 804B804C
        0442B6D8 804D804E
        0442B6DC 804F802A
        0442B6E0 802C0000

Use English language files
3SJT => 0408E414 38600001
        0408E448 38000001
        0408E44C 900DA62C
        0408E450 4E800020

Replace all sound effects with specified sound effect
3OE1 => 042256E4 3F40XXXX
        042256E8 635AYYYY
        042256EC 4800000C

Enable seasonal rappies offline (Ep2 only)
X = 1: Saint Rappy
X = 4: Egg Rappy
X = 5: Hallo Rappy
X = anything else: Love Rappy
3OE0 => 040C1658 60000000
        040C165C 3800000X
3OE1 => 040C1658 60000000
        040C165C 3800000X
3OE2 => 040C17F0 60000000
        040C17F4 3800000X
3OJ2 => 040C13B4 60000000
        040C13B8 3800000X
3OJ3 => 040C16B8 60000000
        040C16BC 3800000X
3OJ4 => 040C18EC 60000000
        040C18F0 3800000X
3OJ5 => 040C17E0 60000000
        040C17E4 3800000X
3OP0 => 040C17B8 60000000
        040C17BC 3800000X

Heaven Punisher's special always works
3OJ2 => 0412AB98 38800001
3OJ3 => 0412ADDC 38800001
3OJ4 => 0412AE6C 38800001
3OJ5 => 0412AD74 38800001
3OE0 => 0412AE3C 38800001
3OE1 => 0412AE3C 38800001
3OE2 => 0412AD84 38800001
3OP0 => 0412AF5C 38800001

Allow loading corrupted save files
3OJ2 => 041FC784 38600007
        041FC788 4E800020
3OJ3 => 041FCF98 38600007
        041FCF9C 4E800020
3OJ4 => 041FDED4 38600007
        041FDED8 4E800020
3OJ5 => 041FD504 38600007
        041FD508 4E800020
3OE0 => 041FCDE8 38600007
        041FCDEC 4E800020
3OE1 => 041FCDE8 38600007
        041FCDEC 4E800020
3OE2 => 041FD770 38600007
        041FD774 4E800020
3OP0 => 041FD66C 38600007
        041FD670 4E800020
3SE0 => 04115244 38600007
        04115248 4E800020
3SJ0 => 041152E8 38600007
        041152EC 4E800020
3SJT => 04117AA0 38600007
        04117AA4 4E800020
3SP0 => 041156D0 38600007
        041156D4 4E800020

60 frames per second
This does not adjust any logic or animations; everything just runs faster
3OE1 => 045CDEF8 00000001

Show extended item info when targeting a dropped item
(Compiled from the ExtendedItemInfo patch, also written by me)
3OE1 => 044CB088 00000023
        04262270 4BDA1E15
        04262580 4BDA1AB8
        0426224C 4BDA1DFD
        04262294 4BDA1DC9
        042874C0 4BD7CB50
        04287424 4BD7CBF8
        04004008 41F00000
        0400400C 43480000
        04004010 3C808000
        04004014 90644004
        04004018 4E800020
        0400401C 3C808000
        04004020 80044004
        04004024 7C001840
        04004028 4082000C
        0400402C 38000000
        04004030 90044004
        04004034 4E800020
        04004038 9421FFE0
        0400403C 7C0802A6
        04004040 90010024
        04004044 48000028
        04004048 9421FFE0
        0400404C 7C0802A6
        04004050 90010024
        04004054 4825E0D5
        04004058 48000014
        0400405C 9421FFE0
        04004060 7C0802A6
        04004064 90010024
        04004068 4825DBED
        0400406C 38600000
        04004070 48000049
        04004074 80010024
        04004078 7C0803A6
        0400407C 38210020
        04004080 4E800020
        04004084 9421FFE0
        04004088 7C0802A6
        0400408C 90010024
        04004090 90810008
        04004094 93E1000C
        04004098 4825DF19
        0400409C 80610008
        040040A0 48000019
        040040A4 83E1000C
        040040A8 80010024
        040040AC 38210020
        040040B0 7C0803A6
        040040B4 4E800020
        040040B8 9421FFE0
        040040BC 7C0802A6
        040040C0 90010024
        040040C4 90610008
        040040C8 93E1000C
        040040CC 3FE08000
        040040D0 28030000
        040040D4 41820094
        040040D8 A08300EC
        040040DC 28040103
        040040E0 41820088
        040040E4 28040300
        040040E8 40800080
        040040EC 480155DD
        040040F0 28030000
        040040F4 40820074
        040040F8 3C608000
        040040FC 80634004
        04004100 28030000
        04004104 41820010
        04004108 8063004C
        0400410C 546307FF
        04004110 40820058
        04004114 807F4000
        04004118 28030000
        0400411C 4082002C
        04004120 386000BC
        04004124 48225419
        04004128 907F4000
        0400412C 28030000
        04004130 41820050
        04004134 63E34008
        04004138 7C641B78
        0400413C 807F4000
        04004140 80ADAD80
        04004144 482509B1
        04004148 807F4000
        0400414C 8003002C
        04004150 60000020
        04004154 9003002C
        04004158 80810008
        0400415C 808400D8
        04004160 48250519
        04004164 4800001C
        04004168 807F4000
        0400416C 28030000
        04004170 41820010
        04004174 38000000
        04004178 901F4000
        0400417C 4823F76D
        04004180 83E1000C
        04004184 80010024
        04004188 38210020
        0400418C 7C0803A6
        04004190 4E800020
3OE2 => 044CF6F0 00000023
        04263630 4BDA1A55
        04263940 4BDA16F8
        0426360C 4BDA1A3D
        04263654 4BDA1A09
        0428893C 4BD7C6D4
        042888A0 4BD7C77C
        04005008 41F00000
        0400500C 43480000
        04005010 3C808000
        04005014 90645004
        04005018 4E800020
        0400501C 3C808000
        04005020 80045004
        04005024 7C001840
        04005028 4082000C
        0400502C 38000000
        04005030 90045004
        04005034 4E800020
        04005038 9421FFE0
        0400503C 7C0802A6
        04005040 90010024
        04005044 48000028
        04005048 9421FFE0
        0400504C 7C0802A6
        04005050 90010024
        04005054 4825E495
        04005058 48000014
        0400505C 9421FFE0
        04005060 7C0802A6
        04005064 90010024
        04005068 4825DFAD
        0400506C 38600000
        04005070 48000049
        04005074 80010024
        04005078 7C0803A6
        0400507C 38210020
        04005080 4E800020
        04005084 9421FFE0
        04005088 7C0802A6
        0400508C 90010024
        04005090 90810008
        04005094 93E1000C
        04005098 4825E2D9
        0400509C 80610008
        040050A0 48000019
        040050A4 83E1000C
        040050A8 80010024
        040050AC 38210020
        040050B0 7C0803A6
        040050B4 4E800020
        040050B8 9421FFE0
        040050BC 7C0802A6
        040050C0 90010024
        040050C4 90610008
        040050C8 93E1000C
        040050CC 3FE08000
        040050D0 28030000
        040050D4 41820094
        040050D8 A08300EC
        040050DC 28040103
        040050E0 41820088
        040050E4 28040300
        040050E8 40800080
        040050EC 480145A5
        040050F0 28030000
        040050F4 40820074
        040050F8 3C608000
        040050FC 80635004
        04005100 28030000
        04005104 41820010
        04005108 8063004C
        0400510C 546307FF
        04005110 40820058
        04005114 807F5000
        04005118 28030000
        0400511C 4082002C
        04005120 386000BC
        04005124 482254CD
        04005128 907F5000
        0400512C 28030000
        04005130 41820050
        04005134 63E35008
        04005138 7C641B78
        0400513C 807F5000
        04005140 80ADADA0
        04005144 48250B89
        04005148 807F5000
        0400514C 8003002C
        04005150 60000020
        04005154 9003002C
        04005158 80810008
        0400515C 808400D8
        04005160 482506F1
        04005164 4800001C
        04005168 807F5000
        0400516C 28030000
        04005170 41820010
        04005174 38000000
        04005178 901F5000
        0400517C 4823F899
        04005180 83E1000C
        04005184 80010024
        04005188 38210020
        0400518C 7C0803A6
        04005190 4E800020

All weapons can do 3-hit combos
3OE1 => 041D3248 38000001

Disable save file signature validation (for moving Xbox saves across consoles)
4OJB => 002F01CB 9090
4OJD => 002F0CDB 9090
4OJU => 002F22DB 9090
4OED => 002F212B 9090
4OEU => 002F22DB 9090
4OPD => 002F215B 9090
4OPU => 002F234B 9090
