rewrite common bank patch

This commit is contained in:
Martin Michelsen
2025-02-08 22:47:23 -08:00
parent 07c5a8a4b6
commit 9d7c71fb26
8 changed files with 648 additions and 528 deletions
@@ -1,6 +1,6 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever and Aleron Ives
# Original code by Ralf @ GC-Forever ("Common Bank (Hold L And Open Bank)")
# https://www.gc-forever.com/forums/viewtopic.php?t=2050
# https://www.gc-forever.com/forums/viewtopic.php?t=2049
@@ -9,68 +9,83 @@ reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB8 # 8000BAE4 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084F290 # 8000BAF4 => lhz r4, [r4 - 0x0D70]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB9B4 # 8000BB00 => lwz r0, [r13 - 0x464C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB998 # 8000BB0C => lwz r3, [r13 - 0x4668]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x48205100 # 8000BB30 => b +0x00205100 /* 80210C30 */
.data 0x800D8EB8 # 8000BB34 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48205070 # 8000BB4C => b +0x00205070 /* 80210BBC */
# region @ 80210BB8 (4 bytes)
.data 0x80210BB8 # address
.data 0x00000004 # size
.data 0x4BDFAF7C # 80210BB8 => b -0x00205084 /* 8000BB34 */
# region @ 80210C2C (4 bytes)
.data 0x80210C2C # address
.data 0x00000004 # size
.data 0x4BDFAEB8 # 80210C2C => b -0x00205148 /* 8000BAE4 */
# region @ 8030C228 (4 bytes)
.data 0x8030C228 # address
.data 0x00000004 # size
.data 0x4BCFF88D # 8030C228 => bl -0x00300774 /* 8000BAB4 */
# region @ 8030C280 (4 bytes)
.data 0x8030C280 # address
.data 0x00000004 # size
.data 0x4BCFF835 # 8030C280 => bl -0x003007CC /* 8000BAB4 */
# region @ 80471804 (4 bytes)
.data 0x80471804 # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471804 => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
.data 0x8000BAB4
.deltaof hook1, hooks_end
.address 0x8000BAB4
hook1:
cmplwi r27, 2
bne hook1_skip
lis r0, 0x8000
ori r0, r0, 0xBAD8
stw [r3 + 0x0004], r0
li r0, 0x0000
stw [r3 + 0x0008], r0
hook1_skip:
lwz r3, [r31 + 0x0040]
blr
.binary 434F4D4D4F4E2042414E4B00
hook2:
lwz r0, [r13 - 0x7148]
cmplwi r0, 1
bne hook2_skip
lis r4, 0x8051
lhz r4, [r4 - 0x0D70]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x464C]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x4668]
cmplwi r3, 0
beq hook2_default_bank
li r0, 0x0000
ori r0, r0, 0xF1B0
add r3, r3, r0
hook2_default_bank:
lis r4, 0x8001
stw [r4 - 0x3CD4], r3
hook2_skip:
cmplwi r3, 0
blr
hook3:
lwz r0, [r13 - 0x7148]
cmplwi r0, 1
bne hook3_skip
lis r3, 0x8001
lwz r3, [r3 - 0x3CD4]
hook3_skip:
mr. r8, r3
blr
hooks_end:
.data 0x80210BB8
.data 0x00000004
.address 0x80210BB8
bl hook3
.data 0x80210C2C
.data 0x00000004
.address 0x80210C2C
bl hook2
.data 0x8030C228
.data 0x00000004
.address 0x8030C228
bl hook1
.data 0x8030C280
.data 0x00000004
.address 0x8030C280
bl hook1
.data 0x80471804
.data 0x00000004
.address 0x80471804
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000