From ad7ffe5e6e0660fb50a201fca3a9b6b6ea06dad6 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Thu, 13 Aug 2026 04:36:57 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20worker=20gate=20=E2=80=94=20+1?= =?UTF-8?q?=20fns=20x7=20propagated=20(fleet=2095.1%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/dedup.us.yaml | 49 ++++++++ src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c | 3 +- src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c | 92 +++++---------- src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c | 65 +--------- src/shared/engine_core.h | 138 ++++++++++++++++++++++ 5 files changed, 224 insertions(+), 123 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 9bee9d3051..19ab5a0eba 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -14264,3 +14264,52 @@ groups: func: DEFINE_func_8017D0BC vram: 0x8017D0BC binaries: [ov_SC03_002, ov_SC03_125, ov_SC04_020, ov_SC05_018] + - id: E_func_80181A98 + tier: h_exact + hash: 7678540574197b420f17571673856a74783eb9d5 + source: src/shared/engine_core.h + func: DEFINE_func_80181A98 + vram: 0x80181A98 + binaries: [ov_SC03_121, ov_SC04_003] + - id: E_func_8017CFDC + tier: h_exact + hash: 37f67f3adb2e4e2b3392abbf4d460a287e3a0242 + source: src/shared/engine_core.h + func: DEFINE_func_8017CFDC + vram: 0x8017CFDC + binaries: [ov_SC04_003, ov_SC04_006] + - id: E_func_8017CEFC + tier: h_exact + hash: 511a8b68802b6800ebb271e89b28604ee53e3401 + source: src/shared/engine_core.h + func: DEFINE_func_8017CEFC + vram: 0x8017CEFC + binaries: [ov_SC04_003, ov_SC04_006] + - id: E_func_8017CF20 + tier: h_exact + hash: b2f519b347f76cdf673ad6650c93b35879b99129 + source: src/shared/engine_core.h + func: DEFINE_func_8017CF20 + vram: 0x8017CF20 + binaries: [ov_SC04_003, ov_SC04_006] + - id: E_func_8017CEB8 + tier: h_exact + hash: d06a6e548463264b9ac8f10f134ac5aab3da8552 + source: src/shared/engine_core.h + func: DEFINE_func_8017CEB8 + vram: 0x8017CEB8 + binaries: [ov_SC04_003, ov_SC04_006] + - id: E_func_8017D038 + tier: h_exact + hash: 46004117858eec2116c9164d11477cbb9e25ca76 + source: src/shared/engine_core.h + func: DEFINE_func_8017D038 + vram: 0x8017D038 + binaries: [ov_SC04_003, ov_SC04_006] + - id: E_func_8017CF60 + tier: h_exact + hash: b4142e5af3b1129a358b35a90d6948f65123dcfd + source: src/shared/engine_core.h + func: DEFINE_func_8017CF60 + vram: 0x8017CF60 + binaries: [ov_SC04_003, ov_SC04_006] diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c b/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c index b0da0edc77..8a4be332d1 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c @@ -3577,8 +3577,7 @@ INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017BEBC", func_8018190 INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017BEBC", func_801819B8); -void func_80181A98(void) { -} +DEFINE_func_80181A98() /* dedup: shared engine-core @0x80181A98 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017BEBC", func_80181AA0); diff --git a/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c b/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c index ef7c38fa9d..173894def4 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c @@ -3191,7 +3191,29 @@ void func_8017CD9C(void) } -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_8017CE0C); +#include "common.h" + +extern s32 D_8011F9C4; +extern s32 D_80185F04; +extern s32 D_80185FE0; +extern u8 *D_801274C8; +extern void *D_801274CC; +extern void func_80029124(s32, s32); +extern void func_800291F0(s32, s32); +extern void func_8002D4C8(s32, s32); +extern int func_8017D540(int); + +void func_8017CE0C(void) +{ + D_8011F9C4 = 1; + func_80029124(0xCB, 1); + func_800291F0(4, 0xCB); + func_8002D4C8(6, 0); + D_801274C8 = (u8 *)&D_80185F04; + D_801274CC = (void *)&D_80185FE0; + ((void (*)(s32))func_8017D540)(1); +} + extern void (*D_80185C18[])(void); @@ -3203,60 +3225,23 @@ void func_8017CE7C(void *a0) { -extern void func_8017D0AC(void); -extern void func_800167B8(s32 a0); - -s32 func_8017CEB8(s32 a0) { - func_8017D0AC(); - func_800167B8(0); - *(u8 *)(a0 + 0x15) += 1; - return 0; -} +DEFINE_func_8017CEB8() /* dedup: shared engine-core @0x8017CEB8 (src/shared) */ -extern s32 func_800167F0(s32 a0); - -s32 func_8017CEFC(void) { - return (func_800167F0(0) & 0xffff) != 0; -} +DEFINE_func_8017CEFC() /* dedup: shared engine-core @0x8017CEFC (src/shared) */ -extern void func_8017D0D4(void); - -s32 func_8017CF20(s32 a0) { - func_8017D0D4(); - *(s32 *)(a0 + 0x28) = 10; - *(u8 *)(a0 + 0x15) += 1; - return 0; -} +DEFINE_func_8017CF20() /* dedup: shared engine-core @0x8017CF20 (src/shared) */ -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8001BFD0(void); -extern void func_800D0C48(s32 a0); -extern void func_800D1E28(void); - -s32 func_8017CF60(u8 *a0) { - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D0C48(1); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} +DEFINE_func_8017CF60() /* dedup: shared engine-core @0x8017CF60 (src/shared) */ -extern void func_800D1EBC(void); -void func_8017CFDC(void) { - func_800D1EBC(); -} +DEFINE_func_8017CFDC() /* dedup: shared engine-core @0x8017CFDC (src/shared) */ @@ -3269,23 +3254,7 @@ void func_8017CFFC(void *a0) { -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); - -s32 func_8017D038(s32 a0) { - s32 t = *(s32 *)(a0 + 0x28) - 1; - - *(s32 *)(a0 + 0x28) = t; - if (t == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} +DEFINE_func_8017D038() /* dedup: shared engine-core @0x8017D038 (src/shared) */ extern void func_8016EE40(s32 a0, s32 a1, s32 a2); @@ -4760,8 +4729,7 @@ s32 func_80181A70(void *a0) { } -void func_80181A98(void) { -} +DEFINE_func_80181A98() /* dedup: shared engine-core @0x80181A98 (src/shared) */ /* Declarations copied VERBATIM from src/ov_SC03_014/ov_SC03_014_jr_801848E4.c diff --git a/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c b/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c index 9ffb60861b..ab0fe0d31a 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c @@ -3196,60 +3196,23 @@ void func_8017CE7C(void *a0) { -extern void func_8017D0AC(void); -extern void func_800167B8(s32 a0); - -s32 func_8017CEB8(s32 a0) { - func_8017D0AC(); - func_800167B8(0); - *(u8 *)(a0 + 0x15) += 1; - return 0; -} +DEFINE_func_8017CEB8() /* dedup: shared engine-core @0x8017CEB8 (src/shared) */ -extern s32 func_800167F0(s32 a0); - -s32 func_8017CEFC(void) { - return (func_800167F0(0) & 0xffff) != 0; -} +DEFINE_func_8017CEFC() /* dedup: shared engine-core @0x8017CEFC (src/shared) */ -extern void func_8017D0D4(void); - -s32 func_8017CF20(s32 a0) { - func_8017D0D4(); - *(s32 *)(a0 + 0x28) = 10; - *(u8 *)(a0 + 0x15) += 1; - return 0; -} +DEFINE_func_8017CF20() /* dedup: shared engine-core @0x8017CF20 (src/shared) */ -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8001BFD0(void); -extern void func_800D0C48(s32 a0); -extern void func_800D1E28(void); - -s32 func_8017CF60(u8 *a0) { - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D0C48(1); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} +DEFINE_func_8017CF60() /* dedup: shared engine-core @0x8017CF60 (src/shared) */ -extern void func_800D1EBC(void); - void func_8017CFDC(void) { - func_800D1EBC(); - } +DEFINE_func_8017CFDC() /* dedup: shared engine-core @0x8017CFDC (src/shared) */ @@ -3262,23 +3225,7 @@ void func_8017CFFC(void *a0) { -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); - -s32 func_8017D038(s32 a0) { - s32 t = *(s32 *)(a0 + 0x28) - 1; - - *(s32 *)(a0 + 0x28) = t; - if (t == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} +DEFINE_func_8017D038() /* dedup: shared engine-core @0x8017D038 (src/shared) */ extern void func_8016EE40(s32 a0, s32 a1, s32 a2); diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index f35396f1ce..61f9cffbb1 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -56986,6 +56986,75 @@ } \ } +#define DEFINE_func_80181A98() \ + void func_80181A98(void) { \ + } + +#define DEFINE_func_8017CFDC() \ + extern void func_800D1EBC(void); \ + void func_8017CFDC(void) { \ + func_800D1EBC(); \ + } + +#define DEFINE_func_8017CEFC() \ + extern s32 func_800167F0(s32 a0); \ + s32 func_8017CEFC(void) { \ + return (func_800167F0(0) & 0xffff) != 0; \ + } + +#define DEFINE_func_8017CF20() \ + extern void func_8017D0D4(void); \ + s32 func_8017CF20(s32 a0) { \ + func_8017D0D4(); \ + *(s32 *)(a0 + 0x28) = 10; \ + *(u8 *)(a0 + 0x15) += 1; \ + return 0; \ + } + +#define DEFINE_func_8017CEB8() \ + extern void func_8017D0AC(void); \ + extern void func_800167B8(s32 a0); \ + s32 func_8017CEB8(s32 a0) { \ + func_8017D0AC(); \ + func_800167B8(0); \ + *(u8 *)(a0 + 0x15) += 1; \ + return 0; \ + } + +#define DEFINE_func_8017D038() \ + extern void func_8002D4C8(s32 a0, s32 a1); \ + extern void func_8001BFD0(void); \ + extern void func_800D1E28(void); \ + s32 func_8017D038(s32 a0) { \ + s32 t = *(s32 *)(a0 + 0x28) - 1; \ + *(s32 *)(a0 + 0x28) = t; \ + if (t == -1) { \ + func_8002D4C8(0x1C, 0); \ + func_8001BFD0(); \ + func_8002D4C8(0x1D, 0); \ + func_800D1E28(); \ + *(u8 *)(a0 + 0x15) += 1; \ + } \ + return 0; \ + } + +#define DEFINE_func_8017CF60() \ + extern void func_8002D4C8(s32 a0, s32 a1); \ + extern void func_8001BFD0(void); \ + extern void func_800D0C48(s32 a0); \ + extern void func_800D1E28(void); \ + s32 func_8017CF60(u8 *a0) { \ + if (--(*(s32 *)(a0 + 0x28)) == -1) { \ + func_8002D4C8(0x1C, 0); \ + func_8001BFD0(); \ + func_8002D4C8(0x1D, 0); \ + func_800D0C48(1); \ + func_800D1E28(); \ + *(u8 *)(a0 + 0x15) += 1; \ + } \ + return 0; \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -143377,4 +143446,73 @@ } \ } +#define DEFINE_func_80181A98() \ + void func_80181A98(void) { \ + } + +#define DEFINE_func_8017CFDC() \ + extern void func_800D1EBC(void); \ + void func_8017CFDC(void) { \ + func_800D1EBC(); \ + } + +#define DEFINE_func_8017CEFC() \ + extern s32 func_800167F0(s32 a0); \ + s32 func_8017CEFC(void) { \ + return (func_800167F0(0) & 0xffff) != 0; \ + } + +#define DEFINE_func_8017CF20() \ + extern void func_8017D0D4(void); \ + s32 func_8017CF20(s32 a0) { \ + func_8017D0D4(); \ + *(s32 *)(a0 + 0x28) = 10; \ + *(u8 *)(a0 + 0x15) += 1; \ + return 0; \ + } + +#define DEFINE_func_8017CEB8() \ + extern void func_8017D0AC(void); \ + extern void func_800167B8(s32 a0); \ + s32 func_8017CEB8(s32 a0) { \ + func_8017D0AC(); \ + func_800167B8(0); \ + *(u8 *)(a0 + 0x15) += 1; \ + return 0; \ + } + +#define DEFINE_func_8017D038() \ + extern void func_8002D4C8(s32 a0, s32 a1); \ + extern void func_8001BFD0(void); \ + extern void func_800D1E28(void); \ + s32 func_8017D038(s32 a0) { \ + s32 t = *(s32 *)(a0 + 0x28) - 1; \ + *(s32 *)(a0 + 0x28) = t; \ + if (t == -1) { \ + func_8002D4C8(0x1C, 0); \ + func_8001BFD0(); \ + func_8002D4C8(0x1D, 0); \ + func_800D1E28(); \ + *(u8 *)(a0 + 0x15) += 1; \ + } \ + return 0; \ + } + +#define DEFINE_func_8017CF60() \ + extern void func_8002D4C8(s32 a0, s32 a1); \ + extern void func_8001BFD0(void); \ + extern void func_800D0C48(s32 a0); \ + extern void func_800D1E28(void); \ + s32 func_8017CF60(u8 *a0) { \ + if (--(*(s32 *)(a0 + 0x28)) == -1) { \ + func_8002D4C8(0x1C, 0); \ + func_8001BFD0(); \ + func_8002D4C8(0x1D, 0); \ + func_800D0C48(1); \ + func_800D1E28(); \ + *(u8 *)(a0 + 0x15) += 1; \ + } \ + return 0; \ + } + #endif