From 1fffccf859b390bf2b246d1a3d65b6ac71512fc2 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Thu, 27 Aug 2026 09:02:59 -0600 Subject: [PATCH] =?UTF-8?q?feat(t5):=20Claude=20wave=20t5f=20=E2=80=94=203?= =?UTF-8?q?4=20banked=20(sonnet=2034/35,=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_SC01_001/ov_SC01_001_jr_8017D2DC.c | 48 ++++++++++- src/ov_SC01_084/ov_SC01_084_jr_8017F690.c | 68 ++++++++++++++- src/ov_SC02_027/ov_SC02_027_jr_8017D898.c | 55 +++++++++++- src/ov_SC02_037/ov_SC02_037_jr_8013F350.c | 8 +- src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c | 7 +- src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c | 53 +++++++++++- src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c | 27 +++++- src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c | 50 ++++++++++- src/ov_SC04_016/ov_SC04_016_jr_8017BEBC.c | 58 ++++++++++++- src/ov_SC05_018/ov_SC05_018_jr_8017D604.c | 59 ++++++++++++- src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c | 89 ++++++++++++++++++- src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c | 100 +++++++++++++++++++++- src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c | 68 ++++++++++++++- 13 files changed, 656 insertions(+), 34 deletions(-) diff --git a/src/ov_SC01_001/ov_SC01_001_jr_8017D2DC.c b/src/ov_SC01_001/ov_SC01_001_jr_8017D2DC.c index 5561ff65fd..288d36c4ce 100644 --- a/src/ov_SC01_001/ov_SC01_001_jr_8017D2DC.c +++ b/src/ov_SC01_001/ov_SC01_001_jr_8017D2DC.c @@ -4889,7 +4889,17 @@ void func_80180E90(s32 a0) } -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017D2DC", func_80180EEC); +extern s32 D_801ED9F0; +extern void (*D_80188E20[])(void); +extern void func_801832BC(s32 param_1); + +void func_80180EEC(s32 param_1) { + D_80188E20[*(u16 *)(param_1 + 0x2)](); + if ((1 < *(u16 *)(param_1 + 0x2)) && (D_801ED9F0 == 1)) { + func_801832BC(param_1); + } +} + extern s32 func_8012C1B8(void); extern void func_8012CAE4(s32 a0); @@ -5025,7 +5035,41 @@ extern void func_8012A828(s32, s32); INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017D2DC", func_8018164C); -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017D2DC", func_801816A4); +extern s32 D_801ED9F8; +extern u8 D_80187430[]; +extern void func_8012A828(s32 a0, s32 a1); +extern s32 D_801ED9FC; +extern u16 D_801877D0[]; +extern s32 func_80182B00(s32 a0); +extern s32 D_801EDA08; +extern s32 func_80143B6C(s32 a0, s32 a1); +extern void func_8002D4C8(s32 a0, s32 a1); +extern u16 D_801873D8[]; +extern s32 D_801EDA00; + +void func_801816A4(s32 a0) +{ + register s32 s0 __asm__("$16"); + + s0 = a0; + if (--D_801ED9F8 == 0) { + func_8012A828(s0, (s32)&D_80187430); + } + if (--D_801ED9FC == 0) { + func_8012A828(s0, (s32)&D_801877D0); + } + if (func_80182B00(s0) != 0 || D_801EDA08 != 0) { + func_80143B6C(s0, 1); + func_8002D4C8(0x42E, 0); + func_8012A828(s0, (s32)&D_801873D8); + { + u16 tmp = *(u16 *)(s0 + 0x2); + D_801EDA00 = 10; + *(u16 *)(s0 + 0x2) = tmp + 1; + } + } +} + extern s32 D_801EDA00; extern s32 D_801ED9E4; diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c b/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c index 45aa4db470..617859115b 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c @@ -3016,7 +3016,46 @@ void func_8017FE1C(void *param_1) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_8017FE64); +#include "common.h" + +extern s32 D_801270D8; +extern s16 D_80126960; +extern u8 D_800AF648; +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void func_801292C8(void); + +void func_8017FE64(void *a0) { + u8 *s0 = (u8 *)a0; + s32 buf[8]; + s16 sv[4]; + s32 v1; + + v1 = D_801270D8; + sv[0] = 0x100; + sv[1] = -0x440; + if (v1 == 0) { + if (D_80126960 == 0x60) { + sv[2] = 0x380; + } else { + sv[2] = 0x600; + } + } else { + sv[2] = 0x600; + } + + func_8004974C((void *)&D_800AF648, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, (void *)sv); + + *(s16 *)(s0 + 0x6) = sv[0]; + *(s16 *)(s0 + 0xA) = sv[1]; + *(s16 *)(s0 + 0xE) = sv[2]; + + if (D_801270D8 >= 2) { + ((void (*)(u8 *))func_801292C8)(s0); + } +} + extern void (*D_8018A904[])(void); @@ -3877,7 +3916,20 @@ void func_80181DEC(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80181ED4); +extern void func_80181F3C(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern s32 D_801A1B40; + +void func_80181ED4(s32 a0) { + if ((*(u16 *)(a0 + 0x100) & 4) != 0) { + func_80181F3C(a0); + } else { + func_8012A828(a0, &D_801A1B40); + *(s16 *)(a0 + 2) = 2; + *(s32 *)(a0 + 0x1C) = 0x19; + } +} + extern void func_8012A828(s32 a0, void *a1); extern void D_801A1AB8; @@ -4642,7 +4694,17 @@ void func_80183BD0(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80183D38); +extern void (*D_8018ABC8[])(); +extern void (*D_8018ABD8[])(); + +void func_80183D38(void *a0) { + if (*(s16 *)((u8 *)a0 + 0x70) != 1) { + D_8018ABC8[*(u16 *)((u8 *)a0 + 0x2)](a0); + } else { + D_8018ABD8[*(u16 *)((u8 *)a0 + 0x2)](a0); + } +} + INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80183DA4); diff --git a/src/ov_SC02_027/ov_SC02_027_jr_8017D898.c b/src/ov_SC02_027/ov_SC02_027_jr_8017D898.c index 14dbe2c697..e27fdc8be3 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_8017D898.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_8017D898.c @@ -3665,7 +3665,34 @@ void func_8017F0B4(void) { } -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8017F14C); +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern void func_8017F27C(void *a0); + +void func_8017F14C(void) { + + 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; + extern u8 D_80126948[]; + D_80126954 = 0x10E; + D_8012695C = 0x348; + D_80126968 = 0; + D_8012696A = 0xC00; + D_8012696C = 0; + D_80126976 = 0; + D_80126978 = -0x70; + D_8012697A = 0; + func_8012A018((s32)func_8017F27C, 5); + func_8012A094((s32)D_80126948); + func_8017F27C(D_80126948); +} + extern void func_8012A018(s32 a, s32 b); @@ -4073,9 +4100,31 @@ void func_8017FF34(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8017FF70); +extern s32 rand(void); + +void func_8017FF70(s32 a0) +{ + *(s32 *)(a0 + 0x1c) = rand(); + *(u16 *)(a0 + 0xfc) = *(u16 *)(a0 + 0xfc) + 1; + *(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; +} + + +void func_8017FFB4(void *a0) +{ + extern s32 func_80180770(void *a0); + + s32 v1; + s32 v0; + + v1 = *(s32 *)((s32)a0 + 0x1C) + 1; + v0 = *(s16 *)((s32)a0 + 0xFC); + *(s32 *)((s32)a0 + 0x1C) = v1; + if (v1 % v0 == 0) { + func_80180770(a0); + } +} -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8017FFB4); diff --git a/src/ov_SC02_037/ov_SC02_037_jr_8013F350.c b/src/ov_SC02_037/ov_SC02_037_jr_8013F350.c index a6bd23c43a..7ab7923498 100644 --- a/src/ov_SC02_037/ov_SC02_037_jr_8013F350.c +++ b/src/ov_SC02_037/ov_SC02_037_jr_8013F350.c @@ -5005,7 +5005,13 @@ DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014c118 (src/shared) */ DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014c168 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037_jr_8013F350", func_8014C1A0); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018584C; + +void func_8014C1A0(s32 arg0, s32 arg1) { + func_8014C1C8(arg0, arg1, &D_8018584C); +} + DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014c1c8 (src/shared) */ diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c b/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c index aac2861b22..6411215f95 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c @@ -3321,7 +3321,12 @@ DEFINE_func_8017BEAC() /* dedup: shared engine-core @0x8017BEAC (src/shared) */ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017BEBC); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + +void func_8017BEBC(s32 arg0, s32 arg1) { + func_8017BF34(arg0, arg1, 0xC, 0); +} + DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ 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 28d7d1d5f0..342e69f603 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c @@ -4244,7 +4244,31 @@ void func_8017FBE8(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017FC74); +#include "common.h" + +extern s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_801292C8(void); +extern void func_8012931C(void *); + +void func_8017FC74(s32 a0) { + s32 v0; + + v0 = *(s32 *)(a0 + 0x1C); + if (v0 != 0) { + v0 = v0 - 1; + *(s32 *)(a0 + 0x1C) = v0; + if (v0 == 0) { + *(u32 *)(*(s32 *)(a0 + 0x20) + 4) &= 0x7FFFFFFF; + } + } else { + func_8012931C((void *)a0); + v0 = func_80128ED8(*(s32 *)(a0 + 0x20), (s32 *)(a0 + 0x24)); + if (v0 != 0) { + ((void (*)(s32))func_801292C8)(a0); + } + } +} + extern void (*D_8018E278[])(void); @@ -4254,7 +4278,32 @@ void func_8017FCF0(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017FD2C); +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); + +void func_8017FD2C(s32 a0) { + s32 v0; + s32 v1; + u16 tmp; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4((void *)a0); + return; + } + func_8001C214(v0, 0); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10; + v1 = *(s32 *)(a0 + 0x20); + *(s16 *)(v1 + 0x1A) = 0x1000; + *(s16 *)(v1 + 0x18) = 0x1000; + v1 = *(s32 *)(a0 + 0x64); + tmp = *(u16 *)(v1 + 0x36); + *(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; + *(s16 *)(a0 + 0xFE) = tmp; +} + #include "common.h" diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c index b332474459..4b8395f27a 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c @@ -3335,7 +3335,18 @@ void func_8017BF20(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017BF58); +extern void func_80183228(void *a0); +extern void func_80171A1C(u8 *a0); +extern s32 func_80174650(s32 a0); + +void func_8017BF58(void *a0) { + if (((s32 (*)(void *))func_80183228)(a0) == 0) { + return; + } + func_80171A1C(a0); + func_80174650((s32)a0); +} + DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ @@ -3359,7 +3370,19 @@ void func_8017C004(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C03C); +extern s32 func_801831D0(void *a0); +extern void func_80171A1C(u8 *a0); +extern s32 func_80174650(s32 a0); + +void func_8017C03C(void *a0) { + s32 s0 = (s32)a0; + if (func_801831D0(a0) == 0) { + return; + } + func_80171A1C((u8 *)s0); + func_80174650(s0); +} + DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c b/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c index 93e82766b0..d6d7c95ded 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c @@ -4272,7 +4272,20 @@ DEFINE_func_80182904() /* dedup: shared engine-core @0x80182904 (src/shared) */ DEFINE_func_80182910() /* dedup: shared engine-core @0x80182910 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017FB84", func_8018291C); +extern u8 D_801D4306; + +void func_8018291C(void) { + u8 *p = &D_801D4306; + + asm("" : "=r"(p) : "0"(p)); + + if (*p < 0xF8) { + *p += 4; + p[-2] += 6; + p[-1] += 6; + } +} + extern void func_8002D4C8(s32 arg0, s32 arg1); void func_8018295C(void *a0) { @@ -4613,7 +4626,40 @@ s32 arg0; } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017FB84", func_8018302C); +void func_8018302C(void *a0) { + extern u8 D_801D4306; + extern u8 D_801D4304; + extern u8 D_801D4305; + register s32 v __asm__("$2"); + register s32 c __asm__("$3"); + register s32 z __asm__("$0"); + register u8 *dp __asm__("$4"); + s16 *p; + s32 frame_pad[3]; + + (void)&frame_pad; + p = *(s16 **)((s32)a0 + 0x20); + v = *(s16 *)(p + 0xC); + c = v + z; + if (v >= 0x801) { + v = c - 0x200; + *(s16 *)(p + 0xC) = v; + } + v = *(s16 *)(p + 0xD); + c = v + z; + if (v >= 0x801) { + v = c - 0x200; + *(s16 *)(p + 0xD) = v; + } + + dp = &D_801D4306; + if (*dp >= 0xC1) { + *dp -= 4; + D_801D4304 -= 6; + D_801D4305 -= 6; + } +} + extern u8 D_801D4304; extern u8 D_801D4305; diff --git a/src/ov_SC04_016/ov_SC04_016_jr_8017BEBC.c b/src/ov_SC04_016/ov_SC04_016_jr_8017BEBC.c index 4deacfc039..6953a6517c 100644 --- a/src/ov_SC04_016/ov_SC04_016_jr_8017BEBC.c +++ b/src/ov_SC04_016/ov_SC04_016_jr_8017BEBC.c @@ -3813,11 +3813,65 @@ void func_8017E26C() { } -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E6A0); +extern u8 D_801ABB40[]; +extern u8 D_801ABB44[]; + +void func_8017E6A0(void *a0) { + s32 i; + s32 off; + + i = 0; + off = 0; + do { + *(s32 *)(D_801ABB40 + off) = 0; + *(s32 *)(D_801ABB44 + off) = 0; + off += 0x4C; + i++; + } while (i < 0x14); + *(s16 *)((s8 *)a0 + 0x100) = 0; + *(s16 *)((s8 *)a0 + 0x102) = 0x40; +} + INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E6E0); -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E960); +#include "common.h" + +void func_8017E960(s32 param_1, s32 param_2, s32 *param_3) +{ + s32 dx, dy, dz; + s32 ax, az; + register s32 ay __asm__("$7"); + + dx = *(s16 *)(param_2 + 2) - *(s16 *)(param_1 + 2); + dy = *(s16 *)(param_2 + 6) - *(s16 *)(param_1 + 6); + dz = *(s16 *)(param_2 + 0xA) - *(s16 *)(param_1 + 0xA); + + ax = dx; + if (dx < 0) { + ax = -dx; + } + ay = dy; + if (dy < 0) { + ay = -dy; + } + az = dz; + if (dz < 0) { + az = -dz; + } + + if (ay < ax) { + ay = ax; + } + if (ay < az) { + ay = az; + } + + param_3[0] = (dx << 16) / ay; + param_3[1] = (dy << 16) / ay; + param_3[2] = (dz << 16) / ay; +} + extern u8 D_801ABB40[]; extern u8 D_801ABB44[]; diff --git a/src/ov_SC05_018/ov_SC05_018_jr_8017D604.c b/src/ov_SC05_018/ov_SC05_018_jr_8017D604.c index 22fc3de567..fe4dde55bc 100644 --- a/src/ov_SC05_018/ov_SC05_018_jr_8017D604.c +++ b/src/ov_SC05_018/ov_SC05_018_jr_8017D604.c @@ -3634,9 +3634,38 @@ void func_8017F080(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_8017F0BC); +extern void func_8014706C(void *arg0); +extern void func_8014708C(void *arg0); +extern s32 func_801472C8(struct S *a0); +extern void func_8017F818(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80171990(u8 *a0); + +void func_8017F0BC(void *a0) { + func_8014706C(a0); + func_8014708C(a0); + func_801472C8(a0); + *(s32 *)((u8 *)a0 + 0x200) = 100; + *(s16 *)((u8 *)a0 + 0x20C) = 1; + func_8017F818(a0, *(s16 *)((u8 *)a0 + 0x20C), *(s32 *)((u8 *)a0 + 0x200), 0); + func_80171990((u8 *)a0); +} + + +extern void func_8017F818(void *a0, s32 a1, s32 a2, s32 a3); +extern void func_8017F990(s32 a0, s32 a1); +extern s32 func_80171990(u8 *a0); + +void func_8017F120(s32 arg0) +{ + func_8017F818((void *)arg0, *(s16 *)(arg0 + 0x20C), *(s32 *)(arg0 + 0x200), 0); + func_8017F990(arg0, 0); + *(s32 *)(arg0 + 0x200) += 0xA; + if (*(s32 *)(arg0 + 0x200) >= 0x258) { + *(s32 *)(arg0 + 0x204) = 0xA0000; + func_80171990((u8 *)arg0); + } +} -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_8017F120); extern void func_8017F818(void *, s32, s32, s32); extern void func_8017F990(s32, s32); @@ -4257,7 +4286,13 @@ void func_8017FFD8(void *arg0) { -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80180014); +extern void func_80180220(s32 arg0, s32 arg1); +extern s16 D_80126940; + +void func_80180014(void *arg0) { + func_80180220((s32) arg0, (s32) &D_80126940); +} + @@ -4481,7 +4516,23 @@ void func_801805E0(void) } -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80180644); +void func_80180644(s32 arg0) +{ + extern void func_8017FB8C(void); + extern void func_80129CF8(); + extern void func_8012E8A8(u8 *arg0); + extern s32 D_801E6748; + + func_8017FB8C(); + func_80129CF8(); + *(s16 *)(arg0 + 2) = 3; + *(s16 *)(arg0 + 0x34) = 0; + *(s32 *)(arg0 + 0x1C) = 0; + *(s16 *)(arg0 + 0x98) = 0; + func_8012E8A8(arg0); + D_801E6748 = 1; +} + typedef struct { u8 pad0[0x18]; diff --git a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c index 42bc74853e..9e73e88be3 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c @@ -7320,7 +7320,31 @@ void aF80181940(void) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801819F4); +void func_801819F4(void) { + 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; + extern u8 D_80126948[]; + extern void func_80181A78(void *); + extern void func_8012A018(s32, s32); + + D_80126954 = 0x190; + D_8012695C = 0x4B0; + D_80126968 = 0x155; + D_8012696A = 0; + D_8012696C = 0; + D_80126976 = 0; + D_80126978 = 0; + D_8012697A = 0; + func_8012A018((s32)func_80181A78, 0); + func_80181A78((void *)D_80126948); +} + extern void (*D_8018C100[])(void); @@ -8135,7 +8159,22 @@ void func_80183088(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801830C4); +void func_801830C4(int param_1) +{ + extern s32 func_8012C588(s32 a0, s32 a1); + + int v0; + + *(unsigned short *)(param_1 + 0x5c) = + *(unsigned short *)(param_1 + 0x5c) | 0x4000; + *(short *)(param_1 + 0xae) = -1; + *(unsigned char *)(param_1 + 0xc1) = 0; + *(short *)(param_1 + 0x5e) = 0; + func_8012C588(0x271, param_1); + v0 = *(int *)(*(int *)(param_1 + 0x64) + 0x64); + *(short *)(v0 + 0x102) = *(short *)(v0 + 0x102) - 1; +} + void func_80183130(void *param_1) { @@ -8293,9 +8332,51 @@ void func_801836E0(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018371C); +extern void func_80182A30(s32 arg0); +extern void func_80182B68(s32 arg0); + +void func_8018371C(s32 a0) +{ + s32 v0; + u16 v1; + extern void func_8012C1B8(void); + extern void func_8012CAE4(void *a0); + extern void func_8001C2C4(s32 a0); + extern s32 func_8012AD50(void *a0); + extern s32 D_801AECB0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4((void *)a0); + return; + } + func_8001C2C4(v0); + v1 = *(u16 *)(a0 + 0xA); + *(u16 *)(a0 + 0x100) = 0; + *(u16 *)(a0 + 0xFE) = v1; + func_80182A30(a0); + func_80182B68(a0); + D_801AECB0 = 0; + func_8012AD50((void *)a0); +} + + +#include "common.h" +#include "/home/musashi/bfm-decomp/src/shared/engine_types.h" + +extern MatEntry D_8018C558[]; +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern void func_801828DC(void); + +void func_80183790(void *param_1) +{ + if (*(s16 *)((s32)param_1 + 0x102) == 3) { + func_80178B18((s32)param_1, (s32)D_8018C558); + ((void (*)(s32))func_801828DC)((s32)param_1); + } +} -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183790); extern void func_80178D18(void); diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c b/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c index 8b73c0a53e..15adb511c1 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c @@ -3603,7 +3603,35 @@ void func_8017E190(s32 arg0) } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_8017E1D8); +#include "common.h" + +extern void func_8017EEFC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_8017EEB4(s32 arg0); +extern s32 D_801963EC; +extern s16 D_80188A16; +extern s16 D_8019F6FC; +extern s32 D_8019F700; +extern s16 D_8019F704; + +void func_8017E1D8(s32 arg0) +{ + s16 ret; + s32 v1; + + func_8017EEFC(arg0, 5, 0, &D_801963EC); + *(s16 *)(arg0 + 0x34) = 0; + D_8019F6FC = 0; + *(s32 *)(arg0 + 0x1C) = D_80188A16; + ret = func_8017EEB4(arg0); + D_8019F704 = ret; + v1 = (ret == 0) ? 1 : -1; + D_8019F700 = v1; + func_8002D4C8(0x97E, 0); + func_8002D4C8(0xA92, 0); + *(s16 *)(arg0 + 0x84) = 0; +} + INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_8017E26C); @@ -3733,7 +3761,44 @@ void func_8017E54C(s32 a0) } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_8017E710); +#include "common.h" + +extern s32 func_8012BEE8(s32 a0); +extern void func_8017EEFC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8017EB8C(void *arg0); +extern void func_8017E7D0(s32 a0); +extern s16 D_8019F720; +extern s16 D_8019F70C; +extern s16 D_8019F718; +extern u8 D_80195E24; + +void func_8017E710(s32 a0) +{ + s32 iVar2; + s32 bVar1; + + if (D_8019F720 != 0) { + D_8019F720 = D_8019F720 - 1; + } + iVar2 = func_8012BEE8(a0); + if (iVar2 != 0) { + *(u8 *)(a0 + 0xC1) = 0; + bVar1 = D_8019F70C < 4; + *(u16 *)(a0 + 0x5E) = 0; + if (!bVar1) { + func_8017E7D0(a0); + } else { + if (D_8019F718 == 7) { + func_8017EEFC(a0, 7, 0, (s32)&D_80195E24); + func_8002D4C8(0xA97, 0); + } else { + func_8017EB8C((void *)a0); + } + } + } +} + extern void func_8017EEFC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); extern s32 D_80195614; @@ -3779,9 +3844,36 @@ void func_8017E8A8(s32 a0) { } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_8017E910); +extern void func_8017EEFC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 D_80195614; +extern void func_8017ECE0(s32 a0); +extern void func_8017EDA0(s32 arg0); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_8017E910(s32 arg0) { + func_8017EEFC(arg0, 0xB, 0, &D_80195614); + *(s32 *)(arg0 + 0x1C) = 0x10; + func_8017ECE0(arg0); + func_8017EDA0(arg0); + func_8002D4C8(0x981, 0); +} + + +extern void func_8017EEFC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s16 D_8019F708; +extern s16 D_80188A22[]; +extern void func_8012E8A8(u8 *a0); + +void func_8017E96C(s32 arg0) { + s32 v0; + + func_8017EEFC(arg0, 0xC, 0, 0); + v0 = D_80188A22[D_8019F708]; + *(s16 *)(arg0 + 0x5C) = 0; + *(s32 *)(arg0 + 0x1C) = v0; + func_8012E8A8((u8 *)arg0); +} -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_8017E96C); #include "common.h" diff --git a/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c b/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c index 6534b26e4f..4f022fb6f6 100644 --- a/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c +++ b/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c @@ -4907,7 +4907,43 @@ void func_8017E9F0(s32 a0) { } -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017EA48); +#include "common.h" + +extern s32 func_80180FA4(s32, s32); +extern s32 func_80181384(s32, s32); +extern s32 func_8018107C(s32, s32, s32); +extern void func_801810CC(s32, s32, s32); +extern s32 func_80181280(s32 a0); +extern void func_80180F94(s32 a0); +extern s32 func_8012AD50(void*); + +extern s32 D_801151D4; +extern u8 D_80186C38; +extern u8 D_80187E08; +extern s16 D_80187DA8[]; +extern void (*D_80186B50[])(); +extern s32 D_80187D88; +extern u8 D_80187CA8; + +void func_8017EA48(s32 a0) { + register s32 s1 __asm__("$17") = D_801151D4; + s32 s0 = a0; + + ((s32 (*)(s32, void *, s32))func_80180FA4)(s0, (void *)&D_80186C38, 0); + if (func_80181384(s0, 3) != 0) { + *(s32 *)((u8 *)s1 + 0x14) -= 0x64; + } + ((s32 (*)(s32, void *, s32))func_8018107C)(s0, (void *)&D_80187E08, 3); + func_801810CC(s0, (s32)&D_80187DA8, 1); + ((s32 (*)(s32, s32, s32))func_80180FA4)(s0, (s32)D_80186B50, 1); + func_801810CC(s0, (s32)&D_80187D88, 5); + ((s32 (*)(s32, s32, s32))func_80180FA4)(s0, (s32)&D_80187CA8, 5); + if (func_80181280(s0) != 0) { + func_80180F94(4); + ((void (*)(s32))func_8012AD50)(s0); + } +} + #include "common.h" @@ -5392,7 +5428,12 @@ void func_8017F330(s32 a0) { } -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017F370); +extern s32 func_801815B8(s32 a0, s32 a1); + +void func_8017F370(s32 a0) { + func_801815B8(a0, 0); +} + extern s32 func_80180F84(void); extern void (*D_801885B8[])(int); @@ -6083,7 +6124,19 @@ s32 a0; } -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8018004C); +extern s32 func_8012AD50(void * arg0); +extern s32 func_80180FA4(s32, s32); +extern void func_80181048(void*, void*); + +extern s32 D_80187F68; + +void func_8018004C(s32 a0) { + if (((s32 (*)(s32, void *, s32))func_80180FA4)(a0, (void *)&D_80187F68, 0) != 0) { + func_80181048((void *)a0, (void *)&D_80187F68); + func_8012AD50((void *)a0); + } +} + extern s32 func_80180F84(void); extern void func_801813CC(s32 a0); @@ -6135,7 +6188,14 @@ void func_801800F4(s32 a0) { } -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_80180188); +void func_80180188(s32 a0) { + *(u16 *)(a0 + 0xE) = *(u16 *)(a0 + 0xE) - 1; + *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 0x100; + if (*(s32 *)(a0 + 0x1C) == 0x1000) { + func_8012AD50((void *)a0); + } +} + extern s32 func_8012AD50(void * arg0); extern s32 func_80181280(s32 a0);