diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 7f93f3350..693d73102 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -15034,3 +15034,10 @@ groups: func: DEFINE_func_80184A08 vram: 0x80184A08 binaries: [ov_SC02_000, ov_SC02_003] + - id: E_func_80186E6C + tier: h_exact + hash: 621bba09bb15bb39a04790ed442c30b4f7c47d2b + source: src/shared/engine_core.h + func: DEFINE_func_80186E6C + vram: 0x80186E6C + 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 15310b433..222a993f1 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c @@ -4208,50 +4208,7 @@ void func_80186E30(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 a0, s32 a1, s32 a2); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B200(u8 *a0); - -extern u8 D_801E071C; -extern u8 D_801E2164; -extern M2C_UNK D_8018AF28; -extern s32 D_8018F3B4; - -void func_80186E6C(s32 param_1) -{ - s32 v0; - s32 addr; - u8 v2; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - return; - } - - ((void (*)(s32, void *))func_8001C214)( - v0, (*(s16 *)(param_1 + 0x70) != 0) ? &D_801E2164 : &D_801E071C); - - func_8001D0E8(*(s32 *)(param_1 + 0x20), 0x140, 0xF0); - - addr = (s32)&D_8018F3B4; - *(s32 *)(param_1 + 0x58) = addr | 0x40000000; - *(u16 *)(param_1 + 0x5C) |= 0xC00; - func_8012A828(param_1, &(*(u8 *)&D_8018AF28)); - - v2 = 4; - if (*(s16 *)(param_1 + 0x70) != 0) { - v2 = 1; - } - *(u8 *)(param_1 + 0x75) = v2; - func_8012B200((u8 *)param_1); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} +DEFINE_func_80186E6C() /* dedup: shared engine-core @0x80186E6C (src/shared) */ INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8018173C", func_80186F44); 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 70f70946a..493fb5658 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c @@ -3313,7 +3313,7 @@ void func_80186E30(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80186E6C); +DEFINE_func_80186E6C() /* dedup: shared engine-core @0x80186E6C (src/shared) */ INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80186F44); diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index 9d9d9f548..9ef8c8c5a 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -62079,6 +62079,44 @@ } \ } +#define DEFINE_func_80186E6C() \ + extern void func_8012C1B8(void); \ + extern void func_8012CAE4(void *a0); \ + extern void func_8001C214(s32 a0, s32 a1); \ + extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); \ + extern void func_8012A828(s32 a0, void *a1); \ + extern void func_8012B200(u8 *a0); \ + extern u8 D_801E071C; \ + extern u8 D_801E2164; \ + extern M2C_UNK D_8018AF28; \ + extern s32 D_8018F3B4; \ + void func_80186E6C(s32 param_1) \ + { \ + s32 v0; \ + s32 addr; \ + u8 v2; \ + v0 = ((s32 (*)(void))func_8012C1B8)(); \ + *(s32 *)(param_1 + 0x20) = v0; \ + if (v0 == 0) { \ + ((void (*)(s32))func_8012CAE4)(param_1); \ + return; \ + } \ + ((void (*)(s32, void *))func_8001C214)( \ + v0, (*(s16 *)(param_1 + 0x70) != 0) ? &D_801E2164 : &D_801E071C); \ + func_8001D0E8(*(s32 *)(param_1 + 0x20), 0x140, 0xF0); \ + addr = (s32)&D_8018F3B4; \ + *(s32 *)(param_1 + 0x58) = addr | 0x40000000; \ + *(u16 *)(param_1 + 0x5C) |= 0xC00; \ + func_8012A828(param_1, &(*(u8 *)&D_8018AF28)); \ + v2 = 4; \ + if (*(s16 *)(param_1 + 0x70) != 0) { \ + v2 = 1; \ + } \ + *(u8 *)(param_1 + 0x75) = v2; \ + func_8012B200((u8 *)param_1); \ + *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -153563,4 +153601,42 @@ } \ } +#define DEFINE_func_80186E6C() \ + extern void func_8012C1B8(void); \ + extern void func_8012CAE4(void *a0); \ + extern void func_8001C214(s32 a0, s32 a1); \ + extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); \ + extern void func_8012A828(s32 a0, void *a1); \ + extern void func_8012B200(u8 *a0); \ + extern u8 D_801E071C; \ + extern u8 D_801E2164; \ + extern M2C_UNK D_8018AF28; \ + extern s32 D_8018F3B4; \ + void func_80186E6C(s32 param_1) \ + { \ + s32 v0; \ + s32 addr; \ + u8 v2; \ + v0 = ((s32 (*)(void))func_8012C1B8)(); \ + *(s32 *)(param_1 + 0x20) = v0; \ + if (v0 == 0) { \ + ((void (*)(s32))func_8012CAE4)(param_1); \ + return; \ + } \ + ((void (*)(s32, void *))func_8001C214)( \ + v0, (*(s16 *)(param_1 + 0x70) != 0) ? &D_801E2164 : &D_801E071C); \ + func_8001D0E8(*(s32 *)(param_1 + 0x20), 0x140, 0xF0); \ + addr = (s32)&D_8018F3B4; \ + *(s32 *)(param_1 + 0x58) = addr | 0x40000000; \ + *(u16 *)(param_1 + 0x5C) |= 0xC00; \ + func_8012A828(param_1, &(*(u8 *)&D_8018AF28)); \ + v2 = 4; \ + if (*(s16 *)(param_1 + 0x70) != 0) { \ + v2 = 1; \ + } \ + *(u8 *)(param_1 + 0x75) = v2; \ + func_8012B200((u8 *)param_1); \ + *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; \ + } + #endif