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 0xA08493B0 # 8000BAF4 => lhz r4, [r4 - 0x6C50]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB954 # 8000BB00 => lwz r0, [r13 - 0x46AC]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB938 # 8000BB0C => lwz r3, [r13 - 0x46C8]
.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 0x482047B4 # 8000BB30 => b +0x002047B4 /* 802102E4 */
.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 0x48204724 # 8000BB4C => b +0x00204724 /* 80210270 */
# region @ 8021026C (4 bytes)
.data 0x8021026C # address
.data 0x00000004 # size
.data 0x4BDFB8C8 # 8021026C => b -0x00204738 /* 8000BB34 */
# region @ 802102E0 (4 bytes)
.data 0x802102E0 # address
.data 0x00000004 # size
.data 0x4BDFB804 # 802102E0 => b -0x002047FC /* 8000BAE4 */
# region @ 8030B414 (4 bytes)
.data 0x8030B414 # address
.data 0x00000004 # size
.data 0x4BD006A1 # 8030B414 => bl -0x002FF960 /* 8000BAB4 */
# region @ 8030B46C (4 bytes)
.data 0x8030B46C # address
.data 0x00000004 # size
.data 0x4BD00649 # 8030B46C => bl -0x002FF9B8 /* 8000BAB4 */
# region @ 8046DC5C (4 bytes)
.data 0x8046DC5C # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046DC5C => 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 - 0x6C50]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x46AC]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x46C8]
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 0x8021026C
.data 0x00000004
.address 0x8021026C
bl hook3
.data 0x802102E0
.data 0x00000004
.address 0x802102E0
bl hook2
.data 0x8030B414
.data 0x00000004
.address 0x8030B414
bl hook1
.data 0x8030B46C
.data 0x00000004
.address 0x8030B46C
bl hook1
.data 0x8046DC5C
.data 0x00000004
.address 0x8046DC5C
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000
@@ -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 0xA0849890 # 8000BAF4 => lhz r4, [r4 - 0x6770]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB954 # 8000BB00 => lwz r0, [r13 - 0x46AC]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB938 # 8000BB0C => lwz r3, [r13 - 0x46C8]
.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 0x482047B4 # 8000BB30 => b +0x002047B4 /* 802102E4 */
.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 0x48204724 # 8000BB4C => b +0x00204724 /* 80210270 */
# region @ 8021026C (4 bytes)
.data 0x8021026C # address
.data 0x00000004 # size
.data 0x4BDFB8C8 # 8021026C => b -0x00204738 /* 8000BB34 */
# region @ 802102E0 (4 bytes)
.data 0x802102E0 # address
.data 0x00000004 # size
.data 0x4BDFB804 # 802102E0 => b -0x002047FC /* 8000BAE4 */
# region @ 8030B458 (4 bytes)
.data 0x8030B458 # address
.data 0x00000004 # size
.data 0x4BD0065D # 8030B458 => bl -0x002FF9A4 /* 8000BAB4 */
# region @ 8030B4B0 (4 bytes)
.data 0x8030B4B0 # address
.data 0x00000004 # size
.data 0x4BD00605 # 8030B4B0 => bl -0x002FF9FC /* 8000BAB4 */
# region @ 8046E0DC (4 bytes)
.data 0x8046E0DC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046E0DC => 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 - 0x6770]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x46AC]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x46C8]
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 0x8021026C
.data 0x00000004
.address 0x8021026C
bl hook3
.data 0x802102E0
.data 0x00000004
.address 0x802102E0
bl hook2
.data 0x8030B458
.data 0x00000004
.address 0x8030B458
bl hook1
.data 0x8030B4B0
.data 0x00000004
.address 0x8030B4B0
bl hook1
.data 0x8046E0DC
.data 0x00000004
.address 0x8046E0DC
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000
@@ -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 0xA084E270 # 8000BAF4 => lhz r4, [r4 - 0x1D90]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB974 # 8000BB00 => lwz r0, [r13 - 0x468C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB958 # 8000BB0C => lwz r3, [r13 - 0x46A8]
.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 0x48205704 # 8000BB30 => b +0x00205704 /* 80211234 */
.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 0x48205674 # 8000BB4C => b +0x00205674 /* 802111C0 */
# region @ 802111BC (4 bytes)
.data 0x802111BC # address
.data 0x00000004 # size
.data 0x4BDFA978 # 802111BC => b -0x00205688 /* 8000BB34 */
# region @ 80211230 (4 bytes)
.data 0x80211230 # address
.data 0x00000004 # size
.data 0x4BDFA8B4 # 80211230 => b -0x0020574C /* 8000BAE4 */
# region @ 8030CE60 (4 bytes)
.data 0x8030CE60 # address
.data 0x00000004 # size
.data 0x4BCFEC55 # 8030CE60 => bl -0x003013AC /* 8000BAB4 */
# region @ 8030CEB8 (4 bytes)
.data 0x8030CEB8 # address
.data 0x00000004 # size
.data 0x4BCFEBFD # 8030CEB8 => bl -0x00301404 /* 8000BAB4 */
# region @ 80471ACC (4 bytes)
.data 0x80471ACC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471ACC => 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 - 0x1D90]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x468C]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x46A8]
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 0x802111BC
.data 0x00000004
.address 0x802111BC
bl hook3
.data 0x80211230
.data 0x00000004
.address 0x80211230
bl hook2
.data 0x8030CE60
.data 0x00000004
.address 0x8030CE60
bl hook1
.data 0x8030CEB8
.data 0x00000004
.address 0x8030CEB8
bl hook1
.data 0x80471ACC
.data 0x00000004
.address 0x80471ACC
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000
@@ -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 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA0848AD0 # 8000BAF4 => lhz r4, [r4 - 0x7530]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB93C # 8000BB00 => lwz r0, [r13 - 0x46C4]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB920 # 8000BB0C => lwz r3, [r13 - 0x46E0]
.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 0x48203FB8 # 8000BB30 => b +0x00203FB8 /* 8020FAE8 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.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 0x48203EB0 # 8000BB4C => b +0x00203EB0 /* 8020F9FC */
# region @ 8020F9F8 (4 bytes)
.data 0x8020F9F8 # address
.data 0x00000004 # size
.data 0x4BDFC13C # 8020F9F8 => b -0x00203EC4 /* 8000BB34 */
# region @ 8020FAE4 (4 bytes)
.data 0x8020FAE4 # address
.data 0x00000004 # size
.data 0x4BDFC000 # 8020FAE4 => b -0x00204000 /* 8000BAE4 */
# region @ 8030AA54 (4 bytes)
.data 0x8030AA54 # address
.data 0x00000004 # size
.data 0x4BD01061 # 8030AA54 => bl -0x002FEFA0 /* 8000BAB4 */
# region @ 8030AAAC (4 bytes)
.data 0x8030AAAC # address
.data 0x00000004 # size
.data 0x4BD01009 # 8030AAAC => bl -0x002FEFF8 /* 8000BAB4 */
# region @ 8046CECC (4 bytes)
.data 0x8046CECC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046CECC => 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 - 0x7150]
cmplwi r0, 1
bne hook2_skip
lis r4, 0x8051
lhz r4, [r4 - 0x7530]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x46C4]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x46E0]
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 - 0x7150]
cmplwi r0, 1
bne hook3_skip
lis r3, 0x8001
lwz r3, [r3 - 0x3CD4]
hook3_skip:
mr. r8, r3
blr
hooks_end:
.data 0x8020F9F8
.data 0x00000004
.address 0x8020F9F8
bl hook3
.data 0x8020FAE4
.data 0x00000004
.address 0x8020FAE4
bl hook2
.data 0x8030AA54
.data 0x00000004
.address 0x8030AA54
bl hook1
.data 0x8030AAAC
.data 0x00000004
.address 0x8030AAAC
bl hook1
.data 0x8046CECC
.data 0x00000004
.address 0x8046CECC
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000
@@ -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 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084C590 # 8000BAF4 => lhz r4, [r4 - 0x3A70]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB944 # 8000BB00 => lwz r0, [r13 - 0x46BC]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB928 # 8000BB0C => lwz r3, [r13 - 0x46D8]
.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 0x48204894 # 8000BB30 => b +0x00204894 /* 802103C4 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.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 0x48204804 # 8000BB4C => b +0x00204804 /* 80210350 */
# region @ 8021034C (4 bytes)
.data 0x8021034C # address
.data 0x00000004 # size
.data 0x4BDFB7E8 # 8021034C => b -0x00204818 /* 8000BB34 */
# region @ 802103C0 (4 bytes)
.data 0x802103C0 # address
.data 0x00000004 # size
.data 0x4BDFB724 # 802103C0 => b -0x002048DC /* 8000BAE4 */
# region @ 8030BAA4 (4 bytes)
.data 0x8030BAA4 # address
.data 0x00000004 # size
.data 0x4BD00011 # 8030BAA4 => bl -0x002FFFF0 /* 8000BAB4 */
# region @ 8030BAFC (4 bytes)
.data 0x8030BAFC # address
.data 0x00000004 # size
.data 0x4BCFFFB9 # 8030BAFC => bl -0x00300048 /* 8000BAB4 */
# region @ 8046FCEC (4 bytes)
.data 0x8046FCEC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046FCEC => 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 - 0x7150]
cmplwi r0, 1
bne hook2_skip
lis r4, 0x8051
lhz r4, [r4 - 0x3A70]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x46BC]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x46D8]
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 - 0x7150]
cmplwi r0, 1
bne hook3_skip
lis r3, 0x8001
lwz r3, [r3 - 0x3CD4]
hook3_skip:
mr. r8, r3
blr
hooks_end:
.data 0x8021034C
.data 0x00000004
.address 0x8021034C
bl hook3
.data 0x802103C0
.data 0x00000004
.address 0x802103C0
bl hook2
.data 0x8030BAA4
.data 0x00000004
.address 0x8030BAA4
bl hook1
.data 0x8030BAFC
.data 0x00000004
.address 0x8030BAFC
bl hook1
.data 0x8046FCEC
.data 0x00000004
.address 0x8046FCEC
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000
@@ -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 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084EBD0 # 8000BAF4 => lhz r4, [r4 - 0x1430]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB964 # 8000BB00 => lwz r0, [r13 - 0x469C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB948 # 8000BB0C => lwz r3, [r13 - 0x46B8]
.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 0x48205674 # 8000BB30 => b +0x00205674 /* 802111A4 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.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 0x482055E4 # 8000BB4C => b +0x002055E4 /* 80211130 */
# region @ 8021112C (4 bytes)
.data 0x8021112C # address
.data 0x00000004 # size
.data 0x4BDFAA08 # 8021112C => b -0x002055F8 /* 8000BB34 */
# region @ 802111A0 (4 bytes)
.data 0x802111A0 # address
.data 0x00000004 # size
.data 0x4BDFA944 # 802111A0 => b -0x002056BC /* 8000BAE4 */
# region @ 8030CEF0 (4 bytes)
.data 0x8030CEF0 # address
.data 0x00000004 # size
.data 0x4BCFEBC5 # 8030CEF0 => bl -0x0030143C /* 8000BAB4 */
# region @ 8030CF48 (4 bytes)
.data 0x8030CF48 # address
.data 0x00000004 # size
.data 0x4BCFEB6D # 8030CF48 => bl -0x00301494 /* 8000BAB4 */
# region @ 80471E4C (4 bytes)
.data 0x80471E4C # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471E4C => 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 - 0x7150]
cmplwi r0, 1
bne hook2_skip
lis r4, 0x8051
lhz r4, [r4 - 0x1430]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x469C]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x46B8]
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 - 0x7150]
cmplwi r0, 1
bne hook3_skip
lis r3, 0x8001
lwz r3, [r3 - 0x3CD4]
hook3_skip:
mr. r8, r3
blr
hooks_end:
.data 0x8021112C
.data 0x00000004
.address 0x8021112C
bl hook3
.data 0x802111A0
.data 0x00000004
.address 0x802111A0
bl hook2
.data 0x8030CEF0
.data 0x00000004
.address 0x8030CEF0
bl hook1
.data 0x8030CF48
.data 0x00000004
.address 0x8030CF48
bl hook1
.data 0x80471E4C
.data 0x00000004
.address 0x80471E4C
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000
@@ -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 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084E970 # 8000BAF4 => lhz r4, [r4 - 0x1690]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB964 # 8000BB00 => lwz r0, [r13 - 0x469C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB948 # 8000BB0C => lwz r3, [r13 - 0x46B8]
.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 0x482053D0 # 8000BB30 => b +0x002053D0 /* 80210F00 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.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 0x48205340 # 8000BB4C => b +0x00205340 /* 80210E8C */
# region @ 80210E88 (4 bytes)
.data 0x80210E88 # address
.data 0x00000004 # size
.data 0x4BDFACAC # 80210E88 => b -0x00205354 /* 8000BB34 */
# region @ 80210EFC (4 bytes)
.data 0x80210EFC # address
.data 0x00000004 # size
.data 0x4BDFABE8 # 80210EFC => b -0x00205418 /* 8000BAE4 */
# region @ 8030CCA4 (4 bytes)
.data 0x8030CCA4 # address
.data 0x00000004 # size
.data 0x4BCFEE11 # 8030CCA4 => bl -0x003011F0 /* 8000BAB4 */
# region @ 8030CCFC (4 bytes)
.data 0x8030CCFC # address
.data 0x00000004 # size
.data 0x4BCFEDB9 # 8030CCFC => bl -0x00301248 /* 8000BAB4 */
# region @ 80471C14 (4 bytes)
.data 0x80471C14 # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471C14 => 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 - 0x7150]
cmplwi r0, 1
bne hook2_skip
lis r4, 0x8051
lhz r4, [r4 - 0x1690]
andi. r0, r4, 0x0002
beq hook2_default_bank
lwz r0, [r13 - 0x469C]
cmplwi r0, 6
beq hook2_default_bank
lwz r3, [r13 - 0x46B8]
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 - 0x7150]
cmplwi r0, 1
bne hook3_skip
lis r3, 0x8001
lwz r3, [r3 - 0x3CD4]
hook3_skip:
mr. r8, r3
blr
hooks_end:
.data 0x80210E88
.data 0x00000004
.address 0x80210E88
bl hook3
.data 0x80210EFC
.data 0x00000004
.address 0x80210EFC
bl hook2
.data 0x8030CCA4
.data 0x00000004
.address 0x8030CCA4
bl hook1
.data 0x8030CCFC
.data 0x00000004
.address 0x8030CCFC
bl hook1
.data 0x80471C14
.data 0x00000004
.address 0x80471C14
.data 0xFFFFFFFF
.data 0x00000000
.data 0x00000000
@@ -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