From 83334a6c9ecd0933f155b9a26d788df87fc71d83 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 29 Aug 2026 15:51:55 -0600 Subject: [PATCH] =?UTF-8?q?feat(t5):=20Claude=20wave=20t5t=20=E2=80=94=201?= =?UTF-8?q?3=20banked=20of=2015=20(sonnet=2013/14,=20opus=200/1);=20fleet?= =?UTF-8?q?=20213=20passed,=200=20failed=20of=20213=20(P31=20S65=20T5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First wave at the new 1x15 cap (5x plan). Bank rate 13/15 = 87%, against t5s's 24/29 = 83% — halving the wave did not cost quality. Banked: func_800CAE0C func_800CB028 func_8017C120 func_8017CD9C func_8017E0FC func_8017EADC func_8017EB34 func_8017EC78 func_80182AFC func_80182C78 func_8018A124 func_8018B698 func_8018B8B0. Misses: func_801831B4 (71 ins, closeness 10 — a D_801B7A84 reload-scheduling residual the agent probed 5 structurally distinct ways, byte-identical residual each time) and ov_SC03_023:func_8017BEBC (246 ins, closeness 45) whose ov_SC03_012 sibling was hand-banked earlier this session — try a family remap there before spending another wave slot. R22: verified from a CLEAN rebuild after the ov_MAIN_012 repair (commit:3195). --- src/md_MAIN_013/md_MAIN_013.c | 13 +++- src/md_MAIN_041/md_MAIN_041.c | 39 +++++++++++- src/ov_SC02_027/ov_SC02_027_jr_8017D898.c | 76 ++++++++++++++++++++++- src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c | 62 +++++++++++++++++- src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c | 40 +++++++++++- src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c | 29 ++++++++- src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c | 35 ++++++++++- src/ov_SC07_006/ov_SC07_006_jr_8017BEBC.c | 8 ++- src/ov_SC07_006/ov_SC07_006_jr_80183814.c | 8 ++- src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c | 12 +++- 10 files changed, 309 insertions(+), 13 deletions(-) diff --git a/src/md_MAIN_013/md_MAIN_013.c b/src/md_MAIN_013/md_MAIN_013.c index 651972592b..1939b2f010 100644 --- a/src/md_MAIN_013/md_MAIN_013.c +++ b/src/md_MAIN_013/md_MAIN_013.c @@ -1,6 +1,17 @@ #include "common.h" -INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CAE0C); +extern void func_800183E0(s32 a0); + +void func_800CAE0C(void) { + extern s32 D_800CC57C; + extern s32 D_800CC5BC; + extern s32 D_800CB93C; + + func_800183E0((s32)&D_800CC57C); + func_800183E0((s32)&D_800CC5BC); + func_800183E0((s32)&D_800CB93C); +} + diff --git a/src/md_MAIN_041/md_MAIN_041.c b/src/md_MAIN_041/md_MAIN_041.c index 58f35c508a..9d4ae43726 100644 --- a/src/md_MAIN_041/md_MAIN_041.c +++ b/src/md_MAIN_041/md_MAIN_041.c @@ -65,7 +65,44 @@ void func_800CAF9C(s32 a0) { } -INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB028); +#include "common.h" + +extern void func_8014659C(void); +extern void func_8001C214(s32 a0, s32 a1); +extern s32 D_800CBE04; +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80147324(s32 a0); +extern void func_80146CA0(void *a0); +extern void func_800CB338(void); + +void func_800CB028(s32 a0) { + s32 s2; + s32 s0; + + s2 = *(s32 *)(a0 + 0x4C); + s0 = ((s32 (*)(void))func_8014659C)(); + *(s32 *)(a0 + 0x20) = s0; + if (s0 != 0) { + func_8001C214(s0, (s32)&D_800CBE04); + *(u16 *)(s0 + 0x2C) = *(u16 *)(s0 + 0x2C) | 0x10; + *(u16 *)(s0 + 0x1C) = 0x2000; + *(u16 *)(s0 + 0x1A) = 0x2000; + *(u16 *)(s0 + 0x18) = 0x2000; + *(u16 *)(s0 + 0x12) = *(u16 *)(*(s32 *)(s2 + 0x20) + 0x12); + func_80149374(s2, a0 + 4); + func_80146DE8((s32 *)a0, 0, 0, 0xFFE80000); + func_80146E90((s32 *)a0, 0x3C); + func_80146A6C(0x4F, (void *)a0, 0, 0, 0, 0, 0); + func_80147324(0x8E5); + func_80146CA0((void *)a0); + } else { + ((void (*)(s32))func_800CB338)(a0); + } +} + extern void func_80162FF4(); extern void func_80162FC0(s32 *a0); 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 7cf372df75..a7264fcc4c 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_8017D898.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_8017D898.c @@ -5559,7 +5559,81 @@ void func_80182AA4(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182AFC); +#include "common.h" + + + + +extern void func_8012AD80(s32 a0); +extern void func_8012E014(s32 a0); +extern void func_80182D4C(u8 *a0, u8 *a1, s32 a2); +extern s32 func_8012DB84(void); +extern void func_80182C78(s32 a0); + +extern s32 D_80126B58; +extern s32 D_801AB660[]; +extern Stride8_u16_80182868 D_801AB670[]; +extern Stride8_s16_80182868 D_801AB676[]; +extern s16 D_801AB668[]; + +void func_80182AFC(s32 arg0) +{ + s32 s0 = arg0; + s16 st; + s32 v1; + u16 a0v; + s32 s2; + s32 diff; + register s32 ok __asm__("$5"); + u8 *base = (u8 *)&D_80126B58; + + func_8012AD80(s0); + + if (*(u8 *)(s0 + 0x74) != 0) { + func_8012E014(s0); + func_80182D4C((u8 *)s0, (u8 *)D_801AB660, -1); + } else { + st = *(s16 *)(s0 + 0x70); + func_80182D4C((u8 *)s0, (u8 *)D_801AB660, D_801AB676[st].v); + } + + s2 = 0x200; + st = *(s16 *)(s0 + 0x70); + if (st == 1) { + s2 = 0x180; + } + + v1 = D_801AB676[st].v; + a0v = D_801AB670[st].v; + ok = 1; + if (v1 != 0) { + if (*(s32 *)(s0 + 0x10) < (s32)0xFFF80000) { + *(s32 *)(s0 + 0x44) = 0; + } + diff = a0v - *(u16 *)(s0 + 0x6); + } else { + if (*(s32 *)(s0 + 0x10) > 0x80000) { + *(s32 *)(s0 + 0x44) = 0; + } + diff = *(u16 *)(s0 + 0x6) - a0v; + } + + if ((s16)diff >= s2 - 0x18) { + register int zr __asm__("$0"); + register s32 vt __asm__("$2"); + vt = ok + zr; + if (vt != 0) { + if (*(s16 *)(base + 0xA) >= *(s16 *)(s0 + 0xA) + D_801AB668[0]) { + func_8012DB84(); + } + } + } + + if ((s16)diff >= s2) { + func_80182C78(s0); + } +} + void func_80182C78(s32 a0) { diff --git a/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c b/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c index 4c5cb23af3..b671add78d 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c @@ -3986,7 +3986,67 @@ void func_8017DEBC(s32 a0) { } -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_8017E0FC); +#include "common.h" + +extern s32 func_8004787C(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_8017E0FC(s32 a0) { + extern u8 D_8018B4F2[]; + extern u8 D_8018B4F4[]; + extern u8 D_8018B4F8[]; + extern u8 D_8018B50C[]; + + s32 s0 = a0; + s32 ret; + u16 sum; + s16 a2; + s32 a1; + s32 matched; + + ret = func_8004787C((s16)(*(u16 *)(s0 + 0xFC) += 0x40)); + + *(s16 *)(s0 + 0x6) = *(u16 *)(s0 + 0x88) + ((*(s16 *)(s0 + 0xFE) * ret) >> 12); + + if (*(s16 *)(s0 + 0xFC) < 0x400) { + return; + } + + sum = *(u16 *)(s0 + 0x88) + *(u16 *)(s0 + 0xFE); + *(s16 *)(s0 + 0x6) = sum; + *(s16 *)(s0 + 0x88) = sum; + *(s16 *)(s0 + 0x8C) = *(u16 *)(s0 + 0xE); + + a2 = *(s16 *)(s0 + 0x6); + a1 = (*(s32 *)(s0 + 0xDC) << 3) - 8; + + for (;;) { + if (a2 == *(s16 *)(D_8018B4F4 + a1)) { + if (*(s16 *)(s0 + 0xE) == *(s16 *)(D_8018B4F8 + a1)) { + func_8002D4C8(0x744, 0); + matched = 1; + break; + } + } + a1 += 8; + if (*(s16 *)(D_8018B4F2 + a1) == 0) { + matched = 0; + break; + } + } + + if (matched == 1) { + *(s16 *)(s0 + 0x2) = 4; + *(u16 *)(s0 + 0xFC) = 0; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x80; + *(s32 *)(*(s32 *)(s0 + 0x20) + 0x80) = + (s32)(D_8018B50C + *(s16 *)(s0 + 0x70) * 8); + } else { + *(s16 *)(s0 + 0x2) = 1; + *(u16 *)(s0 + 0x5C) = (*(u16 *)(s0 + 0x5C) | 0x1000) & 0xF7FF; + } +} + INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_8017E254); diff --git a/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c b/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c index fc10230c91..f5c927081b 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c @@ -4276,9 +4276,34 @@ void func_8017EA2C(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC", func_8017EADC); +void func_8017EADC(s32 a0) { + s16 v0; + + v0 = *(u16 *)(a0 + 0xA) - 4; + *(u16 *)(a0 + 0xA) = v0; + if (v0 < -0x5FF) { + *(s16 *)(a0 + 2) = 3; + *(s16 *)(a0 + 0x34) = 2; + *(s32 *)(a0 + 0x1C) = 0xF; + } + func_8012DFD4((u8 *)a0); +} + + +#include "common.h" + +extern void func_8012DFD4(u8 *a0); + +void func_8017EB34(s32 a0) { + s32 v0 = *(s32 *)(a0 + 0x1C); + if (v0 != 0) { + *(s32 *)(a0 + 0x1C) = v0 - 1; + } else { + *(s16 *)(a0 + 2) = *(u16 *)(a0 + 0x34); + } + func_8012DFD4((u8 *)a0); +} -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC", func_8017EB34); INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC", func_8017EB78); @@ -4325,7 +4350,16 @@ void func_8017EC68(void) { void func_8017EC70(void) { } -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC", func_8017EC78); +void func_8017EC78(void *a0) { + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) - 0x100; + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1a) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1a) - 0x100; + if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x1a) < 0x81) { + *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x80000000; + *(s16 *)((u8 *)a0 + 0x2) = 1; + *(u16 *)((u8 *)a0 + 0x5c) = 0x8000; + } +} + void func_8017ECEC(void *a0) { *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) = *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) + 0x100; diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c b/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c index 51d23676a8..4724ecd0da 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c @@ -3417,7 +3417,34 @@ void func_8017C0A4(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C120); +extern s16 D_80196FF4; + +void func_8017C120(s32 param_1) { + s32 node; + s32 val; + s16 *p; + u16 vec[3]; + s32 val2; + + node = *(s32 *)(param_1 + 0x20); + *(s32 *)(param_1 + 0x2c) += 0xE3; + val = func_8004787C(*(s32 *)(param_1 + 0x2c)); + p = &D_80196FF4; + if (val < 0) { + val += 0xFF; + } + *p = val >> 8; + func_800139C8(*(s16 *)(node + 0x14), p - 2, vec); + *(s16 *)(param_1 + 6) = *(u16 *)(param_1 + 0x12) + vec[0]; + *(s16 *)(param_1 + 0xe) = *(u16 *)(param_1 + 0x1a) + vec[2]; + val2 = *(s32 *)(param_1 + 0x1c) - 1; + *(s32 *)(param_1 + 0x1c) = val2; + if (val2 == -1) { + func_80146E90(param_1, 0x10); + *(u16 *)(param_1 + 2) += 1; + } +} + extern s32 func_80146E98(s32 a0); extern void func_80146C3C(void); diff --git a/src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c b/src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c index abf2fe32f2..7f65711b5c 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c @@ -5406,7 +5406,25 @@ void func_8018B65C(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80187AEC", func_8018B698); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8002D4C8(s32 a0, s32 a1); +extern u8 D_801CD4C0[]; + +void func_8018B698(s32 arg0) +{ + s32 s0 = arg0; + u16 sp10[4]; + + sp10[0] = *(u16 *)(s0 + 6); + sp10[1] = *(u16 *)(s0 + 0xA) - 0x40; + sp10[2] = *(u16 *)(s0 + 0xE); + sp10[3] = 0x3000; + func_801437D8(s0 + 0xFE, (s32)sp10, (s32)D_801CD4C0, 0); + if ((*(u16 *)(s0 + 0xFE) & 3) == 0) { + func_8002D4C8(0xA9F, 0); + } +} + void func_8018B714(s32 param_1) { @@ -5428,7 +5446,20 @@ void func_8018B714(s32 param_1) INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80187AEC", func_8018B774); -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80187AEC", func_8018B8B0); +#include "common.h" + +extern void func_8018BBB8(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012AD44(s32 *a0, s16 a1); + +void func_8018B8B0(s32 param_1) +{ + *(u16 *)(param_1 + 0xE6) = 0x800; + func_8018BBB8(param_1); + func_8002D4C8(0xAE4, 0); + func_8012AD44((s32 *)param_1, 1); +} + extern Blk4 D_801D57B0; diff --git a/src/ov_SC07_006/ov_SC07_006_jr_8017BEBC.c b/src/ov_SC07_006/ov_SC07_006_jr_8017BEBC.c index ec1c252377..1bd4340514 100644 --- a/src/ov_SC07_006/ov_SC07_006_jr_8017BEBC.c +++ b/src/ov_SC07_006/ov_SC07_006_jr_8017BEBC.c @@ -3675,7 +3675,13 @@ void func_8017BEBC(s32 arg0) } -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8017BEBC", func_8017CD9C); +extern void func_8002931C(s32 a0); + +void func_8017CD9C(void) +{ + func_8002931C(0x4740000); +} + diff --git a/src/ov_SC07_006/ov_SC07_006_jr_80183814.c b/src/ov_SC07_006/ov_SC07_006_jr_80183814.c index 704d91573e..8778005ec6 100644 --- a/src/ov_SC07_006/ov_SC07_006_jr_80183814.c +++ b/src/ov_SC07_006/ov_SC07_006_jr_80183814.c @@ -5834,7 +5834,13 @@ void func_80189FDC(s32 param_1) } -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_8018A124); +void func_8018A124(void *param_1) +{ + if ((--*(s32 *)((char *)param_1 + 0x1C)) == 0) { + *(u16 *)((char *)param_1 + 2) += 1; + } +} + #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 a6d0b5bdfb..b47492d432 100644 --- a/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c +++ b/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c @@ -7827,7 +7827,17 @@ void func_80182C3C(u8 *a0) { } -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_80182C78); +extern s32 func_80181334(s32 a0, s32 a1); +extern void func_80171928(void *a0); +extern void *D_8011F738; + +void func_80182C78(u8 *a0) +{ + if (func_80181334(0, (s32)D_8011F738) != 0) { + func_80171928((void *)a0); + } +} + extern void func_8014706C(void *a0); extern void func_80154274(s32 *a0, s32 a1);