From b6992adeab30d84e8f70c095149814df52f50870 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 18 Aug 2026 04:19:26 -0600 Subject: [PATCH] feat(decomp): propagate func_8017D4F0 (gate lane) --- config/dedup.us.yaml | 7 ++++ src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c | 25 +----------- src/ov_SC05_006/ov_SC05_006_jr_8017BEBC.c | 25 +----------- src/shared/engine_core.h | 48 +++++++++++++++++++++++ 4 files changed, 57 insertions(+), 48 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index d35f20db2..11a29ac07 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -15244,3 +15244,10 @@ groups: func: DEFINE_func_8017ED5C vram: 0x8017ED5C binaries: [ov_SC01_005, ov_SC01_006] + - id: E_func_8017D4F0 + tier: h_exact + hash: 233ab6ca39239be7aa7a5baeebfb2da70b468452 + source: src/shared/engine_core.h + func: DEFINE_func_8017D4F0 + vram: 0x8017D4F0 + binaries: [ov_SC05_001, ov_SC05_006] diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c b/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c index 19951ff2a..ad5065f95 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c @@ -3483,30 +3483,7 @@ void func_8017D480(void *a0) { * counter unconditionally (gcc puts that store in the beqz delay slot), * then either slide @0x2A down by 0x10 or run the 3-call teardown. */ -extern void func_80147324(s32 arg0); -extern void func_80147084(s32 *a0); -extern void func_801472B4(void *a0); -extern void func_8017D0F8(int); - -void func_8017D4F0(void *a0) -{ - s32 t; - s32 *sub; - - t = *(s32 *)((s32)a0 + 0x1C); - sub = *(s32 **)((s32)a0 + 0x34); - *(s32 *)((s32)a0 + 0x1C) = t + 1; - if (t < 0x20) { - *(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10; - } else { - func_80147324(*(u16 *)((s32)a0 + 0x2C)); - func_80147084(sub); - func_801472B4(sub); - *(s32 *)((s32)a0 + 0x1C) = 0; - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } - ((void (*)(void *))func_8017D0F8)(a0); -} +DEFINE_func_8017D4F0() /* dedup: shared engine-core @0x8017D4F0 (src/shared) */ diff --git a/src/ov_SC05_006/ov_SC05_006_jr_8017BEBC.c b/src/ov_SC05_006/ov_SC05_006_jr_8017BEBC.c index 295e340fb..4bf1fea5c 100644 --- a/src/ov_SC05_006/ov_SC05_006_jr_8017BEBC.c +++ b/src/ov_SC05_006/ov_SC05_006_jr_8017BEBC.c @@ -3480,30 +3480,7 @@ void func_8017D480(void *a0) { * counter unconditionally (gcc puts that store in the beqz delay slot), * then either slide @0x2A down by 0x10 or run the 3-call teardown. */ -extern void func_80147324(s32 arg0); -extern void func_80147084(s32 *a0); -extern void func_801472B4(void *a0); -extern void func_8017D0F8(int); - -void func_8017D4F0(void *a0) -{ - s32 t; - s32 *sub; - - t = *(s32 *)((s32)a0 + 0x1C); - sub = *(s32 **)((s32)a0 + 0x34); - *(s32 *)((s32)a0 + 0x1C) = t + 1; - if (t < 0x20) { - *(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10; - } else { - func_80147324(*(u16 *)((s32)a0 + 0x2C)); - func_80147084(sub); - func_801472B4(sub); - *(s32 *)((s32)a0 + 0x1C) = 0; - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } - ((void (*)(void *))func_8017D0F8)(a0); -} +DEFINE_func_8017D4F0() /* dedup: shared engine-core @0x8017D4F0 (src/shared) */ diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index 5cfc280a1..2027a0f45 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -65900,6 +65900,30 @@ return result; \ } +#define DEFINE_func_8017D4F0() \ + extern void func_80147324(s32 arg0); \ + extern void func_80147084(s32 *a0); \ + extern void func_801472B4(void *a0); \ + extern void func_8017D0F8(int); \ + void func_8017D4F0(void *a0) \ + { \ + s32 t; \ + s32 *sub; \ + t = *(s32 *)((s32)a0 + 0x1C); \ + sub = *(s32 **)((s32)a0 + 0x34); \ + *(s32 *)((s32)a0 + 0x1C) = t + 1; \ + if (t < 0x20) { \ + *(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10; \ + } else { \ + func_80147324(*(u16 *)((s32)a0 + 0x2C)); \ + func_80147084(sub); \ + func_801472B4(sub); \ + *(s32 *)((s32)a0 + 0x1C) = 0; \ + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \ + } \ + ((void (*)(void *))func_8017D0F8)(a0); \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -161205,4 +161229,28 @@ return result; \ } +#define DEFINE_func_8017D4F0() \ + extern void func_80147324(s32 arg0); \ + extern void func_80147084(s32 *a0); \ + extern void func_801472B4(void *a0); \ + extern void func_8017D0F8(int); \ + void func_8017D4F0(void *a0) \ + { \ + s32 t; \ + s32 *sub; \ + t = *(s32 *)((s32)a0 + 0x1C); \ + sub = *(s32 **)((s32)a0 + 0x34); \ + *(s32 *)((s32)a0 + 0x1C) = t + 1; \ + if (t < 0x20) { \ + *(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10; \ + } else { \ + func_80147324(*(u16 *)((s32)a0 + 0x2C)); \ + func_80147084(sub); \ + func_801472B4(sub); \ + *(s32 *)((s32)a0 + 0x1C) = 0; \ + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \ + } \ + ((void (*)(void *))func_8017D0F8)(a0); \ + } + #endif