From 85f2e712590f66feabb8c9b446ae2106bdacd8ef Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:19:42 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20worker=20gate=20=E2=80=94=20+4?= =?UTF-8?q?=20fns=20x0=20propagated=20(fleet=2095.2%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c | 68 +++++++++++++++++++++-- src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c | 2 +- src/ov_SC03_118/ov_SC03_118_jr_801863CC.c | 2 +- 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c index 025710c5c..12549936b 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c @@ -3383,7 +3383,7 @@ void func_8017C0C8(void *a0) { INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C104); -extern void func_8017C154(void); +extern void func_8017C154(); void func_8017C12C(void) { func_8017C154(); } @@ -3391,7 +3391,31 @@ void func_8017C12C(void) { DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C154); + extern SVECTOR_8017C290 D_8018D434[4]; + void func_8017C154(void *a0) + { + s16 buf20[4]; + SVECTOR_8017C290 c; + SVECTOR_8017C290 d; + SVECTOR_8017C290 e; + SVECTOR_8017C290 f; + s32 i, j; + *(s16 *)((u8 *)a0 + 0x10) = *(s32 *)((u8 *)a0 + 0x30); + func_80015978((s32)a0 + 4, (s32 *)buf20); + for (j = 0; j < 4; j++) { + c.vx = 0; + c.vy = 0; + c.vz = 0; + d = c; + e = c; + for (i = 0; i < 4; i++) { + f = D_8018D434[i]; + *(s16 *)((u8 *)a0 + 0x12) = i + j; + func_8017C290((int)a0, buf20, &c, &d, &e, &f, (s16 *)((u8 *)a0 + 0x10)); + } + } + } + extern void func_80013F3C(s32 a0); extern void func_80017714(void *); @@ -4368,7 +4392,22 @@ DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DD7C); -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DDBC); + extern s32 func_801399F0(s32 a0); + extern void func_80139914(s32 a0); + extern void func_8017D9C8(s32 a0); + extern void func_80171A1C(u8*); + extern s16 D_80126B3C; + void func_8017DDBC(s32 param_1) + { + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + *(s32 *)(param_1 + 0x200) = 0x60; + func_8017D9C8((s32)D_80126B3C); + ((void (*)(s32))func_80171A1C)(param_1); + } + } + INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DE24); @@ -5402,7 +5441,15 @@ s32 func_8017F4CC(void) } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F4F8); + extern void (*D_8018DA64[])(void); + extern void func_80162D28(s32*); + void func_8017F4F8(void *a0) { + D_8018DA64[*(u16 *)((s32)a0 + 0x2)](); + if (*(s32 *)((s32)a0 + 0x20) != 0) { + ((void (*)(void *))func_80162D28)(a0); + } + } + extern void func_8014659C(void); @@ -5508,7 +5555,18 @@ INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F7F INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F84C); -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F8A8); + extern void func_8017FB40(void); + extern void (*D_8018DAA8[])(int); + extern void func_80162D28(s32*); + void func_8017F8A8(int param_1) + { + func_8017FB40(); + D_8018DAA8[*(unsigned short *)(param_1 + 2)](param_1); + if (*(s32 *)(param_1 + 0x20) != 0) { + ((void (*)(int))func_80162D28)(param_1); + } + } + extern void func_8014659C(void); extern void func_8001C810(s32 a0, s32 a1); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c b/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c index 4589e83b5..89d0461ce 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c @@ -2679,7 +2679,7 @@ extern void func_8017BFC8(void *a0); extern void func_8017C07C(void); extern void (*D_8018D420[])(void); extern void func_8017C0C8(void *a0); -extern void func_8017C154(void); +extern void func_8017C154(); extern void func_8017C12C(void); extern void func_8017C14C(void); extern void (*D_8018D460[])(void); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c b/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c index 605da0da5..a8022351f 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c @@ -2669,7 +2669,7 @@ extern void func_8017BFC8(void *a0); extern void func_8017C07C(void); extern void (*D_8018D420[])(void); extern void func_8017C0C8(void *a0); -extern void func_8017C154(void); +extern void func_8017C154(); extern void func_8017C12C(void); extern void func_8017C14C(void); extern void (*D_8018D460[])(void);