From 65ece408526bbbb7f610b1d425058e257e85d231 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 24 Aug 2026 19:27:55 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20main=20lane=20m05aba=20?= =?UTF-8?q?=E2=80=94=203=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_8002D59C func_80036F98 func_8005D138 --- src/800.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- src/800c3.c | 10 +++++++++- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/800.c b/src/800.c index d52f1bf58..c6ccf160f 100644 --- a/src/800.c +++ b/src/800.c @@ -11949,7 +11949,42 @@ u8 func_8002D4B8(void) { INCLUDE_ASM("asm/nonmatchings/800", func_8002D4C8); -INCLUDE_ASM("asm/nonmatchings/800", func_8002D59C); +extern s8 D_800A4F17; +extern u8 D_800A4F18; +extern s16 D_800A4EFC; + +void func_8002D59C(s32 arg0, s32 arg1, s32 arg2) { + u16 id; + u8 v0; + s8 *p; + + *(u8 *)&D_800A4F17 = 1; + id = arg0 & 0xFFFF; + if (id < 0x80) { + func_8002E138(id, arg1 & 0xFFFF, arg2 & 0xFFFF); + } else if (id >= 0x100) { + if (id < 0x400) { + func_8002D904(id); + } else { + func_8002DC68(id | (arg2 << 16), arg1 & 0xFFFF); + } + } + + p = &D_800A4F17; + v0 = D_800A4F18; + *p = v0; + if (v0 != 0) { + s16 cnt = D_800A4EFC; + if (cnt != 0) { + D_800A4EFC = cnt - 1; + } + func_80030F80(); + func_8002D320(); + func_80031BE0(); + D_800A4F18 = 0; + *p = 0; + } +} INCLUDE_ASM("asm/nonmatchings/800", func_8002D678); @@ -15242,7 +15277,13 @@ void func_80036EE8(void) { INCLUDE_ASM("asm/nonmatchings/800", func_80036F18); -INCLUDE_ASM("asm/nonmatchings/800", func_80036F98); +extern s32 D_80078F10; +extern s32 D_8006AEE8; + +void func_80036F98(void) { + D_80078F10 = 0; + D_8006AEE8 = 0; +} INCLUDE_ASM("asm/nonmatchings/800", func_80036FB0); diff --git a/src/800c3.c b/src/800c3.c index ad289cba4..8212b7642 100644 --- a/src/800c3.c +++ b/src/800c3.c @@ -118,7 +118,15 @@ INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D0F8); INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D118); -INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D138); +extern s32 D_800729A8; +extern s32 D_80072990; + +s32 func_8005D138(s32 arg0) { + if (D_800729A8 != 0) { + return *(u8 *)(D_80072990 + (arg0 >> 4) * 0xF0 + 0xE8) == 8; + } + return 0; +} extern void* (*D_80072970)(void);