diff --git a/notes/patch-ports.txt b/notes/patch-ports.txt index 10755eb5..9ec4aeda 100644 --- a/notes/patch-ports.txt +++ b/notes/patch-ports.txt @@ -754,15 +754,44 @@ Show Enemy HP Bars EnemyHPBars *** name=Enemy HP bars *** desc=Show HP bars in\nenemy info windows -JP12------------- JP13------------- JP14------------- JP15------------- US10------------- US11------------- US12------------- EU--------------- DISASSEMBLY (US10) +JP12------------- JP13------------- JP14------------- JP15------------- US10------------- US11------------- US12------------- EU--------------- DISASSEMBLY (US12) 802612C4 4BFE1541 80261E9C 4BFE1349 80262EE4 4BFE0665 80262C98 4BFE1241 80261B9C 4BFE1545 80261B9C 4BFE1545 80262F5C 4BFE12B1 802627A4 4BFE12B1 bl -0x0001EABC /* 802430E0 */ -804CAF00 42300000 804CE650 42300000 804D0BA0 42300000 804D0940 42300000 804CB6D0 42300000 804CBBB0 42300000 804D0218 42300000 804D0608 42300000 bdnz cr4, +0x00000000 /* 804CB6D0 */ -804CAF1C FF00FF15 804CE66C FF00FF15 804D0BBC FF00FF15 804D095C FF00FF15 804CB6EC FF00FF15 804CBBCC FF00FF15 804D0234 FF00FF15 804D0624 FF00FF15 .invalid FC, 0 -805CBFBC 42A00000 805D65BC 42A00000 805DDA5C 42A00000 805DD7FC 42A00000 805CC8C4 42A00000 805D38E4 42A00000 805DD104 42A00000 805D9344 42A00000 b +0x00000000 /* 805CC8C4 */ -804CAE40 42640000 804CE590 42640000 804D0AE0 42640000 804D0880 42640000 804CB610 42640000 804CBAF0 42640000 804D0158 42640000 804D0548 42640000 bc 19, 4, +0x00000000 /* 804CB610 */ -804CAE4C 42640000 804CE59C 42640000 804D0AEC 42640000 804D088C 42640000 804CB61C 42640000 804CBAFC 42640000 804D0164 42640000 804D0554 42640000 bc 19, 4, +0x00000000 /* 804CB61C */ -804CAE58 42640000 804CE5A8 42640000 804D0AF8 42640000 804D0898 42640000 804CB628 42640000 804CBB08 42640000 804D0170 42640000 804D0560 42640000 bc 19, 4, +0x00000000 /* 804CB628 */ -804CAE64 42640000 804CE5B4 42640000 804D0B04 42640000 804D08A4 42640000 804CB634 42640000 804CBB14 42640000 804D017C 42640000 804D056C 42640000 bc 19, 4, +0x00000000 /* 804CB634 */ +804CAF00 42780000 804CE650 42780000 804D0BA0 42780000 804D0940 42780000 804CB6D0 42780000 804CBBB0 42780000 804D0218 42780000 804D0608 42780000 +804CAF1C FF00FF15 804CE66C FF00FF15 804D0BBC FF00FF15 804D095C FF00FF15 804CB6EC FF00FF15 804CBBCC FF00FF15 804D0234 FF00FF15 804D0624 FF00FF15 +805CBFBC 42C00000 805D65BC 42C00000 805DDA5C 42C00000 805DD7FC 42C00000 805CC8C4 42C00000 805D38E4 42C00000 805DD104 42C00000 805D9344 42C00000 +804CAE40 42960000 804CE590 42960000 804D0AE0 42960000 804D0880 42960000 804CB610 42960000 804CBAF0 42960000 804D0158 42960000 804D0548 42960000 +804CAE4C 42960000 804CE59C 42960000 804D0AEC 42960000 804D088C 42960000 804CB61C 42960000 804CBAFC 42960000 804D0164 42960000 804D0554 42960000 +804CAE58 42960000 804CE5A8 42960000 804D0AF8 42960000 804D0898 42960000 804CB628 42960000 804CBB08 42960000 804D0170 42960000 804D0560 42960000 +804CAE64 42960000 804CE5B4 42960000 804D0B04 42960000 804D08A4 42960000 804CB634 42960000 804CBB14 42960000 804D017C 42960000 804D056C 42960000 +80261260 4BDAA3F1 80261E38 4BDA9819 80262E80 4BDA87D1 80262C34 4BDA8A1D 80261B38 4BDA9B19 80261B38 4BDA9B19 80262EF8 4BDA8759 80262740 4BDA8F11 bl -0x002578A8 /* 8000B650 */ +80261420 4BDAA245 80261FF8 4BDA966D 80263040 4BDA8625 80262DF4 4BDA8871 80261CF8 4BDA996D 80261CF8 4BDA996D 802630B8 4BDA85AD 80262900 4BDA8D65 bl -0x00257A54 /* 8000B664 */ +8000B650 3CA08001 8000B650 3CA08001 8000B650 3CA08001 8000B650 3CA08001 8000B650 3CA08001 8000B650 3CA08001 8000B650 3CA08001 8000B650 3CA08001 lis r5, 0x8001 +8000B654 8065B6BC 8000B654 8065B6BC 8000B654 8065B6BC 8000B654 8065B6BC 8000B654 8065B6BC 8000B654 8065B6BC 8000B654 8065B6BC 8000B654 8065B6BC lwz r3, [r5 - 0x4944] +8000B658 7FFEFB78 8000B658 7FFEFB78 8000B658 7FFEFB78 8000B658 7FFEFB78 8000B658 7FFEFB78 8000B658 7FFEFB78 8000B658 7FFEFB78 8000B658 7FFEFB78 mr r30, r31 +8000B65C A8DE032C 8000B65C A8DE032C 8000B65C A8DE032C 8000B65C A8DE032C 8000B65C A8DE032C 8000B65C A8DE032C 8000B65C A8DE032C 8000B65C A8DE032C lha r6, [r30 + 0x032C] +8000B660 48000010 8000B660 48000010 8000B660 48000010 8000B660 48000010 8000B660 48000010 8000B660 48000010 8000B660 48000010 8000B660 48000010 b +0x00000010 /* 8000B670 */ +8000B664 A8DE02B8 8000B664 A8DE02B8 8000B664 A8DE02B8 8000B664 A8DE02B8 8000B664 A8DE02B8 8000B664 A8DE02B8 8000B664 A8DE02B8 8000B664 A8DE02B8 lha r6, [r30 + 0x02B8] +8000B668 3CA08001 8000B668 3CA08001 8000B668 3CA08001 8000B668 3CA08001 8000B668 3CA08001 8000B668 3CA08001 8000B668 3CA08001 8000B668 3CA08001 lis r5, 0x8001 +8000B66C 9065B6BC 8000B66C 9065B6BC 8000B66C 9065B6BC 8000B66C 9065B6BC 8000B66C 9065B6BC 8000B66C 9065B6BC 8000B66C 9065B6BC 8000B66C 9065B6BC stw [r5 - 0x4944], r3 +8000B670 7C0802A6 8000B670 7C0802A6 8000B670 7C0802A6 8000B670 7C0802A6 8000B670 7C0802A6 8000B670 7C0802A6 8000B670 7C0802A6 8000B670 7C0802A6 mflr r0 +8000B674 9005B6C0 8000B674 9005B6C0 8000B674 9005B6C0 8000B674 9005B6C0 8000B674 9005B6C0 8000B674 9005B6C0 8000B674 9005B6C0 8000B674 9005B6C0 stw [r5 - 0x4940], r0 +8000B678 7C651B78 8000B678 7C651B78 8000B678 7C651B78 8000B678 7C651B78 8000B678 7C651B78 8000B678 7C651B78 8000B678 7C651B78 8000B678 7C651B78 mr r5, r3 +8000B67C A8FE02B8 8000B67C A8FE02B8 8000B67C A8FE02B8 8000B67C A8FE02B8 8000B67C A8FE02B8 8000B67C A8FE02B8 8000B67C A8FE02B8 8000B67C A8FE02B8 lha r7, [r30 + 0x02B8] +8000B680 3C808000 8000B680 3C808000 8000B680 3C808000 8000B680 3C808000 8000B680 3C808000 8000B680 3C808000 8000B680 3C808000 8000B680 3C808000 lis r4, 0x8000 +8000B684 6084B6AC 8000B684 6084B6AC 8000B684 6084B6AC 8000B684 6084B6AC 8000B684 6084B6AC 8000B684 6084B6AC 8000B684 6084B6AC 8000B684 6084B6AC ori r4, r4, 0xB6AC +8000B688 38640018 8000B688 38640018 8000B688 38640018 8000B688 38640018 8000B688 38640018 8000B688 38640018 8000B688 38640018 8000B688 38640018 addi r3, r4, 0x0018 +8000B68C 4CC63182 8000B68C 4CC63182 8000B68C 4CC63182 8000B68C 4CC63182 8000B68C 4CC63182 8000B68C 4CC63182 8000B68C 4CC63182 8000B68C 4CC63182 crxor crb6, crb6, crb6 +8000B690 4838A86D 8000B690 4838D275 8000B690 4838F115 8000B690 4838EEC5 8000B690 4838BB3D 8000B690 4838BB95 8000B690 4838F295 8000B690 4838DD85 bl sprintf /* 8039A924 */ +8000B694 3C808000 8000B694 3C808000 8000B694 3C808000 8000B694 3C808000 8000B694 3C808000 8000B694 3C808000 8000B694 3C808000 8000B694 3C808000 lis r4, 0x8000 +8000B698 6084B6C4 8000B698 6084B6C4 8000B698 6084B6C4 8000B698 6084B6C4 8000B698 6084B6C4 8000B698 6084B6C4 8000B698 6084B6C4 8000B698 6084B6C4 ori r4, r4, 0xB6C4 +8000B69C 7F83E378 8000B69C 7F83E378 8000B69C 7F83E378 8000B69C 7F83E378 8000B69C 7F83E378 8000B69C 7F83E378 8000B69C 7F83E378 8000B69C 7F83E378 mr r3, r28 +8000B6A0 8004FFFC 8000B6A0 8004FFFC 8000B6A0 8004FFFC 8000B6A0 8004FFFC 8000B6A0 8004FFFC 8000B6A0 8004FFFC 8000B6A0 8004FFFC 8000B6A0 8004FFFC lwz r0, [r4 - 0x0004] +8000B6A4 7C0803A6 8000B6A4 7C0803A6 8000B6A4 7C0803A6 8000B6A4 7C0803A6 8000B6A4 7C0803A6 8000B6A4 7C0803A6 8000B6A4 7C0803A6 8000B6A4 7C0803A6 mtlr r0 +8000B6A8 4E800020 8000B6A8 4E800020 8000B6A8 4E800020 8000B6A8 4E800020 8000B6A8 4E800020 8000B6A8 4E800020 8000B6A8 4E800020 8000B6A8 4E800020 blr +8000B6AC 25730A0A 8000B6AC 25730A0A 8000B6AC 25730A0A 8000B6AC 25730A0A 8000B6AC 25730A0A 8000B6AC 25730A0A 8000B6AC 25730A0A 8000B6AC 25730A0A .invalid +8000B6B0 48503A25 8000B6B0 48503A25 8000B6B0 48503A25 8000B6B0 48503A25 8000B6B0 48503A25 8000B6B0 48503A25 8000B6B0 48503A25 8000B6B0 48503A25 bl +0x00503A24 /* 8050F0D4 */ +8000B6B4 642F2564 8000B6B4 642F2564 8000B6B4 642F2564 8000B6B4 642F2564 8000B6B4 642F2564 8000B6B4 642F2564 8000B6B4 642F2564 8000B6B4 642F2564 oris r15, r1, 0x2564 +8000B6B8 00000000 8000B6B8 00000000 8000B6B8 00000000 8000B6B8 00000000 8000B6B8 00000000 8000B6B8 00000000 8000B6B8 00000000 8000B6B8 00000000 .invalid PSO DC Reticle Colours DCReticleColors diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars-TextHandlerXB.x86.inc.s b/system/client-functions/EnemyHPBars/EnemyHPBars-TextHandlerXB.x86.inc.s new file mode 100644 index 00000000..6ea32c46 --- /dev/null +++ b/system/client-functions/EnemyHPBars/EnemyHPBars-TextHandlerXB.x86.inc.s @@ -0,0 +1,30 @@ + ret + + # Call table: 2 functions (on_window_created, on_hp_updated) + jmp on_window_created + +on_hp_updated: + call rewrite_string + movsx ecx, word [ebp + 0x02BC] # Replaced opcode at callsite + ret + +on_window_created: + mov [0x00010C08], eax # prev_desc + push ebp + mov ebp, ebx + call rewrite_string + pop ebp + mov dword [esp + 4], 0x00010C1C # Change first argument to desc_buf + jmp [0x00010C04] # Call original function + +rewrite_string: + movsx eax, word [ebp + 0x02BC] # max HP + push eax + movsx eax, word [ebp + 0x0330] # current HP + push eax + push dword [0x00010C08] # prev_desc + push 0x00010C0C # desc_template + push 0x00010C1C # desc_buf + call [0x00010C00] # sprintf + add esp, 0x14 + ret diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OE0.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OE0.patch.s index 9c5ef29f..62225176 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OE0.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OE0.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838BB3D # 8000B690 => bl +0x0038BB3C /* 803971CC */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80261B38 (4 bytes) + .data 0x80261B38 # address + .data 0x00000004 # size + .data 0x4BDA9B19 # 80261B38 => bl -0x002564E8 /* 8000B650 */ # region @ 80261B9C (4 bytes) .data 0x80261B9C # address .data 0x00000004 # size .data 0x4BFE1545 # 80261B9C => bl -0x0001EABC /* 802430E0 */ + # region @ 80261CF8 (4 bytes) + .data 0x80261CF8 # address + .data 0x00000004 # size + .data 0x4BDA996D # 80261CF8 => bl -0x00256694 /* 8000B664 */ # region @ 804CB610 (4 bytes) .data 0x804CB610 # address .data 0x00000004 # size - .data 0x42640000 # 804CB610 => bc 19, 4, +0x00000000 /* 804CB610 */ + .data 0x42960000 # 804CB610 => bc 20, 22, +0x00000000 /* 804CB610 */ # region @ 804CB61C (4 bytes) .data 0x804CB61C # address .data 0x00000004 # size - .data 0x42640000 # 804CB61C => bc 19, 4, +0x00000000 /* 804CB61C */ + .data 0x42960000 # 804CB61C => bc 20, 22, +0x00000000 /* 804CB61C */ # region @ 804CB628 (4 bytes) .data 0x804CB628 # address .data 0x00000004 # size - .data 0x42640000 # 804CB628 => bc 19, 4, +0x00000000 /* 804CB628 */ + .data 0x42960000 # 804CB628 => bc 20, 22, +0x00000000 /* 804CB628 */ # region @ 804CB634 (4 bytes) .data 0x804CB634 # address .data 0x00000004 # size - .data 0x42640000 # 804CB634 => bc 19, 4, +0x00000000 /* 804CB634 */ + .data 0x42960000 # 804CB634 => bc 20, 22, +0x00000000 /* 804CB634 */ # region @ 804CB6D0 (4 bytes) .data 0x804CB6D0 # address .data 0x00000004 # size - .data 0x42300000 # 804CB6D0 => bdnz cr4, +0x00000000 /* 804CB6D0 */ + .data 0x42780000 # 804CB6D0 => bc 19, 24, +0x00000000 /* 804CB6D0 */ # region @ 804CB6EC (4 bytes) .data 0x804CB6EC # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805CC8C4 (4 bytes) .data 0x805CC8C4 # address .data 0x00000004 # size - .data 0x42A00000 # 805CC8C4 => b +0x00000000 /* 805CC8C4 */ + .data 0x42C00000 # 805CC8C4 => b +0x00000000 /* 805CC8C4 */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OE1.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OE1.patch.s index d886d3fe..91180930 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OE1.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OE1.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838BB95 # 8000B690 => bl +0x0038BB94 /* 80397224 */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80261B38 (4 bytes) + .data 0x80261B38 # address + .data 0x00000004 # size + .data 0x4BDA9B19 # 80261B38 => bl -0x002564E8 /* 8000B650 */ # region @ 80261B9C (4 bytes) .data 0x80261B9C # address .data 0x00000004 # size .data 0x4BFE1545 # 80261B9C => bl -0x0001EABC /* 802430E0 */ + # region @ 80261CF8 (4 bytes) + .data 0x80261CF8 # address + .data 0x00000004 # size + .data 0x4BDA996D # 80261CF8 => bl -0x00256694 /* 8000B664 */ # region @ 804CBAF0 (4 bytes) .data 0x804CBAF0 # address .data 0x00000004 # size - .data 0x42640000 # 804CBAF0 => bc 19, 4, +0x00000000 /* 804CBAF0 */ + .data 0x42960000 # 804CBAF0 => bc 20, 22, +0x00000000 /* 804CBAF0 */ # region @ 804CBAFC (4 bytes) .data 0x804CBAFC # address .data 0x00000004 # size - .data 0x42640000 # 804CBAFC => bc 19, 4, +0x00000000 /* 804CBAFC */ + .data 0x42960000 # 804CBAFC => bc 20, 22, +0x00000000 /* 804CBAFC */ # region @ 804CBB08 (4 bytes) .data 0x804CBB08 # address .data 0x00000004 # size - .data 0x42640000 # 804CBB08 => bc 19, 4, +0x00000000 /* 804CBB08 */ + .data 0x42960000 # 804CBB08 => bc 20, 22, +0x00000000 /* 804CBB08 */ # region @ 804CBB14 (4 bytes) .data 0x804CBB14 # address .data 0x00000004 # size - .data 0x42640000 # 804CBB14 => bc 19, 4, +0x00000000 /* 804CBB14 */ + .data 0x42960000 # 804CBB14 => bc 20, 22, +0x00000000 /* 804CBB14 */ # region @ 804CBBB0 (4 bytes) .data 0x804CBBB0 # address .data 0x00000004 # size - .data 0x42300000 # 804CBBB0 => bdnz cr4, +0x00000000 /* 804CBBB0 */ + .data 0x42780000 # 804CBBB0 => bc 19, 24, +0x00000000 /* 804CBBB0 */ # region @ 804CBBCC (4 bytes) .data 0x804CBBCC # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805D38E4 (4 bytes) .data 0x805D38E4 # address .data 0x00000004 # size - .data 0x42A00000 # 805D38E4 => b +0x00000000 /* 805D38E4 */ + .data 0x42C00000 # 805D38E4 => b +0x00000000 /* 805D38E4 */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OE2.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OE2.patch.s index 12f47be0..feea8bfe 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OE2.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OE2.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838F295 # 8000B690 => bl +0x0038F294 /* 8039A924 */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80262EF8 (4 bytes) + .data 0x80262EF8 # address + .data 0x00000004 # size + .data 0x4BDA8759 # 80262EF8 => bl -0x002578A8 /* 8000B650 */ # region @ 80262F5C (4 bytes) .data 0x80262F5C # address .data 0x00000004 # size .data 0x4BFE12B1 # 80262F5C => bl -0x0001ED50 /* 8024420C */ + # region @ 802630B8 (4 bytes) + .data 0x802630B8 # address + .data 0x00000004 # size + .data 0x4BDA85AD # 802630B8 => bl -0x00257A54 /* 8000B664 */ # region @ 804D0158 (4 bytes) .data 0x804D0158 # address .data 0x00000004 # size - .data 0x42640000 # 804D0158 => bc 19, 4, +0x00000000 /* 804D0158 */ + .data 0x42960000 # 804D0158 => bc 20, 22, +0x00000000 /* 804D0158 */ # region @ 804D0164 (4 bytes) .data 0x804D0164 # address .data 0x00000004 # size - .data 0x42640000 # 804D0164 => bc 19, 4, +0x00000000 /* 804D0164 */ + .data 0x42960000 # 804D0164 => bc 20, 22, +0x00000000 /* 804D0164 */ # region @ 804D0170 (4 bytes) .data 0x804D0170 # address .data 0x00000004 # size - .data 0x42640000 # 804D0170 => bc 19, 4, +0x00000000 /* 804D0170 */ + .data 0x42960000 # 804D0170 => bc 20, 22, +0x00000000 /* 804D0170 */ # region @ 804D017C (4 bytes) .data 0x804D017C # address .data 0x00000004 # size - .data 0x42640000 # 804D017C => bc 19, 4, +0x00000000 /* 804D017C */ + .data 0x42960000 # 804D017C => bc 20, 22, +0x00000000 /* 804D017C */ # region @ 804D0218 (4 bytes) .data 0x804D0218 # address .data 0x00000004 # size - .data 0x42300000 # 804D0218 => bdnz cr4, +0x00000000 /* 804D0218 */ + .data 0x42780000 # 804D0218 => bc 19, 24, +0x00000000 /* 804D0218 */ # region @ 804D0234 (4 bytes) .data 0x804D0234 # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805DD104 (4 bytes) .data 0x805DD104 # address .data 0x00000004 # size - .data 0x42A00000 # 805DD104 => b +0x00000000 /* 805DD104 */ + .data 0x42C00000 # 805DD104 => b +0x00000000 /* 805DD104 */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ2.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ2.patch.s index e4583339..a605fe88 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ2.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ2.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838A86D # 8000B690 => bl +0x0038A86C /* 80395EFC */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80261260 (4 bytes) + .data 0x80261260 # address + .data 0x00000004 # size + .data 0x4BDAA3F1 # 80261260 => bl -0x00255C10 /* 8000B650 */ # region @ 802612C4 (4 bytes) .data 0x802612C4 # address .data 0x00000004 # size .data 0x4BFE1541 # 802612C4 => bl -0x0001EAC0 /* 80242804 */ + # region @ 80261420 (4 bytes) + .data 0x80261420 # address + .data 0x00000004 # size + .data 0x4BDAA245 # 80261420 => bl -0x00255DBC /* 8000B664 */ # region @ 804CAE40 (4 bytes) .data 0x804CAE40 # address .data 0x00000004 # size - .data 0x42640000 # 804CAE40 => bc 19, 4, +0x00000000 /* 804CAE40 */ + .data 0x42960000 # 804CAE40 => bc 20, 22, +0x00000000 /* 804CAE40 */ # region @ 804CAE4C (4 bytes) .data 0x804CAE4C # address .data 0x00000004 # size - .data 0x42640000 # 804CAE4C => bc 19, 4, +0x00000000 /* 804CAE4C */ + .data 0x42960000 # 804CAE4C => bc 20, 22, +0x00000000 /* 804CAE4C */ # region @ 804CAE58 (4 bytes) .data 0x804CAE58 # address .data 0x00000004 # size - .data 0x42640000 # 804CAE58 => bc 19, 4, +0x00000000 /* 804CAE58 */ + .data 0x42960000 # 804CAE58 => bc 20, 22, +0x00000000 /* 804CAE58 */ # region @ 804CAE64 (4 bytes) .data 0x804CAE64 # address .data 0x00000004 # size - .data 0x42640000 # 804CAE64 => bc 19, 4, +0x00000000 /* 804CAE64 */ + .data 0x42960000 # 804CAE64 => bc 20, 22, +0x00000000 /* 804CAE64 */ # region @ 804CAF00 (4 bytes) .data 0x804CAF00 # address .data 0x00000004 # size - .data 0x42300000 # 804CAF00 => bdnz cr4, +0x00000000 /* 804CAF00 */ + .data 0x42780000 # 804CAF00 => bc 19, 24, +0x00000000 /* 804CAF00 */ # region @ 804CAF1C (4 bytes) .data 0x804CAF1C # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805CBFBC (4 bytes) .data 0x805CBFBC # address .data 0x00000004 # size - .data 0x42A00000 # 805CBFBC => b +0x00000000 /* 805CBFBC */ + .data 0x42C00000 # 805CBFBC => b +0x00000000 /* 805CBFBC */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ3.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ3.patch.s index 2d54a52f..f1c73d7e 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ3.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ3.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838D275 # 8000B690 => bl +0x0038D274 /* 80398904 */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80261E38 (4 bytes) + .data 0x80261E38 # address + .data 0x00000004 # size + .data 0x4BDA9819 # 80261E38 => bl -0x002567E8 /* 8000B650 */ # region @ 80261E9C (4 bytes) .data 0x80261E9C # address .data 0x00000004 # size .data 0x4BFE1349 # 80261E9C => bl -0x0001ECB8 /* 802431E4 */ + # region @ 80261FF8 (4 bytes) + .data 0x80261FF8 # address + .data 0x00000004 # size + .data 0x4BDA966D # 80261FF8 => bl -0x00256994 /* 8000B664 */ # region @ 804CE590 (4 bytes) .data 0x804CE590 # address .data 0x00000004 # size - .data 0x42640000 # 804CE590 => bc 19, 4, +0x00000000 /* 804CE590 */ + .data 0x42960000 # 804CE590 => bc 20, 22, +0x00000000 /* 804CE590 */ # region @ 804CE59C (4 bytes) .data 0x804CE59C # address .data 0x00000004 # size - .data 0x42640000 # 804CE59C => bc 19, 4, +0x00000000 /* 804CE59C */ + .data 0x42960000 # 804CE59C => bc 20, 22, +0x00000000 /* 804CE59C */ # region @ 804CE5A8 (4 bytes) .data 0x804CE5A8 # address .data 0x00000004 # size - .data 0x42640000 # 804CE5A8 => bc 19, 4, +0x00000000 /* 804CE5A8 */ + .data 0x42960000 # 804CE5A8 => bc 20, 22, +0x00000000 /* 804CE5A8 */ # region @ 804CE5B4 (4 bytes) .data 0x804CE5B4 # address .data 0x00000004 # size - .data 0x42640000 # 804CE5B4 => bc 19, 4, +0x00000000 /* 804CE5B4 */ + .data 0x42960000 # 804CE5B4 => bc 20, 22, +0x00000000 /* 804CE5B4 */ # region @ 804CE650 (4 bytes) .data 0x804CE650 # address .data 0x00000004 # size - .data 0x42300000 # 804CE650 => bdnz cr4, +0x00000000 /* 804CE650 */ + .data 0x42780000 # 804CE650 => bc 19, 24, +0x00000000 /* 804CE650 */ # region @ 804CE66C (4 bytes) .data 0x804CE66C # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805D65BC (4 bytes) .data 0x805D65BC # address .data 0x00000004 # size - .data 0x42A00000 # 805D65BC => b +0x00000000 /* 805D65BC */ + .data 0x42C00000 # 805D65BC => b +0x00000000 /* 805D65BC */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ4.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ4.patch.s index df6ed822..05d83871 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ4.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ4.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838F115 # 8000B690 => bl +0x0038F114 /* 8039A7A4 */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80262E80 (4 bytes) + .data 0x80262E80 # address + .data 0x00000004 # size + .data 0x4BDA87D1 # 80262E80 => bl -0x00257830 /* 8000B650 */ # region @ 80262EE4 (4 bytes) .data 0x80262EE4 # address .data 0x00000004 # size .data 0x4BFE0665 # 80262EE4 => bl -0x0001F99C /* 80243548 */ + # region @ 80263040 (4 bytes) + .data 0x80263040 # address + .data 0x00000004 # size + .data 0x4BDA8625 # 80263040 => bl -0x002579DC /* 8000B664 */ # region @ 804D0AE0 (4 bytes) .data 0x804D0AE0 # address .data 0x00000004 # size - .data 0x42640000 # 804D0AE0 => bc 19, 4, +0x00000000 /* 804D0AE0 */ + .data 0x42960000 # 804D0AE0 => bc 20, 22, +0x00000000 /* 804D0AE0 */ # region @ 804D0AEC (4 bytes) .data 0x804D0AEC # address .data 0x00000004 # size - .data 0x42640000 # 804D0AEC => bc 19, 4, +0x00000000 /* 804D0AEC */ + .data 0x42960000 # 804D0AEC => bc 20, 22, +0x00000000 /* 804D0AEC */ # region @ 804D0AF8 (4 bytes) .data 0x804D0AF8 # address .data 0x00000004 # size - .data 0x42640000 # 804D0AF8 => bc 19, 4, +0x00000000 /* 804D0AF8 */ + .data 0x42960000 # 804D0AF8 => bc 20, 22, +0x00000000 /* 804D0AF8 */ # region @ 804D0B04 (4 bytes) .data 0x804D0B04 # address .data 0x00000004 # size - .data 0x42640000 # 804D0B04 => bc 19, 4, +0x00000000 /* 804D0B04 */ + .data 0x42960000 # 804D0B04 => bc 20, 22, +0x00000000 /* 804D0B04 */ # region @ 804D0BA0 (4 bytes) .data 0x804D0BA0 # address .data 0x00000004 # size - .data 0x42300000 # 804D0BA0 => bdnz cr4, +0x00000000 /* 804D0BA0 */ + .data 0x42780000 # 804D0BA0 => bc 19, 24, +0x00000000 /* 804D0BA0 */ # region @ 804D0BBC (4 bytes) .data 0x804D0BBC # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805DDA5C (4 bytes) .data 0x805DDA5C # address .data 0x00000004 # size - .data 0x42A00000 # 805DDA5C => b +0x00000000 /* 805DDA5C */ + .data 0x42C00000 # 805DDA5C => b +0x00000000 /* 805DDA5C */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ5.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ5.patch.s index d9b40160..bbeb684b 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ5.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OJ5.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838EEC5 # 8000B690 => bl +0x0038EEC4 /* 8039A554 */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80262C34 (4 bytes) + .data 0x80262C34 # address + .data 0x00000004 # size + .data 0x4BDA8A1D # 80262C34 => bl -0x002575E4 /* 8000B650 */ # region @ 80262C98 (4 bytes) .data 0x80262C98 # address .data 0x00000004 # size .data 0x4BFE1241 # 80262C98 => bl -0x0001EDC0 /* 80243ED8 */ + # region @ 80262DF4 (4 bytes) + .data 0x80262DF4 # address + .data 0x00000004 # size + .data 0x4BDA8871 # 80262DF4 => bl -0x00257790 /* 8000B664 */ # region @ 804D0880 (4 bytes) .data 0x804D0880 # address .data 0x00000004 # size - .data 0x42640000 # 804D0880 => bc 19, 4, +0x00000000 /* 804D0880 */ + .data 0x42960000 # 804D0880 => bc 20, 22, +0x00000000 /* 804D0880 */ # region @ 804D088C (4 bytes) .data 0x804D088C # address .data 0x00000004 # size - .data 0x42640000 # 804D088C => bc 19, 4, +0x00000000 /* 804D088C */ + .data 0x42960000 # 804D088C => bc 20, 22, +0x00000000 /* 804D088C */ # region @ 804D0898 (4 bytes) .data 0x804D0898 # address .data 0x00000004 # size - .data 0x42640000 # 804D0898 => bc 19, 4, +0x00000000 /* 804D0898 */ + .data 0x42960000 # 804D0898 => bc 20, 22, +0x00000000 /* 804D0898 */ # region @ 804D08A4 (4 bytes) .data 0x804D08A4 # address .data 0x00000004 # size - .data 0x42640000 # 804D08A4 => bc 19, 4, +0x00000000 /* 804D08A4 */ + .data 0x42960000 # 804D08A4 => bc 20, 22, +0x00000000 /* 804D08A4 */ # region @ 804D0940 (4 bytes) .data 0x804D0940 # address .data 0x00000004 # size - .data 0x42300000 # 804D0940 => bdnz cr4, +0x00000000 /* 804D0940 */ + .data 0x42780000 # 804D0940 => bc 19, 24, +0x00000000 /* 804D0940 */ # region @ 804D095C (4 bytes) .data 0x804D095C # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805DD7FC (4 bytes) .data 0x805DD7FC # address .data 0x00000004 # size - .data 0x42A00000 # 805DD7FC => b +0x00000000 /* 805DD7FC */ + .data 0x42C00000 # 805DD7FC => b +0x00000000 /* 805DD7FC */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.3OP0.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.3OP0.patch.s index 0b84c720..7e61415b 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.3OP0.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.3OP0.patch.s @@ -9,30 +9,68 @@ reloc0: .offsetof start start: .include WriteCodeBlocksGC + # region @ 8000B650 (108 bytes) + .data 0x8000B650 # address + .data 0x0000006C # size + .data 0x3CA08001 # 8000B650 => lis r5, 0x8001 + .data 0x8065B6BC # 8000B654 => lwz r3, [r5 - 0x4944] + .data 0x7FFEFB78 # 8000B658 => mr r30, r31 + .data 0xA8DE032C # 8000B65C => lha r6, [r30 + 0x032C] + .data 0x48000010 # 8000B660 => b +0x00000010 /* 8000B670 */ + .data 0xA8DE02B8 # 8000B664 => lha r6, [r30 + 0x02B8] + .data 0x3CA08001 # 8000B668 => lis r5, 0x8001 + .data 0x9065B6BC # 8000B66C => stw [r5 - 0x4944], r3 + .data 0x7C0802A6 # 8000B670 => mflr r0 + .data 0x9005B6C0 # 8000B674 => stw [r5 - 0x4940], r0 + .data 0x7C651B78 # 8000B678 => mr r5, r3 + .data 0xA8FE02B8 # 8000B67C => lha r7, [r30 + 0x02B8] + .data 0x3C808000 # 8000B680 => lis r4, 0x8000 + .data 0x6084B6AC # 8000B684 => ori r4, r4, 0xB6AC + .data 0x38640018 # 8000B688 => addi r3, r4, 0x0018 + .data 0x4CC63182 # 8000B68C => crxor crb6, crb6, crb6 + .data 0x4838DD85 # 8000B690 => bl +0x0038DD84 /* 80399414 */ + .data 0x3C808000 # 8000B694 => lis r4, 0x8000 + .data 0x6084B6C4 # 8000B698 => ori r4, r4, 0xB6C4 + .data 0x7F83E378 # 8000B69C => mr r3, r28 + .data 0x8004FFFC # 8000B6A0 => lwz r0, [r4 - 0x0004] + .data 0x7C0803A6 # 8000B6A4 => mtlr r0 + .data 0x4E800020 # 8000B6A8 => blr + .data 0x25730A0A # 8000B6AC => .invalid + .data 0x48503A25 # 8000B6B0 => bl +0x00503A24 /* 8050F0D4 */ + .data 0x642F2564 # 8000B6B4 => oris r15, r1, 0x2564 + .data 0x00000000 # 8000B6B8 => .invalid + # region @ 80262740 (4 bytes) + .data 0x80262740 # address + .data 0x00000004 # size + .data 0x4BDA8F11 # 80262740 => bl -0x002570F0 /* 8000B650 */ # region @ 802627A4 (4 bytes) .data 0x802627A4 # address .data 0x00000004 # size .data 0x4BFE12B1 # 802627A4 => bl -0x0001ED50 /* 80243A54 */ + # region @ 80262900 (4 bytes) + .data 0x80262900 # address + .data 0x00000004 # size + .data 0x4BDA8D65 # 80262900 => bl -0x0025729C /* 8000B664 */ # region @ 804D0548 (4 bytes) .data 0x804D0548 # address .data 0x00000004 # size - .data 0x42640000 # 804D0548 => bc 19, 4, +0x00000000 /* 804D0548 */ + .data 0x42960000 # 804D0548 => bc 20, 22, +0x00000000 /* 804D0548 */ # region @ 804D0554 (4 bytes) .data 0x804D0554 # address .data 0x00000004 # size - .data 0x42640000 # 804D0554 => bc 19, 4, +0x00000000 /* 804D0554 */ + .data 0x42960000 # 804D0554 => bc 20, 22, +0x00000000 /* 804D0554 */ # region @ 804D0560 (4 bytes) .data 0x804D0560 # address .data 0x00000004 # size - .data 0x42640000 # 804D0560 => bc 19, 4, +0x00000000 /* 804D0560 */ + .data 0x42960000 # 804D0560 => bc 20, 22, +0x00000000 /* 804D0560 */ # region @ 804D056C (4 bytes) .data 0x804D056C # address .data 0x00000004 # size - .data 0x42640000 # 804D056C => bc 19, 4, +0x00000000 /* 804D056C */ + .data 0x42960000 # 804D056C => bc 20, 22, +0x00000000 /* 804D056C */ # region @ 804D0608 (4 bytes) .data 0x804D0608 # address .data 0x00000004 # size - .data 0x42300000 # 804D0608 => bdnz cr4, +0x00000000 /* 804D0608 */ + .data 0x42780000 # 804D0608 => bc 19, 24, +0x00000000 /* 804D0608 */ # region @ 804D0624 (4 bytes) .data 0x804D0624 # address .data 0x00000004 # size @@ -40,7 +78,7 @@ start: # region @ 805D9344 (4 bytes) .data 0x805D9344 # address .data 0x00000004 # size - .data 0x42A00000 # 805D9344 => b +0x00000000 /* 805D9344 */ + .data 0x42C00000 # 805D9344 => b +0x00000000 /* 805D9344 */ # end sentinel .data 0x00000000 # address .data 0x00000000 # size diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.4OED.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.4OED.patch.s index b8115894..ceb314fd 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.4OED.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.4OED.patch.s @@ -12,30 +12,58 @@ start: .include WriteCodeBlocksXB .data 0x0026B063 .data 0x00000001 - .binary A0 + .binary C0 .data 0x0026B06C .data 0x00000001 - .binary DA + .binary FA .data 0x0026B266 .data 0x00000004 .binary 836004FD .data 0x0054A92C .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A938 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A944 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A950 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A9EC .data 0x00000004 - .data 0x42300000 + .data 0x42780000 .data 0x0054AA08 .data 0x00000004 .data 0xFF00FF15 + + .data 0x00010C00 + .deltaof str_data_start, str_data_end +str_data_start: + .data 0x00318308 # sprintf + .data 0x00264E80 # Original function for on_window_created callsite + .data 0x00000000 + .binary "%s\n\nHP:%d/%d" + .data 0x00000000 + .data 0x00000000 +str_data_end: + + .data 0x002DB050 + .deltaof new_code_start, new_code_end +new_code_start: + .include EnemyHPBars-TextHandlerXB +new_code_end: + + .data 0x0026B241 + .data 0x00000007 + nop + nop + .binary E80BFE0600 # call 002DB053 (on_hp_updated) + + .data 0x0026B028 + .data 0x00000005 + .binary E824000700 # call 002DB051 (on_window_created) + .data 0x00000000 .data 0x00000000 diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.4OEU.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.4OEU.patch.s index 98d8c892..96471f35 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.4OEU.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.4OEU.patch.s @@ -12,30 +12,58 @@ start: .include WriteCodeBlocksXB .data 0x0026B193 .data 0x00000001 - .binary A0 + .binary C0 .data 0x0026B19C .data 0x00000001 - .binary DA + .binary FA .data 0x0026B396 .data 0x00000004 .binary 836004FD .data 0x0054A1CC .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A1D8 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A1E4 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A1F0 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A28C .data 0x00000004 - .data 0x42300000 + .data 0x42780000 .data 0x0054A2A8 .data 0x00000004 .data 0xFF00FF15 + + .data 0x00010C00 + .deltaof str_data_start, str_data_end +str_data_start: + .data 0x00317D7A # sprintf + .data 0x00264F80 # Original function for on_window_created callsite + .data 0x00000000 + .binary "%s\n\nHP:%d/%d" + .data 0x00000000 + .data 0x00000000 +str_data_end: + + .data 0x002DB550 + .deltaof new_code_start, new_code_end +new_code_start: + .include EnemyHPBars-TextHandlerXB +new_code_end: + + .data 0x0026B371 + .data 0x00000007 + nop + nop + .binary E8DB010700 # call 002DB553 (on_hp_updated) + + .data 0x0026B158 + .data 0x00000005 + .binary E8F4030700 # call 002DB551 (on_window_created) + .data 0x00000000 .data 0x00000000 diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.4OJB.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.4OJB.patch.s index 243f4106..1b0c651c 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.4OJB.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.4OJB.patch.s @@ -12,30 +12,58 @@ start: .include WriteCodeBlocksXB .data 0x0026ABA3 .data 0x00000001 - .binary A0 + .binary C0 .data 0x0026ABAC .data 0x00000001 - .binary DA + .binary FA .data 0x0026ADA6 .data 0x00000004 .binary 836004FD .data 0x00545334 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x00545340 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054534C .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x00545358 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x005453F4 .data 0x00000004 - .data 0x42300000 + .data 0x42780000 .data 0x00545410 .data 0x00000004 .data 0xFF00FF15 + + .data 0x00010C00 + .deltaof str_data_start, str_data_end +str_data_start: + .data 0x00313B22 # sprintf + .data 0x002649C0 # Original function for on_window_created callsite + .data 0x00000000 + .binary "%s\n\nHP:%d/%d" + .data 0x00000000 + .data 0x00000000 +str_data_end: + + .data 0x002D90E0 + .deltaof new_code_start, new_code_end +new_code_start: + .include EnemyHPBars-TextHandlerXB +new_code_end: + + .data 0x0026AD81 + .data 0x00000007 + nop + nop + .binary E85BE30600 # call 002D90E3 (on_hp_updated) + + .data 0x0026AB68 + .data 0x00000005 + .binary E874E50600 # call 002D90E1 (on_window_created) + .data 0x00000000 .data 0x00000000 diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.4OJD.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.4OJD.patch.s index 02454a0c..ac0a1bd1 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.4OJD.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.4OJD.patch.s @@ -12,30 +12,58 @@ start: .include WriteCodeBlocksXB .data 0x0026AF13 .data 0x00000001 - .binary A0 + .binary C0 .data 0x0026AF1C .data 0x00000001 - .binary DA + .binary FA .data 0x0026B116 .data 0x00000004 .binary 836004FD .data 0x005459C4 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x005459D0 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x005459DC .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x005459E8 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x00545A84 .data 0x00000004 - .data 0x42300000 + .data 0x42780000 .data 0x00545AA0 .data 0x00000004 .data 0xFF00FF15 + + .data 0x00010C00 + .deltaof str_data_start, str_data_end +str_data_start: + .data 0x00314722 # sprintf + .data 0x00264D80 # Original function for on_window_created callsite + .data 0x00000000 + .binary "%s\n\nHP:%d/%d" + .data 0x00000000 + .data 0x00000000 +str_data_end: + + .data 0x002D9CB0 + .deltaof new_code_start, new_code_end +new_code_start: + .include EnemyHPBars-TextHandlerXB +new_code_end: + + .data 0x0026B0F1 + .data 0x00000007 + nop + nop + .binary E8BBEB0600 # call 002D9CB3 (on_hp_updated) + + .data 0x0026AED8 + .data 0x00000005 + .binary E8D4ED0600 # call 002D9CB1 (on_window_created) + .data 0x00000000 .data 0x00000000 diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.4OJU.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.4OJU.patch.s index 630a0035..645fc804 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.4OJU.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.4OJU.patch.s @@ -12,30 +12,58 @@ start: .include WriteCodeBlocksXB .data 0x0026B2F3 .data 0x00000001 - .binary A0 + .binary C0 .data 0x0026B2FC .data 0x00000001 - .binary DA + .binary FA .data 0x0026B4F6 .data 0x00000004 .binary 836004FD .data 0x0054D4AC .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054D4B8 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054D4C4 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054D4D0 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054D56C .data 0x00000004 - .data 0x42300000 + .data 0x42780000 .data 0x0054D588 .data 0x00000004 .data 0xFF00FF15 + + .data 0x00010C00 + .deltaof str_data_start, str_data_end +str_data_start: + .data 0x00317D7A # sprintf + .data 0x00265130 # Original function for on_window_created callsite + .data 0x00000000 + .binary "%s\n\nHP:%d/%d" + .data 0x00000000 + .data 0x00000000 +str_data_end: + + .data 0x002DB580 + .deltaof new_code_start, new_code_end +new_code_start: + .include EnemyHPBars-TextHandlerXB +new_code_end: + + .data 0x0026B4D1 + .data 0x00000007 + nop + nop + .binary E8AB000700 # call 002DB583 (on_hp_updated) + + .data 0x0026B2B8 + .data 0x00000005 + .binary E8C4020700 # call 002DB581 (on_window_created) + .data 0x00000000 .data 0x00000000 diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.4OPD.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.4OPD.patch.s index 17fcf20e..0bf20b73 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.4OPD.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.4OPD.patch.s @@ -12,30 +12,58 @@ start: .include WriteCodeBlocksXB .data 0x0026B083 .data 0x00000001 - .binary A0 + .binary C0 .data 0x0026B08C .data 0x00000001 - .binary DA + .binary FA .data 0x0026B286 .data 0x00000004 .binary 836004FD .data 0x0054A92C .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A938 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A944 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A950 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054A9EC .data 0x00000004 - .data 0x42300000 + .data 0x42780000 .data 0x0054AA08 .data 0x00000004 .data 0xFF00FF15 + + .data 0x00010C00 + .deltaof str_data_start, str_data_end +str_data_start: + .data 0x00318338 # sprintf + .data 0x00264EA0 # Original function for on_window_created callsite + .data 0x00000000 + .binary "%s\n\nHP:%d/%d" + .data 0x00000000 + .data 0x00000000 +str_data_end: + + .data 0x002DB080 + .deltaof new_code_start, new_code_end +new_code_start: + .include EnemyHPBars-TextHandlerXB +new_code_end: + + .data 0x0026B261 + .data 0x00000007 + nop + nop + .binary E81BFE0600 # call 002DB083 (on_hp_updated) + + .data 0x0026B048 + .data 0x00000005 + .binary E834000700 # call 002DB081 (on_window_created) + .data 0x00000000 .data 0x00000000 diff --git a/system/client-functions/EnemyHPBars/EnemyHPBars.4OPU.patch.s b/system/client-functions/EnemyHPBars/EnemyHPBars.4OPU.patch.s index ad8a432f..1f8b835e 100644 --- a/system/client-functions/EnemyHPBars/EnemyHPBars.4OPU.patch.s +++ b/system/client-functions/EnemyHPBars/EnemyHPBars.4OPU.patch.s @@ -12,30 +12,58 @@ start: .include WriteCodeBlocksXB .data 0x0026B193 .data 0x00000001 - .binary A0 + .binary C0 .data 0x0026B19C .data 0x00000001 - .binary DA + .binary FA .data 0x0026B396 .data 0x00000004 .binary 836004FD .data 0x0054ACCC .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054ACD8 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054ACE4 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054ACF0 .data 0x00000004 - .data 0x42640000 + .data 0x42960000 .data 0x0054AD8C .data 0x00000004 - .data 0x42300000 + .data 0x42780000 .data 0x0054ADA8 .data 0x00000004 .data 0xFF00FF15 + + .data 0x00010C00 + .deltaof str_data_start, str_data_end +str_data_start: + .data 0x00318858 # sprintf + .data 0x00264FD0 # Original function for on_window_created callsite + .data 0x00000000 + .binary "%s\n\nHP:%d/%d" + .data 0x00000000 + .data 0x00000000 +str_data_end: + + .data 0x002DB5D0 + .deltaof new_code_start, new_code_end +new_code_start: + .include EnemyHPBars-TextHandlerXB +new_code_end: + + .data 0x0026B371 + .data 0x00000007 + nop + nop + .binary E85B020700 # call 002DB5D3 (on_hp_updated) + + .data 0x0026B158 + .data 0x00000005 + .binary E874040700 # call 002DB5D1 (on_window_created) + .data 0x00000000 .data 0x00000000 diff --git a/system/client-functions/System/VersionDetectWithPatchFunctionsXB.x86.inc.s b/system/client-functions/System/VersionDetectWithPatchFunctionsXB.x86.inc.s index 5af1cb65..ce4f8188 100644 --- a/system/client-functions/System/VersionDetectWithPatchFunctionsXB.x86.inc.s +++ b/system/client-functions/System/VersionDetectWithPatchFunctionsXB.x86.inc.s @@ -1,5 +1,5 @@ # Returns the client specific_version in eax and the address of the -# MmSetAddressProtect function pointer in ecx, which is immediately followed by +# MmSetAddressProtect function pointer in edx, which is immediately followed by # the MmQueryAddressProtect function pointer. start: