From eba16c93761e7c0937fa7e68ceee5db39ff258e0 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 29 Aug 2026 16:54:23 -0600 Subject: [PATCH] =?UTF-8?q?feat(t5):=20Claude=20wave=20t5w=20=E2=80=94=205?= =?UTF-8?q?=20banked=20(sonnet=205/5,=20opus=200/0);=20fleet=20213=20passe?= =?UTF-8?q?d,=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_SC02_039/ov_SC02_039_jr_8017BEBC.c | 82 ++++++++++++++++++++++- src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c | 15 ++++- src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c | 5 +- src/ov_SC06_016/ov_SC06_016_jr_801816DC.c | 45 ++++++++++++- 4 files changed, 142 insertions(+), 5 deletions(-) diff --git a/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c b/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c index e2cdd7f7a..6d5c3790d 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c @@ -3502,7 +3502,53 @@ u32 func_8017D5F4(s16 *param_1, s16 *param_2, s16 *param_3) { } -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8017BEBC", func_8017D6AC); + + + + + + + +extern s32 func_800495EC(s32 a0, s32 a1, s32 a2); + +u32 func_8017D6AC(s16 *param_1, s16 *param_2, s16 *param_3) { + s16 ax, ay, bx, by, cx, cy; + register s32 la __asm__("$8"); + register s32 lb __asm__("$7"); + register s32 lc __asm__("$3"); + u32 r; + s32 pad[2]; + + cx = param_3[0]; + bx = param_2[0]; + if (cx < bx) { + return 0; + } + __asm__ __volatile__("" : : "r"(la), "r"(lb), "r"(lc)); + ax = param_1[0]; + if (ax < cx) { + return 1; + } + do { + cy = param_3[2]; + ay = param_1[1]; + if (cy > ay) { + return 0; + } + by = param_2[1]; + if (by <= cy) { + la = (u16)ax; + lb = (u16)bx; + lc = (u16)cx; + __asm__ __volatile__("" : : "r"(ax), "r"(bx), "r"(cx)); + r = func_800495EC(la | ((u16)ay << 16), lb | ((u16)by << 16), + lc | ((u16)cy << 16)); + return ~r >> 31; + } + return 1; + } while (0); +} + extern s32 func_8017D764(void); @@ -4074,7 +4120,39 @@ void func_8017E024(s32 a0) } -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8017BEBC", func_8017E25C); +#include "common.h" +void func_8017E25C(s32 a0) +{ + s16 t; + s32 v1; + s32 v0; + + t = *(s16 *)(a0 + 0xDE); + if (t < -2) { + *(s32 *)(a0 + 0xE0) += 0x20000; + } else if (t >= 3) { + *(s32 *)(a0 + 0xE0) -= 0x20000; + } + + v1 = *(s32 *)(a0 + 0xE0); + if (v1 < 0) { + v0 = v1 + 0x8000; + *(s32 *)(a0 + 0xE0) = v0; + if (v0 > 0) { + *(s32 *)(a0 + 0xE0) = 0; + } + } else if (v1 > 0) { + v0 = v1 - 0x8000; + *(s32 *)(a0 + 0xE0) = v0; + if (v0 < 0) { + *(s32 *)(a0 + 0xE0) = 0; + } + } + + *(s32 *)(a0 + 0xDC) += *(s32 *)(a0 + 0xE0); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x14) = *(u16 *)(a0 + 0xDE); +} + #include "common.h" diff --git a/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c b/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c index 55b40e8f6..5eff5f393 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c @@ -13558,7 +13558,20 @@ void func_8018A624(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A698); +#include "common.h" + +extern void Square0(s32 *a0, s32 *a1); + +s32 func_8018A698(s32 a0) { + s32 v[4]; + + v[0] = *(s16 *)(a0 + 6) - *(s16 *)(a0 + 0x88); + v[1] = 0; + v[2] = *(s16 *)(a0 + 0xE) - *(s16 *)(a0 + 0x8C); + Square0(&v[0], &v[0]); + return 0x18FFFF < v[0] + v[2]; +} + INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A6F4); diff --git a/src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c b/src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c index d2c8ffca8..53d747461 100644 --- a/src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c +++ b/src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c @@ -3322,7 +3322,10 @@ 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_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017BEBC); +void func_8017BEBC(s32 a0, s32 a1) { + func_80146994(0x29, 0, a0, a1); +} + extern s32 D_80126B58; extern void func_80147364(u16, s32); diff --git a/src/ov_SC06_016/ov_SC06_016_jr_801816DC.c b/src/ov_SC06_016/ov_SC06_016_jr_801816DC.c index d279f254c..9e8374930 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_801816DC.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_801816DC.c @@ -3666,7 +3666,50 @@ void func_801826B4(void *a0) } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_801816DC", func_80182744); +#include "common.h" + +extern void func_8012AD80(s32 a0); +extern s32 func_8012BD14(s32 a0); +extern void func_80181018(s32 arg0); +extern void func_8012C218(void *a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s16 D_801890E0[]; + +void func_80182744(s32 param_1) { + s32 s0 = param_1; + s32 v0; + s32 v1; + u16 v2; + + func_8012AD80(s0); + *(s32 *)(s0 + 0x1C) = *(s32 *)(s0 + 0x1C) + 1; + + if (*(s16 *)(s0 + 0xA) >= -0x27F) { + v1 = *(s32 *)(s0 + 0x14); + *(s16 *)(s0 + 0xA) = -0x280; + *(s16 *)(s0 + 0x8) = 0; + *(s32 *)(s0 + 0x1C) = 0; + *(s32 *)(s0 + 0x14) = -v1; + func_8002D4C8(0x983, 0); + + v2 = *(u16 *)(s0 + 0x34) + 1; + *(u16 *)(s0 + 0x34) = v2; + if (D_801890E0[*(s16 *)(s0 + 0x70)] < v2) { + func_8002D4C8(0x984, 0); + goto tail; + } + } + + v0 = func_8012BD14(s0); + if (v0 >= 0x900) { + return; + } + +tail: + func_80181018(s0); + func_8012C218((void *)s0); +} + INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_801816DC", func_80182810);