diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index f9d9e5e252..24e35a1dfc 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -15048,3 +15048,10 @@ groups: func: DEFINE_func_801884FC vram: 0x801884FC binaries: [ov_SC02_000, ov_SC02_003] + - id: E_func_80187DB8 + tier: h_exact + hash: 2dfcb44952b0ef59cd8f9a6f45014dc41d7ca790 + source: src/shared/engine_core.h + func: DEFINE_func_80187DB8 + vram: 0x80187DB8 + 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 4eeed2a459..c74783effa 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c @@ -4437,48 +4437,7 @@ INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8018173C", func_80187B4 #include "common.h" -extern s32 func_80187F30(void*, s32); -extern s32 func_80143BDC(u16*); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); -extern u16 D_80126B66; - -void func_80187DB8(s32 param_1) { - u16 sp10[3]; - - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x100; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + 0x40; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + 0x58; - - if (((s32 (*)(s32, s32))func_80187F30)(param_1, 1) != 0) { - s32 t0, t1, t2, t3; - - sp10[0] = *(u16 *)(param_1 + 0x6); - sp10[1] = *(u16 *)(param_1 + 0xA); - sp10[2] = *(u16 *)(param_1 + 0xE); - ((void (*)(u16 *))func_80143BDC)(sp10); - - t0 = *(s32 *)(param_1 + 0xE0); - t1 = *(s32 *)(param_1 + 0xE4); - t2 = *(s32 *)(param_1 + 0xE8); - t3 = *(s32 *)(param_1 + 0xDC); - - *(s32 *)(param_1 + 0x4C) = 0; - *(s32 *)(param_1 + 0x44) = 0; - *(s32 *)(param_1 + 0x10) = t0; - *(s32 *)(param_1 + 0x14) = t1; - *(s32 *)(param_1 + 0x18) = t2; - *(s32 *)(param_1 + 0x48) = t3; - } - - if (func_8012BEE8(param_1) == 1 || - (s32)(s16)D_80126B66 - 0x200 < *(s16 *)(param_1 + 0x6)) { - func_8012C218((void *)param_1); - } -} +DEFINE_func_80187DB8() /* dedup: shared engine-core @0x80187DB8 (src/shared) */ extern void func_8012AD80(s32 a0); 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 9724f906fd..9d15523fb5 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c @@ -3420,7 +3420,7 @@ INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_8018798 INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80187B40); -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80187DB8); +DEFINE_func_80187DB8() /* dedup: shared engine-core @0x80187DB8 (src/shared) */ extern void func_8012AD80(s32 a0); extern void func_8012C218(void *a0); diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index e21f1338f2..ef028b4093 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -62171,6 +62171,43 @@ return 0; \ } +#define DEFINE_func_80187DB8() \ + extern s32 func_80187F30(void*, s32); \ + extern s32 func_80143BDC(u16*); \ + extern s32 func_8012BEE8(s32 a0); \ + extern void func_8012C218(void *a0); \ + extern u16 D_80126B66; \ + void func_80187DB8(s32 param_1) { \ + u16 sp10[3]; \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x100; \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + 0x40; \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + 0x58; \ + if (((s32 (*)(s32, s32))func_80187F30)(param_1, 1) != 0) { \ + s32 t0, t1, t2, t3; \ + sp10[0] = *(u16 *)(param_1 + 0x6); \ + sp10[1] = *(u16 *)(param_1 + 0xA); \ + sp10[2] = *(u16 *)(param_1 + 0xE); \ + ((void (*)(u16 *))func_80143BDC)(sp10); \ + t0 = *(s32 *)(param_1 + 0xE0); \ + t1 = *(s32 *)(param_1 + 0xE4); \ + t2 = *(s32 *)(param_1 + 0xE8); \ + t3 = *(s32 *)(param_1 + 0xDC); \ + *(s32 *)(param_1 + 0x4C) = 0; \ + *(s32 *)(param_1 + 0x44) = 0; \ + *(s32 *)(param_1 + 0x10) = t0; \ + *(s32 *)(param_1 + 0x14) = t1; \ + *(s32 *)(param_1 + 0x18) = t2; \ + *(s32 *)(param_1 + 0x48) = t3; \ + } \ + if (func_8012BEE8(param_1) == 1 || \ + (s32)(s16)D_80126B66 - 0x200 < *(s16 *)(param_1 + 0x6)) { \ + func_8012C218((void *)param_1); \ + } \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -153747,4 +153784,41 @@ return 0; \ } +#define DEFINE_func_80187DB8() \ + extern s32 func_80187F30(void*, s32); \ + extern s32 func_80143BDC(u16*); \ + extern s32 func_8012BEE8(s32 a0); \ + extern void func_8012C218(void *a0); \ + extern u16 D_80126B66; \ + void func_80187DB8(s32 param_1) { \ + u16 sp10[3]; \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x100; \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + 0x40; \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = \ + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + 0x58; \ + if (((s32 (*)(s32, s32))func_80187F30)(param_1, 1) != 0) { \ + s32 t0, t1, t2, t3; \ + sp10[0] = *(u16 *)(param_1 + 0x6); \ + sp10[1] = *(u16 *)(param_1 + 0xA); \ + sp10[2] = *(u16 *)(param_1 + 0xE); \ + ((void (*)(u16 *))func_80143BDC)(sp10); \ + t0 = *(s32 *)(param_1 + 0xE0); \ + t1 = *(s32 *)(param_1 + 0xE4); \ + t2 = *(s32 *)(param_1 + 0xE8); \ + t3 = *(s32 *)(param_1 + 0xDC); \ + *(s32 *)(param_1 + 0x4C) = 0; \ + *(s32 *)(param_1 + 0x44) = 0; \ + *(s32 *)(param_1 + 0x10) = t0; \ + *(s32 *)(param_1 + 0x14) = t1; \ + *(s32 *)(param_1 + 0x18) = t2; \ + *(s32 *)(param_1 + 0x48) = t3; \ + } \ + if (func_8012BEE8(param_1) == 1 || \ + (s32)(s16)D_80126B66 - 0x200 < *(s16 *)(param_1 + 0x6)) { \ + func_8012C218((void *)param_1); \ + } \ + } + #endif