From cbf9c3faaed7e97acef1ded20309f62abd570dfc Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 17 Aug 2026 14:07:04 -0600 Subject: [PATCH] feat(decomp): propagate func_801860C0 (gate lane) --- config/dedup.us.yaml | 7 ++++ src/ov_SC04_018/ov_SC04_018_jr_80185D70.c | 27 +------------ src/ov_SC04_019/ov_SC04_019_jr_80185D70.c | 28 +------------ src/shared/engine_core.h | 48 +++++++++++++++++++++++ 4 files changed, 57 insertions(+), 53 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index a31c4bbcc..35952e160 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -15160,3 +15160,10 @@ groups: func: DEFINE_func_8018655C vram: 0x8018655C binaries: [ov_SC03_014, ov_SC03_015] + - id: E_func_801860C0 + tier: h_exact + hash: e5cac5b36df8b42b6858b4f2d80a3c9a171b1cb6 + source: src/shared/engine_core.h + func: DEFINE_func_801860C0 + vram: 0x801860C0 + binaries: [ov_SC04_018, ov_SC04_019] diff --git a/src/ov_SC04_018/ov_SC04_018_jr_80185D70.c b/src/ov_SC04_018/ov_SC04_018_jr_80185D70.c index a23d57b5f..f9d68ca54 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_80185D70.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_80185D70.c @@ -3220,32 +3220,7 @@ void func_8018602C(s32 a0, s32 a1) { DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */ -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern s32 D_801B8A2C; - -void func_801860C0(void *a0) -{ - s32 v0; - u16 v0_2; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((u8 *)a0 + 0x20) = v0; - - if (v0 == 0) { - ((void (*)(void *))func_8012CAE4)(a0); - } else { - ((void (*)(s32, s32))func_8001C214)(v0, 0); - - *(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000; - v0_2 = *(u16 *)((u8 *)a0 + 0x2); - *(u16 *)((u8 *)a0 + 0x34) = 0; - *(s32 *)((u8 *)a0 + 0x1C) = 0; - *(u16 *)((u8 *)a0 + 0x5C) = 0x800; - *(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1; - } -} +DEFINE_func_801860C0() /* dedup: shared engine-core @0x801860C0 (src/shared) */ /* func_8018613C — scan the 96-entry / 0x10C-stride D_801202A0 actor table for diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80185D70.c b/src/ov_SC04_019/ov_SC04_019_jr_80185D70.c index 0bd40f013..f7395cbbc 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_80185D70.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_80185D70.c @@ -3182,33 +3182,7 @@ DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */ -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); - -void func_801860C0(void *a0) -{ - - extern s32 D_801B8A2C; - s32 v0; - u16 v0_2; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((u8 *)a0 + 0x20) = v0; - - if (v0 == 0) { - ((void (*)(void *))func_8012CAE4)(a0); - } else { - ((void (*)(s32, s32))func_8001C214)(v0, 0); - - *(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000; - v0_2 = *(u16 *)((u8 *)a0 + 0x2); - *(u16 *)((u8 *)a0 + 0x34) = 0; - *(s32 *)((u8 *)a0 + 0x1C) = 0; - *(u16 *)((u8 *)a0 + 0x5C) = 0x800; - *(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1; - } -} +DEFINE_func_801860C0() /* dedup: shared engine-core @0x801860C0 (src/shared) */ diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index 6803f81f8..8c2ea7b64 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -65565,6 +65565,30 @@ } \ } +#define DEFINE_func_801860C0() \ + extern void func_8012C1B8(void); \ + extern void func_8012CAE4(void *a0); \ + extern void func_8001C214(s32, s32); \ + extern s32 D_801B8A2C; \ + void func_801860C0(void *a0) \ + { \ + s32 v0; \ + u16 v0_2; \ + v0 = ((s32 (*)(void))func_8012C1B8)(); \ + *(s32 *)((u8 *)a0 + 0x20) = v0; \ + if (v0 == 0) { \ + ((void (*)(void *))func_8012CAE4)(a0); \ + } else { \ + ((void (*)(s32, s32))func_8001C214)(v0, 0); \ + *(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000; \ + v0_2 = *(u16 *)((u8 *)a0 + 0x2); \ + *(u16 *)((u8 *)a0 + 0x34) = 0; \ + *(s32 *)((u8 *)a0 + 0x1C) = 0; \ + *(u16 *)((u8 *)a0 + 0x5C) = 0x800; \ + *(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1; \ + } \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -160535,4 +160559,28 @@ } \ } +#define DEFINE_func_801860C0() \ + extern void func_8012C1B8(void); \ + extern void func_8012CAE4(void *a0); \ + extern void func_8001C214(s32, s32); \ + extern s32 D_801B8A2C; \ + void func_801860C0(void *a0) \ + { \ + s32 v0; \ + u16 v0_2; \ + v0 = ((s32 (*)(void))func_8012C1B8)(); \ + *(s32 *)((u8 *)a0 + 0x20) = v0; \ + if (v0 == 0) { \ + ((void (*)(void *))func_8012CAE4)(a0); \ + } else { \ + ((void (*)(s32, s32))func_8001C214)(v0, 0); \ + *(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000; \ + v0_2 = *(u16 *)((u8 *)a0 + 0x2); \ + *(u16 *)((u8 *)a0 + 0x34) = 0; \ + *(s32 *)((u8 *)a0 + 0x1C) = 0; \ + *(u16 *)((u8 *)a0 + 0x5C) = 0x800; \ + *(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1; \ + } \ + } + #endif