From ccf48cf090edfc2db8613b062bc073b299064183 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:06:22 -0600 Subject: [PATCH] feat(phase-31): propagate func_80188790 (gate lane) --- config/dedup.us.yaml | 7 ++ src/ov_SC02_000/ov_SC02_000_jr_8018173C.c | 43 +----------- src/ov_SC02_003/ov_SC02_003_jr_8018173C.c | 2 +- src/shared/engine_core.h | 84 +++++++++++++++++++++++ 4 files changed, 93 insertions(+), 43 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 2c94ca718..61bc91ac7 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -14992,3 +14992,10 @@ groups: func: DEFINE_func_8018825C vram: 0x8018825C binaries: [ov_SC02_000, ov_SC02_003] + - id: E_func_80188790 + tier: h_exact + hash: 61b78167872ccf36a8c67d03f5949eeb04714a92 + source: src/shared/engine_core.h + func: DEFINE_func_80188790 + vram: 0x80188790 + 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 a56e8fa0c..793c1bde7 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c @@ -4891,48 +4891,7 @@ void func_80188754(void *a0) { * gets shift 2 and is wrong). */ -extern s32 rand(void); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); -extern s32 D_80126B58; - -void func_80188790(s32 a0) { - s32 kind; - register u16 *tp __asm__("$19"); - s32 s4; - u8 *v1; - s32 r0; - s32 r2; - s32 r3; - s32 s1; - s32 fE; - - r0 = rand(); - tp = (u16 *)&D_80126B58; - __asm__ __volatile__("" : "=r"(tp) : "0"(tp)); - s4 = *(s32 *)(a0 + 0x1C); - kind = (r0 & 1) ? 0xF : 0xE; - v1 = func_8012913C(kind); - if (v1 != 0) { - r2 = rand(); - s1 = r2 - (r2 / 256) * 256; - r3 = rand(); - fE = tp[7] + (r3 % 640) - 0x290; - *(u16 *)(v1 + 0xE) = fE; - if (s4 & 1) { - *(u16 *)(v1 + 0x6) = s1 + 0x7A; - *(u16 *)(v1 + 0xA) = tp[5] - 0xE0; - } else { - *(u16 *)(v1 + 0x6) = s1 - 0xF8; - *(u16 *)(v1 + 0xA) = tp[5] - 0xC0; - } - *(u16 *)(v1 + 0x36) = tp[5] - 0x50; - } - if (func_8012BEE8(a0) == 1) { - func_8012C218((void *)a0); - } -} +DEFINE_func_80188790() /* dedup: shared engine-core @0x80188790 (src/shared) */ extern void func_8012AD44(s32 *a0, s16 a1); 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 1ac6fb2b7..28a46b220 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c @@ -3498,7 +3498,7 @@ void func_80188754(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80188790); +DEFINE_func_80188790() /* dedup: shared engine-core @0x80188790 (src/shared) */ extern void func_8012AD44(s32 *a0, s16 a1); void func_801888CC(void *a0) { diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index aa9103687..93a307542 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -61862,6 +61862,48 @@ } \ } +#define DEFINE_func_80188790() \ + extern s32 rand(void); \ + extern u8 *func_8012913C(s32 a0); \ + extern s32 func_8012BEE8(s32 a0); \ + extern void func_8012C218(void *a0); \ + extern s32 D_80126B58; \ + void func_80188790(s32 a0) { \ + s32 kind; \ + register u16 *tp __asm__("$19"); \ + s32 s4; \ + u8 *v1; \ + s32 r0; \ + s32 r2; \ + s32 r3; \ + s32 s1; \ + s32 fE; \ + r0 = rand(); \ + tp = (u16 *)&D_80126B58; \ + __asm__ __volatile__("" : "=r"(tp) : "0"(tp)); \ + s4 = *(s32 *)(a0 + 0x1C); \ + kind = (r0 & 1) ? 0xF : 0xE; \ + v1 = func_8012913C(kind); \ + if (v1 != 0) { \ + r2 = rand(); \ + s1 = r2 - (r2 / 256) * 256; \ + r3 = rand(); \ + fE = tp[7] + (r3 % 640) - 0x290; \ + *(u16 *)(v1 + 0xE) = fE; \ + if (s4 & 1) { \ + *(u16 *)(v1 + 0x6) = s1 + 0x7A; \ + *(u16 *)(v1 + 0xA) = tp[5] - 0xE0; \ + } else { \ + *(u16 *)(v1 + 0x6) = s1 - 0xF8; \ + *(u16 *)(v1 + 0xA) = tp[5] - 0xC0; \ + } \ + *(u16 *)(v1 + 0x36) = tp[5] - 0x50; \ + } \ + if (func_8012BEE8(a0) == 1) { \ + func_8012C218((void *)a0); \ + } \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -153129,4 +153171,46 @@ } \ } +#define DEFINE_func_80188790() \ + extern s32 rand(void); \ + extern u8 *func_8012913C(s32 a0); \ + extern s32 func_8012BEE8(s32 a0); \ + extern void func_8012C218(void *a0); \ + extern s32 D_80126B58; \ + void func_80188790(s32 a0) { \ + s32 kind; \ + register u16 *tp __asm__("$19"); \ + s32 s4; \ + u8 *v1; \ + s32 r0; \ + s32 r2; \ + s32 r3; \ + s32 s1; \ + s32 fE; \ + r0 = rand(); \ + tp = (u16 *)&D_80126B58; \ + __asm__ __volatile__("" : "=r"(tp) : "0"(tp)); \ + s4 = *(s32 *)(a0 + 0x1C); \ + kind = (r0 & 1) ? 0xF : 0xE; \ + v1 = func_8012913C(kind); \ + if (v1 != 0) { \ + r2 = rand(); \ + s1 = r2 - (r2 / 256) * 256; \ + r3 = rand(); \ + fE = tp[7] + (r3 % 640) - 0x290; \ + *(u16 *)(v1 + 0xE) = fE; \ + if (s4 & 1) { \ + *(u16 *)(v1 + 0x6) = s1 + 0x7A; \ + *(u16 *)(v1 + 0xA) = tp[5] - 0xE0; \ + } else { \ + *(u16 *)(v1 + 0x6) = s1 - 0xF8; \ + *(u16 *)(v1 + 0xA) = tp[5] - 0xC0; \ + } \ + *(u16 *)(v1 + 0x36) = tp[5] - 0x50; \ + } \ + if (func_8012BEE8(a0) == 1) { \ + func_8012C218((void *)a0); \ + } \ + } + #endif