From 7e8c56df5fccc8fa15a32d865aa77ab6ac8f672a Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 24 Aug 2026 19:25:45 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20main=20lane=20m05aa=20=E2=80=94?= =?UTF-8?q?=205=20banked?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked BYTE-IDENTICAL against config/check.us.sha before anything was credited. func_8001BFB0 func_8001D150 func_8002CCB4 func_8005D6CC func_8005E480 --- src/800.c | 18 +++++++++++++++--- src/800c3.c | 41 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/800.c b/src/800.c index a84f39b27..d52f1bf58 100644 --- a/src/800.c +++ b/src/800.c @@ -5817,7 +5817,10 @@ s32 func_8001BFA0(void) { return D_80063074 & 0x1; } -INCLUDE_ASM("asm/nonmatchings/800", func_8001BFB0); +extern s32 D_80063074; +void func_8001BFB0(void) { + D_80063074++; +} INCLUDE_ASM("asm/nonmatchings/800", func_8001BFD0); @@ -6241,7 +6244,12 @@ void func_8001D130(s32 arg0, s32 arg1) { *(s32 *)(arg0 + arg1 * 4) &= 0x80FFFFFF; } -INCLUDE_ASM("asm/nonmatchings/800", func_8001D150); +s32 func_8001D150(s32 *arg0, s32 arg1) { + arg1 *= 4; + arg1 += (s32) arg0; + *(s32 *) arg1 |= 0x1000000; + return *(s32 *) arg1; +} INCLUDE_ASM("asm/nonmatchings/800", func_8001D16C); @@ -11709,7 +11717,11 @@ void func_8002C8F4(void) INCLUDE_ASM("asm/nonmatchings/800", func_8002CC4C); -INCLUDE_ASM("asm/nonmatchings/800", func_8002CCB4); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_8002CCB4(void) { + func_8002D4C8(2, 0); +} INCLUDE_ASM("asm/nonmatchings/800", func_8002CCD8); diff --git a/src/800c3.c b/src/800c3.c index 02cdd169a..ad289cba4 100644 --- a/src/800c3.c +++ b/src/800c3.c @@ -186,7 +186,23 @@ INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D588); INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D6A0); -INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D6CC); +extern s32 *D_800729BC; +extern void (*D_80072984)(void); + +s32 func_8005D6CC(void) { + s32 *ptr = D_800729BC; + + if ((*(s32 *)((s8 *)ptr + 4) & 1) == 0) { + return 0; + } + if ((*ptr & 1) == 0) { + return 0; + } + if (D_80072984 != NULL) { + (*D_80072984)(); + } + return 1; +} INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D734); @@ -255,7 +271,28 @@ s32 func_8005E374(u8 *a0) { INCLUDE_ASM("asm/nonmatchings/800c3", func_8005E3AC); -INCLUDE_ASM("asm/nonmatchings/800c3", func_8005E480); +extern void func_8005EA68(void *arg0, s32 arg1); +extern void func_8005EA88(void *arg0, s32 arg1); +extern void func_8005EAA8(void *arg0, s32 arg1); +extern void func_8005EAC8(void); + +void func_8005E480(void *arg0) { + switch (*(u8 *)((s32)arg0 + 0x46)) { + case 2: + func_8005EA68(arg0, *(u8 *)((s32)arg0 + 0x47)); + break; + case 3: + func_8005EA88(arg0, *(u8 *)((s32)arg0 + 0x47)); + break; + case 4: + if (*(u8 *)((s32)arg0 + 0x48) == 0) { + func_8005EAA8(arg0, *(u8 *)((s32)arg0 + 0x47)); + } else { + func_8005EAC8(); + } + break; + } +} typedef struct Entry {