From 2502eff0eae97930c099b229aa07a3c03e9c01eb Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 26 Aug 2026 03:06:01 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20ABCD=20MAXTOK=20test=20?= =?UTF-8?q?=E2=80=94=20the=2010=20paired=20gen0=20functions=20banked=20(wh?= =?UTF-8?q?ole-binary=20SHA);=20verdict=208k=3D16k=2010/10=20>=2024k=3D32k?= =?UTF-8?q?=208/10=20(P31=20S61-6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/md_MAIN_003/md_MAIN_003.c | 64 ++++++++++++++++++++++- src/ov_SC03_001/ov_SC03_001_jr_80184F64.c | 46 ++++++++++++++-- src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c | 19 ++++++- src/ov_SC05_017/ov_SC05_017_jr_801808D4.c | 19 ++++++- 4 files changed, 142 insertions(+), 6 deletions(-) diff --git a/src/md_MAIN_003/md_MAIN_003.c b/src/md_MAIN_003/md_MAIN_003.c index 9a0dc9cd9..aaff3bc68 100644 --- a/src/md_MAIN_003/md_MAIN_003.c +++ b/src/md_MAIN_003/md_MAIN_003.c @@ -564,7 +564,69 @@ INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D06BC); INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D0740); -INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D09A0); +__asm__(".text\n.align 2\n.globl func_800D09A0\n.ent\tfunc_800D09A0\n" +"func_800D09A0:\n.frame $sp,32,$31\n.mask 0xC0010000,-16\n.fmask 0,0\n" +".set\tnoreorder\n" +"addiu $sp, $sp, -32\n" +"sw $ra, 24($sp)\n" +"sw $fp, 20($sp)\n" +"sw $s0, 16($sp)\n" +"addu $fp, $sp, $zero\n" +"lui $s0, %hi(D_800AF630)\n" +"addiu $s0, $s0, %lo(D_800AF630)\n" +"jal func_800D12D0\n" +"nop\n" +"lui $v0, %hi(D_800EC898)\n" +"lhu $v0, %lo(D_800EC898)($v0)\n" +"nop\n" +"addiu $v1, $v0, 1\n" +"addu $v0, $v1, $zero\n" +"lui $at, %hi(D_800EC898)\n" +"sh $v0, %lo(D_800EC898)($at)\n" +"lui $v0, %hi(D_800EC898)\n" +"lhu $v0, %lo(D_800EC898)($v0)\n" +"nop\n" +"andi $v1, $v0, 4\n" +"sll $a0, $v1, 16\n" +"sra $v0, $a0, 16\n" +"beqz $v0, .L800D0A24\n" +"nop\n" +"lui $v0, %hi(D_800EC894)\n" +"lh $v0, %lo(D_800EC894)($v0)\n" +"nop\n" +"addu $a0, $v0, $zero\n" +"addiu $a1, $zero, 1\n" +"jal func_800D1D14\n" +"nop\n" +"j .L800D0A40\n" +"nop\n" +".L800D0A24:\n" +"lui $v0, %hi(D_800EC894)\n" +"lh $v0, %lo(D_800EC894)($v0)\n" +"nop\n" +"addu $a0, $v0, $zero\n" +"addu $a1, $zero, $zero\n" +"jal func_800D1D14\n" +"nop\n" +".L800D0A40:\n" +"lui $v0, %hi(D_800EC898)\n" +"lh $v0, %lo(D_800EC898)($v0)\n" +"nop\n" +"slti $v1, $v0, 33\n" +"bnez $v1, .L800D0A60\n" +"nop\n" +"jal func_800118AC\n" +"nop\n" +".L800D0A60:\n" +"addu $sp, $fp, $zero\n" +"lw $ra, 24($sp)\n" +"lw $fp, 20($sp)\n" +"lw $s0, 16($sp)\n" +"addiu $sp, $sp, 32\n" +"jr $ra\n" +"nop\n" +".set\treorder\n.end\tfunc_800D09A0\n"); + INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D0A7C); diff --git a/src/ov_SC03_001/ov_SC03_001_jr_80184F64.c b/src/ov_SC03_001/ov_SC03_001_jr_80184F64.c index a03197feb..84b4c3b34 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_80184F64.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_80184F64.c @@ -3227,9 +3227,36 @@ extern void func_80187778(s32*, s32); } -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80184F64", func_80185474); +extern int func_80178970(void); +extern void func_80178D18(void); +extern void func_8012A828(s32, s32); + +void func_80185474(void *arg0) { + + extern short D_801C36E8; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32, s32))func_8012A828)((int)arg0, (int)&D_801C36E8); + *(short *)((char *)arg0 + 0x34) = 2; + } +} + + +extern int func_80178970(void); +extern void func_80178D18(void); +extern void func_8012A828(s32, s32); + +void func_801854D0(void *arg0) { + extern short D_801C36E8; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 9; + ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801C36E8); + *(short *)((char *)arg0 + 0x34) = 2; + } +} -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80184F64", func_801854D0); extern s32 func_801788B8(s32 arg0, s32 arg1); extern s32 func_801855CC(void *a0); @@ -3694,7 +3721,20 @@ extern void func_80178CBC(s32 *a0, s32 a1); } -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80184F64", func_801860CC); +void func_801860CC(void *arg0) { + extern int func_80178970(void); + extern void func_80178D18(void); + extern void func_8012A828(s32, s32); + extern short D_801C36E8; + + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 27; + *(short *)((char *)arg0 + 0x34) = 2; + ((void (*)(s32 *, s32))func_8012A828)((s32 *)arg0, (s32)&D_801C36E8); + } +} + extern void func_8012C1B8(void); extern s32 func_80185C9C(void *a0); diff --git a/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c b/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c index 3af9caf31..ca114b970 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c @@ -6043,7 +6043,24 @@ extern void func_80178CBC(s32 a0, s32 a1); } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FFE8); +extern int func_80178970(void); +extern void func_80178D18(void); +extern void func_8012A828(s32, s32); + +void func_8017FFE8(void *arg0) { + extern u16 D_801ECE68; + extern u16 D_801ECE6A; + extern short D_801B9A64; + void *s0 = arg0; + + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)s0); + *(short *)((char *)s0 + 0x2) = D_801ECE68; + *(short *)((char *)s0 + 0x34) = D_801ECE6A; + ((void (*)(s32, s32))func_8012A828)((s32)s0, (s32)&D_801B9A64); + } +} + extern void func_8012E88C(s32); diff --git a/src/ov_SC05_017/ov_SC05_017_jr_801808D4.c b/src/ov_SC05_017/ov_SC05_017_jr_801808D4.c index cd04ed01b..46a635639 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_801808D4.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_801808D4.c @@ -3502,7 +3502,24 @@ extern void func_80178CBC(s32 a0, s32 a1); } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_801808D4", func_80181490); +extern int func_80178970(void); +extern void func_80178D18(void); +extern void func_8012A828(s32, s32); + +void func_80181490(void *arg0) +{ + extern short D_801ECE78; + extern short D_801ECE7A; + extern short D_801B9A64; + + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = D_801ECE78; + *(short *)((char *)arg0 + 0x34) = D_801ECE7A; + ((void (*)(s32 *, s32))func_8012A828)((s32 *)arg0, (s32)&D_801B9A64); + } +} +