From f55052e2b5b488ad232c46c66f0652be10ca37ba Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 1 Jul 2026 04:39:21 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20bulk=5Fharvest=20=E2=80=94=20+6?= =?UTF-8?q?4=20fns=20across=2055=20binaries,=201=20propagated=20(fleet=206?= =?UTF-8?q?4.38%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/dedup.us.yaml | 7 +++++++ src/ov_SC01_084/ov_SC01_084.c | 7 ++++++- src/ov_SC02_005/ov_SC02_005.c | 12 ++++++++++-- src/ov_SC02_011/ov_SC02_011.c | 12 ++++++++++-- src/ov_SC02_026/ov_SC02_026.c | 7 ++++++- src/ov_SC02_027/ov_SC02_027.c | 9 ++++++++- src/ov_SC02_028/ov_SC02_028.c | 12 +++++++++++- src/ov_SC02_031/ov_SC02_031.c | 18 ++++++++++++++++-- src/ov_SC02_041/ov_SC02_041.c | 19 +++++++++++++++++-- src/ov_SC03_001/ov_SC03_001.c | 16 ++++++++++++++-- src/ov_SC03_006/ov_SC03_006.c | 12 ++++++++++-- src/ov_SC03_007/ov_SC03_007.c | 10 +++++++++- src/ov_SC03_010/ov_SC03_010.c | 9 ++++++++- src/ov_SC03_015/ov_SC03_015.c | 6 +++++- src/ov_SC03_024/ov_SC03_024.c | 12 ++++++++++-- src/ov_SC03_028/ov_SC03_028.c | 6 +++++- src/ov_SC03_029/ov_SC03_029.c | 8 +++++++- src/ov_SC03_031/ov_SC03_031.c | 9 ++++++++- src/ov_SC03_089/ov_SC03_089.c | 22 ++++++++++++++++++++-- src/ov_SC03_091/ov_SC03_091.c | 7 ++++++- src/ov_SC03_092/ov_SC03_092.c | 13 +++++++++++-- src/ov_SC03_093/ov_SC03_093.c | 8 +++++++- src/ov_SC03_096/ov_SC03_096.c | 7 ++++++- src/ov_SC03_097/ov_SC03_097.c | 7 ++++++- src/ov_SC03_099/ov_SC03_099.c | 9 ++++++++- src/ov_SC03_100/ov_SC03_100.c | 7 ++++++- src/ov_SC03_104/ov_SC03_104.c | 7 ++++++- src/ov_SC03_105/ov_SC03_105.c | 8 +++++++- src/ov_SC03_111/ov_SC03_111.c | 6 +++++- src/ov_SC03_115/ov_SC03_115.c | 6 +++++- src/ov_SC03_116/ov_SC03_116.c | 8 +++++++- src/ov_SC03_117/ov_SC03_117.c | 6 +++++- src/ov_SC03_118/ov_SC03_118.c | 6 +++++- src/ov_SC03_119/ov_SC03_119.c | 6 +++++- src/ov_SC03_124/ov_SC03_124.c | 5 ++++- src/ov_SC04_000/ov_SC04_000.c | 6 +++++- src/ov_SC04_003/ov_SC04_003.c | 9 ++++++++- src/ov_SC04_004/ov_SC04_004.c | 8 +++++++- src/ov_SC04_005/ov_SC04_005.c | 6 +++++- src/ov_SC04_009/ov_SC04_009.c | 6 +++++- src/ov_SC04_010/ov_SC04_010.c | 8 +++++++- src/ov_SC04_015/ov_SC04_015.c | 5 ++++- src/ov_SC04_018/ov_SC04_018.c | 3 ++- src/ov_SC04_019/ov_SC04_019.c | 2 +- src/ov_SC04_020/ov_SC04_020.c | 6 +++++- src/ov_SC05_004/ov_SC05_004.c | 7 ++++++- src/ov_SC05_008/ov_SC05_008.c | 6 +++++- src/ov_SC05_010/ov_SC05_010.c | 6 +++++- src/ov_SC05_018/ov_SC05_018.c | 7 ++++++- src/ov_SC06_000/ov_SC06_000.c | 7 ++++++- src/ov_SC06_006/ov_SC06_006.c | 6 +++++- src/ov_SC06_010/ov_SC06_010.c | 6 +++++- src/ov_SC06_016/ov_SC06_016.c | 6 +++++- src/ov_SC06_022/ov_SC06_022.c | 6 +++++- src/ov_SC06_029/ov_SC06_029.c | 7 ++++++- src/ov_SC07_001/ov_SC07_001.c | 6 +++++- src/ov_SC07_002/ov_SC07_002.c | 6 +++++- src/shared/engine_core.h | 7 +++++++ 58 files changed, 406 insertions(+), 65 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 037ac8dc8e..b5131c5e03 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -12357,3 +12357,10 @@ groups: func: DEFINE_func_8017E074 vram: 0x8017E074 binaries: [ov_SC04_018, ov_SC04_019] + - id: E_func_80181998 + tier: h_exact + hash: 73cc22e8943a50cbc7bd2e56a064755ab41bcba2 + source: src/shared/engine_core.h + func: DEFINE_func_80181998 + vram: 0x80181998 + binaries: [ov_SC04_018, ov_SC04_019] diff --git a/src/ov_SC01_084/ov_SC01_084.c b/src/ov_SC01_084/ov_SC01_084.c index 681253405a..2c8f6ef492 100644 --- a/src/ov_SC01_084/ov_SC01_084.c +++ b/src/ov_SC01_084/ov_SC01_084.c @@ -5045,7 +5045,12 @@ INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084", func_8017F8B8); INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084", func_8017F9F4); -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084", func_8017FBD4); +extern void (*D_8018A8EC[])(void); + +void func_8017FBD4(void *a0) { + D_8018A8EC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084", func_8017FC10); diff --git a/src/ov_SC02_005/ov_SC02_005.c b/src/ov_SC02_005/ov_SC02_005.c index fa000197e9..8c0f081475 100644 --- a/src/ov_SC02_005/ov_SC02_005.c +++ b/src/ov_SC02_005/ov_SC02_005.c @@ -5578,7 +5578,11 @@ extern s32 func_80132EF4(s32 a0, s32 a1); } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_80189FA4); +extern s32 func_80132EF4(s32 a0, s32 a1); + void func_80189FA4(void *a0) { + ((void (*)(void *, int))func_80132EF4)(a0, 0x13); + } + INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_80189FC4); @@ -5747,7 +5751,11 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8018C928); INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8018C978); -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8018CA1C); +extern void func_8012C218(void *a0); + void func_8018CA1C(void) { + ((s32 (*)(void))func_8012C218)(); + } + INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8018CA3C); diff --git a/src/ov_SC02_011/ov_SC02_011.c b/src/ov_SC02_011/ov_SC02_011.c index 0c054a350b..b6762b6577 100644 --- a/src/ov_SC02_011/ov_SC02_011.c +++ b/src/ov_SC02_011/ov_SC02_011.c @@ -5181,7 +5181,11 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_801847F0); INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_80184818); -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_80184838); +extern void func_80184918(s32 arg0, s32 arg1); + void func_80184838(s32 arg0) { + func_80184918(arg0, 0x1E); + } + INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_80184858); @@ -5574,7 +5578,11 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_8018A184); INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_8018A1A4); -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_8018A264); +extern void func_8012A4BC(void); + void func_8018A264(void) { + ((s32 (*)(void))func_8012A4BC)(); + } + INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_8018A284); diff --git a/src/ov_SC02_026/ov_SC02_026.c b/src/ov_SC02_026/ov_SC02_026.c index 2edcce357d..fea150d1f4 100644 --- a/src/ov_SC02_026/ov_SC02_026.c +++ b/src/ov_SC02_026/ov_SC02_026.c @@ -4971,7 +4971,12 @@ INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026", func_80180520); INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026", func_801808D0); -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026", func_801809BC); +extern void (*D_801AA28C[])(void); + +void func_801809BC(void *a0) { + D_801AA28C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026", func_801809F8); diff --git a/src/ov_SC02_027/ov_SC02_027.c b/src/ov_SC02_027/ov_SC02_027.c index 3b3e6ee22c..841909aec3 100644 --- a/src/ov_SC02_027/ov_SC02_027.c +++ b/src/ov_SC02_027/ov_SC02_027.c @@ -4957,7 +4957,14 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FAB0); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FAE0); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FB08); +extern s32 resLoad_lastId; +extern void func_8002D4C8(s32 arg0, s32 arg1); + +void func_8017FB08(void) { + func_8002D4C8(0x13C, 0); + resLoad_lastId = 0x39; +} + extern s32 func_8017FCAC(void); void func_8017FB38(void) { diff --git a/src/ov_SC02_028/ov_SC02_028.c b/src/ov_SC02_028/ov_SC02_028.c index ae67a3b8fe..73f8bced23 100644 --- a/src/ov_SC02_028/ov_SC02_028.c +++ b/src/ov_SC02_028/ov_SC02_028.c @@ -5235,7 +5235,17 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80183918); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8018393C); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801839DC); +extern s16 D_801D328C; + extern s16 D_801D328E; + extern s16 D_801D3290; + extern s16 D_801D3292; + void func_801839DC(s32 arg0, s32 arg1, s32 arg2) { + D_801D328C = *(u16 *)((s32)arg0 + 0x0); + D_801D328E = *(u16 *)((s32)arg0 + 0x2); + D_801D3290 = arg1; + D_801D3292 = arg2; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80183A0C); diff --git a/src/ov_SC02_031/ov_SC02_031.c b/src/ov_SC02_031/ov_SC02_031.c index c5e426ae0e..b7da8df1a1 100644 --- a/src/ov_SC02_031/ov_SC02_031.c +++ b/src/ov_SC02_031/ov_SC02_031.c @@ -5122,7 +5122,14 @@ INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_801829BC); INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_801829F8); -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_80182A7C); +extern void func_8012C218(void *a0); + void func_80182A7C(s32 arg0) { + s32 v0; + if (*(s16 *)(arg0 + 0xfc) != *(s16 *)(*(s32 *)(arg0 + 0x64) + 0x36)) { + ((void (*)(void))func_8012C218)(); + } + } + INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_80182AB4); @@ -5199,7 +5206,14 @@ INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_80184274); void func_801842D8(void) { } -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_801842E0); +extern void func_80178CBC(s32 arg0, s32 arg1); +extern s32 D_80189484; + +void func_801842E0(void *arg0) { + ((void (*)(void *, void *))func_80178CBC)(arg0, &D_80189484); + *(s16 *)((u8 *)arg0 + 0x2) = 0x3; +} + INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_80184318); diff --git a/src/ov_SC02_041/ov_SC02_041.c b/src/ov_SC02_041/ov_SC02_041.c index 5f7da3d1a7..25893fcf73 100644 --- a/src/ov_SC02_041/ov_SC02_041.c +++ b/src/ov_SC02_041/ov_SC02_041.c @@ -4985,7 +4985,16 @@ INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_80180C40); INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_80180ED4); -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_80181000); +void func_80181000(s32 arg0) { + s32 var_v1; + *(s8 *)(arg0 + 0xc1) = 0; + *(s16 *)(arg0 + 0x5e) = 0; + *(s16 *)(arg0 + 0x5c) = 0; + *(s16 *)(arg0 + 0x102) = 3; + var_v1 = *(s32 *)(arg0 + 0x20); + *(s16 *)(var_v1 + 0x2c) |= 0x10; + } + INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_8018102C); @@ -5006,7 +5015,13 @@ INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_80181464); INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_801815B0); -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_801816D0); +extern void func_8012C218(void *a0); + s32 func_801816D0(void * arg0) + { + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32))func_8012C218)(*(s32 *)((char *)arg0 + 0xcc)); + } + INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_801816FC); diff --git a/src/ov_SC03_001/ov_SC03_001.c b/src/ov_SC03_001/ov_SC03_001.c index 654e7759da..6c2b0943ca 100644 --- a/src/ov_SC03_001/ov_SC03_001.c +++ b/src/ov_SC03_001/ov_SC03_001.c @@ -5507,13 +5507,25 @@ INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_801856A8); INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_80185874); -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_801858A0); +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192864; + void func_801858A0(short *param_1) { + param_1[1] = 0x7; + func_80187778(param_1, &D_80192864); + } + INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_801858CC); INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_801858F8); -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_80185924); +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192864; + void func_80185924(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x1F; + func_80187778((s32 *)a0, (s32)&D_80192864); + } + INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_80185950); diff --git a/src/ov_SC03_006/ov_SC03_006.c b/src/ov_SC03_006/ov_SC03_006.c index 0927dd9e5b..a483ca4115 100644 --- a/src/ov_SC03_006/ov_SC03_006.c +++ b/src/ov_SC03_006/ov_SC03_006.c @@ -4894,7 +4894,11 @@ INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_8017F454); INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_8017F498); -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_8017F4EC); +extern void func_8017F510(s32 arg0, s32 arg1, s32 arg2); + void func_8017F4EC(s32 arg0) { + func_8017F510(arg0, *(s32 *)(arg0 + 0x8), arg0 + 0x10); + } + INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_8017F510); @@ -4902,7 +4906,11 @@ INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", listCdBuffer); INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_80180CAC); -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_80180CF0); +extern void func_80029124(s32 arg0, s32 arg1); + void func_80180CF0(void) { + func_80029124(0x142, 0); + } + INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_80180D14); diff --git a/src/ov_SC03_007/ov_SC03_007.c b/src/ov_SC03_007/ov_SC03_007.c index 61478e5600..a3581e19b4 100644 --- a/src/ov_SC03_007/ov_SC03_007.c +++ b/src/ov_SC03_007/ov_SC03_007.c @@ -4804,7 +4804,15 @@ INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007", func_8017D740); void func_8017D7E4(void) { } -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007", func_8017D7EC); +extern s32 D_8018CAA8; + extern u8 *D_801274C8; + extern s32 D_8018CDC8; + extern void *D_801274CC; + void func_8017D7EC(void) { + D_801274C8 = &D_8018CAA8; + D_801274CC = &D_8018CDC8; + } + INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007", func_8017D814); diff --git a/src/ov_SC03_010/ov_SC03_010.c b/src/ov_SC03_010/ov_SC03_010.c index 5799e8eb8d..b2f03eeb49 100644 --- a/src/ov_SC03_010/ov_SC03_010.c +++ b/src/ov_SC03_010/ov_SC03_010.c @@ -4831,7 +4831,14 @@ INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010", func_8017DC7C); INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010", func_8017DCD8); -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010", func_8017DD14); +extern s32 func_80171990(u8 *a0); +extern s32 func_8017DD44(s32); + +void func_8017DD14(s32 *a0) { + ((void (*)(s32 *))func_80171990)(a0); + func_8017DD44((s32)a0); +} + INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010", func_8017DD44); diff --git a/src/ov_SC03_015/ov_SC03_015.c b/src/ov_SC03_015/ov_SC03_015.c index 5ec2177ea0..e76687597a 100644 --- a/src/ov_SC03_015/ov_SC03_015.c +++ b/src/ov_SC03_015/ov_SC03_015.c @@ -4983,7 +4983,11 @@ INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015", func_801829E4); INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015", func_80182A40); -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015", func_80182BB0); +extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_80182BB0(s32 arg0, s32 arg1) { + func_80182C28(arg0, arg1, 0xC, 0); + } + INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015", func_80182BD4); diff --git a/src/ov_SC03_024/ov_SC03_024.c b/src/ov_SC03_024/ov_SC03_024.c index f8455e3252..a8672b9656 100644 --- a/src/ov_SC03_024/ov_SC03_024.c +++ b/src/ov_SC03_024/ov_SC03_024.c @@ -5111,7 +5111,11 @@ extern s32 func_8017BEBC(void); } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024", func_8018280C); +extern s32 func_8017BFA0(void); + void func_8018280C(void) { + func_8017BFA0(); + } + void func_8018282C(s32 *a0) { *(s16 *)((s32)a0 + 0x2) = 0x2; @@ -5255,7 +5259,11 @@ void func_801854F4(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024", func_80185508); +extern void func_8012C218(void *a0); + void func_80185508(void) { + ((s32 (*)(void))func_8012C218)(); + } + INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024", func_80185528); diff --git a/src/ov_SC03_028/ov_SC03_028.c b/src/ov_SC03_028/ov_SC03_028.c index be654f049b..75fce5c455 100644 --- a/src/ov_SC03_028/ov_SC03_028.c +++ b/src/ov_SC03_028/ov_SC03_028.c @@ -4751,7 +4751,11 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028", func_8017BEBC); -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028", func_8017BEE0); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2) { + func_8017BF34(arg0, arg1, arg2, 0); + } + INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028", func_8017BF08); diff --git a/src/ov_SC03_029/ov_SC03_029.c b/src/ov_SC03_029/ov_SC03_029.c index a374bc2f47..0f2cec819e 100644 --- a/src/ov_SC03_029/ov_SC03_029.c +++ b/src/ov_SC03_029/ov_SC03_029.c @@ -5280,7 +5280,13 @@ INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029", func_80186514); INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029", func_80186660); -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029", func_801866A4); +extern void func_8013240C(s32 a0); +extern s32 D_801D98C8; + +void func_801866A4(void) { + ((void (*)(s32))func_8013240C)((s32)&D_801D98C8); +} + INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029", func_801866CC); diff --git a/src/ov_SC03_031/ov_SC03_031.c b/src/ov_SC03_031/ov_SC03_031.c index 09263000c0..2f11f8ae9b 100644 --- a/src/ov_SC03_031/ov_SC03_031.c +++ b/src/ov_SC03_031/ov_SC03_031.c @@ -4867,7 +4867,14 @@ INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031", func_8017F23C); INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031", func_8017F28C); -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031", func_8017F35C); +extern void func_8012B200(u8 *a0); + extern s32 func_8017F860(void *a0); + void func_8017F35C(u8 *a0) { + *(s16 *)(a0 + 0x2) = 0x5; + ((void (*)(s32 *))func_8012B200)((s32 *)a0); + func_8017F860(a0); + } + INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031", func_8017F394); diff --git a/src/ov_SC03_089/ov_SC03_089.c b/src/ov_SC03_089/ov_SC03_089.c index a70f23828e..31f27f29f8 100644 --- a/src/ov_SC03_089/ov_SC03_089.c +++ b/src/ov_SC03_089/ov_SC03_089.c @@ -4852,7 +4852,13 @@ void func_801812B4(void) { } -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_801812DC); +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern s32 D_8018D314; + +void func_801812DC(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_8018D314, 0x1000000); +} + INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_80181304); @@ -5166,7 +5172,19 @@ INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_80187D60); INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_80187DF4); -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_80187E3C); +extern s32 func_8012BEE8(s32 a0); + +void func_80187E3C(int param_1) +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x1c) - 1; + *(int *)(param_1 + 0x1c) = iVar1; + if (*(int *)(param_1 + 0x1c) == 0) { + *(short *)(param_1 + 2) = *(unsigned short *)(param_1 + 0x34); + } +} + INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_80187E64); diff --git a/src/ov_SC03_091/ov_SC03_091.c b/src/ov_SC03_091/ov_SC03_091.c index 8de7fbf2f5..e7f99874d6 100644 --- a/src/ov_SC03_091/ov_SC03_091.c +++ b/src/ov_SC03_091/ov_SC03_091.c @@ -4893,7 +4893,12 @@ INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091", func_801822CC); INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091", func_80182314); -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091", func_80182368); +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); + extern s32 D_801906EC; + void func_80182368(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_801906EC, 0x1000000); + } + INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091", func_80182390); diff --git a/src/ov_SC03_092/ov_SC03_092.c b/src/ov_SC03_092/ov_SC03_092.c index 04121990ac..c6c2dfdd9e 100644 --- a/src/ov_SC03_092/ov_SC03_092.c +++ b/src/ov_SC03_092/ov_SC03_092.c @@ -5060,11 +5060,20 @@ INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_80182170); INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_801821AC); -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_801821E8); +void func_801821E8(void *a0) { + *(s8 *)((s32)a0 + 0xc1) = 0; + *(s16 *)((s32)a0 + 0x5e) = 0; + *(s16 *)((s32)a0 + 0x5c) &= 0xc800; + } + INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_80182200); -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_801822A4); +void func_801822A4(void *a0) { + void *a1 = *(void **)((char *)a0 + 0x20); + *(u16 *)((char *)a1 + 0x12) += *(u16 *)((char *)a0 + 0xfc); + } + INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_801822C0); diff --git a/src/ov_SC03_093/ov_SC03_093.c b/src/ov_SC03_093/ov_SC03_093.c index 74d2be98b8..413e9cce3f 100644 --- a/src/ov_SC03_093/ov_SC03_093.c +++ b/src/ov_SC03_093/ov_SC03_093.c @@ -4995,7 +4995,13 @@ void func_80181B84(void) { INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093", func_80181B8C); -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093", func_80181BC0); +extern void func_80182144(void *a0); + void func_80181BC0(u8 *param_1) { + *(short *)(param_1 + 0x5c) = 0; + *(int *)(param_1 + 0x1c) = 0; + ((void (*)(int))func_80182144)(*(int *)(param_1 + 0xd4)); + } + INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093", func_80181BEC); diff --git a/src/ov_SC03_096/ov_SC03_096.c b/src/ov_SC03_096/ov_SC03_096.c index f806a98744..8cf28f484c 100644 --- a/src/ov_SC03_096/ov_SC03_096.c +++ b/src/ov_SC03_096/ov_SC03_096.c @@ -4797,7 +4797,12 @@ INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096", func_8017DE80); INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096", func_8017E230); -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096", func_8017E31C); +extern void (*D_80190940[])(void); + +void func_8017E31C(void *a0) { + D_80190940[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096", func_8017E358); diff --git a/src/ov_SC03_097/ov_SC03_097.c b/src/ov_SC03_097/ov_SC03_097.c index 64c9feb7b5..089c41b667 100644 --- a/src/ov_SC03_097/ov_SC03_097.c +++ b/src/ov_SC03_097/ov_SC03_097.c @@ -5177,7 +5177,12 @@ INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097", func_80184DE8); INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097", func_80184E4C); -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097", func_80184E6C); +void func_80184E6C(s32 arg0) { + if (arg0 != 0) { + M2C_FIELD(arg0, s32 *, 0x4) |= 0x80000000; + } + } + INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097", func_80184E8C); diff --git a/src/ov_SC03_099/ov_SC03_099.c b/src/ov_SC03_099/ov_SC03_099.c index c4cf899791..b510115360 100644 --- a/src/ov_SC03_099/ov_SC03_099.c +++ b/src/ov_SC03_099/ov_SC03_099.c @@ -4954,7 +4954,14 @@ INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099", func_80181DA0); INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099", func_80181DD4); -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099", func_80181E30); +extern s32 func_80153BD8(s32 arg); + extern s32 func_80153BF0(s32 a0); + void func_80181E30(s32 arg0) { + if (func_80153BD8(arg0)) { + ((void (*)(s32))func_80153BF0)(arg0); + } + } + INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099", func_80181E68); diff --git a/src/ov_SC03_100/ov_SC03_100.c b/src/ov_SC03_100/ov_SC03_100.c index 69358951fc..49c6eaccdd 100644 --- a/src/ov_SC03_100/ov_SC03_100.c +++ b/src/ov_SC03_100/ov_SC03_100.c @@ -5082,7 +5082,12 @@ INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100", func_80184200); INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100", func_8018434C); -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100", func_8018446C); +extern void func_8012C218(void *a0); + void func_8018446C(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32 *))func_8012C218)(*(s32 **)((char *)arg0 + 0xcc)); + } + INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100", func_80184498); diff --git a/src/ov_SC03_104/ov_SC03_104.c b/src/ov_SC03_104/ov_SC03_104.c index 1846087d25..cd2b5b460e 100644 --- a/src/ov_SC03_104/ov_SC03_104.c +++ b/src/ov_SC03_104/ov_SC03_104.c @@ -4939,7 +4939,12 @@ INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104", func_80182FCC); INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104", func_8018300C); -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104", func_8018302C); +void func_8018302C(s32 arg0) { + if (arg0 != 0) { + M2C_FIELD(arg0, s32 *, 0x4) |= 0x80000000; + } + } + INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104", func_8018304C); diff --git a/src/ov_SC03_105/ov_SC03_105.c b/src/ov_SC03_105/ov_SC03_105.c index f2b8aec31e..35482d2cdc 100644 --- a/src/ov_SC03_105/ov_SC03_105.c +++ b/src/ov_SC03_105/ov_SC03_105.c @@ -5025,7 +5025,13 @@ INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105", func_80185480); INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105", func_80185628); -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105", func_80185660); +void func_80185660(s32 *a0, s32 *a1, s32 a2) { + *(s32 *)((s32)a1 + 0x0) = a2; + *(s32 *)((s32)a0 + 0x24) = a2; + *(s16 *)((s32)a1 + 0x4) = 0; + *(s16 *)((s32)a1 + 0x6) = *(u8 *)a2 & 0x3F; + } + INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105", func_80185680); diff --git a/src/ov_SC03_111/ov_SC03_111.c b/src/ov_SC03_111/ov_SC03_111.c index 376989a3aa..175a6691be 100644 --- a/src/ov_SC03_111/ov_SC03_111.c +++ b/src/ov_SC03_111/ov_SC03_111.c @@ -4924,7 +4924,11 @@ INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111", func_801814D0); INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111", func_8018151C); -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111", func_8018154C); +extern void func_80181574(s32 a0, s32 a1, s32 a2); + void func_8018154C(void * arg0) { + func_80181574(arg0, *(s16 *)((char *)arg0 + 0xfc), 0x406040); + } + INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111", func_80181574); diff --git a/src/ov_SC03_115/ov_SC03_115.c b/src/ov_SC03_115/ov_SC03_115.c index 21ebf93670..a0e2b97f38 100644 --- a/src/ov_SC03_115/ov_SC03_115.c +++ b/src/ov_SC03_115/ov_SC03_115.c @@ -4779,7 +4779,11 @@ INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115", func_8017D09C); INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115", func_8017D0D8); -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115", func_8017D108); +extern void func_80171A1C(u8 *a0); + void func_8017D108(void) { + ((void (*)(void))func_80171A1C)(); + } + INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115", func_8017D128); diff --git a/src/ov_SC03_116/ov_SC03_116.c b/src/ov_SC03_116/ov_SC03_116.c index aed8491e5c..e58f5d2f13 100644 --- a/src/ov_SC03_116/ov_SC03_116.c +++ b/src/ov_SC03_116/ov_SC03_116.c @@ -4841,7 +4841,13 @@ extern void func_80181864(void); INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116", func_80181864); -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116", func_801818B8); +extern void func_801818DC(void); + void func_801818B8(void *a0) { + *(short *)((char *)a0 + 0xfe) = 0; + *(short *)((char *)a0 + 0x100) = 0; + ((void (*)(void))func_801818DC)(); + } + INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116", func_801818DC); diff --git a/src/ov_SC03_117/ov_SC03_117.c b/src/ov_SC03_117/ov_SC03_117.c index 1113b14d26..1f082b5d06 100644 --- a/src/ov_SC03_117/ov_SC03_117.c +++ b/src/ov_SC03_117/ov_SC03_117.c @@ -4874,7 +4874,11 @@ INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117", func_8017ECC4); INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117", func_8017EE78); -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117", func_8017EF14); +extern s32 func_80029178(s32 arg); + s32 func_8017EF14(void) { + return func_80029178(0xBB) & 0xFF; + } + INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117", func_8017EF34); diff --git a/src/ov_SC03_118/ov_SC03_118.c b/src/ov_SC03_118/ov_SC03_118.c index 5e6fa79499..fca2079580 100644 --- a/src/ov_SC03_118/ov_SC03_118.c +++ b/src/ov_SC03_118/ov_SC03_118.c @@ -5037,7 +5037,11 @@ INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118", func_801828A4); INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118", func_801828C4); -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118", func_801828E4); +extern void func_800D0C48(s32 arg); + void func_801828E4(void) { + func_800D0C48(0x1); + } + DEFINE_func_80182904() /* dedup: shared engine-core @0x80182904 (src/shared) */ diff --git a/src/ov_SC03_119/ov_SC03_119.c b/src/ov_SC03_119/ov_SC03_119.c index 2d79a658e9..3bda7981d0 100644 --- a/src/ov_SC03_119/ov_SC03_119.c +++ b/src/ov_SC03_119/ov_SC03_119.c @@ -5037,7 +5037,11 @@ extern s32 func_8017BEBC(void); } -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119", func_801828C4); +extern s32 func_8017BFA0(void); + void func_801828C4(void) { + func_8017BFA0(); + } + INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119", func_801828E4); diff --git a/src/ov_SC03_124/ov_SC03_124.c b/src/ov_SC03_124/ov_SC03_124.c index 99f99df373..a104181333 100644 --- a/src/ov_SC03_124/ov_SC03_124.c +++ b/src/ov_SC03_124/ov_SC03_124.c @@ -5150,7 +5150,10 @@ INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124", func_80181F2C); INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124", func_80181F90); -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124", func_80181FFC); +void func_80181FFC(s32 *a0) { + *(s16 *)((s32)a0 + 0x2) = 0x2; + } + INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124", func_80182008); diff --git a/src/ov_SC04_000/ov_SC04_000.c b/src/ov_SC04_000/ov_SC04_000.c index 9d06ab5edc..c5d0ddb3f6 100644 --- a/src/ov_SC04_000/ov_SC04_000.c +++ b/src/ov_SC04_000/ov_SC04_000.c @@ -4827,7 +4827,11 @@ INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000", func_8017E88C); INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000", func_8017E8CC); -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000", func_8017E948); +extern void func_800D1EBC(void); + void func_8017E948(void) { + func_800D1EBC(); + } + INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000", func_8017E968); diff --git a/src/ov_SC04_003/ov_SC04_003.c b/src/ov_SC04_003/ov_SC04_003.c index d888f18f4d..92cf67f38e 100644 --- a/src/ov_SC04_003/ov_SC04_003.c +++ b/src/ov_SC04_003/ov_SC04_003.c @@ -4914,7 +4914,14 @@ INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003", listCdBuffer); INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003", func_801800D4); -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003", func_80180160); +extern void func_8002D4C8(s32 arg0, s32 arg1); +extern void func_8002AC00(int arg0); + +void func_80180160(void) { + func_8002D4C8(0x853, 0); + func_8002AC00(0x13); +} + INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003", func_8018018C); diff --git a/src/ov_SC04_004/ov_SC04_004.c b/src/ov_SC04_004/ov_SC04_004.c index aa2e7fe173..e66fe990b7 100644 --- a/src/ov_SC04_004/ov_SC04_004.c +++ b/src/ov_SC04_004/ov_SC04_004.c @@ -5062,7 +5062,13 @@ INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004", func_80182E9C); INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004", func_80182ED4); -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004", func_80182F7C); +extern void func_8002D4C8(s32 arg0, s32 arg1); + extern void func_8002AC00(s32 arg0); + void func_80182F7C(void) { + func_8002D4C8(0xA9E, 0); + func_8002AC00(0x14); + } + INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004", func_80182FA8); diff --git a/src/ov_SC04_005/ov_SC04_005.c b/src/ov_SC04_005/ov_SC04_005.c index 7a98f8d8fe..c4bc9420d8 100644 --- a/src/ov_SC04_005/ov_SC04_005.c +++ b/src/ov_SC04_005/ov_SC04_005.c @@ -4865,7 +4865,11 @@ INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005", func_8017F1E0); INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005", func_8017F210); -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005", func_8017F270); +extern s32 func_800D0F8C(s32 arg); + s32 func_8017F270(void) { + return func_800D0F8C(0x62) != 0; + } + INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005", func_8017F290); diff --git a/src/ov_SC04_009/ov_SC04_009.c b/src/ov_SC04_009/ov_SC04_009.c index d9d6f8d3f7..bd224769e2 100644 --- a/src/ov_SC04_009/ov_SC04_009.c +++ b/src/ov_SC04_009/ov_SC04_009.c @@ -4898,6 +4898,10 @@ INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009", func_8017E904); INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009", func_8017E914); -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009", func_8017E92C); +extern void func_800296F8(void); + s32 func_8017E92C(s32 arg0) { + ((void (*)(s32))func_800296F8)(*(s32 *)(arg0 + 0xdc)); + } + INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009", func_8017E950); diff --git a/src/ov_SC04_010/ov_SC04_010.c b/src/ov_SC04_010/ov_SC04_010.c index 86e6f53e20..8d510cadc0 100644 --- a/src/ov_SC04_010/ov_SC04_010.c +++ b/src/ov_SC04_010/ov_SC04_010.c @@ -4849,7 +4849,13 @@ s32 func_8017DC24(void) { INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010", func_8017DC2C); -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010", func_8017DC68); +extern void func_8012BF4C(s32 a0, s32 a1); + extern s32 func_8012AD50(void *a0); + void func_8017DC68(s32 arg0) { + func_8012BF4C(arg0, 0); + ((void (*)(void *))func_8012AD50)((void *)arg0); + } + INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010", func_8017DC9C); diff --git a/src/ov_SC04_015/ov_SC04_015.c b/src/ov_SC04_015/ov_SC04_015.c index 65305b594a..a74313e8ff 100644 --- a/src/ov_SC04_015/ov_SC04_015.c +++ b/src/ov_SC04_015/ov_SC04_015.c @@ -4992,7 +4992,10 @@ INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015", func_801809F0); INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015", func_80180B08); -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015", func_80180B18); +void func_80180B18(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015", func_80180B28); diff --git a/src/ov_SC04_018/ov_SC04_018.c b/src/ov_SC04_018/ov_SC04_018.c index 8b57a1501f..c56e1435d6 100644 --- a/src/ov_SC04_018/ov_SC04_018.c +++ b/src/ov_SC04_018/ov_SC04_018.c @@ -5090,7 +5090,8 @@ INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018", func_80181924); INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018", func_80181960); -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018", func_80181998); +DEFINE_func_80181998() /* dedup: shared engine-core @0x80181998 (src/shared) */ + INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018", func_801819B0); diff --git a/src/ov_SC04_019/ov_SC04_019.c b/src/ov_SC04_019/ov_SC04_019.c index ed5f725632..8c0d8f7881 100644 --- a/src/ov_SC04_019/ov_SC04_019.c +++ b/src/ov_SC04_019/ov_SC04_019.c @@ -5091,7 +5091,7 @@ INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019", func_80181924); INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019", func_80181960); -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019", func_80181998); +DEFINE_func_80181998() /* dedup: shared engine-core @0x80181998 (src/shared) */ INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019", func_801819B0); diff --git a/src/ov_SC04_020/ov_SC04_020.c b/src/ov_SC04_020/ov_SC04_020.c index 117b344294..dc366f1cac 100644 --- a/src/ov_SC04_020/ov_SC04_020.c +++ b/src/ov_SC04_020/ov_SC04_020.c @@ -4842,7 +4842,11 @@ INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020", func_8017E8D0); INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020", func_8017E90C); -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020", func_8017E920); +extern void func_8016F0E4(void); + void func_8017E920(void) { + ((s32 (*)(void))func_8016F0E4)(); + } + INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020", func_8017E940); diff --git a/src/ov_SC05_004/ov_SC05_004.c b/src/ov_SC05_004/ov_SC05_004.c index 27cb7846a3..cf2646b419 100644 --- a/src/ov_SC05_004/ov_SC05_004.c +++ b/src/ov_SC05_004/ov_SC05_004.c @@ -4859,7 +4859,12 @@ extern void func_8012AD44(s32 *a0, s16 a1); } -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004", func_8017EBA0); +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8017EBA0(void *a0) { + *(s32 *)((char *)a0 + 0x1c) = 0xc0; + ((void (*)(s32, s32))func_8012AD44)((s32)a0, 0x3); + } + INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004", func_8017EBC8); diff --git a/src/ov_SC05_008/ov_SC05_008.c b/src/ov_SC05_008/ov_SC05_008.c index f9b5834165..bcdc6f0c84 100644 --- a/src/ov_SC05_008/ov_SC05_008.c +++ b/src/ov_SC05_008/ov_SC05_008.c @@ -4763,7 +4763,11 @@ INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008", func_8017CE7C); INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008", func_8017CE98); -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008", func_8017CF20); +extern void func_800D1EBC(void); + void func_8017CF20(void) { + func_800D1EBC(); + } + INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008", func_8017CF40); diff --git a/src/ov_SC05_010/ov_SC05_010.c b/src/ov_SC05_010/ov_SC05_010.c index 3ddf58e715..3804abd0c6 100644 --- a/src/ov_SC05_010/ov_SC05_010.c +++ b/src/ov_SC05_010/ov_SC05_010.c @@ -5121,7 +5121,11 @@ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010", func_801876EC); INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010", func_801877A8); -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010", func_80187854); +extern void func_8013373C(s32 arg0); + void func_80187854(void) { + func_8013373C(0); + } + INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010", func_80187874); diff --git a/src/ov_SC05_018/ov_SC05_018.c b/src/ov_SC05_018/ov_SC05_018.c index 5dc468adea..9eb2463cf2 100644 --- a/src/ov_SC05_018/ov_SC05_018.c +++ b/src/ov_SC05_018/ov_SC05_018.c @@ -5090,7 +5090,12 @@ INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018", func_80182774); INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018", func_801827E8); -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018", func_80182824); +extern s32 func_8012AD50(void *a0); + void func_80182824(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018", func_80182844); diff --git a/src/ov_SC06_000/ov_SC06_000.c b/src/ov_SC06_000/ov_SC06_000.c index b533a4f068..994f95abc4 100644 --- a/src/ov_SC06_000/ov_SC06_000.c +++ b/src/ov_SC06_000/ov_SC06_000.c @@ -5391,7 +5391,12 @@ INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000", func_801878A8); INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000", func_80187998); -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000", func_801879A8); +void func_801879A8(s32 *a0, s8 a1, s8 a2, s8 a3) { + *(s8*)((s32)a0 + 0x4) = a1; + *(s8*)((s32)a0 + 0x5) = a2; + *(s8*)((s32)a0 + 0x6) = a3; + } + INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000", func_801879B8); diff --git a/src/ov_SC06_006/ov_SC06_006.c b/src/ov_SC06_006/ov_SC06_006.c index 25f64d5f74..920cfc0e90 100644 --- a/src/ov_SC06_006/ov_SC06_006.c +++ b/src/ov_SC06_006/ov_SC06_006.c @@ -4973,7 +4973,11 @@ INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006", func_80180CD4); INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006", func_80180CEC); -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006", func_80180D00); +extern s16 D_801F8094; + u32 func_80180D00(void) { + return (u32)(D_801F8094 == 3); + } + INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006", func_80180D18); diff --git a/src/ov_SC06_010/ov_SC06_010.c b/src/ov_SC06_010/ov_SC06_010.c index 714246c0fe..1852dac2f0 100644 --- a/src/ov_SC06_010/ov_SC06_010.c +++ b/src/ov_SC06_010/ov_SC06_010.c @@ -5024,7 +5024,11 @@ INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010", func_80185ED4); INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010", func_80185FC8); -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010", func_80186088); +extern void func_8012B370(int a0); + void func_80186088(void) { + ((void (*)(void))func_8012B370)(); + } + INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010", func_801860A8); diff --git a/src/ov_SC06_016/ov_SC06_016.c b/src/ov_SC06_016/ov_SC06_016.c index 6ff6cb7c64..848939c4f6 100644 --- a/src/ov_SC06_016/ov_SC06_016.c +++ b/src/ov_SC06_016/ov_SC06_016.c @@ -5031,7 +5031,11 @@ INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016", func_80182A1C); INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016", func_80182A64); -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016", func_80182B2C); +extern void func_8012B2CC(s32 a0); + void func_80182B2C(void) { + ((void (*)(void))func_8012B2CC)(); + } + INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016", func_80182B4C); diff --git a/src/ov_SC06_022/ov_SC06_022.c b/src/ov_SC06_022/ov_SC06_022.c index 42d24b7910..1e6c30826a 100644 --- a/src/ov_SC06_022/ov_SC06_022.c +++ b/src/ov_SC06_022/ov_SC06_022.c @@ -4863,7 +4863,11 @@ INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022", func_8017F30C); INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022", func_8017F414); -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022", func_8017F4B0); +extern s32 func_8017F0D4(void); + void func_8017F4B0(void) { + func_8017F0D4(); + } + INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022", func_8017F4D0); diff --git a/src/ov_SC06_029/ov_SC06_029.c b/src/ov_SC06_029/ov_SC06_029.c index 3f51e4c2c4..cff95baae2 100644 --- a/src/ov_SC06_029/ov_SC06_029.c +++ b/src/ov_SC06_029/ov_SC06_029.c @@ -5006,7 +5006,12 @@ INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029", func_8018562C); INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029", func_80185668); -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029", func_801856A4); +void func_801856A4(s32 *a0, s32 a1) { + *(s32 *)((s32)a0 + 0x0) = a1; + *(s8 *)((s32)a0 + 0x7) = 0; + *(s16 *)((s32)a0 + 0x4) = (*(s32 *)((s32)a1 + 0x4)) & 0x3F; + } + INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029", func_801856C0); diff --git a/src/ov_SC07_001/ov_SC07_001.c b/src/ov_SC07_001/ov_SC07_001.c index 8641f0b55c..0cd6c97de6 100644 --- a/src/ov_SC07_001/ov_SC07_001.c +++ b/src/ov_SC07_001/ov_SC07_001.c @@ -4801,7 +4801,11 @@ INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001", func_8017E278); INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001", func_8017E2A8); -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001", func_8017E2B0); +extern void func_8013373C(s32 arg0); + void func_8017E2B0(void) { + func_8013373C(0); + } + INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001", func_8017E2D0); diff --git a/src/ov_SC07_002/ov_SC07_002.c b/src/ov_SC07_002/ov_SC07_002.c index c4e327bcc6..344f48a9a7 100644 --- a/src/ov_SC07_002/ov_SC07_002.c +++ b/src/ov_SC07_002/ov_SC07_002.c @@ -4888,7 +4888,11 @@ INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002", func_8017F9CC); INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002", func_8017F9EC); -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002", func_8017FA74); +extern s32 func_8017FA94(void); + s32 func_8017FA74(void) { + return func_8017FA94(); + } + INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002", func_8017FA94); diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index c927c0b00f..f6825fb36d 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -24698,4 +24698,11 @@ *(u8 *)((s32)a0 + 0x214) += 1; \ } +#define DEFINE_func_80181998() \ + extern s32 D_801D7598; \ + extern s32 D_801D2200; \ + void func_80181998(void) { \ + *(s32 *)&D_801D2200 = D_801D7598; \ + } + #endif