feat(t5): Claude wave t7b — 11 banked (sonnet 10/20, opus 0/0, +recovery); fleet 213 passed, 0 failed of 213 (P31 S62 T5)

This commit is contained in:
Drew T
2026-08-29 19:37:12 -06:00
parent 8ae40e10d2
commit cd43e7cbd5
11 changed files with 479 additions and 12 deletions
+35 -1
View File
@@ -3351,7 +3351,41 @@ void func_8017D5FC(void) {
}
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017D624);
void func_8017D624(void) {
extern void func_8012A018(s32 a0, s32 a1);
extern void func_8012A094(s32 a0);
extern void func_8017D7A4(void *a0);
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 s32 D_801274E8;
extern s16 D_801274EA;
extern s16 D_801274EC;
s32 val;
D_80126954 = 300;
D_8012695C = 700;
D_80126968 = 0;
D_8012696A = 0x850;
D_8012696C = 0;
D_80126976 = 0;
val = -130;
D_80126978 = val;
D_8012697A = 0;
func_8012A018((s32)func_8017D7A4, 0);
*(s16 *)&D_801274E8 = 13;
D_801274EA = val;
D_801274EC = 138;
func_8017D7A4(D_80126948);
func_8012A094((s32)D_80126948);
}
void func_8017D6E4(void) {
extern void func_8012A018(s32 a, s32 b);
+42 -1
View File
@@ -4530,7 +4530,48 @@ void func_80182000(void *a0) {
}
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_8018203C);
extern u8 D_801CDA10[];
extern s32 D_801C36F8[];
extern s32 D_801CDD30;
extern u8 D_811CDE20[];
void func_8018203C(s32 a0, s32 a1) {
register u32 *d __asm__("$5");
register s32 *p __asm__("$6");
register u16 *dh __asm__("$3");
register u16 *sh __asm__("$4");
register s32 mask __asm__("$9");
register s32 *elseVal __asm__("$8");
register u8 *ifVal __asm__("$7");
*(s16 *)(a0 + 0xFE) = a1;
p = *(s32 **)(D_801C36F8[(s16)a1] + (*(s16 *)(a0 + 0x70)) * 4);
d = (u32 *)D_801CDA10;
if (*p != 0) {
mask = 0x1000000;
elseVal = &D_801CDD30;
ifVal = D_811CDE20;
sh = (u16 *)((u8 *)p + 6);
dh = (u16 *)((u8 *)d + 6);
do {
if (!(*p & mask)) {
*d = (u32)elseVal;
} else {
*d = (u32)ifVal;
}
d += 2;
dh[-1] = sh[-1];
p += 2;
dh[0] = sh[0];
sh += 4;
dh += 4;
} while (*p != 0);
}
*d = 0;
*(s16 *)((u8 *)d + 4) = -1;
*(s16 *)((u8 *)d + 6) = 0;
}
typedef struct { u8 b[12]; } Blk12_820F8;
typedef struct { u8 b[8]; } Blk8_820F8;
+40 -1
View File
@@ -4232,7 +4232,46 @@ extern s32 func_8012AD50(void *a0);
}
INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D9E4);
extern s32 func_8012BEE8(s32 a0);
extern void func_80015978(s32 a0, s32 *a1);
extern u8 *func_801290DC(s32 a0, u8 *a1);
extern void func_8012BF4C(s32 *a0, s32 a1);
extern s32 rand(void);
void func_8017D9E4(s32 param_1) {
u16 delta[4];
register s32 t __asm__("$3");
s32 t2;
s16 d;
s32 obj;
if (func_8012BEE8(param_1) == 0) {
return;
}
func_80015978(param_1 + 4, (s32 *)delta);
if (*(s32 *)(param_1 + 0xDC) != 0) {
t = rand() % 352;
d = t;
if (t & 1) {
d = -t;
}
delta[0] += d;
t2 = rand();
t2 = t2 % 256;
d = t2;
if (t2 & 1) {
d = -t2;
}
delta[2] += d;
}
obj = (s32)func_801290DC(0x27, (u8 *)delta);
if (obj == 0) {
return;
}
func_8012BF4C((s32 *)param_1, (rand() & 0x7F) + 0x60);
*(u16 *)(obj + 0x2E) = *(u16 *)(param_1 + 0xFC);
}
extern void (*D_80181D94[])(void);
+49 -1
View File
@@ -3765,7 +3765,55 @@ void func_8017E04C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017C730", func_8017E088);
extern u16 D_80126B5E;
extern u16 D_80126B66;
extern SVECTOR_8016E7C8 D_8019EBC4;
extern SVECTOR_8016E7C8 D_80126940;
extern u16 D_80126942;
extern s32 ratan2(s32 a0, s32 a1);
extern s32 func_80013294(void *a0, void *a1);
extern void func_8017F1B0(s32 a0, void *a1, void *a2);
extern void func_8017E1EC(s32 param_1, s32 param_2, s16 *param_3);
void func_8017E088(s32 arg0) {
SVECTOR_8016E7C8 sp10;
SVECTOR_8016E7C8 sp18;
s32 angle;
s32 finalAngle;
s16 temp;
register s32 zr __asm__("$0");
sp18 = D_8019EBC4;
angle = ratan2(*(s16 *) &D_80126B5E, *(s16 *) &D_80126B66) & 0xFFF;
sp10 = D_80126940;
sp18.vy = D_80126942;
temp = func_80013294(&sp10, &sp18);
finalAngle = angle + zr;
if (temp >= 0x281) {
sp10.vx = 0;
sp10.vy = D_80126942;
sp10.vz = 0x280;
func_8017F1B0(angle, &sp10, &sp10);
sp10.vx >>= 3;
sp10.vy >>= 3;
sp10.vz >>= 3;
} else {
if (temp < 0x1C0) {
sp10.vx = 0;
sp10.vy = D_80126942;
sp10.vz = 0x1C0;
func_8017F1B0(angle, &sp10, &sp10);
sp10.vx >>= 3;
sp10.vy >>= 3;
sp10.vz >>= 3;
}
}
func_8017E1EC(arg0, finalAngle, (s16 *) &sp10);
}
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2);
+40 -1
View File
@@ -2756,7 +2756,46 @@ extern void func_80184440(void);
DEFINE_func_801848E4() /* dedup: shared engine-core @0x801848E4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_80184920);
extern s32 func_80184E4C(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4);
extern void func_80016714(void *a0, s32 a1);
extern s32 func_80029178(s32 arg);
extern void func_8012CAE4(void *a0);
extern u16 D_8018FB40[];
void func_80184920(void *param_1) {
s32 v0;
v0 = func_80184E4C((s32)param_1, (s32)D_8018FB40, 0x300, 0x140, 0x88);
*(s32 *)((s32)param_1 + 0xCC) = v0;
if (v0 == 0) {
goto L8018498C;
}
v0 = func_80184E4C((s32)param_1, (s32)D_8018FB40, 0x310, 0x140, 0x89);
*(s32 *)((s32)param_1 + 0xD0) = v0;
if (v0 != 0) {
goto L8018499C;
}
func_80016714(*(void **)((s32)param_1 + 0xCC), 0x38);
L8018498C:
func_8012CAE4(param_1);
return;
L8018499C:
*(s16 *)(*(s32 *)((s32)param_1 + 0xCC) + 0x12) =
*(s16 *)(*(s32 *)((s32)param_1 + 0x68) + 0xC);
*(s16 *)(*(s32 *)((s32)param_1 + 0xD0) + 0x12) =
*(s16 *)(*(s32 *)((s32)param_1 + 0x68) + 0xC);
*(s16 *)((s32)param_1 + 0x100) = 0;
v0 = func_80029178(0xB9) & 0xFF;
if (v0 == 0) {
*(s16 *)((s32)param_1 + 2) = 1;
*(s16 *)((s32)param_1 + 0x34) = 0;
return;
}
*(s16 *)((s32)param_1 + 2) = 2;
*(s16 *)((s32)param_1 + 0x34) = 2;
return;
}
#include "common.h"
+75 -1
View File
@@ -4463,7 +4463,81 @@ s32 func_801887DC(s32 a0, s16 a1, s16 a2) {
DEFINE_func_80188990() /* dedup: shared engine-core @0x80188990 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_801863CC", func_80188C8C);
extern s32 func_8012C354(s32 a0, s32 a1);
extern void func_8012C218(void *a0);
extern s32 func_80029504(void);
extern s32 func_800291DC(s32 a0);
extern void func_800291C8(s32 a0, s32 a1);
extern void func_8012B23C(s32 a0);
extern s32 func_80143970(void *a0);
extern s32 func_8012B030(u8 *a0);
extern u8 D_800AF630[];
extern u16 D_801D099C;
extern u16 D_801D099E;
extern u16 D_801D09A0;
extern u8 D_801D095C[];
extern u8 D_801D09A4[];
void func_80188C8C(s32 arg0)
{
register s32 s0 __asm__("$16");
register u8 *s1 __asm__("$17");
s32 w;
u16 t;
s1 = D_800AF630;
if (func_8012C354(arg0, (s32)D_801D095C) == 0) {
return;
}
s0 = arg0;
if ((u32)func_80029504() >= 0x1D7u) {
goto close;
}
*(u16 *)(s0 + 0x10A) = 1;
w = func_800291DC(10);
if (w & 0x100) {
goto fieldset;
}
if ((s16)w == 0x3043) {
goto close;
}
if ((s16)w != 0x1052) {
goto join;
}
close:
func_8012C218((void *)s0);
return;
fieldset:
*(u16 *)(s0 + 6) = 0x10BD;
*(s16 *)(s0 + 0xA) = -0x282;
*(s16 *)(s0 + 0xE) = -0x374;
*(u16 *)(s0 + 0x10A) = 0;
join:
t = *(u16 *)(s1 + 0xA3D8);
*(u16 *)(s0 + 0xFE) = t;
func_800291C8(10, (s16)t);
*(u8 *)(s0 + 0xC0) = 1;
*(s32 *)(s0 + 0xB4) = -0x489;
*(s32 *)(s0 + 0xBC) = (s32)D_801D09A4;
*(u8 *)(s0 + 0xC1) = 0;
*(s32 *)(s0 + 0xC4) = 1;
func_8012B23C(s0);
func_80143970((void *)s0);
func_8012B030((u8 *)s0);
*(u16 *)(s0 + 2) = 1;
*(s16 *)(s0 + 0xAE) = -1;
*(u8 *)(s0 + 0x75) = 8;
D_801D099C = *(u16 *)(s0 + 6);
D_801D099E = *(u16 *)(s0 + 0xA);
D_801D09A0 = *(u16 *)(s0 + 0xE);
}
void func_80188DE4(void *a0) {
extern u16 D_80126B62;
+35 -1
View File
@@ -2927,7 +2927,41 @@ void func_801833C4(s32 arg0)
}
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_801834DC);
void func_801834DC(s32 arg0)
{
extern u8 D_801D47E0[];
extern u8 D_801B5D38[];
extern u8 D_801B86B4[];
extern s32 (*D_8018A0C4[])(void *);
extern u16 D_800B99DC;
typedef struct {
u8 pad0[2];
union { s16 s; u16 u; } f02;
u8 pad1[0xD8];
union { s16 s; u16 u; } fDC;
u8 pad2[4];
s16 fE2;
u8 pad3[2];
s16 fE6;
u8 pad4[4];
s16 fEC;
s16 fEE;
} St;
#define P ((St *)arg0)
func_80180A64(D_801D47E0, D_801B5D38, P->fDC.s, P->fE2);
func_80180A64(D_801D47E0, D_801B86B4, P->fDC.s, P->fE6);
if (--P->fEC == 0) {
func_8013C9C4(D_8018A0C4);
P->fEC = (D_800B99DC & 7) + 3;
}
if (--P->fEE == 0) {
P->f02.u++;
}
}
extern s32 D_801D47E0;
+58 -1
View File
@@ -8238,7 +8238,64 @@ extern void func_80184CB8(s32 *a0, s32 a1);
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183338);
extern s32 func_801847BC(void *a0, void *a1);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern void func_8012E88C(s32 a0);
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80184C90(s32 a0);
extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_80184CB8(s32 *a0, s32 a1);
extern s32 func_801788B8(s32 arg0, s32 arg1);
extern void func_80183578(void *a0);
extern s32 func_80183604(s32 param_1);
void func_80183338(void *param_1)
{
extern u8 D_80192040;
extern short D_80192030;
extern short D_801B9AA8;
extern s32 D_801B673C;
void *s0 = param_1;
void *v1;
s32 v0;
if (func_801847BC(param_1, &D_80192040) != 0) {
v0 = func_80184BAC(7, 0xA);
if (v0 != 0) {
v0 = 2;
goto set_and_cb;
}
v0 = func_80184BAC(0xA, 0xC);
if (v0 != 0) {
v0 = 6;
*(short *)((char *)s0 + 2) = v0;
func_8012E88C((s32)s0);
func_8012A828((s32 *)s0, (s32)&D_801B9AA8);
func_80184C90((s32)s0);
func_80184ED4((s32)s0, (s32)&D_801B673C, 0, 0x40);
goto tail;
}
v0 = func_80184BAC(0xC, 0x14);
if (v0 != 0) {
v0 = 8;
} else {
v0 = 1;
}
set_and_cb:
*(short *)((char *)s0 + 2) = v0;
func_80184CB8((s32 *)s0, (s32)&D_80192030);
tail:
v1 = *(void **)((char *)s0 + 0x68);
*(short *)((char *)v1 + 0xC) = 0x7FFF;
*(s32 *)((char *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_80183578);
*(s32 *)((char *)s0 + 0xD8) = func_801788B8((s32)s0, (s32)&func_80183604);
}
}
extern void (*D_8019211C[])(void);
+37 -1
View File
@@ -4138,7 +4138,43 @@ void func_8018A1D0(s32 a0)
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80188E1C", func_8018A224);
extern u16 D_800B99DA;
extern u8 D_801E04E0[];
extern void func_8018A2E0(u16 *a0, s32 a1);
typedef struct {
u16 f0;
u16 f1;
u16 f2;
s16 f3;
} Ent_8018A224;
s32 func_8018A224(Ent_8018A224 *arg0, s32 arg1)
{
u8 rect[4];
s32 step;
register s32 q __asm__("$3");
register s32 half __asm__("$2");
step = 0x50;
if (D_801E04E0[D_800B99DA & 0xF] == 0) {
step = 0x60;
}
arg1 += 1;
q = (step * arg1) / 32;
half = q / 2;
rect[0] = q;
rect[1] = q;
rect[2] = half;
rect[3] = 0;
if (arg0->f3 != -1) {
do {
func_8018A2E0(&arg0->f0, *(s32 *)rect);
arg0++;
} while (arg0->f3 != -1);
}
}
/* func_8018A2E0 (ov_SC04_018, ov_SC04_018_jr_8017AE2C) — MATCH (250 ins)
*
+24 -2
View File
@@ -4744,7 +4744,7 @@ s32 func_8017F62C(s32 a0) {
extern void (*D_801A466C[])(void);
extern s32 D_801A9620;
extern void func_80180834(void *a0);
extern s32 func_80180834();
extern s32 func_8012C0EC(s32 a0);
void func_8017F68C(void *a0) {
@@ -5532,7 +5532,29 @@ void func_801807F8(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8017BEBC", func_80180834);
#include "common.h"
#include "/home/musashi/bfm-decomp/src/shared/engine_core.h"
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5);
extern s32 D_801A46A4;
extern s32 *D_80126B78;
extern u8 D_801152A8[];
s32 func_80180834(void *a0) {
SVECTOR buf1;
SVECTOR buf2;
func_8012F14C((s32)D_80126B78 + 0x34, (s32)&D_801A46A4, (s32)&buf1);
func_8012F14C((s32)D_80126B78 + 0x34, (s32)&D_801A46A4 + 8, (s32)&buf2);
if (func_80135888(*(s32 *)((s32)a0 + 0x20), *(s32 *)((s32)a0 + 0x58), (s32)&buf1, (s32)&buf2) != 0) {
func_8012F568(1, 1, *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12), 0x20, (s32)&buf2, (s32)D_801152A8);
return 1;
}
return 0;
}
#include "common.h"
#include "/home/musashi/bfm-decomp/src/shared/engine_core.h"
+44 -1
View File
@@ -5453,7 +5453,50 @@ void func_8018B330(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80187AEC", func_8018B4D8);
#include "common.h"
extern Blk20_8018AF88 D_800AE620;
extern void RotMatrixY(s32 a0, void *a1);
extern void ApplyMatrixSV(void *a0, void *a1, void *a2);
extern void func_8012AD44(s32 *a0, s16 a1);
extern s32 rand(void);
void func_8018B4D8(s32 param_1)
{
Blk20_8018AF88 local_38;
Blk20_8018AF88 *m;
SVECTOR out;
s32 c;
s32 b;
local_38 = D_800AE620;
out.vx = 0;
out.vy = -((rand() & 0x3F) + 0x50);
out.vz = -0x40;
m = &local_38;
c = rand() & 0x3F0;
b = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0x10A);
b -= 0x200;
RotMatrixY((s16)(((*(u16 *)(param_1 + 0x70) & 3) * 0x400) + c + b), m);
ApplyMatrixSV(m, &out, &out);
*(u16 *)(param_1 + 6) += out.vx;
*(u16 *)(param_1 + 0xA) += out.vy;
*(u16 *)(param_1 + 0xE) += out.vz;
*(s32 *)(param_1 + 0x10) = out.vx << 13;
*(s32 *)(param_1 + 0x18) = out.vz << 13;
*(s32 *)(param_1 + 0x14) = -(((rand() & 0xF) << 15) + 0x80000);
*(u16 *)(param_1 + 0x106) = rand() & 0xF0;
*(u16 *)(param_1 + 0x108) = rand() & 0xF0;
*(s32 *)(param_1 + 0x1C) = 0x20;
func_8012AD44((s32 *)param_1, 3);
}
extern void (*D_801CD4B0[])(void);