From b5b3072d8854befed06ecd76469dba6151219019 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:03:06 -0600 Subject: [PATCH] feat(phase-31): propagate func_80187F30 (gate lane) --- config/dedup.us.yaml | 7 ++++ src/ov_SC02_000/ov_SC02_000_jr_8018173C.c | 31 +-------------- src/ov_SC02_003/ov_SC02_003_jr_8018173C.c | 2 +- src/shared/engine_core.h | 48 +++++++++++++++++++++++ 4 files changed, 57 insertions(+), 31 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 175170c119..7ffc27c0ce 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -14873,3 +14873,10 @@ groups: func: DEFINE_func_80187354 vram: 0x80187354 binaries: [ov_SC02_000, ov_SC02_003] + - id: E_func_80187F30 + tier: h_exact + hash: 1d8b61606669da1cd2b9b46a04c0e22c3d0120e3 + source: src/shared/engine_core.h + func: DEFINE_func_80187F30 + vram: 0x80187F30 + 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 34838c1476..e5ed5f5f4d 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c @@ -5281,36 +5281,7 @@ void func_80187EB4(int param_1) { #include "common.h" -extern void func_8012AD80(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); - -s32 func_80187F30(void *a0, s32 a1) { - s16 arr1[3]; - s16 arr2[3]; - s32 res_val; - - arr1[0] = *(u16 *)((s32)a0 + 0x3A); - arr1[1] = *(u16 *)((s32)a0 + 0x3E) + 0x10; - arr1[2] = *(u16 *)((s32)a0 + 0x42); - - func_8012AD80((s32)a0); - - arr2[0] = *(u16 *)((s32)a0 + 0x6); - arr2[1] = *(u16 *)((s32)a0 + 0xA) + 0x10; - arr2[2] = *(u16 *)((s32)a0 + 0xE); - - res_val = func_8012CEB0((s32)arr1, (s32)arr2, a1); - - *(u16 *)((s32)a0 + 0x6) = arr2[0]; - *(u16 *)((s32)a0 + 0xA) = arr2[1] - 0x10; - *(u16 *)((s32)a0 + 0xE) = arr2[2]; - - if ((res_val & 0x6000) != 0) { - *(s32 *)((s32)a0 + 0x14) = 0; - } - - return res_val; -} +DEFINE_func_80187F30() /* dedup: shared engine-core @0x80187F30 (src/shared) */ 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 1a58c9d0f1..699e11e9cf 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c @@ -3440,7 +3440,7 @@ void func_80187EB4(int param_1) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80187F30); +DEFINE_func_80187F30() /* dedup: shared engine-core @0x80187F30 (src/shared) */ extern void (*D_8018F540[])(void); diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index de19d8e8c7..818576a243 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -61158,6 +61158,30 @@ } \ } +#define DEFINE_func_80187F30() \ + extern void func_8012AD80(s32 a0); \ + extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); \ + s32 func_80187F30(void *a0, s32 a1) { \ + s16 arr1[3]; \ + s16 arr2[3]; \ + s32 res_val; \ + arr1[0] = *(u16 *)((s32)a0 + 0x3A); \ + arr1[1] = *(u16 *)((s32)a0 + 0x3E) + 0x10; \ + arr1[2] = *(u16 *)((s32)a0 + 0x42); \ + func_8012AD80((s32)a0); \ + arr2[0] = *(u16 *)((s32)a0 + 0x6); \ + arr2[1] = *(u16 *)((s32)a0 + 0xA) + 0x10; \ + arr2[2] = *(u16 *)((s32)a0 + 0xE); \ + res_val = func_8012CEB0((s32)arr1, (s32)arr2, a1); \ + *(u16 *)((s32)a0 + 0x6) = arr2[0]; \ + *(u16 *)((s32)a0 + 0xA) = arr2[1] - 0x10; \ + *(u16 *)((s32)a0 + 0xE) = arr2[2]; \ + if ((res_val & 0x6000) != 0) { \ + *(s32 *)((s32)a0 + 0x14) = 0; \ + } \ + return res_val; \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -151721,4 +151745,28 @@ } \ } +#define DEFINE_func_80187F30() \ + extern void func_8012AD80(s32 a0); \ + extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); \ + s32 func_80187F30(void *a0, s32 a1) { \ + s16 arr1[3]; \ + s16 arr2[3]; \ + s32 res_val; \ + arr1[0] = *(u16 *)((s32)a0 + 0x3A); \ + arr1[1] = *(u16 *)((s32)a0 + 0x3E) + 0x10; \ + arr1[2] = *(u16 *)((s32)a0 + 0x42); \ + func_8012AD80((s32)a0); \ + arr2[0] = *(u16 *)((s32)a0 + 0x6); \ + arr2[1] = *(u16 *)((s32)a0 + 0xA) + 0x10; \ + arr2[2] = *(u16 *)((s32)a0 + 0xE); \ + res_val = func_8012CEB0((s32)arr1, (s32)arr2, a1); \ + *(u16 *)((s32)a0 + 0x6) = arr2[0]; \ + *(u16 *)((s32)a0 + 0xA) = arr2[1] - 0x10; \ + *(u16 *)((s32)a0 + 0xE) = arr2[2]; \ + if ((res_val & 0x6000) != 0) { \ + *(s32 *)((s32)a0 + 0x14) = 0; \ + } \ + return res_val; \ + } + #endif