mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-03 16:16:50 -04:00
feat(decomp): ox wave cf overlays — 50 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
@@ -2,7 +2,47 @@
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CAE0C);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CAE74);
|
||||
extern s32 func_80029178(s32 arg0);
|
||||
|
||||
void func_800CAE74(s32 arg0, s32 arg1, s32 *arg2) {
|
||||
s32 base;
|
||||
s32 p;
|
||||
s32 z;
|
||||
s32 *iter;
|
||||
s32 s;
|
||||
|
||||
extern void func_800183E0(s32 a0);
|
||||
|
||||
base = *(s32 *)(arg1 + 0xC);
|
||||
*(u16 *)(arg1 + 0x2) = *(u16 *)(arg0 + 0x2);
|
||||
*(u16 *)(arg1 + 0x4) = *(u16 *)(arg0 + 0x4);
|
||||
*(u16 *)(arg1 + 0x6) = *(u16 *)(arg0 + 0x6);
|
||||
*(u16 *)(arg1 + 0x8) = *(u16 *)(arg0 + 0x8);
|
||||
*(u16 *)(arg1 + 0xA) = *(u16 *)(arg0 + 0xA);
|
||||
p = base;
|
||||
s = *(s32 *)(arg0 + 0xC);
|
||||
do {
|
||||
*(u8 *)p = *(u8 *)s;
|
||||
p += 1;
|
||||
s += 1;
|
||||
} while (p < base + 0x1F);
|
||||
s = *arg2;
|
||||
if (s != 0) {
|
||||
iter = arg2;
|
||||
z = base;
|
||||
do {
|
||||
if ((func_80029178(s) & 0xFF) == 0) {
|
||||
*(u8 *)z = 0;
|
||||
*(u8 *)(z + 1) = 0;
|
||||
}
|
||||
iter += 1;
|
||||
s = *iter;
|
||||
z += 2;
|
||||
} while (s != 0);
|
||||
}
|
||||
func_800183E0(arg1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -28,7 +68,7 @@ extern u16 D_801270C0;
|
||||
extern void func_80154150(s32 a0, s32 a1);
|
||||
extern void func_801655E4(s32 a0);
|
||||
extern void func_800183E0(s32 a0);
|
||||
extern void func_800CAE74(void *a0, void *a1, void *a2);
|
||||
extern void func_800CAE74();
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern void func_80147324(s32 a0);
|
||||
extern u8 D_800CC09C[];
|
||||
@@ -57,7 +97,7 @@ void func_800CAFE4(u8 *a0) {
|
||||
}
|
||||
|
||||
|
||||
extern void func_800CB428(void *a0, void *a1, void *a2);
|
||||
extern void func_800CB428();
|
||||
extern void func_800CB6A0(void *a0, void *a1, void *a2, s32 a3);
|
||||
extern void func_800CB964(void *a0, void *a1, void *a2);
|
||||
extern void func_80147324(s32 a0);
|
||||
@@ -150,11 +190,180 @@ void func_800CB288(s32 arg0)
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CB3B4);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CB428);
|
||||
void func_800CB428(void *a0) {
|
||||
extern u32 func_80029204(s32 arg0);
|
||||
extern void func_800CB5C8(void *a0, void *a1);
|
||||
extern void func_800183E0(s32 a0);
|
||||
extern u8 D_800CC0FC[];
|
||||
extern u8 D_800CBF7C[];
|
||||
extern u8 D_800CC11C[];
|
||||
extern u8 D_800CBFA8[];
|
||||
extern u8 D_800CBF3C[];
|
||||
extern u8 D_800CBF5C[];
|
||||
u16 sp10[3];
|
||||
u16 *s0;
|
||||
s32 *s1;
|
||||
s32 id;
|
||||
s32 flag;
|
||||
s32 v;
|
||||
|
||||
id = func_80029204(4);
|
||||
__asm__("" : "=r"(id) : "0"(id));
|
||||
|
||||
flag = 0;
|
||||
s0 = (u16 *)D_800CC0FC;
|
||||
s1 = (s32 *)D_800CBF7C;
|
||||
loop1:
|
||||
v = *s1;
|
||||
if (v == 0) {
|
||||
goto done1;
|
||||
}
|
||||
if (id == v) {
|
||||
sp10[0] = *s0 & 0x1F;
|
||||
sp10[1] = (*s0 >> 5) & 0x1F;
|
||||
sp10[2] = (*s0 >> 10) & 0x1F;
|
||||
func_800CB5C8(sp10, (u8 *)a0 + 0xBE);
|
||||
*s0 = ((sp10[2] << 10 | sp10[1] << 5) | sp10[0]) | 0x8000;
|
||||
flag = 1;
|
||||
}
|
||||
s0++;
|
||||
s1++;
|
||||
if (flag == 0) {
|
||||
goto loop1;
|
||||
}
|
||||
done1:
|
||||
flag = 0;
|
||||
s0 = (u16 *)D_800CC11C;
|
||||
s1 = (s32 *)D_800CBFA8;
|
||||
loop2:
|
||||
v = *s1;
|
||||
if (v == 0) {
|
||||
goto done2;
|
||||
}
|
||||
if (id == v) {
|
||||
sp10[0] = *s0 & 0x1F;
|
||||
sp10[1] = (*s0 >> 5) & 0x1F;
|
||||
sp10[2] = (*s0 >> 10) & 0x1F;
|
||||
func_800CB5C8(sp10, (u8 *)a0 + 0xBF);
|
||||
*s0 = ((sp10[2] << 10 | sp10[1] << 5) | sp10[0]) | 0x8000;
|
||||
flag = 1;
|
||||
}
|
||||
s0++;
|
||||
s1++;
|
||||
if (flag == 0) {
|
||||
goto loop2;
|
||||
}
|
||||
done2:
|
||||
func_800183E0((s32)&D_800CBF3C);
|
||||
func_800183E0((s32)&D_800CBF5C);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CB5C8);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CB6A0);
|
||||
typedef struct { s16 m[3][4]; } Mat_CB6A0;
|
||||
|
||||
#define SETROT_A(p) __asm__ __volatile__( \
|
||||
"lw $12, 0(%0)\n" \
|
||||
"lw $13, 4(%0)\n" \
|
||||
"ctc2 $12, $0\n" \
|
||||
"ctc2 $13, $1\n" \
|
||||
"lw $12, 8(%0)\n" \
|
||||
"lw $13, 12(%0)\n" \
|
||||
"lw $14, 16(%0)\n" \
|
||||
"ctc2 $12, $2\n" \
|
||||
"ctc2 $13, $3\n" \
|
||||
"ctc2 $14, $4\n" \
|
||||
: : "r"(p) : "$12", "$13", "$14", "memory")
|
||||
|
||||
#define LDV_A(p) __asm__ __volatile__( \
|
||||
"lwc2 $0, 0(%0)\n" \
|
||||
"lwc2 $1, 4(%0)\n" \
|
||||
: : "r"(p) : "memory")
|
||||
|
||||
#define MVMVA_A() __asm__ __volatile__( \
|
||||
"nop\n" \
|
||||
"nop\n" \
|
||||
"mvmva 1, 0, 0, 3, 0\n" \
|
||||
: : : "memory")
|
||||
|
||||
#define STSV_A(p) __asm__ __volatile__( \
|
||||
"mfc2 $12, $9\n" \
|
||||
"mfc2 $13, $10\n" \
|
||||
"mfc2 $14, $11\n" \
|
||||
"sh $12, 0(%0)\n" \
|
||||
"sh $13, 2(%0)\n" \
|
||||
"sh $14, 4(%0)\n" \
|
||||
: : "r"(p) : "$12", "$13", "$14", "memory")
|
||||
|
||||
extern s32 func_80017DC4(void *a0, void *a1);
|
||||
extern void func_80016ED4(void *a0);
|
||||
extern u16 D_800CBFFC[];
|
||||
extern u16 D_800CBFF8[];
|
||||
|
||||
void func_800CB6A0(void *a0, void *a1, void *a2, s32 a3) {
|
||||
s16 mat[4][4];
|
||||
u16 vin[3];
|
||||
u16 vec[4][4];
|
||||
u16 tc[8];
|
||||
u8 tail[10];
|
||||
register u16 *o0 __asm__("$4");
|
||||
u16 *tp;
|
||||
s32 idx;
|
||||
u16 w;
|
||||
|
||||
idx = a3;
|
||||
tp = (u16 *)D_800CBFFC + idx * 4;
|
||||
func_80017DC4(a2, mat);
|
||||
o0 = &vec[0][0];
|
||||
|
||||
vin[2] = 0;
|
||||
vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x30;
|
||||
vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x20;
|
||||
SETROT_A(mat);
|
||||
LDV_A(vin);
|
||||
MVMVA_A();
|
||||
STSV_A(o0);
|
||||
|
||||
vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x30;
|
||||
vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x20;
|
||||
SETROT_A(mat);
|
||||
LDV_A(vin);
|
||||
MVMVA_A();
|
||||
STSV_A(vec[1]);
|
||||
|
||||
vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x30;
|
||||
vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x20;
|
||||
SETROT_A(mat);
|
||||
LDV_A(vin);
|
||||
MVMVA_A();
|
||||
STSV_A(vec[2]);
|
||||
|
||||
vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x30;
|
||||
vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x20;
|
||||
SETROT_A(mat);
|
||||
LDV_A(vin);
|
||||
MVMVA_A();
|
||||
STSV_A(vec[3]);
|
||||
|
||||
tc[0] = tp[0];
|
||||
tc[1] = tp[1];
|
||||
tc[2] = tp[2];
|
||||
tc[3] = tp[1];
|
||||
tc[4] = tp[0];
|
||||
tc[5] = tp[3];
|
||||
tc[6] = tp[2];
|
||||
tc[7] = tp[3];
|
||||
|
||||
w = *(u16 *)((u8 *)D_800CBFF8 + idx * 2);
|
||||
tail[2] = 0x80;
|
||||
tail[1] = 0x80;
|
||||
tail[0] = 0x80;
|
||||
*(u32 *)(tail + 4) = 0x40000000;
|
||||
tail[8] = w;
|
||||
func_80016ED4(o0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CB964);
|
||||
|
||||
@@ -174,9 +383,111 @@ void func_800CBBB8(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CBC14);
|
||||
void func_800CBC14(void *arg0) {
|
||||
extern void func_80146578(void);
|
||||
extern void func_8001CB00(s32, void *, s32, s32);
|
||||
extern void func_80146DE8(s32 *, s32, s32, s32);
|
||||
extern void func_80146CA0(void *);
|
||||
extern void func_800CBEB8(void);
|
||||
extern u8 D_800CC00C;
|
||||
s32 v0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_80146578)();
|
||||
*(s32 *)((s32)arg0 + 0x20) = v0;
|
||||
if (v0 != 0) {
|
||||
func_8001CB00(v0,
|
||||
(void *)((s32)&D_800CC00C + (*(s32 *)((s32)arg0 + 0x50)) * 12),
|
||||
0x200, 0x100);
|
||||
*(s16 *)(v0 + 0x2C) = 1;
|
||||
*(u8 *)(v0 + 0x27) = 8;
|
||||
*(u8 *)(v0 + 0x25) = 0x20;
|
||||
*(u8 *)(v0 + 0x24) = 0x20;
|
||||
*(s32 *)(v0 + 0x4) |= 0x40000000;
|
||||
func_80146DE8((s32 *)arg0, 0, 0xFFFC0000, 0);
|
||||
func_80146CA0(arg0);
|
||||
} else {
|
||||
((void (*)(void *))func_800CBEB8)(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct { char c[8]; } Blk8;
|
||||
|
||||
void func_800CBCD4(u8 *s0) {
|
||||
extern s32 func_80012ABC(s32, s32, s32);
|
||||
extern void func_80162F08(s32, s32, s32, s32);
|
||||
extern void func_80013B64(s32, s32, s32);
|
||||
extern void func_80162FC0(s32 *);
|
||||
extern void func_800CBED8(s32 *);
|
||||
extern void func_80146DE8(s32 *, s32, s32, s32);
|
||||
extern s32 rand(void);
|
||||
extern u8 D_800CC13C[];
|
||||
extern u8 D_800CC140[];
|
||||
s32 v0, v1, flag;
|
||||
u8 *s1;
|
||||
s32 i;
|
||||
s32 sp10[3];
|
||||
u8 *a2, *a3;
|
||||
u16 w;
|
||||
|
||||
v0 = *(s32 *)(s0 + 0x54);
|
||||
s1 = *(u32 **)(s0 + 0x20);
|
||||
if (v0 == 0) {
|
||||
v0 = func_80012ABC(*(s16 *)(s1 + 0x14), *(s16 *)(s0 + 0x60), 0xA);
|
||||
*(s16 *)(s1 + 0x14) = v0;
|
||||
func_80162F08(s0, 0, 0xC00, 0);
|
||||
func_80013B64(*(s16 *)(s1 + 0x14), s0 + 0x24, sp10);
|
||||
*(s32 *)(s0 + 0x10) = sp10[0];
|
||||
*(s32 *)(s0 + 0x14) = sp10[1];
|
||||
*(s32 *)(s0 + 0x18) = sp10[2];
|
||||
func_80162FC0(s0);
|
||||
func_800CBED8(s0);
|
||||
flag = *(s32 *)(s0 + 0x28) >= (s32)0xFFFE0000;
|
||||
if (flag) {
|
||||
func_80146DE8(s0, 0, 0xFFFC0000, 0);
|
||||
v0 = rand();
|
||||
v0 = v0 & 0x1F;
|
||||
v0 = v0 << 6;
|
||||
v1 = *(u16 *)(s0 + 0x60);
|
||||
v0 = v0 - 0xC00;
|
||||
v1 = v1 - v0;
|
||||
v1 = v1 & 0xFFF;
|
||||
*(u16 *)(s0 + 0x60) = v1;
|
||||
}
|
||||
i = 0xF;
|
||||
v0 = (s32)D_800CC13C;
|
||||
a3 = (u8 *)v0 + 0x78;
|
||||
a2 = (u8 *)v0 + 0x70;
|
||||
do {
|
||||
*(Blk8 *)a3 = *(Blk8 *)a2;
|
||||
a3 -= 8;
|
||||
i--;
|
||||
a2 -= 8;
|
||||
} while (i > 0);
|
||||
*(u16 *)D_800CC13C = *(u16 *)(s0 + 0x6);
|
||||
*(u16 *)(D_800CC13C + 2) = *(u16 *)(s0 + 0xA);
|
||||
*(u16 *)D_800CC140 = *(u16 *)(s0 + 0xE);
|
||||
*(u16 *)(D_800CC140 + 2) = *(u16 *)(s1 + 0x14);
|
||||
} else {
|
||||
v0 = *(s32 *)(s0 + 0x54);
|
||||
v0 = (v0 - 1) << 4;
|
||||
v1 = *(u16 *)(D_800CC13C + v0);
|
||||
*(u16 *)(s0 + 0x6) = v1;
|
||||
v0 = *(s32 *)(s0 + 0x54);
|
||||
v0 = (v0 - 1) << 4;
|
||||
v1 = *(u16 *)(D_800CC13C + 2 + v0);
|
||||
*(u16 *)(s0 + 0xA) = v1;
|
||||
v0 = *(s32 *)(s0 + 0x54);
|
||||
v0 = (v0 - 1) << 4;
|
||||
v1 = *(u16 *)(D_800CC140 + v0);
|
||||
*(u16 *)(s0 + 0xE) = v1;
|
||||
v0 = *(s32 *)(s0 + 0x54);
|
||||
v0 = (v0 - 1) << 4;
|
||||
w = *(u16 *)(D_800CC140 + 2 + v0);
|
||||
*(u16 *)(s1 + 0x14) = w;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CBCD4);
|
||||
|
||||
extern void func_80162CCC(void);
|
||||
void func_800CBEB8(void) {
|
||||
|
||||
@@ -55,7 +55,42 @@ void func_800CAFD4(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CB030);
|
||||
void func_800CB030(s32 param_1) {
|
||||
extern void func_8014659C(void);
|
||||
extern void func_8001CA1C(void *a0, void *a1);
|
||||
extern void func_80149374(s32 a0, s32 a1);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern s32 func_80146CA0(void *a0);
|
||||
extern void func_800CB5A8(void);
|
||||
extern u8 D_800CBFA0[];
|
||||
extern s32 D_800CC12C;
|
||||
extern void (*D_800CC130[])(void);
|
||||
s32 obj;
|
||||
s32 p;
|
||||
|
||||
obj = *(s32 *)(param_1 + 0x4C);
|
||||
p = ((s32 (*)(void))func_8014659C)();
|
||||
*(s32 *)(param_1 + 0x20) = p;
|
||||
|
||||
if (p != 0) {
|
||||
func_8001CA1C((void *)p, (void *)((s32)&D_800CBFA0 + *(s32 *)(param_1 + 0x50) * 12));
|
||||
*(u32 *)(p + 4) |= 0x08000000;
|
||||
func_80149374(obj, param_1 + 4);
|
||||
*(u16 *)(param_1 + 0x60) = *(u16 *)(param_1 + 0xA);
|
||||
*(u16 *)(param_1 + 0xA) = *(u16 *)(param_1 + 0xA) - 0x200;
|
||||
*(s32 *)(param_1 + 0x58) = 0;
|
||||
if (*(s32 *)(param_1 + 0x50) == 0) {
|
||||
func_80146E90((s32 *)param_1, 0);
|
||||
D_800CC130[0] = 0;
|
||||
}
|
||||
*(u16 *)(param_1 + 0x62) = 0;
|
||||
D_800CC12C = 0x384;
|
||||
func_80146CA0((void *)param_1);
|
||||
} else {
|
||||
((void (*)(s32))func_800CB5A8)(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_80147324(s32 a0);
|
||||
extern s32 func_80146CA0(void *a0);
|
||||
@@ -139,7 +174,42 @@ void func_800CB5D8(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CB634);
|
||||
extern void func_8014659C(void);
|
||||
extern void func_8001CA1C(void *a0, void *a1);
|
||||
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern s32 func_80146CA0(void *a0);
|
||||
extern void func_800CB774(void);
|
||||
extern int rand(void);
|
||||
|
||||
typedef struct { s32 vx, vy, vz; } V3_800CB634; /* 12-byte entries: idx*12 addressing */
|
||||
|
||||
void func_800CB634(void *a0) {
|
||||
|
||||
extern V3_800CB634 D_800CBFA0[];
|
||||
void *s1;
|
||||
s32 vx;
|
||||
s32 vy;
|
||||
s32 vz;
|
||||
|
||||
s1 = (void *)((s32 (*)(void))func_8014659C)();
|
||||
*(s32 *)((s32)a0 + 0x20) = (s32)s1;
|
||||
|
||||
if (s1 != NULL) {
|
||||
func_8001CA1C(s1, &D_800CBFA0[*(s32 *)((s32)a0 + 0x50)]);
|
||||
|
||||
vx = ((rand() & 0x3f) - 0x20) << 15;
|
||||
vy = ((rand() & 0x3f) - 0x20) << 15;
|
||||
vz = -(((rand() & 0x1f) + 0x10) << 15);
|
||||
func_80146DE8((s32 *)a0, vx, vz, vy);
|
||||
|
||||
func_80146E90((s32 *)a0, 0x40);
|
||||
func_80146CA0(a0);
|
||||
} else {
|
||||
((void (*)(void *))func_800CB774)(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CB708);
|
||||
|
||||
@@ -149,7 +219,40 @@ void func_800CB774(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CB794);
|
||||
void func_800CB794(s32 arg0) {
|
||||
extern u8 D_801202A0[];
|
||||
extern u8 D_80126720[];
|
||||
extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
u8 *p;
|
||||
s32 ptr;
|
||||
s16 buf[4];
|
||||
|
||||
p = D_801202A0;
|
||||
if (p < D_801202A0 + 0x6480) {
|
||||
do {
|
||||
if (func_8014C308(arg0, (s32)p, 0x33, 0x4000) != 0) {
|
||||
if (func_8014C278(arg0, (s32)p, 0xC0) != 0) {
|
||||
func_80015978((s32)(p + 4), (s32 *)buf);
|
||||
buf[3] = 0;
|
||||
if (func_8014C3D0((void *)arg0, (s32)p, 0x33, (s32)buf) != 0) {
|
||||
if (*(u16 *)p == 0x219) {
|
||||
ptr = *(s32 *)(p + 0x78);
|
||||
if (ptr != 0) {
|
||||
*(s16 *)(p + 0x60) = *(s16 *)(p + 0x76) * 0x1000 /
|
||||
*(s16 *)(ptr + 0x30) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
p += 0x10C;
|
||||
} while (p < D_80126720);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_80078EC1;
|
||||
extern void (*D_800CC01C[])(void);
|
||||
@@ -274,7 +377,28 @@ void func_800CB910(s32 param_1) {
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CBC14);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CBC90);
|
||||
extern void func_800CBD2C(s32 param_1);
|
||||
extern void func_800CBEB0(s32 a0);
|
||||
extern void func_800CBF3C();
|
||||
extern s32 func_80146E98(s32 a0);
|
||||
extern void func_80146C3C();
|
||||
|
||||
void func_800CBC90(s32 arg0) {
|
||||
u16 *rec = *(u16 **)(arg0 + 0x20);
|
||||
rec[8] += 0x2D;
|
||||
rec[9] += 0x2D;
|
||||
rec[0xA] += 0x2D;
|
||||
*(s32 *)(arg0 + 0x14) += 0x4000;
|
||||
func_800CBD2C(arg0);
|
||||
func_800CBEB0(arg0);
|
||||
if (*(s32 *)(arg0 + 0x2C) == 0) {
|
||||
func_800CBF3C();
|
||||
}
|
||||
if (func_80146E98(arg0) != 0) {
|
||||
((void (*)(s32))func_80146C3C)(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_800CBD54(s32 param_1, s32 *param_2);
|
||||
|
||||
@@ -300,6 +424,28 @@ void func_800CBEB0(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CBF24);
|
||||
extern s32 D_800CC010;
|
||||
|
||||
void func_800CBF24(void) {
|
||||
D_800CC010 = 0x40404040;
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_800CC010;
|
||||
extern u8 D_800CC011;
|
||||
extern u8 D_800CC012;
|
||||
extern u8 D_800CC013;
|
||||
|
||||
void func_800CBF3C(void) {
|
||||
u8 c;
|
||||
c = D_800CC013 - 2;
|
||||
D_800CC013 = c;
|
||||
if (c >= 0x81) {
|
||||
D_800CC013 = 0;
|
||||
}
|
||||
c = D_800CC013;
|
||||
(*(u8 *)&D_800CC010) = c;
|
||||
D_800CC011 = c;
|
||||
D_800CC012 = c;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CBF3C);
|
||||
|
||||
@@ -12,7 +12,45 @@ void func_800CCB8C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCBCC);
|
||||
void func_800CCBCC(s32 a0)
|
||||
{
|
||||
extern void func_80148038(s32 a0, s32 a1);
|
||||
extern void func_80147460(s32 a0);
|
||||
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
||||
extern void func_801473EC(s32 *a0);
|
||||
extern void func_8014ED28();
|
||||
extern void func_80146D90(s32 a0);
|
||||
extern void func_8016151C(void *a0);
|
||||
extern s32 func_801725A4(u8 *a0);
|
||||
extern void func_801477E8(s32 *a0, s32 a1);
|
||||
extern void func_80154274(s32 *a0, s32 a1);
|
||||
extern void func_80146CA0(void *a0);
|
||||
extern void func_800CCEAC(void *a0);
|
||||
extern u8 D_800D53C0[];
|
||||
|
||||
func_80148038(a0, 0x1A000);
|
||||
func_80147460(a0);
|
||||
func_80147AD4(a0, 0, 0, 0);
|
||||
func_801473EC((s32 *)a0);
|
||||
{
|
||||
register s32 ret __asm__("$2");
|
||||
func_8014ED28(a0);
|
||||
__asm__ __volatile__("" : "=r"(ret));
|
||||
if (ret != 0) {
|
||||
func_80146D90(a0);
|
||||
}
|
||||
}
|
||||
func_8016151C((void *)a0);
|
||||
func_801725A4((u8 *)a0);
|
||||
if (*(s32 *)(a0 + 0x34) > 0) {
|
||||
func_801477E8((s32 *)a0, 0x40000);
|
||||
func_80154274((s32 *)a0, (s32)D_800D53C0);
|
||||
func_80146CA0((void *)a0);
|
||||
} else {
|
||||
func_800CCEAC((void *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_800CCC88(void *a0) {
|
||||
extern void func_8014ED28(s32);
|
||||
@@ -36,7 +74,38 @@ void func_800CCC88(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCD04);
|
||||
void func_800CCD04(void *a0) {
|
||||
extern void func_80148038(s32 a0, s32 a1);
|
||||
extern void func_80147460(s32 a0);
|
||||
extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_801473EC(s32 *a0);
|
||||
extern void func_8014ED28(s32);
|
||||
extern void func_80146D90(s32 a0);
|
||||
extern void func_80161450(void *a0);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern void func_80146CA0(void *a0);
|
||||
extern s32 func_801725A4(u8 *a0);
|
||||
s32 s1;
|
||||
|
||||
func_80148038((s32)a0, 0x1A000);
|
||||
func_80147460((s32)a0);
|
||||
func_80147AD4((s32)a0, 0, 0, 0);
|
||||
func_801473EC((s32 *)a0);
|
||||
if (((int (*)(int))func_8014ED28)((s32)a0) != 0) {
|
||||
func_80146D90((s32)a0);
|
||||
}
|
||||
s1 = ((int (*)(int))func_80161450)(a0);
|
||||
if ((s1 & 5) != 0) {
|
||||
func_800CCE24(a0);
|
||||
func_80146E90((s32 *)a0, 0x10);
|
||||
func_80146CA0(a0);
|
||||
}
|
||||
if (s1 == 0) {
|
||||
func_801725A4((u8 *)a0);
|
||||
func_800CCEAC(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCDC4);
|
||||
|
||||
@@ -73,7 +142,52 @@ void func_800CCF14(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCF50);
|
||||
void func_800CCF50(void *a0) {
|
||||
|
||||
extern void func_80146578(void);
|
||||
extern void func_8001CD50(s32 a0, s32 a1);
|
||||
extern void func_80149374(s32 a0, s32 a1);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern void func_800CD1F4(void *a0, void *a1);
|
||||
extern void func_800CD258(void *a0, void *a1);
|
||||
extern void func_800CD27C(s32 a0);
|
||||
extern void func_80146CA0(void *);
|
||||
extern void func_800CD1D4(void);
|
||||
extern u8 D_800CD704[];
|
||||
extern u8 D_800CD744[];
|
||||
|
||||
register s32 s0 __asm__("$16");
|
||||
register s32 s1 __asm__("$17");
|
||||
register s32 s2 __asm__("$18");
|
||||
register s32 s3 __asm__("$19");
|
||||
|
||||
s1 = (s32)a0;
|
||||
s2 = *(s32 *)(s1 + 0x4C);
|
||||
s0 = (s32)((void *(*)(void))func_80146578)();
|
||||
s3 = (s32)&D_800CD704;
|
||||
*(s32 *)(s1 + 0x20) = s0;
|
||||
|
||||
if (s0 != 0) {
|
||||
func_8001CD50(s0, s3);
|
||||
*(s32 *)(s0 + 0x34) = (s32)&D_800CD744;
|
||||
*(s32 *)(s0 + 4) |= 0x50000000;
|
||||
*(u16 *)(s0 + 0x1C) = 0;
|
||||
func_80149374(s2, s1 + 4);
|
||||
*(u16 *)(s0 + 0x10) = *(u16 *)(s2 + 0x100);
|
||||
*(u16 *)(s0 + 0x14) = *(u16 *)(s2 + 0x104);
|
||||
*(u16 *)(s0 + 0x12) = *(u16 *)(*(s32 *)(s2 + 0x20) + 0x12);
|
||||
func_80146E90((s32 *)s1, 0x10);
|
||||
*(u16 *)(s1 + 0x60) = 0;
|
||||
*(u16 *)(s1 + 0x62) = 0;
|
||||
func_800CD1F4((void *)s1, (void *)s3);
|
||||
func_800CD258((void *)s1, (void *)s3);
|
||||
func_800CD27C(s1);
|
||||
func_80146CA0((void *)s1);
|
||||
} else {
|
||||
((void (*)(void *))func_800CD1D4)((void *)s1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CD054);
|
||||
|
||||
@@ -128,7 +242,31 @@ void func_800CD27C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CD31C);
|
||||
extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3);
|
||||
extern u8 D_801202A0[];
|
||||
|
||||
void func_800CD31C(s32 arg0) {
|
||||
u8 sp10[8];
|
||||
u8 *p = D_801202A0;
|
||||
|
||||
if (p < D_801202A0 + 0x6480) {
|
||||
u8 *end = p + 0x6480;
|
||||
do {
|
||||
if (func_8014C308(arg0, (s32)p, 0x22, 0)) {
|
||||
if (func_8014C278(arg0, (s32)p, 0x80)) {
|
||||
func_80015978((s32)(p + 4), (s32 *)sp10);
|
||||
*(u16 *)(sp10 + 6) = 0;
|
||||
func_8014C3A4((void *)arg0, (s32)p, 0x22, (s32 *)sp10);
|
||||
}
|
||||
}
|
||||
p += 0x10C;
|
||||
} while (p < end);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5765,7 +5765,50 @@ void func_8017C0DC(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_801789AC", func_8017C120);
|
||||
void func_8017C120(void) {
|
||||
|
||||
extern s32 D_80185AD4;
|
||||
extern u8 D_80185AE4[];
|
||||
extern s16 D_801857EC;
|
||||
extern s16 D_801857E8;
|
||||
extern s16 D_801857F4;
|
||||
extern u16 D_80115118;
|
||||
extern s16 D_8011512C;
|
||||
extern s32 D_80182638;
|
||||
extern s32 D_801825A0;
|
||||
extern s16 D_80115126;
|
||||
extern s32 D_80115130;
|
||||
extern s32 D_80115134;
|
||||
extern u8 D_80115138[];
|
||||
extern s32 D_801826E4[];
|
||||
s16 i;
|
||||
s32 *p;
|
||||
|
||||
D_80185AD4 = 0;
|
||||
for (i = 0; i < 8; i++) {
|
||||
D_80185AE4[i] = 0xFF;
|
||||
}
|
||||
D_801857E8 = 0;
|
||||
D_801857F4 = 0;
|
||||
D_80115118 = 0;
|
||||
if (D_801857EC == 0) {
|
||||
D_8011512C = 0;
|
||||
D_80182638 = D_801825A0;
|
||||
} else {
|
||||
D_8011512C = 9;
|
||||
D_80182638 = 0x1A;
|
||||
}
|
||||
p = &D_80115130;
|
||||
*p = 0;
|
||||
D_80115134 = D_801826E4[D_80115126];
|
||||
for (i = 0; i < 6; i++) {
|
||||
s16 *q = (s16 *)p + 20;
|
||||
|
||||
D_80115138[i] = *(u16 *)(D_80115134 + i * 32);
|
||||
q[i] = *(u16 *)(D_80115134 + i * 32 + 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* func_8017C24C @ 0x8017C24C -- ov_MAIN_012 (7 ins).
|
||||
*
|
||||
|
||||
@@ -3242,7 +3242,19 @@ s32 func_80181380(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8018057C", func_8018144C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8018057C", func_80181600);
|
||||
void func_80181600(void)
|
||||
{
|
||||
extern s16 func_801816FC(s32);
|
||||
|
||||
if (func_801816FC(0xD) >= 3 && func_801816FC(0x12) >= 3 && func_801816FC(0x1B) >= 3) {
|
||||
u32 dist;
|
||||
dist = func_80029504();
|
||||
if (dist < 0x28A) {
|
||||
func_80029514(0x28A);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8018057C", func_80181688);
|
||||
|
||||
|
||||
@@ -4754,7 +4754,40 @@ void func_8017DE4C(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DE74);
|
||||
extern void func_8012A018(s32 a0, s32 a1);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017E008(void *a0);
|
||||
|
||||
extern Blk8 D_80126940;
|
||||
extern Blk8 D_801274E8;
|
||||
extern u8 D_80126948[];
|
||||
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;
|
||||
|
||||
void func_8017DE74(void) {
|
||||
register s32 *s0;
|
||||
|
||||
D_80126954 = 0x190;
|
||||
D_8012695C = 0x258;
|
||||
D_80126968 = 0x9F;
|
||||
D_8012696A = 0x600;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = -0x50;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_8017E008, 0);
|
||||
D_801274E8 = D_80126940;
|
||||
s0 = (s32 *)D_80126948;
|
||||
func_8012A094((s32)s0);
|
||||
func_8017E008(s0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DF40);
|
||||
|
||||
@@ -4950,7 +4983,34 @@ void func_8017EE40(s32 *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017EE8C);
|
||||
extern void func_8017EDDC(void);
|
||||
extern u16 D_80188B60[];
|
||||
extern u16 D_80188B62[];
|
||||
extern u16 D_80188B64[];
|
||||
extern s32 func_801788B8(s32 a0, s32 a1);
|
||||
|
||||
void func_8017EE8C(s32 arg0) {
|
||||
s32 a1;
|
||||
__asm__ __volatile__("" : "=r"(a1) : "0"(arg0));
|
||||
|
||||
if (*(s16 *)(a1 + 0xFC) != 0) {
|
||||
s32 idx;
|
||||
idx = *(s16 *)(a1 + 0x70) * 4;
|
||||
*(u16 *)(a1 + 6) -= *(u16 *)(&D_80188B60[0] + idx);
|
||||
idx = *(s16 *)(a1 + 0x70) * 4;
|
||||
*(u16 *)(a1 + 0xA) -= *(u16 *)(&D_80188B62[0] + idx);
|
||||
idx = *(s16 *)(a1 + 0x70) * 4;
|
||||
*(u16 *)(a1 + 0xE) -= *(u16 *)(&D_80188B64[0] + idx);
|
||||
*(u16 *)(a1 + 0xFC) -= 1;
|
||||
*(u16 *)(a1 + 0x52) ^= 3;
|
||||
} else {
|
||||
*(s16 *)(a1 + 2) = 1;
|
||||
*(s16 *)(a1 + 0xFC) = 0;
|
||||
*(s16 *)(a1 + 0x52) = 0;
|
||||
func_801788B8(a1, (s32)func_8017EDDC);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
@@ -5210,7 +5270,17 @@ void func_8017F508(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F544);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F5B8);
|
||||
extern s32 func_80178970();
|
||||
extern void func_80178D18();
|
||||
extern void func_8017F29C();
|
||||
|
||||
void func_8017F5B8(s32 a0) {
|
||||
if (((s32 (*)(s32))func_80178970)(a0) != 0) {
|
||||
((void (*)(s32))func_80178D18)(a0);
|
||||
func_8017F29C(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017F5F8(void) {
|
||||
}
|
||||
@@ -5257,7 +5327,18 @@ void func_8017F704(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F7FC);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern s16 D_801B3010;
|
||||
|
||||
void func_8017F7FC(s32 arg0) {
|
||||
if ((*(s16 *)(arg0 + 0x70) == 0) && (*(u16 *)(arg0 + 0x34) == 0) &&
|
||||
(func_80178970() != 0) && (D_801B3010 == 0)) {
|
||||
((void (*)(s32))func_80178D18)(arg0);
|
||||
*(u16 *)(arg0 + 0x34) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80029504(void);
|
||||
|
||||
|
||||
@@ -4554,7 +4554,26 @@ void func_8017F23C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_8017F2A4);
|
||||
// @class: plumbing
|
||||
// scan 0x60 entity records (stride 0x10C) at D_801202A0; flag the one whose u16
|
||||
// id matches arg0 by setting 0x80000000 in the word at +4 of its +0x20 pointer
|
||||
void func_8017F2A4(s32 arg0) {
|
||||
extern u8 D_801202A0[];
|
||||
u8 *rec;
|
||||
s32 ptr;
|
||||
|
||||
rec = D_801202A0;
|
||||
if (rec < D_801202A0 + 0x6480) {
|
||||
do {
|
||||
if (*(u16 *)rec == (arg0 & 0xFFFF)) {
|
||||
ptr = *(s32 *)(rec + 0x20);
|
||||
*(s32 *)(ptr + 4) |= 0x80000000;
|
||||
}
|
||||
rec += 0x10C;
|
||||
} while (rec < D_801202A0 + 0x6480);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_8017F308);
|
||||
|
||||
@@ -4981,7 +5000,16 @@ INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_801800D
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_80180148);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_801801D4);
|
||||
extern void (*D_80193AA4[10])(struct Entry_8016E95C *);
|
||||
void func_801801D4(s32 arg0, s32 arg1) {
|
||||
u16 *src;
|
||||
if (arg0 != 0) {
|
||||
src = (u16 *)&D_80193AA4[arg1];
|
||||
*(u16 *)(arg0 + 0x28) = src[0];
|
||||
*(u16 *)(arg0 + 0x2A) = src[1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_80180208);
|
||||
|
||||
|
||||
@@ -4042,7 +4042,41 @@ s32 func_80184F30(s32 a0, s16 a1) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_80182B9C", func_80184FB0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_80182B9C", func_80185054);
|
||||
extern void func_801292C8(u8 *a0);
|
||||
|
||||
void func_80185054(s32 a0) {
|
||||
u32 q;
|
||||
u32 w;
|
||||
s32 s1;
|
||||
s32 t;
|
||||
|
||||
s1 = *(s32 *)(a0 + 0x20);
|
||||
if (*(u16 *)(a0 + 2) == 0) {
|
||||
w = func_8004787C(*(s32 *)(a0 + 0x1C) << 6);
|
||||
*(s16 *)(s1 + 0x18) = (w * 3 + (w * 3 >> 31)) >> 1;
|
||||
*(s16 *)(s1 + 0x1A) = (w * 3 + (w * 3 >> 31)) >> 1;
|
||||
*(s32 *)(a0 + 0x1C) += 1;
|
||||
if (*(s32 *)(a0 + 0x1C) < 0x10) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
*(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) * 2 - 1;
|
||||
} else {
|
||||
t = (s16)func_8004787C(*(s32 *)(a0 + 0x1C) << 5);
|
||||
q = *(s32 *)(a0 + 0x2C) * t;
|
||||
*(s16 *)(s1 + 0x18) = ((u32)(t * 3) + ((u32)(t * 3) >> 31)) >> 1;
|
||||
*(s16 *)(s1 + 0x1A) = ((u32)(t * 3) + ((u32)(t * 3) >> 31)) >> 1;
|
||||
*(u8 *)(s1 + 0x24) = q >> 12;
|
||||
*(u8 *)(s1 + 0x25) = q >> 12;
|
||||
*(u8 *)(s1 + 0x26) = q >> 12;
|
||||
*(s32 *)(a0 + 0x1C) -= 1;
|
||||
if (*(s32 *)(a0 + 0x1C) != 0) {
|
||||
return;
|
||||
}
|
||||
func_801292C8((u8 *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80180E14(void);
|
||||
void func_8018515C(void) {
|
||||
|
||||
@@ -3656,7 +3656,26 @@ INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80180B8
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80180D4C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80180FB4);
|
||||
extern void (*D_80188B10[8])(int *);
|
||||
|
||||
void func_80180FB4(s32 param_1) {
|
||||
u16 *s0;
|
||||
u16 *p;
|
||||
|
||||
s0 = (u16 *)param_1;
|
||||
D_80188B10[s0[1]]((int *)param_1);
|
||||
|
||||
if (*(s16 *)((s16 *)s0 + 0x85) == 0) {
|
||||
p = *(u16 **)(s0 + 0x66);
|
||||
p[4] = s0[3];
|
||||
p[5] = s0[5];
|
||||
p[6] = s0[7];
|
||||
p[4] += 8;
|
||||
p[5] += 0x88;
|
||||
p[6] += 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80188B60[])(void);
|
||||
@@ -3749,7 +3768,14 @@ void func_801814D0(int param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_8018151C);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
|
||||
void func_8018151C(u8 *a0) {
|
||||
*(u16 *)(a0 + 0xFC) = 1;
|
||||
*(u16 *)(a0 + 0x72) |= 0x1000;
|
||||
((void (*)(void))func_8012AD50)();
|
||||
}
|
||||
|
||||
|
||||
extern void func_80181574(s32 a0, s32 a1, s32 a2);
|
||||
void func_8018154C(void * arg0) {
|
||||
@@ -5071,7 +5097,25 @@ void func_80183624(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183710);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_8012E688(s32, s32, s32);
|
||||
|
||||
void func_80183710(s32 a0)
|
||||
{
|
||||
s32 val;
|
||||
|
||||
*(u16 *)(a0 + 0xFC) += 0x20;
|
||||
*(s16 *)(a0 + 0xA) = *(u16 *)(a0 + 0x100);
|
||||
val = func_8004787C(*(s16 *)(a0 + 0xFC));
|
||||
*(s32 *)(a0 + 0x8) -= val << 10;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) >= 0x400) {
|
||||
*(s16 *)(a0 + 2) = 5;
|
||||
*(s16 *)(a0 + 0xFE) = 4;
|
||||
func_8012E688(a0, 0x98F, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801B1C70;
|
||||
extern s32 D_801B1C78;
|
||||
@@ -5176,7 +5220,31 @@ void func_80183B40(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183BC0);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern s32 rand(void);
|
||||
|
||||
void func_80183BC0(void *a0)
|
||||
{
|
||||
extern s32 func_8012BE54(s32 a0);
|
||||
s32 s0 = (s32)a0;
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
s32 s1;
|
||||
|
||||
v0 = func_8012BE54(s0);
|
||||
if (v0 <= 0x23FFFF) {
|
||||
v0 = *(s32 *)(s0 + 0x1C) - 1;
|
||||
*(s32 *)(s0 + 0x1C) = v0;
|
||||
if (v0 == 0) {
|
||||
s1 = func_8012C658(0x1EA, 0xF, s0);
|
||||
*(s32 *)(s0 + 0x1C) = (rand() & 0x1F) + 0x2D;
|
||||
if ((*(s16 *)(s0 + 0x70) == 0x18) && (s1 != 0)) {
|
||||
*(u16 *)(*(s32 *)(s1 + 0x20) + 0x12) = 0x400;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern int func_8012C658(int arg0, int arg1, int arg2);
|
||||
|
||||
@@ -5049,7 +5049,30 @@ void func_8017F5A0(s32 a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_8017F5E0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_8017F644);
|
||||
extern s32 D_801274D8;
|
||||
extern s32 D_801274DC;
|
||||
extern s16 D_80126CAC;
|
||||
extern s32 func_800132BC(s32 a0, s32 a1);
|
||||
|
||||
s32 func_8017F644(s32 param_1)
|
||||
{
|
||||
s32 iVar1;
|
||||
register s32 uVar2 __asm__("$2");
|
||||
|
||||
if (*(u16 *) (param_1 + 6) == 0x31 || *(u16 *) (param_1 + 6) == 0x32) {
|
||||
return 1;
|
||||
}
|
||||
if (*(u16 *) (param_1 + 6) == 0x33 || *(u16 *) (param_1 + 6) == 0x27B) {
|
||||
return 1;
|
||||
}
|
||||
iVar1 = func_800132BC((s32)&D_80126CAC, param_1);
|
||||
uVar2 = 0;
|
||||
if (D_801274D8 < iVar1) {
|
||||
uVar2 = (iVar1 < D_801274DC);
|
||||
}
|
||||
return uVar2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018B930[])(void);
|
||||
@@ -6211,7 +6234,28 @@ s32 func_80180C68(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_80180DD8);
|
||||
s32 func_80180DD8(void) {
|
||||
extern u8 D_801202A0[];
|
||||
u8 *p;
|
||||
u16 count;
|
||||
s32 i;
|
||||
|
||||
count = 0;
|
||||
p = D_801202A0;
|
||||
for (i = 0; i < 0x60; i++) {
|
||||
switch (*(u16 *)p) {
|
||||
case 0x1DC:
|
||||
case 0x1FC:
|
||||
case 0x210:
|
||||
case 0x219:
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
p += 0x10C;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_801202A0[];
|
||||
void func_80180E48(void) {
|
||||
@@ -7553,7 +7597,15 @@ void func_801831B4(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_801831F0);
|
||||
void func_801831F0(void *a0)
|
||||
{
|
||||
extern void func_8002AC00(s32 arg0);
|
||||
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
|
||||
|
||||
func_8002AC00(0x16);
|
||||
func_80131E00(a0, 0x11);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_80183228);
|
||||
|
||||
@@ -7588,7 +7640,17 @@ void func_801832D8(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_801832E4);
|
||||
void func_801832E4(s32 a0) {
|
||||
s32 ret;
|
||||
|
||||
ret = func_8012B8E4(a0, 8);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + ret;
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF;
|
||||
if ((u32)(ret + 0x1F) < 0x3F) {
|
||||
*(s16 *)(a0 + 2) = 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012B23C(s32 a0);
|
||||
|
||||
@@ -8368,7 +8430,29 @@ void func_80184338(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_80184458);
|
||||
extern void func_800599B8(u16 *a0);
|
||||
extern void MoveImage(void *a0, s32 a1, s32 a2);
|
||||
extern s32 rand(void);
|
||||
extern s8 D_801B1370[];
|
||||
extern s16 D_801B1270;
|
||||
|
||||
void func_80184458(s32 a0) {
|
||||
s32 timer = *(s32 *)(a0 + 0x1C);
|
||||
if (timer != 0) {
|
||||
timer = timer - 1;
|
||||
*(s32 *)(a0 + 0x1C) = timer;
|
||||
} else {
|
||||
s32 frame = (*(u16 *)(a0 + 0xFC) + 1) & 7;
|
||||
*(u16 *)(a0 + 0xFC) = frame;
|
||||
if (frame == 0) {
|
||||
*(s32 *)(a0 + 0x1C) = (rand() & 0x1F) + 0xA;
|
||||
((void (*)(s32, s32))func_800599B8)((s32)D_801B1370, (s32)&D_801B1270);
|
||||
} else {
|
||||
MoveImage(&D_801B1370[frame * 8], 0x2F0, 0x120);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -8443,7 +8527,29 @@ void func_80184634(s32 a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_801846E4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_8018472C);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012CBA4(s32 a0);
|
||||
extern s32 func_8012BCCC(s32 a0);
|
||||
extern s32 func_80185914(s32 a0);
|
||||
|
||||
extern s32 D_80126B68;
|
||||
extern s32 D_80126B70;
|
||||
|
||||
void func_8018472C(s32 a0) {
|
||||
if (*(s32 *)(a0 + 0x14) == 0) {
|
||||
*(s32 *)(a0 + 0x14) = 0x100000;
|
||||
}
|
||||
|
||||
func_8012CBA4(a0);
|
||||
|
||||
if (func_8012BCCC(a0) > 0x24000) {
|
||||
*(s16 *)(a0 + 2) = 3;
|
||||
} else if (func_80185914(a0) != 1 && (D_80126B68 != 0 || D_80126B70 != 0)) {
|
||||
*(s16 *)(a0 + 2) = 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern M2C_UNK D_801BE484;
|
||||
extern void func_8012A828(s32, s32);
|
||||
@@ -10368,7 +10474,47 @@ void func_80187714(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_80187854);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern void func_801870D4(s32 param_1);
|
||||
extern void func_801870A0(s32 param_1);
|
||||
extern void func_80143994(s32 a0, s32 a1);
|
||||
extern s32 D_801BEE54;
|
||||
extern u8 D_801BEFBC[];
|
||||
|
||||
void func_80187854(void *a0) {
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
func_8001C810(v0, (s32)&D_801BEFBC);
|
||||
|
||||
v1 = *(s32 *)((s32)a0 + 0x20);
|
||||
*(u16 *)(v1 + 0x2C) |= 0x10;
|
||||
|
||||
v1 = *(s32 *)((s32)a0 + 0x20);
|
||||
*(u32 *)(v1 + 4) |= 0x8040;
|
||||
|
||||
*(u16 *)((s32)a0 + 0x5C) = 0xCC00;
|
||||
*(u8 *)((s32)a0 + 0x75) = 2;
|
||||
*(s32 *)((s32)a0 + 0x58) = (s32)&D_801BEE54 | 0x20000000;
|
||||
|
||||
if (*(s16 *)((s32)a0 + 0x70) != 0) {
|
||||
func_801870D4((s32)a0);
|
||||
return;
|
||||
}
|
||||
|
||||
func_801870A0((s32)a0);
|
||||
*(s32 *)((s32)a0 + 0xD0) = ((s32 (*)(s32, s32))func_80143994)((s32)a0, 0x3000);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_80187928);
|
||||
|
||||
|
||||
@@ -5467,7 +5467,7 @@ s32 func_80183010(s32 *a0) {
|
||||
|
||||
|
||||
|
||||
extern void func_80186C40(s32 *a0);
|
||||
extern void func_80186C40();
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_8018301C(s32 *a0)
|
||||
@@ -7958,7 +7958,30 @@ void func_80186C1C(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80186C40);
|
||||
#include "common.h"
|
||||
|
||||
void func_80186C40(void) {
|
||||
extern s32 aFC4C[] __asm__("D_801EFC4C");
|
||||
extern u8 D_8019473C[];
|
||||
extern void func_8018B060(s32 a0);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
|
||||
s32 ent;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0x15; i++) {
|
||||
ent = aFC4C[i];
|
||||
if (ent == 0) {
|
||||
continue;
|
||||
}
|
||||
*(u16 *)(ent + 0x86) |= 0x10;
|
||||
if (D_8019473C[*(s16 *)(ent + 0x70)] != 0) {
|
||||
func_8018B060(ent);
|
||||
}
|
||||
func_8012AD44((s32 *)ent, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -10352,7 +10375,27 @@ void func_8018AA34(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_8018AA70);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8004914C(void *a0);
|
||||
extern void func_800491AC(void *a0);
|
||||
|
||||
void func_8018AA70(void *param_1)
|
||||
{
|
||||
s16 sp10[3];
|
||||
|
||||
func_8004914C((void *)(*(s32 *)((s32)param_1 + 0x20) + 0x34));
|
||||
func_800491AC((void *)(*(s32 *)((s32)param_1 + 0x20) + 0x34));
|
||||
|
||||
sp10[0] = -0x28;
|
||||
sp10[1] = 0x20;
|
||||
sp10[2] = -0x50;
|
||||
func_8018AAE4(param_1, sp10);
|
||||
|
||||
sp10[0] = 0x28;
|
||||
func_8018AAE4(param_1, sp10);
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -4838,7 +4838,22 @@ extern s32 func_8012AD50(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FD9C);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8018227C(void*, void*);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
extern s32 D_80199608;
|
||||
|
||||
void func_8017FD9C(void *a0) {
|
||||
s32 ret;
|
||||
|
||||
ret = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)a0 + 0x20) = ret;
|
||||
if (ret != 0) {
|
||||
func_8018227C(a0, &D_80199608);
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3295,7 +3295,35 @@ void func_8017D0C8(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017D0F0);
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017D220(void *a0);
|
||||
|
||||
void func_8017D0F0(void) {
|
||||
|
||||
extern u8 D_80126948[];
|
||||
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;
|
||||
|
||||
D_80126954 = 0x190;
|
||||
D_8012695C = 0x384;
|
||||
D_8012696A = 0x800;
|
||||
D_80126968 = 0;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = -0x90;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_8017D220, 0);
|
||||
func_8012A094((s32)D_80126948);
|
||||
func_8017D220(D_80126948);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
@@ -3443,7 +3471,58 @@ int func_8017D534(int param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017D564);
|
||||
extern s32 func_8012E778(int param_1, int param_2);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_8017D564(void *a0) {
|
||||
s32 p;
|
||||
s32 q;
|
||||
s32 r;
|
||||
|
||||
if (*(u8 *)(a0 + 0x74) == 0) {
|
||||
if (*(s16 *)(a0 + 0xFC) != 0) {
|
||||
*(s16 *)(a0 + 0xFC) = *(s16 *)(a0 + 0xFC) - 1;
|
||||
return;
|
||||
}
|
||||
p = *(s32 *)(a0 + 0x6C);
|
||||
*(u16 *)(p + 0xE) += 6;
|
||||
r = *(s32 *)(a0 + 0x6C);
|
||||
if (*(s16 *)(r + 0xE) >= 0x201) {
|
||||
*(u16 *)(r + 0xE) = 0x200;
|
||||
} else {
|
||||
goto start_check;
|
||||
}
|
||||
} else {
|
||||
*(s16 *)(a0 + 0xFC) = 0x19;
|
||||
q = *(s32 *)(a0 + 0x6C);
|
||||
*(u16 *)(q + 0xE) -= 0x20;
|
||||
r = *(s32 *)(a0 + 0x6C);
|
||||
if (*(s16 *)(r + 0xE) < 0x40) {
|
||||
*(u16 *)(r + 0xE) = 0x40;
|
||||
} else {
|
||||
goto start_check;
|
||||
}
|
||||
}
|
||||
|
||||
stop_block:
|
||||
if (*(s16 *)(a0 + 0x84) == 0) {
|
||||
return;
|
||||
}
|
||||
func_8002D4C8(0x977, 0);
|
||||
func_8002D4C8(4, 0x976);
|
||||
*(u16 *)(a0 + 0x84) = 0;
|
||||
return;
|
||||
|
||||
start_check:
|
||||
if (*(s16 *)(a0 + 0x84) != 0) {
|
||||
return;
|
||||
}
|
||||
if (func_8012E778(r, 0xAA0190) == 1) {
|
||||
func_8002D4C8(0x976, 0);
|
||||
*(u16 *)(a0 + 0x84) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80182738[])(void);
|
||||
@@ -3463,7 +3542,25 @@ void func_8017D6C4(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017D700);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017D784);
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 *a0, s32 a1);
|
||||
extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
|
||||
void func_8017D784(void *a0) {
|
||||
|
||||
extern void (*D_80182704[])(void);
|
||||
extern u8 D_8017EEF8[];
|
||||
if (func_8012C354((s32)a0, (s32)D_80182704) != 0) {
|
||||
*(u8 *)((s32)a0 + 0xC0) = 1;
|
||||
func_8012A828((s32 *)a0, (s32)D_8017EEF8);
|
||||
*(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1;
|
||||
func_8001D0E8(*(s32 *)((s32)a0 + 0x20), 0x400, 0x400);
|
||||
*(s32 *)((s32)a0 + 0x6C) = func_8012C588(0x29C, (s32)a0);
|
||||
*(u8 *)((s32)a0 + 0x75) = 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017D804);
|
||||
|
||||
@@ -3897,7 +3994,27 @@ void func_8017E4F8(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017E534);
|
||||
void func_8017E534(void *a0) {
|
||||
|
||||
extern u8 D_80195AA0;
|
||||
extern u8 D_8017EEF8[];
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 *a0, s32 a1);
|
||||
|
||||
if (func_8012C354((s32)a0, (s32)&D_80195AA0) != 0) {
|
||||
*(u8 *)((s32)a0 + 0xC0) = 1;
|
||||
*(s16 *)((s32)a0 + 0xAE) = -1;
|
||||
func_8012A828((s32 *)a0, (s32)D_8017EEF8);
|
||||
*(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) = *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) | 0x10;
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) = 0xE00;
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) = 0xE00;
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1C) = 0xE00;
|
||||
*(u16 *)((s32)a0 + 0xFC) = 0x300;
|
||||
*(u8 *)((s32)a0 + 0x75) = 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017E5DC);
|
||||
|
||||
@@ -4008,7 +4125,45 @@ void func_8017E930(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017EA10);
|
||||
extern u8 D_801202A0[];
|
||||
extern s32 D_8019AA90;
|
||||
extern s32 func_80013328(s32 a0, s32 a1);
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8012F2E8(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
void func_8017EA10(void *arg0) {
|
||||
u8 *p;
|
||||
s32 i;
|
||||
s32 best;
|
||||
s32 id;
|
||||
s16 t;
|
||||
s16 buf[4];
|
||||
|
||||
best = 0x7FFFFFFF;
|
||||
i = 0;
|
||||
p = D_801202A0;
|
||||
D_8019AA90 = 0;
|
||||
while (i < 0x60) {
|
||||
id = 0x26E;
|
||||
if (*(u16 *)p == id) {
|
||||
t = (s16)func_80013328((s32)arg0 + 4, (s32)p + 4);
|
||||
if (t < best) {
|
||||
best = t;
|
||||
D_8019AA90 = (s32)p;
|
||||
}
|
||||
}
|
||||
id = 0;
|
||||
i++;
|
||||
p += 0x10C;
|
||||
}
|
||||
*(u16 *)((s32)arg0 + 0x208) = 0;
|
||||
func_80015978((s32)arg0 + 4, (s32 *)buf);
|
||||
func_8012F2E8(D_8019AA90, (s32)buf, (s32)arg0 + 0x20C);
|
||||
*(s32 *)((s32)arg0 + 0x204) = D_8019AA90;
|
||||
func_8002D4C8(0x8B0, 0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017EAEC);
|
||||
|
||||
|
||||
@@ -4824,7 +4824,28 @@ void func_80185DAC(s32 target, u16 *cur, s32 step)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_80185E30);
|
||||
extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern u8 D_801BEF14[];
|
||||
|
||||
void func_80185E30(s32 param_1)
|
||||
{
|
||||
struct {
|
||||
u16 f0;
|
||||
u16 f2;
|
||||
u16 f4;
|
||||
u16 f6;
|
||||
} local;
|
||||
|
||||
local.f0 = *(u16 *)(param_1 + 0x6);
|
||||
local.f2 = *(u16 *)(param_1 + 0xA) - 0x60;
|
||||
local.f4 = *(u16 *)(param_1 + 0xE);
|
||||
local.f6 = 0x3800;
|
||||
func_801437D8(param_1 + 0x100, (s32)&local, (s32)D_801BEF14, 0);
|
||||
if ((*(u16 *)(param_1 + 0x100) & 3) == 0) {
|
||||
func_8002D4C8(0xA9F, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012B8A4(s16 *a0);
|
||||
extern void func_80185F4C(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
@@ -5162,7 +5183,37 @@ INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018694
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_80186A88);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_80186AD0);
|
||||
#include "common.h"
|
||||
|
||||
|
||||
|
||||
extern s32 func_8012C194(void);
|
||||
extern void func_8001CD9C(s32 a0, void *a1);
|
||||
extern Blk4_80185D4C D_801D0D80;
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
|
||||
void func_80186AD0(s32 param_1)
|
||||
{
|
||||
s32 s0;
|
||||
s32 a;
|
||||
|
||||
s0 = func_8012C194();
|
||||
a = s0;
|
||||
if (s0 != 0) {
|
||||
*(s32 *)(param_1 + 0xCC) = s0;
|
||||
func_8001CD9C(a, &D_801D0D80);
|
||||
*(u16 *)(s0 + 8) = *(u16 *)(param_1 + 6);
|
||||
*(u16 *)(s0 + 0xA) = *(u16 *)(param_1 + 0xA);
|
||||
*(u16 *)(s0 + 0xC) = *(u16 *)(param_1 + 0xE);
|
||||
*(s32 *)(s0 + 4) |= 0x50000000;
|
||||
*(u16 *)(s0 + 0x1A) = 0x80;
|
||||
*(u16 *)(s0 + 0x18) = 0x80;
|
||||
*(u16 *)(s0 + 0x2C) = 0xC006;
|
||||
}
|
||||
*(s32 *)(param_1 + 0x1C) = 8;
|
||||
func_8012AD44((s32 *)param_1, 2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 arg0, s32 arg1);
|
||||
@@ -5469,7 +5520,35 @@ void func_80187368(s32 param_1) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_801874E8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018750C);
|
||||
|
||||
typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_8018750C;
|
||||
typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_8018750C;
|
||||
|
||||
void func_8018750C(u8 *param_1, B4_8018750C param_2) {
|
||||
extern Blip_8018F694 D_801D0B80[];
|
||||
u8 *p;
|
||||
u8 *q;
|
||||
u8 v;
|
||||
int i;
|
||||
|
||||
p = (u8 *)D_801D0B80;
|
||||
for (i = 0; i < 32; i++) {
|
||||
q = p + 6;
|
||||
if (*(s16 *)(q + 8) == 0) {
|
||||
*(B8_8018750C *)(void *)(q + 2) = *(B8_8018750C *)param_1;
|
||||
*(B4_8018750C *)(void *)p = *(B4_8018750C *)(void *)¶m_2;
|
||||
v = p[0] >> 3;
|
||||
q[-2] = v ? v : 1;
|
||||
v = q[-5] >> 3;
|
||||
q[-1] = v ? v : 1;
|
||||
v = q[-4] >> 3;
|
||||
q[0] = v ? v : 1;
|
||||
return;
|
||||
}
|
||||
p += 16;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define gte_ldv0(r0) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
@@ -5775,7 +5854,22 @@ void func_80187B88(s32 param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_80187C1C);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
|
||||
void func_80187C1C(s32 param_1) {
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
func_8012C218((void *)param_1);
|
||||
} else {
|
||||
func_8012AD80(param_1);
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) =
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + *(u16 *)(param_1 + 0x106);
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) =
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + *(u16 *)(param_1 + 0x108);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_80187C94);
|
||||
|
||||
|
||||
@@ -3703,7 +3703,36 @@ void func_8017DAA4(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_8017DACC);
|
||||
void func_8017DACC(void) {
|
||||
|
||||
extern u8 D_80126948[];
|
||||
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 s32 D_801AABA0;
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017DC40(void *a0);
|
||||
|
||||
D_80126954 = 0x190;
|
||||
D_8012695C = 0x4B0;
|
||||
D_80126968 = 0x71;
|
||||
D_8012696A = 0x800;
|
||||
D_801AABA0 = 0;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = -0x40;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_8017DC40, 0);
|
||||
func_8012A094((s32)D_80126948);
|
||||
func_8017DC40(D_80126948);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
|
||||
@@ -3602,7 +3602,60 @@ __asm__(".text\n.align 2\n.globl func_8017DC80\n.ent\tfunc_8017DC80\n"
|
||||
".set\treorder\n.end\tfunc_8017DC80\n");
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_8017E1E8);
|
||||
extern s32 D_8019B7B8;
|
||||
extern void func_8017E37C(u8*, u8*, u8*, u8*);
|
||||
|
||||
void func_8017E1E8(s32 arg0, s32 arg1, s32 arg2)
|
||||
{
|
||||
register s32 zr __asm__("$0");
|
||||
register s32 off __asm__("$4");
|
||||
register s32 cnt __asm__("$5");
|
||||
s32 ent = arg0;
|
||||
s32 p1 = arg1;
|
||||
s32 p2 = arg2;
|
||||
s32 slot;
|
||||
s32 cur;
|
||||
|
||||
if (*(u8 *)ent == 1) {
|
||||
cnt = 0;
|
||||
off = 0;
|
||||
do {
|
||||
cur = off + zr;
|
||||
if (*(u8 *)((s32)&D_8019B7B8 + cur) == 0) {
|
||||
slot = (s32)&D_8019B7B8 + off;
|
||||
goto found;
|
||||
}
|
||||
cnt = cnt + 1;
|
||||
off = cur + 0x38;
|
||||
} while (cnt < 0xC0);
|
||||
slot = 0;
|
||||
found:
|
||||
if (slot != 0) {
|
||||
((void (*)(s32, s32, s32, s32))func_8017E37C)(slot, ent, p1, p2);
|
||||
*(u16 *)(ent + 4) = *(u16 *)p1;
|
||||
*(u16 *)(ent + 6) = *(u16 *)(p1 + 2);
|
||||
*(u16 *)(ent + 8) = *(u16 *)(p1 + 4);
|
||||
if ((*(u16 *)(ent + 0xA) & 0x1000) == 0 && p2 != 0) {
|
||||
*(u16 *)(ent + 0xC) = *(u16 *)p2;
|
||||
*(u16 *)(ent + 0xE) = *(u16 *)(p2 + 2);
|
||||
*(u16 *)(ent + 0x10) = *(u16 *)(p2 + 4);
|
||||
}
|
||||
*(s32 *)(ent + 0x34) = slot;
|
||||
} else {
|
||||
if (*(s32 *)(ent + 0x34) != 0) {
|
||||
*(u16 *)(*(s32 *)(ent + 0x34) + 4) = *(u16 *)p1;
|
||||
*(u16 *)(*(s32 *)(ent + 0x34) + 6) = *(u16 *)(p1 + 2);
|
||||
*(u16 *)(*(s32 *)(ent + 0x34) + 8) = *(u16 *)(p1 + 4);
|
||||
if ((*(u16 *)(ent + 0xA) & 0x1000) == 0 && p2 != 0) {
|
||||
*(u16 *)(*(s32 *)(ent + 0x34) + 0xC) = *(u16 *)p2;
|
||||
*(u16 *)(*(s32 *)(ent + 0x34) + 0xE) = *(u16 *)(p2 + 2);
|
||||
*(u16 *)(*(s32 *)(ent + 0x34) + 0x10) = *(u16 *)(p2 + 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017E37C(u8 *dst, u8 *src1, u8 *src2, u8 *src3)
|
||||
{
|
||||
|
||||
+32
-1
@@ -1337,7 +1337,38 @@ s32 func_800D0D7C(s32 arg0, s32 arg1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/resident/nonmatchings/resident", func_800D0E30);
|
||||
s16 func_800D0E30(u8 *p) {
|
||||
extern u8 D_80078EB0;
|
||||
extern u8 D_80078EB1;
|
||||
register s32 zr __asm__("$0");
|
||||
u8 dummy[16];
|
||||
u32 hi;
|
||||
u32 lo;
|
||||
register u32 b __asm__("$5");
|
||||
register u32 t2 __asm__("$2");
|
||||
register u32 t3 __asm__("$3");
|
||||
register u32 h __asm__("$3");
|
||||
|
||||
hi = (u8)(p[1] - D_80078EB1);
|
||||
lo = (u8)(p[0] - D_80078EB0);
|
||||
p = (u8 *)((hi << 8) | lo);
|
||||
|
||||
b = (u32)p + zr;
|
||||
if ((b & 0xFF) >= 0x3C) {
|
||||
t3 = (b + 0x3C) & 0xFF;
|
||||
t2 = ((u32)p & 0xFF00) - 0x100;
|
||||
b = t2 | t3;
|
||||
}
|
||||
t2 = b & 0xFFFF;
|
||||
h = t2 >> 8;
|
||||
if (h >= 0x18) {
|
||||
t2 = (h + 0x18) << 8;
|
||||
t3 = b & 0xFF;
|
||||
b = t2 | t3;
|
||||
}
|
||||
return (s16)b;
|
||||
}
|
||||
|
||||
|
||||
// func_800D0EC4 — scan func_800291B4(i) over i in [0x2F, 0x3A]; return first i whose
|
||||
// (result & 0xFF) == 0, else 0.
|
||||
|
||||
Reference in New Issue
Block a user