From 22878beeeb2ca731a1280598db36b225d024acd8 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:04:52 -0600 Subject: [PATCH] feat(phase-31): propagate func_801854CC (gate lane) --- config/dedup.us.yaml | 7 +++ src/ov_SC02_000/ov_SC02_000_jr_8018173C.c | 37 +----------- src/ov_SC02_003/ov_SC02_003_jr_8018173C.c | 2 +- src/shared/engine_core.h | 68 +++++++++++++++++++++++ 4 files changed, 77 insertions(+), 37 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index e46416744..74e374eed 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -14943,3 +14943,10 @@ groups: func: DEFINE_func_80184250 vram: 0x80184250 binaries: [ov_SC02_000, ov_SC02_003] + - id: E_func_801854CC + tier: h_exact + hash: 7fb030ab4a2db2e1283e4c994a6b84e7d7213b1b + source: src/shared/engine_core.h + func: DEFINE_func_801854CC + vram: 0x801854CC + binaries: [ov_SC02_000, ov_SC02_003] diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c index 9df09d34d..dbe5ee929 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c @@ -4073,42 +4073,7 @@ DEFINE_func_801854C4() /* dedup: shared engine-core @0x801854C4 (src/shared) */ #include "common.h" -extern void func_8001D074(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_8001CD9C(int, void *); -extern u8 D_8018EFF4; -extern u8 D_8018EFF5; -extern u8 D_8018EFF6; - -void func_801854CC(void *a0) { - register void *s1 __asm__("$17"); - register void *s0 __asm__("$16"); - - s1 = (void *)((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D); - *(void **)((s32)a0 + 0xCC) = s1; - if (s1 != 0) { - s0 = &D_8018EFF4; - func_800233CC(s0, 0x50); - func_8001CD9C((s32)s1, s0); - *(u32 *)((s32)s1 + 4) = *(u32 *)((s32)s1 + 4) | 0x50000040; - } - - s1 = (void *)((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D); - *(void **)((s32)a0 + 0xD0) = s1; - if (s1 != 0) { - s0 = &D_8018EFF4; - func_800233CC(s0, 0x40); - func_8001CD9C((s32)s1, s0); - *(u32 *)((s32)s1 + 4) = *(u32 *)((s32)s1 + 4) | 0x50000040; - } - - D_8018EFF4 = 0xFF; - D_8018EFF5 = 0x10; - D_8018EFF6 = 0x10; - *(u16 *)((s32)a0 + 0xDC) = 6; - *(u16 *)((s32)a0 + 0xDE) = 0xFF; - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; -} +DEFINE_func_801854CC() /* dedup: shared engine-core @0x801854CC (src/shared) */ #include "common.h" diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c index 8559a31c7..4a63a4d22 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c @@ -3188,7 +3188,7 @@ INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_8018545 DEFINE_func_801854C4() /* dedup: shared engine-core @0x801854C4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_801854CC); +DEFINE_func_801854CC() /* dedup: shared engine-core @0x801854CC (src/shared) */ INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_801855D4); diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index 254da3c7b..69ade862b 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -61476,6 +61476,40 @@ *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \ } +#define DEFINE_func_801854CC() \ + extern void func_8001D074(s32 a0, s32 a1); \ + extern void func_800233CC(void *, unsigned short); \ + extern void func_8001CD9C(int, void *); \ + extern u8 D_8018EFF4; \ + extern u8 D_8018EFF5; \ + extern u8 D_8018EFF6; \ + void func_801854CC(void *a0) { \ + register void *s1 __asm__("$17"); \ + register void *s0 __asm__("$16"); \ + s1 = (void *)((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D); \ + *(void **)((s32)a0 + 0xCC) = s1; \ + if (s1 != 0) { \ + s0 = &D_8018EFF4; \ + func_800233CC(s0, 0x50); \ + func_8001CD9C((s32)s1, s0); \ + *(u32 *)((s32)s1 + 4) = *(u32 *)((s32)s1 + 4) | 0x50000040; \ + } \ + s1 = (void *)((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D); \ + *(void **)((s32)a0 + 0xD0) = s1; \ + if (s1 != 0) { \ + s0 = &D_8018EFF4; \ + func_800233CC(s0, 0x40); \ + func_8001CD9C((s32)s1, s0); \ + *(u32 *)((s32)s1 + 4) = *(u32 *)((s32)s1 + 4) | 0x50000040; \ + } \ + D_8018EFF4 = 0xFF; \ + D_8018EFF5 = 0x10; \ + D_8018EFF6 = 0x10; \ + *(u16 *)((s32)a0 + 0xDC) = 6; \ + *(u16 *)((s32)a0 + 0xDE) = 0xFF; \ + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -152357,4 +152391,38 @@ *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \ } +#define DEFINE_func_801854CC() \ + extern void func_8001D074(s32 a0, s32 a1); \ + extern void func_800233CC(void *, unsigned short); \ + extern void func_8001CD9C(int, void *); \ + extern u8 D_8018EFF4; \ + extern u8 D_8018EFF5; \ + extern u8 D_8018EFF6; \ + void func_801854CC(void *a0) { \ + register void *s1 __asm__("$17"); \ + register void *s0 __asm__("$16"); \ + s1 = (void *)((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D); \ + *(void **)((s32)a0 + 0xCC) = s1; \ + if (s1 != 0) { \ + s0 = &D_8018EFF4; \ + func_800233CC(s0, 0x50); \ + func_8001CD9C((s32)s1, s0); \ + *(u32 *)((s32)s1 + 4) = *(u32 *)((s32)s1 + 4) | 0x50000040; \ + } \ + s1 = (void *)((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D); \ + *(void **)((s32)a0 + 0xD0) = s1; \ + if (s1 != 0) { \ + s0 = &D_8018EFF4; \ + func_800233CC(s0, 0x40); \ + func_8001CD9C((s32)s1, s0); \ + *(u32 *)((s32)s1 + 4) = *(u32 *)((s32)s1 + 4) | 0x50000040; \ + } \ + D_8018EFF4 = 0xFF; \ + D_8018EFF5 = 0x10; \ + D_8018EFF6 = 0x10; \ + *(u16 *)((s32)a0 + 0xDC) = 6; \ + *(u16 *)((s32)a0 + 0xDE) = 0xFF; \ + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \ + } + #endif