mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-04 00:20:10 -04:00
feat(t5): Claude wave t5t — 13 banked of 15 (sonnet 13/14, opus 0/1); fleet 213 passed, 0 failed of 213 (P31 S65 T5)
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).
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user