From 90eb6204d6a42cf2d83059b4ad03cb90b2da60e1 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:04:32 -0600 Subject: [PATCH] feat(phase-31): propagate func_80186CE8 (gate lane) --- config/dedup.us.yaml | 7 +++ src/ov_SC02_000/ov_SC02_000_jr_8018173C.c | 34 +----------- src/ov_SC02_003/ov_SC02_003_jr_8018173C.c | 2 +- src/shared/engine_core.h | 66 +++++++++++++++++++++++ 4 files changed, 75 insertions(+), 34 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 120a2cf3b..8105a3132 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -14929,3 +14929,10 @@ groups: func: DEFINE_func_80186D88 vram: 0x80186D88 binaries: [ov_SC02_000, ov_SC02_003] + - id: E_func_80186CE8 + tier: h_exact + hash: da9c4677fb9c3f38f614118b56af49c093a78812 + source: src/shared/engine_core.h + func: DEFINE_func_80186CE8 + vram: 0x80186CE8 + 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 ad22e0988..60fd0f081 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c @@ -4655,39 +4655,7 @@ void func_80186CAC(void *a0) { #include "common.h" -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012A828(s32, void *); -extern void func_8012B200(u8 *a0); -extern s16 D_801E0294[]; -extern M2C_UNK D_8018AF28; -extern u8 D_8018F39C[]; - -void func_80186CE8(s32 a0) { - register s32 v0 __asm__("$2"); - s32 v1; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(a0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)a0); - return; - } - func_8001C214(v0, (s32)D_801E0294); - func_8001D0E8(*(s32 *)(a0 + 0x20), 0xDC, 0xB8); - v0 = *(u16 *)(a0 + 0x5C); - v1 = (s32)D_8018F39C; - *(s32 *)(a0 + 0x58) = v1; - v0 = v0 | 0xC00; - *(u16 *)(a0 + 0x5C) = (u16)v0; - func_8012A828(a0, &(*(s32 *)&D_8018AF28)); - func_8012B200((u8 *)a0); - v0 = *(u16 *)(a0 + 0x2); - v0 = v0 + 1; - *(u16 *)(a0 + 0x2) = (u16)v0; -} +DEFINE_func_80186CE8() /* dedup: shared engine-core @0x80186CE8 (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 acff1ffec..6a01870e7 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c @@ -3301,7 +3301,7 @@ void func_80186CAC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80186CE8); +DEFINE_func_80186CE8() /* dedup: shared engine-core @0x80186CE8 (src/shared) */ DEFINE_func_80186D88() /* dedup: shared engine-core @0x80186D88 (src/shared) */ diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index 29fdc1968..afff59302 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -61409,6 +61409,39 @@ } \ } +#define DEFINE_func_80186CE8() \ + extern void func_8012C1B8(void); \ + extern void func_8012CAE4(void *a0); \ + extern void func_8001C214(s32 a0, s32 a1); \ + extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); \ + extern void func_8012A828(s32, void *); \ + extern void func_8012B200(u8 *a0); \ + extern s16 D_801E0294[]; \ + extern M2C_UNK D_8018AF28; \ + extern u8 D_8018F39C[]; \ + void func_80186CE8(s32 a0) { \ + register s32 v0 __asm__("$2"); \ + s32 v1; \ + v0 = ((s32 (*)(void))func_8012C1B8)(); \ + *(s32 *)(a0 + 0x20) = v0; \ + if (v0 == 0) { \ + func_8012CAE4((void *)a0); \ + return; \ + } \ + func_8001C214(v0, (s32)D_801E0294); \ + func_8001D0E8(*(s32 *)(a0 + 0x20), 0xDC, 0xB8); \ + v0 = *(u16 *)(a0 + 0x5C); \ + v1 = (s32)D_8018F39C; \ + *(s32 *)(a0 + 0x58) = v1; \ + v0 = v0 | 0xC00; \ + *(u16 *)(a0 + 0x5C) = (u16)v0; \ + func_8012A828(a0, &(*(s32 *)&D_8018AF28)); \ + func_8012B200((u8 *)a0); \ + v0 = *(u16 *)(a0 + 0x2); \ + v0 = v0 + 1; \ + *(u16 *)(a0 + 0x2) = (u16)v0; \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -152223,4 +152256,37 @@ } \ } +#define DEFINE_func_80186CE8() \ + extern void func_8012C1B8(void); \ + extern void func_8012CAE4(void *a0); \ + extern void func_8001C214(s32 a0, s32 a1); \ + extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); \ + extern void func_8012A828(s32, void *); \ + extern void func_8012B200(u8 *a0); \ + extern s16 D_801E0294[]; \ + extern M2C_UNK D_8018AF28; \ + extern u8 D_8018F39C[]; \ + void func_80186CE8(s32 a0) { \ + register s32 v0 __asm__("$2"); \ + s32 v1; \ + v0 = ((s32 (*)(void))func_8012C1B8)(); \ + *(s32 *)(a0 + 0x20) = v0; \ + if (v0 == 0) { \ + func_8012CAE4((void *)a0); \ + return; \ + } \ + func_8001C214(v0, (s32)D_801E0294); \ + func_8001D0E8(*(s32 *)(a0 + 0x20), 0xDC, 0xB8); \ + v0 = *(u16 *)(a0 + 0x5C); \ + v1 = (s32)D_8018F39C; \ + *(s32 *)(a0 + 0x58) = v1; \ + v0 = v0 | 0xC00; \ + *(u16 *)(a0 + 0x5C) = (u16)v0; \ + func_8012A828(a0, &(*(s32 *)&D_8018AF28)); \ + func_8012B200((u8 *)a0); \ + v0 = *(u16 *)(a0 + 0x2); \ + v0 = v0 + 1; \ + *(u16 *)(a0 + 0x2) = (u16)v0; \ + } + #endif