mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-30 07:31:59 -04:00
feat(decomp): ox wave bj overlays — 19 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
@@ -3311,7 +3311,29 @@ void func_8017D500(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017C294", func_8017D53C);
|
||||
void func_8017D53C(s32 param_1) {
|
||||
extern u16 D_80126940;
|
||||
extern s16 D_80126942;
|
||||
extern s16 D_80126944;
|
||||
extern void func_8017D5C8(s32, s16 *);
|
||||
s16 buf[3];
|
||||
|
||||
buf[0] = D_80126940;
|
||||
if (D_80126942 < -0x570) {
|
||||
buf[1] = -0x570;
|
||||
} else if (!(D_80126942 < -0x3bf)) {
|
||||
buf[1] = -0x3c0;
|
||||
} else {
|
||||
buf[1] = D_80126942;
|
||||
}
|
||||
if (D_80126944 < -0x60) {
|
||||
buf[2] = -0x60;
|
||||
} else {
|
||||
buf[2] = D_80126944;
|
||||
}
|
||||
func_8017D5C8(param_1, buf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Local address-suffixed clones of the PSX MATRIX/SVECTOR layouts (cookbook: match_one's isolated
|
||||
@@ -3651,7 +3673,14 @@ extern void func_800D0F4C(s32 arg);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017C294", func_8017EFB0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017C294", func_8017F014);
|
||||
void func_8017F014(void) {
|
||||
extern u16 D_80078EAC;
|
||||
extern u8 D_80078EB0;
|
||||
extern u8 D_80078EB1;
|
||||
extern u8 D_80193528[];
|
||||
*(s32 *)D_80193528 = D_80078EAC * 1440 + D_80078EB1 * 60 + D_80078EB0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017C294", func_8017F064);
|
||||
|
||||
|
||||
@@ -5237,7 +5237,18 @@ void func_8017F9A4(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_8017FABC);
|
||||
extern void (*D_8019AD84[])();
|
||||
extern s32 func_801659CC(void);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_8017FABC(s32 a0) {
|
||||
D_8019AD84[*(u16 *)(a0 + 2)]();
|
||||
if (((a0 != 0) && (*(s16 *)(a0 + 0x70) == 3)) && (func_801659CC() != 0)) {
|
||||
*(s16 *)(a0 + 0x70) = 0;
|
||||
func_8002D4C8(0xB6B, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_801A3AA0[];
|
||||
extern u8 D_801A3BC0[];
|
||||
@@ -5285,7 +5296,32 @@ void func_8017FC04(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_8017FC70);
|
||||
void func_8017FC70(s32 a0) {
|
||||
extern u8 D_8019ACB8[];
|
||||
extern u8 D_801A3560[];
|
||||
extern u8 D_8019AD2C[];
|
||||
extern u8 D_8019ACEC[];
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern s32 func_80143970(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
|
||||
if (func_8012C354(a0, (s32)D_8019ACB8) != 0) {
|
||||
*(u8 *)(a0 + 0xC0) = 1;
|
||||
*(s32 *)(a0 + 0xB4) = -1;
|
||||
func_80143970(a0);
|
||||
func_8012A828(a0, D_801A3560);
|
||||
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1;
|
||||
func_8012B23C(a0);
|
||||
if (*(s16 *)(a0 + 0x70) == 3) {
|
||||
*(s32 *)(a0 + 0xBC) = (s32)D_8019AD2C;
|
||||
*(u16 *)(a0 + 0x76) = 0x280;
|
||||
} else {
|
||||
*(s32 *)(a0 + 0xBC) = (s32)D_8019ACEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_8017FD14);
|
||||
|
||||
|
||||
@@ -6751,7 +6751,29 @@ void func_80181418(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181454);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern u8 D_801BD274[];
|
||||
extern u8 D_801BAE98[];
|
||||
|
||||
void func_80181454(s32 p) {
|
||||
s32 v;
|
||||
|
||||
*(s32 *)(p + 0x20) = v = ((s32 (*)(void))func_8012C1B8)();
|
||||
if (v == 0) {
|
||||
func_8012CAE4((void *)p);
|
||||
} else {
|
||||
func_8001C214(v, (s32)D_801BD274);
|
||||
func_8012A828(p, D_801BAE98);
|
||||
*(u16 *)(p + 2) = 1;
|
||||
*(s32 *)(*(s32 *)(p + 0x20) + 4) |= 0x80000000;
|
||||
func_8012B23C(p);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801814DC);
|
||||
|
||||
@@ -12539,7 +12561,28 @@ extern void func_8012A828(s32, void*);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A4B4);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
extern u8 D_801DFF34;
|
||||
extern u8 D_801DFB14;
|
||||
|
||||
void func_8018A4B4(s32 param_1) {
|
||||
*(s16 *)(param_1 + 0x2) = 3;
|
||||
if (*(u16 *)(param_1 + 0x86) & 2) {
|
||||
*(s16 *)(param_1 + 0x34) = 1;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x28;
|
||||
func_8012A828(param_1, &D_801DFF34);
|
||||
*(u16 *)(param_1 + 0xFE) = 0;
|
||||
} else {
|
||||
*(s16 *)(param_1 + 0x34) = 0;
|
||||
func_8012A828(param_1, &D_801DFB14);
|
||||
*(s32 *)(param_1 + 0x1C) = 0x19;
|
||||
*(u16 *)(param_1 + 0x86) |= 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A538);
|
||||
|
||||
@@ -12637,7 +12680,7 @@ extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_8012C044(s32 a0);
|
||||
|
||||
extern s32 func_8018A698(s32 a0);
|
||||
extern void func_8018A4B4(s16 *a0);
|
||||
extern void func_8018A4B4();
|
||||
extern void func_8018A5C4(s32 a0);
|
||||
extern void func_8018A6F4(s32 a0);
|
||||
extern void func_8018A484(short *a0);
|
||||
@@ -12679,7 +12722,7 @@ void func_8018A96C(s32 a0)
|
||||
|
||||
extern s32 func_8018A698(s32 a0);
|
||||
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8018A4B4(s16 *a0);
|
||||
extern void func_8018A4B4();
|
||||
extern void func_8018A3D4(s32 a0);
|
||||
|
||||
void func_8018AA60(s32 param_1)
|
||||
@@ -12723,7 +12766,7 @@ extern void func_8012AD80(s32 a0);
|
||||
extern void func_8018A384(s16 *a0);
|
||||
extern void func_8018A598(void *a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8018A4B4(s16 *a0);
|
||||
extern void func_8018A4B4();
|
||||
|
||||
void func_8018AC60(s32 a0) {
|
||||
func_8012AD80(a0);
|
||||
|
||||
@@ -3343,7 +3343,16 @@ void func_801846BC(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80183BF8", func_80184700);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80183BF8", func_801847E4);
|
||||
extern u16 D_80126B62;
|
||||
void func_801847E4(int param_1)
|
||||
{
|
||||
if (-0x90 <= (s16)D_80126B62) {
|
||||
*(unsigned int *)(param_1 + 0x1c) = 0x5a;
|
||||
*(unsigned short *)(param_1 + 2) = *(unsigned short *)(param_1 + 2) + 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80183BF8", func_80184814);
|
||||
|
||||
@@ -3397,7 +3406,21 @@ void func_80184A78(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80183BF8", func_80184B00);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern void func_8012C218(void *);
|
||||
|
||||
void func_80184B00(s32 arg0) {
|
||||
s32 v = *(s32 *)(arg0 + 0x1C) - 1;
|
||||
*(s32 *)(arg0 + 0x1C) = v;
|
||||
if (v == 0) {
|
||||
((void (*)(void))func_8012C218)();
|
||||
} else {
|
||||
func_8012AD80(arg0);
|
||||
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x18) += 0x80;
|
||||
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) += 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80184B80 — ov_SC02_027_jr_8017AE2C (76 ins)
|
||||
|
||||
@@ -4813,7 +4813,21 @@ void func_80181308(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017D898", func_801813E0);
|
||||
extern void (*D_801A4680[])(void);
|
||||
extern void func_80182000(s32 a0);
|
||||
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 D_801A4620[];
|
||||
|
||||
void func_801813E0(s32 *arg0) {
|
||||
D_801A4680[*(u16 *)((s32)arg0 + 2)]();
|
||||
if (*(s32 *)((s32)arg0 + 0xE4) != 0) {
|
||||
func_80182000((s32)arg0);
|
||||
}
|
||||
if ((*(u16 *)arg0 != 0) && (*(s32 *)((s32)arg0 + 0xD4) != 0)) {
|
||||
func_8012F214((s32)arg0, (s32)D_801A4620, *(s32 *)((s32)arg0 + 0xD4) + 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -4896,7 +4910,26 @@ void func_80181470(s32 a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017D898", func_801815FC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017D898", func_8018164C);
|
||||
extern s32 rand(void);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_80182124(s32 arg0);
|
||||
|
||||
void func_8018164C(s32 a0) {
|
||||
s32 ent;
|
||||
|
||||
*(s16 *)(a0 + 0x100) = ((u32)func_8004787C(*(s32 *)(a0 + 0x1C) << 4) >> 5) & 0xFF;
|
||||
*(s16 *)(a0 + 0xFE) = *(s16 *)(a0 + 0x100);
|
||||
*(s16 *)(a0 + 0xFC) = *(s16 *)(a0 + 0xFE);
|
||||
*(s32 *)(a0 + 0x1C) += 1;
|
||||
if (*(s32 *)(a0 + 0x1C) >= 0x41) {
|
||||
ent = *(s32 *)(a0 + 0x78);
|
||||
*(s16 *)(a0 + 2) = 3;
|
||||
*(s16 *)(a0 + 0x5C) = *(u16 *)(ent + 2);
|
||||
*(s32 *)(a0 + 0x1C) = rand();
|
||||
func_80182124(*(s32 *)(a0 + 0xD4));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801816C8(void *a0) {
|
||||
s32 r;
|
||||
@@ -5227,7 +5260,21 @@ void func_80181DC0(void *arg0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017D898", func_80181ED4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017D898", func_80181F88);
|
||||
void func_80181F88(s32 param_1, s32 param_2) {
|
||||
u8 sp10[0x20];
|
||||
s32 sp30[3];
|
||||
|
||||
*(u16 *)(param_1 + 0x106) =
|
||||
*(u16 *)(param_1 + 0x106) +
|
||||
func_8012B608(*(s16 *)(param_1 + 0x106), func_8012B864(param_1),
|
||||
*(s32 *)(param_1 + 0xE8));
|
||||
sp30[1] = 0;
|
||||
sp30[0] = 0;
|
||||
sp30[2] = param_2;
|
||||
func_80049CAC(param_1 + 0x104, sp10);
|
||||
func_800484EC(sp10, sp30, param_1 + 0x10);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017D898", func_80182000);
|
||||
|
||||
|
||||
@@ -5367,7 +5367,34 @@ void func_80180808(s32 param_1) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017C294", func_801808D8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017C294", func_801809A0);
|
||||
void func_801809A0(s32 arg0) {
|
||||
extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3);
|
||||
extern s32 func_80143BDC(u16 *a0);
|
||||
s32 i;
|
||||
s32 v;
|
||||
s32 hit;
|
||||
u16 pos[3];
|
||||
u32 buf[2];
|
||||
unsigned int *p;
|
||||
|
||||
if (*(s16 *)(arg0 + 0xAA) <= 0) {
|
||||
i = 0;
|
||||
p = buf;
|
||||
for (; i < 20; i++) {
|
||||
func_8012B0B4(p, rand() % 4096, 0x40);
|
||||
v = *(s32 *)buf;
|
||||
pos[0] = *(u16 *)(arg0 + 0x6) + v;
|
||||
pos[1] = *(u16 *)(arg0 + 0xA) - 0x60;
|
||||
pos[2] = *(u16 *)(arg0 + 0xE) + (v >> 16);
|
||||
hit = func_80143BDC(pos);
|
||||
if (hit != 0) {
|
||||
*(u8 *)(*(s32 *)(hit + 0xCC) + 0x27) = 0x5B;
|
||||
}
|
||||
}
|
||||
func_8002D4C8(0x521, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017C294", func_80180A78);
|
||||
|
||||
|
||||
@@ -4493,7 +4493,24 @@ void func_80181580(s32 arg0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181618);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181674);
|
||||
void func_80181674(void *a0)
|
||||
{
|
||||
extern u8 D_80197B60[];
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_80181864(void *a0, void *a1);
|
||||
|
||||
s16 idx;
|
||||
u8 *ptr;
|
||||
|
||||
idx = *(s16 *)((s32)a0 + 0x70);
|
||||
ptr = &D_80197B60[idx * 64];
|
||||
if (func_8012BEE8((s32)a0) != 0) {
|
||||
func_8012AD50(a0);
|
||||
} else {
|
||||
func_80181864(a0, ptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801816D8(void *a0)
|
||||
{
|
||||
@@ -4543,7 +4560,40 @@ INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801819A
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801819F4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181A5C);
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001CA1C(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, s32 a1);
|
||||
extern u8 D_80186364[];
|
||||
extern void (*D_80186424)(void);
|
||||
extern s32 D_801864AC;
|
||||
|
||||
void func_80181A5C(s32 a0) {
|
||||
s32 s0;
|
||||
|
||||
if ((func_80029178(0x11C) & 0xFF) != 0) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
s0 = func_8012C1B8();
|
||||
if (s0 == 0) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
*(s32 *)(a0 + 0x20) = s0;
|
||||
func_8001CA1C(s0, (s32)D_80186364);
|
||||
*(u16 *)(s0 + 0x1C) = 0x4000;
|
||||
*(u16 *)(s0 + 0x1A) = 0x4000;
|
||||
*(u16 *)(s0 + 0x18) = 0x4000;
|
||||
*(s32 *)(s0 + 0x4) |= 0x50000000;
|
||||
*(u16 *)(s0 + 0x2C) |= 0x10;
|
||||
*(s32 *)(a0 + 0x58) = (s32)&D_801864AC | 0x40000000 | 0x20000000;
|
||||
*(u16 *)(a0 + 0x5C) = 0x8000;
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
func_8012A828(a0, (s32)&D_80186424);
|
||||
*(s16 *)(a0 + 0xAE) = -9;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181B44);
|
||||
|
||||
@@ -4716,7 +4766,20 @@ s32 func_80182280(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801822A0);
|
||||
void func_801822A0(void) {
|
||||
extern void func_8013B6A0(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern s32 D_80197CC4;
|
||||
extern u8 D_80186588[];
|
||||
|
||||
if (D_80197CC4 == 0) {
|
||||
func_8013B6A0(0, (s32)&D_80186588[0], 0x2E0);
|
||||
func_8013B6A0(1, (s32)&D_80186588[8], 0x2E0);
|
||||
func_8013B6A0(2, (s32)&D_80186588[16], 0x2E0);
|
||||
func_8013B6A0(3, (s32)&D_80186588[24], 0x2E0);
|
||||
D_80197CC4 += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8013B7AC(void);
|
||||
void func_8018232C(void) {
|
||||
|
||||
@@ -3476,7 +3476,25 @@ s32 func_8017DCC0(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8017DD88);
|
||||
void func_8017DD88(s32 a0) {
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_8012C354(s32 a0, void *a1);
|
||||
extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
|
||||
extern u8 D_801970C0[];
|
||||
extern u8 D_80197100;
|
||||
|
||||
if (func_8012C354(a0, D_801970C0) != 0) {
|
||||
func_8001D0E8(*(s32 *)(a0 + 0x20), 0xC8, 0x168);
|
||||
*(u8 *)(a0 + 0xC0) = 1;
|
||||
*(s32 *)(a0 + 0xB4) = -1;
|
||||
*(s16 *)(a0 + 0xAE) = -1;
|
||||
*(s16 *)(a0 + 2) = 1;
|
||||
*(u8 *)(a0 + 0x75) = 0;
|
||||
func_8012A828(a0, &D_80197100);
|
||||
*(s32 *)(a0 + 0x1C) = 0xA;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s16 D_80197090;
|
||||
|
||||
|
||||
@@ -3997,7 +3997,23 @@ void func_8017EBC4(Obj8017EBC4 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_8017EDA8);
|
||||
extern s32 func_8016F1AC(void);
|
||||
extern void func_801746DC(void);
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern void func_80016450(s32 a0, s32 a1);
|
||||
extern void (*D_80190534[])(void);
|
||||
|
||||
void func_8017EDA8(s32 param_1) {
|
||||
if (func_8016F1AC() == 0) {
|
||||
func_801746DC();
|
||||
func_80178B18(param_1, (s32)&D_80190534);
|
||||
*(s16 *)(param_1 + 2) = 2;
|
||||
*(s16 *)(param_1 + 0x34) = 0;
|
||||
*(s32 *)(param_1 + 0x1C) = 3;
|
||||
}
|
||||
func_80016450(0xFF, 0);
|
||||
}
|
||||
|
||||
|
||||
void func_8017EE10(s32 param_1) {
|
||||
extern void func_8012BEE8(void);
|
||||
@@ -4160,7 +4176,63 @@ void func_8017FE58(void *fp, s32 count)
|
||||
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80180030);
|
||||
#include "common.h"
|
||||
|
||||
extern void *func_80185C6C(); /* TU idiom: calls go through a (s32,s32) fn-ptr cast */
|
||||
#define CALL_80185C6C ((void *(*)(s32, s32))func_80185C6C)
|
||||
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_80013478(s32 a0, s32 a1);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern u8 D_80126B5C;
|
||||
extern void (*D_80190218[])(void);
|
||||
extern s32 D_801DDB2C[5];
|
||||
|
||||
/* §37/§124 asm-label alias: the TU's own caller decl at line 4100 says
|
||||
* `extern void func_80180030(void *a0, s32 a1);` but the target PROVABLY returns
|
||||
* a value (count==0 path `addu $v0,$zero,$zero` @80180100 + final
|
||||
* `sltu $v0,$zero,$v0` @80180164). A void definition DCEs those (LENGTH-DRIFT -3,
|
||||
* 87 ins — byte-tested). The alias defines under a different C identifier and binds
|
||||
* the emitted symbol back to func_80180030; the caller discards the return, so it is
|
||||
* byte-neutral for the caller (§30#2 / §136f-2 in-TU precedent aF8018B20C). */
|
||||
s32 aF80180030(void *a0, s32 a1) __asm__("func_80180030");
|
||||
s32 aF80180030(void *a0, s32 a1)
|
||||
{
|
||||
u8 idxArr[4];
|
||||
s32 valArr[4];
|
||||
s8 buf[8];
|
||||
void *cur;
|
||||
s32 ptr;
|
||||
s32 count;
|
||||
s32 i;
|
||||
s32 val;
|
||||
s32 bestVal;
|
||||
s32 bestSlot;
|
||||
|
||||
count = 0;
|
||||
cur = CALL_80185C6C(a1, 0);
|
||||
ptr = D_801DDB2C[a1];
|
||||
for (i = 0; i < 4; i++, cur = (void *)((u8 *)cur + 8)) {
|
||||
if (!(*(u8 *)((u8 *)cur + 6) & 0x80)) {
|
||||
func_8012F214(ptr, (s32)&D_80190218[(*(u8 *)((u8 *)cur + 6) & 0xF) * 2], (s32)buf);
|
||||
valArr[count] = func_80013478((s32)&D_80126B5C, (s32)buf);
|
||||
idxArr[count] = i;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count == 0) {
|
||||
return 0;
|
||||
}
|
||||
bestVal = valArr[0];
|
||||
bestSlot = 0;
|
||||
for (i = 1; i < count; i++) {
|
||||
if (valArr[i] < bestVal) {
|
||||
bestVal = valArr[i];
|
||||
bestSlot = i;
|
||||
}
|
||||
}
|
||||
return func_8012C658(0x2EF, idxArr[bestSlot], D_801DDB2C[a1]) != 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80180198);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user