From 9cd4eb00714c47e13b373854618e4eca588e800d Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 18 Aug 2026 14:54:54 -0600 Subject: [PATCH] =?UTF-8?q?feat(phase-26):=20h=5Fseq=20family=20sweep=20?= =?UTF-8?q?=E2=80=94=203=20member-matches=20banked=20via=20remap=5Fhseq?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/md_SC03_134/md_SC03_134.c | 60 ++++++++++++++++++++++++++++++++++- src/md_SC04_026/md_SC04_026.c | 60 ++++++++++++++++++++++++++++++++++- src/md_SC05_025/md_SC05_025.c | 60 ++++++++++++++++++++++++++++++++++- 3 files changed, 177 insertions(+), 3 deletions(-) diff --git a/src/md_SC03_134/md_SC03_134.c b/src/md_SC03_134/md_SC03_134.c index f506d3e0d..59699a206 100644 --- a/src/md_SC03_134/md_SC03_134.c +++ b/src/md_SC03_134/md_SC03_134.c @@ -437,7 +437,65 @@ void func_801E30EC(void *param_1) { } -INCLUDE_ASM("asm/md_SC03_134/nonmatchings/md_SC03_134", func_801E3290); + +extern s32 func_80029504(void); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012E88C(u8 *a0); +extern s32 func_80178B18(s32 a0, s32 a1); + + +void func_801E3290(void *a0) { + + extern s32 D_801E9E3C; + extern s32 D_801E9E38; + extern s32 D_801E37D0[]; + extern s32 D_801E37B8[][2]; + extern s32 D_801E37E8[]; + extern s32 D_801E389C; + s32 v0; + s32 cur; + s32 target; + + if ((u32)(func_80029504() - 0x122) >= 0xA) { + func_8012CAE4(a0); + return; + } + + if (*(s16 *)((s32)a0 + 0x70) == 0) { + D_801E9E3C = func_8012C658(0x1C1, 1, 0); + D_801E9E38 = func_8012C658(0x1C1, 2, 0); + } + + v0 = func_8012C1B8(); + *(s32 *)((s32)a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(a0); + return; + } + + func_8001C214(v0, D_801E37D0[*(s16 *)((s32)a0 + 0x70)]); + *(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF; + func_8012E8E0((s32)a0, (s32)&D_801E37B8[*(s16 *)((s32)a0 + 0x70)]); + *(s16 *)((s32)a0 + 0x2) = 1; + func_8012E8E0((s32)a0, (s32)&D_801E37B8[*(s16 *)((s32)a0 + 0x70)]); + func_8012E88C((u8 *)a0); + + cur = *(s32 *)((s32)a0 + 0x90); + target = D_801E37E8[*(s16 *)((s32)a0 + 0x70)]; + if (cur != target) { + func_8012A828((s32)a0, target); + } + + if (*(s16 *)((s32)a0 + 0x70) != 0) { + func_80178B18((s32)a0, (s32)&D_801E389C); + } +} + diff --git a/src/md_SC04_026/md_SC04_026.c b/src/md_SC04_026/md_SC04_026.c index 3396db906..a1fc9140c 100644 --- a/src/md_SC04_026/md_SC04_026.c +++ b/src/md_SC04_026/md_SC04_026.c @@ -442,7 +442,65 @@ void func_801E8654(void *param_1) { } -INCLUDE_ASM("asm/md_SC04_026/nonmatchings/md_SC04_026", func_801E87F8); + +extern s32 func_80029504(void); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012E88C(u8 *a0); +extern s32 func_80178B18(s32 a0, s32 a1); + + +void func_801E87F8(void *a0) { + + extern s32 D_801EF37C; + extern s32 D_801EF378; + extern s32 D_801E8D10[]; + extern s32 D_801E8CF8[][2]; + extern s32 D_801E8D28[]; + extern s32 D_801E8DDC; + s32 v0; + s32 cur; + s32 target; + + if ((u32)(func_80029504() - 0x122) >= 0xA) { + func_8012CAE4(a0); + return; + } + + if (*(s16 *)((s32)a0 + 0x70) == 0) { + D_801EF37C = func_8012C658(0x1C1, 1, 0); + D_801EF378 = func_8012C658(0x1C1, 2, 0); + } + + v0 = func_8012C1B8(); + *(s32 *)((s32)a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(a0); + return; + } + + func_8001C214(v0, D_801E8D10[*(s16 *)((s32)a0 + 0x70)]); + *(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF; + func_8012E8E0((s32)a0, (s32)&D_801E8CF8[*(s16 *)((s32)a0 + 0x70)]); + *(s16 *)((s32)a0 + 0x2) = 1; + func_8012E8E0((s32)a0, (s32)&D_801E8CF8[*(s16 *)((s32)a0 + 0x70)]); + func_8012E88C((u8 *)a0); + + cur = *(s32 *)((s32)a0 + 0x90); + target = D_801E8D28[*(s16 *)((s32)a0 + 0x70)]; + if (cur != target) { + func_8012A828((s32)a0, target); + } + + if (*(s16 *)((s32)a0 + 0x70) != 0) { + func_80178B18((s32)a0, (s32)&D_801E8DDC); + } +} + diff --git a/src/md_SC05_025/md_SC05_025.c b/src/md_SC05_025/md_SC05_025.c index 31d91d98a..1b7ae2f0c 100644 --- a/src/md_SC05_025/md_SC05_025.c +++ b/src/md_SC05_025/md_SC05_025.c @@ -434,7 +434,65 @@ void func_801EE4DC(void *param_1) { } -INCLUDE_ASM("asm/md_SC05_025/nonmatchings/md_SC05_025", func_801EE680); + +extern s32 func_80029504(void); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012E88C(u8 *a0); +extern s32 func_80178B18(s32 a0, s32 a1); + + +void func_801EE680(void *a0) { + + extern s32 D_801F5204; + extern s32 D_801F5200; + extern s32 D_801EEB98[]; + extern s32 D_801EEB80[][2]; + extern s32 D_801EEBB0[]; + extern s32 D_801EEC64; + s32 v0; + s32 cur; + s32 target; + + if ((u32)(func_80029504() - 0x122) >= 0xA) { + func_8012CAE4(a0); + return; + } + + if (*(s16 *)((s32)a0 + 0x70) == 0) { + D_801F5204 = func_8012C658(0x1C1, 1, 0); + D_801F5200 = func_8012C658(0x1C1, 2, 0); + } + + v0 = func_8012C1B8(); + *(s32 *)((s32)a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(a0); + return; + } + + func_8001C214(v0, D_801EEB98[*(s16 *)((s32)a0 + 0x70)]); + *(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF; + func_8012E8E0((s32)a0, (s32)&D_801EEB80[*(s16 *)((s32)a0 + 0x70)]); + *(s16 *)((s32)a0 + 0x2) = 1; + func_8012E8E0((s32)a0, (s32)&D_801EEB80[*(s16 *)((s32)a0 + 0x70)]); + func_8012E88C((u8 *)a0); + + cur = *(s32 *)((s32)a0 + 0x90); + target = D_801EEBB0[*(s16 *)((s32)a0 + 0x70)]; + if (cur != target) { + func_8012A828((s32)a0, target); + } + + if (*(s16 *)((s32)a0 + 0x70) != 0) { + func_80178B18((s32)a0, (s32)&D_801EEC64); + } +} +