From 5bd66c7b5ba17e5fa0a71c842194f191aca0b8d2 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 25 Aug 2026 00:32:56 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20free=20A-prop=20sibling=20lane?= =?UTF-8?q?=20(maintenance=20pass)=20=E2=80=94=20zero=20model=20tokens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ov_SC01_084/ov_SC01_084_jr_8017CA80.c | 13 ++++- src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c | 13 ++++- src/ov_SC03_125/ov_SC03_125_jr_8017D604.c | 62 ++++++++++++++++++++++- src/ov_SC04_020/ov_SC04_020_jr_8017D604.c | 14 ++++- 4 files changed, 98 insertions(+), 4 deletions(-) diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8017CA80.c b/src/ov_SC01_084/ov_SC01_084_jr_8017CA80.c index 2a894c5e6..96ec33c3c 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_8017CA80.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_8017CA80.c @@ -4934,7 +4934,18 @@ void func_80182D3C(int param_1) } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017CA80", func_80182DB4); +extern unsigned char D_801A24C8; +extern void func_8012A828(s32, void*); + +void func_80182DB4(param_1) +int param_1; +{ + *(short *)(param_1 + 2) = 7; + *(short *)(param_1 + 0x5c) = 0; + func_8012A828(param_1, &D_801A24C8); + *(int *)(param_1 + 0x1c) = 0x1e; +} + void func_80182DF8(void *a0) { *(short *)((char *)a0 + 0x2) = 0xB; diff --git a/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c b/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c index b2ce2fd22..c493f828e 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c @@ -5569,7 +5569,18 @@ void func_8018004C(s32 a0) { INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018009C); -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801801B0); +extern short D_801BEA50; +extern void func_8012A828(s32, s32); + +void func_801801B0(param_1) +int param_1; +{ + *(short *)(param_1 + 2) = 9; + *(short *)(param_1 + 0x34) = 0; + func_8012A828(param_1, &D_801BEA50); + *(int *)(param_1 + 0x1c) = 0xf; +} + extern void (*D_8018FC14[])(void); diff --git a/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c b/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c index 78fff56fe..1a0b14168 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c @@ -3577,7 +3577,67 @@ void func_8017F2F4(void *arg0) { INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017D604", func_8017F390); -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017D604", func_8017F41C); +extern s32 D_80188030; +extern s32 D_80188040; +extern s32 D_80188054; +extern s32 D_801BB7A8; +extern s32 func_80029178(s32 arg); +extern s32 func_80029504(void); +extern s32 func_801788B8(s32 arg0, s32 arg1); +extern s32 func_801815EC(void *a0, void *a1); +extern s32 func_801819DC(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012CAE4(void *a0); +extern void func_8012E88C(s32 a0); +extern void func_8012E8A8(u8 *a0); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8017F68C(); + +void func_8017F41C(a0) +void *a0; +{ + + extern s32 D_80188040; + extern s32 D_80188054; + extern s32 D_801BB7A8; + extern s32 D_80188030; + + s32 s1; + + if ((func_80029178(0xF0) & 0xFF) != 0 || + (u32)(func_80029504() - 0x85) < 2) { + func_8012CAE4(a0); + return; + } + + if (func_801815EC(a0, &D_80188040) == 0) { + return; + } + + *(s16 *)(*(s32 *)((char *)a0 + 0x68) + 0xC) = 0x7FFF; + s1 = (s32)&D_80188054 | 0x40000000; + *(s32 *)((char *)a0 + 0x58) = s1; + *(s16 *)((char *)a0 + 0x5C) = 0x800; + + if (((s32 (*)(s32, s32))func_801819DC)(9, 0x12) != 0) { + *(s16 *)((char *)a0 + 0x2) = 2; + ((void (*)(s32, s32))func_8012A828)((s32)a0, (s32)&D_801BB7A8); + func_8012E88C((s32)a0); + func_8012E8E0((s32)a0, (s32)&D_80188030); + *(s32 *)((char *)a0 + 0x58) = s1; + *(s16 *)((char *)a0 + 0x5C) = 0x800; + } else { + *(s16 *)((char *)a0 + 0x2) = 1; + *(s16 *)((char *)a0 + 0x98) = 0; + func_8012E8A8((u8 *)a0); + func_8012E8E0((s32)a0, (s32)&D_80188030); + *(s32 *)((char *)a0 + 0x58) = s1; + *(s16 *)((char *)a0 + 0x5C) = 0; + } + + *(s32 *)((char *)a0 + 0xD4) = func_801788B8((s32)a0, (s32)func_8017F68C); +} + extern void (*D_801880EC[])(void); diff --git a/src/ov_SC04_020/ov_SC04_020_jr_8017D604.c b/src/ov_SC04_020/ov_SC04_020_jr_8017D604.c index 3353ede47..75fa95391 100644 --- a/src/ov_SC04_020/ov_SC04_020_jr_8017D604.c +++ b/src/ov_SC04_020/ov_SC04_020_jr_8017D604.c @@ -3443,7 +3443,19 @@ void func_8017EBBC(s32 param_1) } -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017D604", func_8017EDB0); +extern s16 D_801871F8; +extern void func_8012E8E0(s32, s32); +extern void func_8012E8A8(u8 *a0); + +void func_8017EDB0(a0) +void *a0; +{ + *(s16 *)((u8 *)a0 + 0x2) = 2; + *(s16 *)((u8 *)a0 + 0x34) = 0; + func_8012E8A8((u8 *)a0); + ((s32 (*)(s32, s32))func_8012E8E0)((s32)a0, (s32)&D_801871F8); +} + extern void func_8012E8E0(s32, s32); extern void func_8012E88C(s32);