From 34963d42ed836eb6c67d67bfc061e77dbf6a2dd2 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:04:57 -0600 Subject: [PATCH] =?UTF-8?q?feat(t5):=20Claude=20wave=20t5q=20=E2=80=94=202?= =?UTF-8?q?8=20banked=20(sonnet=2028/30,=20opus=200/0,=20+recovery);=20fle?= =?UTF-8?q?et=20213=20passed,=200=20failed=20of=20213=20(P31=20S62=20T5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c | 28 ++++++++- src/ov_SC01_004/ov_SC01_004_jr_8017E5B8.c | 43 ++++++++++++- src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c | 27 +++++++- src/ov_SC03_002/ov_SC03_002_jr_80181D78.c | 24 +++++++- src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c | 9 ++- src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c | 12 +++- src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c | 75 ++++++++++++++++++++++- src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c | 36 ++++++++++- src/ov_SC03_118/ov_SC03_118_jr_801863CC.c | 39 +++++++++++- src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c | 72 +++++++++++++++++++++- src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c | 53 +++++++++++++++- src/ov_SC03_125/ov_SC03_125_jr_8017D604.c | 12 +++- src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c | 43 ++++++++++++- src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c | 15 ++++- src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c | 28 ++++++++- src/ov_SC04_010/ov_SC04_010_jr_8017BEBC.c | 23 ++++++- src/ov_SC04_021/ov_SC04_021_jr_8017D5C0.c | 49 ++++++++++++++- 17 files changed, 560 insertions(+), 28 deletions(-) diff --git a/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c b/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c index 1fcd3e4e1..3a035d49d 100644 --- a/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c +++ b/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c @@ -5721,7 +5721,12 @@ void func_8017BEAC(void) { void func_8017BEB4(void) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_801789AC", func_8017BEBC); +void func_8017BEBC(void) { + extern u16 D_801853F0; + + func_80016714(&D_801853F0, 8); +} + s32 func_8017BEE4(void) { extern void (*D_80181D6C[10])(void); @@ -5746,7 +5751,26 @@ void func_8017BF38(void) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_801789AC", func_8017BF70); +void func_8017BF70(void) { + extern s16 func_8017BFF8(void); + extern void func_800D1D24(void); + extern s16 D_801853F2; + s32 a0; + + if ((D_801853F2 = func_8017BFF8()) < 0) { + func_8002D4C8(0x21, func_80028FBC() & 0xFFFF); + func_8002D4C8(0x22, func_80029000() & 0xFFFF); + if (func_80028D9C() == 0) { + a0 = 0xC; + } else { + a0 = 0xB; + } + func_8002D4C8(a0, 0); + func_80145934(); + func_800D1D24(); + } +} + s16 func_8017BFF8(void) { diff --git a/src/ov_SC01_004/ov_SC01_004_jr_8017E5B8.c b/src/ov_SC01_004/ov_SC01_004_jr_8017E5B8.c index ed7734350..2b60abbc6 100644 --- a/src/ov_SC01_004/ov_SC01_004_jr_8017E5B8.c +++ b/src/ov_SC01_004/ov_SC01_004_jr_8017E5B8.c @@ -3152,9 +3152,48 @@ void func_8017F078(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017E5B8", func_8017F0E0); +extern s32 func_8017D308(s32 a0, s32 a1); + +void func_8017F0E0(void *a0) { + if (*(s32 *)((s32)a0 + 0x1C) != 0) { + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) - 1; + } else { + func_8017D308(0, 0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + } +} + + +extern s32 func_8017D2F8(void); +extern void func_800D1724(s32 a0); + +void func_8017F138(void *a0) { + extern s32 D_8018C2D4; + extern void *func_8017D060(void); + extern s32 func_8017D35C(s32 a0); + + s16 v1; + s32 v0; + + v1 = (s16)func_8017D2F8(); + v0 = *(&D_8018C2D4 + v1); + if (v0 == 0) { + if (v1 == 3) { + func_8017D35C(0); + v0 = *(u16 *)((s32)a0 + 2); + *(s32 *)((s32)a0 + 0x1C) = 0; + v0 = v0 - 1; + goto skip; + } + v0 = (s32)func_8017D060(); + } + func_800D1724(v0); + v0 = *(u16 *)((s32)a0 + 2); + v0 = v0 + 1; +skip: + *(u16 *)((s32)a0 + 2) = v0; +} -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017E5B8", func_8017F138); void func_8017F1C8(void) { } diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c b/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c index 52fdae526..f352fcfb1 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c @@ -3412,7 +3412,32 @@ extern s32 D_801A3484; } -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017E6F0", func_8017F6C8); +extern void func_80139A44(s32 a0, u16 a1); +extern s16 func_8017D430(void); +extern s32 D_8019F144[]; + +s32 func_8017F6C8(s32 param_1) { + s16 x; + s32 type; + s16 v; + s16 idx; + s32 ret; + + x = func_8017D430(); + *(s16 *)(param_1 + 0x10A) = x; + if (x != 0) { + type = x >> 8; + __asm__("" : "=r"(type) : "0"(type)); + v = (type - 1) * 5 - 1; + idx = v + (x & 7); + func_80139A44(D_8019F144[idx], 0); + ret = 1; + } else { + ret = 0; + } + return ret; +} + diff --git a/src/ov_SC03_002/ov_SC03_002_jr_80181D78.c b/src/ov_SC03_002/ov_SC03_002_jr_80181D78.c index 0badde005..7f76d1fad 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_80181D78.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_80181D78.c @@ -3374,7 +3374,29 @@ void func_801828C0(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_80181D78", func_80182964); +extern s32 func_80029504(void); +extern s32 func_80029178(s32 a0); +extern void func_8012CAE4(void *a0); + +void func_80182964(s32 a0) { + s32 v0; + + v0 = func_80029504(); + if (v0 != 0x14) { + goto L80182998; + } + v0 = func_80029178(0x10B) & 0xFF; + if (v0 == 0) { + goto L801829A8; + } +L80182998: + func_8012CAE4((void *)a0); + return; +L801829A8: + *(s16 *)(a0 + 0x2) = 1; + *(s16 *)(a0 + 0x34) = 0; +} + extern u8 D_80078EAE; extern s32 D_8012704C; diff --git a/src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c b/src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c index 89dc581cc..f030af1b4 100644 --- a/src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c +++ b/src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c @@ -4710,7 +4710,14 @@ void func_8017E8E4(s32 a0) { } -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E948); +extern s32 func_800291B4(s32 arg); + +void func_8017E948(s32 a0) { + if ((func_800291B4(0xCC) & 0xFF) == 0xF) { + *(s16 *)(a0 + 0x76) = 500; + } +} + extern s32 D_801270C8; extern s16 D_80193608[]; diff --git a/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c b/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c index e443a8f10..ae61f8af2 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c @@ -5261,7 +5261,17 @@ void func_80180CB8(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017CA80", func_80180DC4); +extern int func_80178970(void); +extern void func_80178D18(void); +extern void func_801807F4(void *arg0); + +void func_80180DC4(s32 param_1) { + if (((s32 (*)(s32))func_80178970)(param_1) != 0) { + ((void (*)(s32))func_80178D18)(param_1); + func_801807F4((void *)param_1); + } +} + extern void func_801809B0(s32 a0, s32 a1); diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c b/src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c index 617a1f79f..19cf675d0 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c @@ -6039,7 +6039,37 @@ void func_80185660(s32 *a0, s32 *a1, s32 a2) { INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80185680); -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018574C); +extern s32 rand(void); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern s32 func_8017E5C8(s32 a0); + +void func_8018574C(void *a0) { + register s32 s0 __asm__("$16") = (s32)a0; + s32 rnd; + s32 t; + s32 base; + s32 rem; + s32 result; + s16 tmp[3]; + u8 aux[8]; + + rnd = rand(); + t = *(s16 *)(s0 + 0xC); + base = *(s16 *)(s0 + 0x14); + __asm__("" : "=r"(t) : "0"(t), "r"(base)); + rem = rnd % (t >> 7); + if (rand() & 1) { + result = base + rem; + } else { + result = base - rem; + } + tmp[0] = result; + tmp[1] = *(u16 *)(s0 + 0x16) + *(u16 *)(s0 + 0x1E); + tmp[2] = *(u16 *)(s0 + 0x18); + func_8012F214(*(s32 *)(s0 + 0x20), (s32)tmp, (s32)aux); + func_8017E5C8((s32)aux); +} + @@ -6699,7 +6729,23 @@ void func_80186680(s32 a0) } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018676C); +extern void func_8012A828(s32 arg0, void *arg1); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern u8 D_801B2A58[]; +extern u8 D_801B2C40[]; + +void func_8018676C(s32 a0) { + s32 s0; + + s0 = a0; + func_8012A828(a0, D_801B2A58); + func_8012A828(*(s32 *)(s0 + 0x6C), D_801B2C40); + func_8012C658(0x222, 0x8000, s0); + *(s16 *)(s0 + 0x2) = 5; + *(s16 *)(s0 + 0x34) = 0; + *(s32 *)(s0 + 0x1C) = 0; +} + INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801867D0); @@ -6717,4 +6763,27 @@ void func_80186AE8(void *arg0) { INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80186B24); -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80186D54); +extern s32 D_8018F04C; +extern s32 func_80178B18(s32, s32); +extern void func_8017C068(void); +extern void func_800D0C48(s32); +extern s32 D_80126B58; +extern void func_8014704C(s32 *); + +void func_80186D54(s32 param_1) +{ + s32 *iVar1; + s32 *iVar2; + + iVar2 = *(s32 **)(param_1 + 0xCC); + func_80178B18(param_1, (s32)&D_8018F04C); + *(s16 *)(param_1 + 0x2) = 9; + *(s16 *)(param_1 + 0x34) = 0; + iVar1 = *(s32 **)((s32)iVar2 + 0x20); + *(s16 *)((s32)iVar2 + 0x2) = 1; + *(u32 *)((s32)iVar1 + 4) = *(u32 *)((s32)iVar1 + 4) & 0x7FFFFFFF; + func_8017C068(); + func_800D0C48(1); + func_8014704C(&D_80126B58); +} + diff --git a/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c b/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c index 04ddc0e50..7652bd92a 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c @@ -3274,7 +3274,20 @@ void func_8017D030(void) { } -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017D058); +extern s32 *D_80126B78; +extern s16 D_80126B3C; +extern s16 D_80126B38; +extern void func_80174684(void *a0); + +s32 func_8017D058(void) +{ + extern void func_8017D09C(void *a0); + s32 *v0 = D_80126B78; + D_80126B38 = 0; + D_80126B3C = *(u16 *)((u8 *)v0 + 0x12); + func_80174684((void *)func_8017D09C); +} + extern void (*D_80183F28[])(void); @@ -3634,7 +3647,26 @@ void func_8017D948(s32 s0) { } -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017D9C4); +extern void func_80172710(void); +extern s32 func_80178BF8(); + +s32 func_8017D9C4(void *a0) +{ + extern void func_8012BE54(s32 a0); + + s32 field; + + field = *(s32 *)((s32)a0 + 0x64); + if (*(s16 *)(field + 0x70) != 0) { + if (((s32 (*)(s32))func_8012BE54)(field) < 0x1001) { + *(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = 2; + func_80178BF8(); + return (s32)func_80172710; + } + } + return 0; +} + extern s32 func_8017DA34(void); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c b/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c index d6110668e..3cebba6b0 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c @@ -4520,7 +4520,44 @@ void func_80188F14(void *arg0) { DEFINE_func_80188F90() /* dedup: shared engine-core @0x80188F90 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_801863CC", func_80188FB0); +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern s32 func_801789AC(s32 arg0); +extern void func_80178D18(void); +extern void func_801746DC(void); +extern void func_80029514(s32); + +void func_80188FB0(void *param_1) { + extern s32 func_8012BD14(s32 a0); + extern s32 func_8012B8A4(s16 *a0); + extern s32 D_801D09F4; + s16 state; + s32 ret; + + state = *(s16 *)((s32)param_1 + 0x10A); + + switch (state) { + case 0: + break; + case 1: + ret = func_8012BD14((s32)param_1); + if (ret < 0x1001) { + func_80178B18((s32)param_1, (s32)&D_801D09F4); + func_801746DC(); + ret = func_8012B8A4((s16 *)param_1); + *(s16 *)(*(s32 *)((s32)param_1 + 0x20) + 0x12) = (s16)ret; + *(s16 *)((s32)param_1 + 0x10A) = 2; + func_80029514(0x1D1); + } + break; + case 2: + if (func_801789AC((s32)param_1) == 1) { + ((void (*)(s32))func_80178D18)((s32)param_1); + *(s16 *)((s32)param_1 + 0x10A) = 0; + } + break; + } +} + extern s32 func_8012B030(u8 *a0); extern u16 D_801D099C; diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c b/src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c index ac4022111..f2dacdf47 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c @@ -3467,7 +3467,21 @@ void func_8017FBD8(s32 a0) { } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017E1D0", func_8017FC50); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012CBCC(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern u8 D_8018E8EC[]; + +void func_8017FC50(s32 param_1) { + if ((*(u16 *)(param_1 + 0x72) & 0x4000) != 0) { + func_8012A828(param_1, (s32)D_8018E8EC); + *(s16 *)(param_1 + 2) = 9; + *(s32 *)(param_1 + 0x1C) = 0; + func_8002D4C8(0x776, 0); + } + func_8012CBCC(param_1); +} + extern void func_8012A828(s32 a0, s32 a1); extern u8 D_8018E3F4[]; @@ -3591,7 +3605,32 @@ void func_8017FE6C(s32 a0) } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017E1D0", func_8017FF8C); +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); +extern s32 D_80185E94; +extern s32 D_801AB1EC; + +void func_8017FF8C(s32 param_1) +{ + if (func_8012C354(param_1, (s32)&D_80185E94) == 0) { + return; + } + func_8012A828(param_1, (s32)&D_801AB1EC); + *(u8 *)(param_1 + 0xC0) = 1; + *(s32 *)(param_1 + 0xB4) = -1; + func_80143970(param_1); + *(u16 *)(param_1 + 0xFC) = 0x20; + *(u16 *)(param_1 + 2) += 1; + if (*(s16 *)(param_1 + 0x70) == 1) { + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = 0x400; + *(s16 *)(param_1 + 0x12) = -4; + } else { + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = 0xC00; + *(s16 *)(param_1 + 0x12) = 4; + } +} + extern void func_8012A828(s32 arg0, s32 arg1); @@ -4464,7 +4503,34 @@ void func_80181AA0(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017E1D0", func_80181B34); +#include "common.h" + +extern void func_801813E8(s32 a0); + +void func_80181B34(s32 a0) { + u16 v1 = *(u16 *)(a0 + 0x34); + + switch (v1) { + case 0: + if (*(s16 *)(*(s32 *)(a0 + 0x64) + 0x100) != 0) { + *(u16 *)(a0 + 0x34) = v1 + 1; + *(u16 *)(a0 + 0x98) = 1; + } + return; + case 1: + if ((*(s32 *)(a0 + 0x1C) += 2) >= 0x7F) { + *(s32 *)(a0 + 0x1C) = 0x7F; + *(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1; + } + break; + case 2: + break; + default: + return; + } + func_801813E8(a0); +} + extern s32 func_8012C588(s32 a0, s32 a1); diff --git a/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c b/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c index 9c692aac9..31649f41d 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c @@ -6249,7 +6249,21 @@ void func_801807D8(void * arg0) { } -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180828); +#include "common.h" + +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern void func_80029124(s32, s32); +extern void func_800D0F4C(s32 a0); +extern u8 D_8018FCB4; + +void func_80180828(s32 a0) +{ + *(s16 *)(a0 + 2) = 5; + func_80178B18(a0, (s32)&D_8018FCB4); + func_80029124(0x106, 1); + func_800D0F4C(0x58); +} + #include "common.h" @@ -6732,7 +6746,33 @@ void func_8018158C(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181644); +#include "common.h" + +extern void func_8012AD80(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); + +void func_80181644(void *a0) +{ + void *s0; + + func_8012AD80((s32)a0); + s0 = a0; + + *(u16 *)(*(s32 *)((char *)s0 + 0x20) + 0x10) = + *(u16 *)(*(s32 *)((char *)s0 + 0x20) + 0x10) + *(u16 *)((char *)s0 + 0xFC); + + *(u16 *)(*(s32 *)((char *)s0 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)((char *)s0 + 0x20) + 0x12) + *(u16 *)((char *)s0 + 0xFE); + + *(u16 *)(*(s32 *)((char *)s0 + 0x20) + 0x14) = + *(u16 *)(*(s32 *)((char *)s0 + 0x20) + 0x14) + *(u16 *)((char *)s0 + 0x100); + + if (func_8012BEE8((s32)s0) != 0) { + func_8012C218(s0); + } +} + INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801816C8); @@ -6776,7 +6816,14 @@ extern void func_8012B2CC(s32 a0); } -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181840); +extern void func_8012B2CC(s32 a0); +void func_80181840(void *arg0) { + s32 *p = *(s32 **)((char *)arg0 + 0x20); + *(short *)((char *)arg0 + 0x2) = 0x4; + *(short *)((char *)p + 0x12) = 0x600; + func_8012B2CC((s32)arg0); +} + extern void func_8012C1B8(void); diff --git a/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c b/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c index a6ddf5e79..f9a21118b 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_8017D604.c @@ -3494,7 +3494,17 @@ void func_8017EE2C(void) { } -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017D604", func_8017EE5C); +extern s32 D_80126B9C; +extern s16 D_80187CE4[]; +extern s32 func_80178B18(s32 param_1, s32 param_2); + +void func_8017EE5C(void *a0) { + if ((D_80126B9C & 0x8000000) != 0) { + *(s16 *)((s32)a0 + 0x2) = 2; + func_80178B18((s32)a0, (s32)&D_80187CE4); + } +} + extern int func_80178970(void); extern void func_80178D18(void); diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c index c4ef7d5bd..5cf3e9062 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c @@ -5716,7 +5716,48 @@ INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F9A INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F9F4); -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FA1C); +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017FA1C; /* 0x20 bytes: m@0, t@0x14 */ + +extern s32 func_80017DC4(void *a0, void *a1); +extern void func_80017DF8(s16 *a0, void *a1); +extern void func_80015978(s32 a0, s32 *a1); +extern void func_80017E68(void *a0, void *a1); +extern void func_80017168(void *a0, void *a1); + +void func_8017FA1C(s32 param_1, s32 param_2) +{ + MTX_8017FA1C mtx; + s32 buf2[2]; + s32 obj; + + obj = *(s32 *)(param_1 + 0x20); + *(s32 *)(param_2 + 0x1C) = 0x50000000; + + func_80017DC4((void *)(obj + 0x18), &mtx); + func_80017DF8((s16 *)(obj + 0x10), &mtx); + + func_80015978(param_1 + 4, buf2); + func_80017E68((void *)buf2, &mtx); + func_80017168((void *)param_2, &mtx); + + mtx.t[0] += *(s16 *)(param_1 + 0x38); + mtx.t[1] += *(s16 *)(param_1 + 0x3A); + mtx.t[2] += *(s16 *)(param_1 + 0x3C); + func_80017168((void *)param_2, &mtx); + func_80017E68((void *)buf2, &mtx); + + mtx.t[0] += *(s16 *)(param_1 + 0x3E); + mtx.t[1] += *(s16 *)(param_1 + 0x40); + mtx.t[2] += *(s16 *)(param_1 + 0x42); + func_80017168((void *)param_2, &mtx); + func_80017E68((void *)buf2, &mtx); + + mtx.t[0] += *(s16 *)(param_1 + 0x44); + mtx.t[1] += *(s16 *)(param_1 + 0x46); + mtx.t[2] += *(s16 *)(param_1 + 0x48); + func_80017168((void *)param_2, &mtx); +} + void func_8017FB78(s32 *a0) { s16 *p; diff --git a/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c b/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c index 728a18452..389413667 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c @@ -4993,7 +4993,20 @@ void func_8017F390(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_8017F458); +extern void func_80172710(void); +extern s32 func_80178BF8(); + +s32 func_8017F458(s16 *arg0) { + extern s32 func_8012BE54(s32 a0); + + if (func_8012BE54(*(s32 *)((s32)arg0 + 0x64)) >= 0x2401) { + return 0; + } + *(s16 *)(*(s32 *)((s32)arg0 + 0x64) + 0x2) = 2; + func_80178BF8(); + return (s32)func_80172710; +} + s32 func_8017F4B4(void) { return 0x55; diff --git a/src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c b/src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c index c747c94e8..07a3472b1 100644 --- a/src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c +++ b/src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c @@ -3919,7 +3919,33 @@ void func_8017D064(void) { } -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D08C); +extern void func_8012A018(s32 a, s32 b); +extern void func_8012A094(s32 a0); +extern void func_8017D12C(void *a0); +extern u8 D_80126948[]; +extern s32 D_80126954; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; + +void func_8017D08C(void) { + D_80126954 = 0x190; + D_8012695C = 0x320; + D_80126968 = 0x155; + D_8012696A = 0x600; + D_80126978 = -0x60; + D_8012696C = 0; + D_80126976 = 0; + D_8012697A = 0x30; + func_8012A018((s32)func_8017D12C, 0); + func_8012A094((s32)D_80126948); + func_8017D12C(D_80126948); +} + extern void (*D_80182530[])(void); diff --git a/src/ov_SC04_010/ov_SC04_010_jr_8017BEBC.c b/src/ov_SC04_010/ov_SC04_010_jr_8017BEBC.c index 87974a5f7..639205423 100644 --- a/src/ov_SC04_010/ov_SC04_010_jr_8017BEBC.c +++ b/src/ov_SC04_010/ov_SC04_010_jr_8017BEBC.c @@ -3498,7 +3498,28 @@ void func_8017D524(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8017BEBC", func_8017D560); +#include "common.h" + +extern void func_80029124(s32 a0, s32 a1); +extern void func_80016714(void *a0, s32 a1); +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern void func_8012AD44(s32 *a0, s16 a1); +extern void func_8002D4C8(s32 a0, s32 a1); +extern u8 D_80181D00[]; + +void func_8017D560(s32 a0) { + *(u8 *)(a0 + 0xC1) = 0; + *(s16 *)(a0 + 0x5E) = 0; + *(s16 *)(a0 + 0x5C) = 0; + func_80029124(0xBC, 1); + if (*(s32 *)(a0 + 0xCC) != 0) { + func_80016714((void *)*(s32 *)(a0 + 0xCC), 0x38); + } + func_80178B18(a0, (s32)D_80181D00); + func_8012AD44((s32 *)a0, 2); + func_8002D4C8(0xAAF, 0); +} + typedef struct { u8 b[4]; } Blk4_8017D5DC; diff --git a/src/ov_SC04_021/ov_SC04_021_jr_8017D5C0.c b/src/ov_SC04_021/ov_SC04_021_jr_8017D5C0.c index 570a26bf5..b162024a8 100644 --- a/src/ov_SC04_021/ov_SC04_021_jr_8017D5C0.c +++ b/src/ov_SC04_021/ov_SC04_021_jr_8017D5C0.c @@ -3354,7 +3354,18 @@ u8 *a0; } -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017D5C0", func_8017E8E8); +extern s32 func_80171990(u8 *a0); + +void func_8017E8E8(a0) +u8 *a0; +{ + *(u16 *)(a0 + 0x74) = 0x1000; + *(u16 *)(a0 + 0x72) = 0x1000; + *(u16 *)(a0 + 0x70) = 0x1000; + *(s32 *)(a0 + 0x200) = 0x10; + func_80171990(a0); +} + extern void func_80171928(void *a0); void func_8017E91C(void *a0) { @@ -3376,9 +3387,41 @@ void func_8017E950(void *a0) { INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017D5C0", func_8017E98C); -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017D5C0", func_8017E9CC); +extern s32 func_8017EC2C(s32 a0); +extern s32 func_80171990(u8 *a0); + +void func_8017E9CC(u8 *a0) +{ + s32 iVar1; + + func_8017EC2C((s32)a0); + iVar1 = *(s32 *)(a0 + 0x200) - 1; + *(s32 *)(a0 + 0x200) = iVar1; + if (iVar1 == -1) { + func_80171990(a0); + } +} + + +extern s32 func_8017EC2C(s32 a0); +extern s32 func_8013767C(s32 a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80147324(s32 a0); +extern s32 func_80171990(u8 *a0); +extern u8 D_80183058[]; +extern u8 D_80182D0C[]; + +void func_8017EA10(s32 *a0) { + s32 *s0 = a0; + + if (func_8017EC2C((s32)a0) < 0x190) { + s0[0x198 / 4] = func_8013767C((s32)D_80183058); + func_80154274(s0, (s32)D_80182D0C); + func_80147324(0x7E7); + func_80171990((u8 *)s0); + } +} -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017D5C0", func_8017EA10); extern s32 func_80171990(u8 *a0); extern s32 func_8017EC2C(s32 a0);