mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-30 15:36:55 -04:00
feat(t5): Claude wave t5w — 5 banked (sonnet 5/5, opus 0/0); fleet 213 passed, 0 failed of 213 (P31 S62 T5)
This commit is contained in:
@@ -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"
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user