mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 23:00:29 -04:00
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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
*
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user