mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 05:56:00 -04:00
feat(decomp): O1 wave gate — 16 fns, clean-R22 verified 213/213
parallel_gate merged 17 drafts across 16 binaries then aborted on "check-all: 212 passed, 1 failed". The red was REAL: ov_SC06_022 still failed from a fully clean rebuild. Reverted that one file (func_80181664, back to the drafting queue); the remaining 16 verify green with make clean && make extract-all && make check-all. CORRECTION to what I claimed while diagnosing the earlier x1 abort: parallel_gate's R22 IS a proper clean rebuild — it calls sh(["make","clean"]) at tools/parallel_gate.py:257 before extract-all and check-all. I had grepped for the string "make clean", which cannot match the arg-list form, and wrongly concluded the tool was reading incrementally. The x1 red was real too; my revert of its two bad drafts is what made the fleet green. The genuinely stale read was MY OWN bare `make check-all` run after that revert, which still reported the old 211/213 from leftover objects and nearly led me to discard 21 good banks. R40 (exonerate the instrument) applies to the instrument's SOURCE, not just its output: read the code before blaming it.
This commit is contained in:
@@ -107,7 +107,41 @@ void func_800CB158(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CB228);
|
||||
typedef struct {
|
||||
s32 a, b, c, d;
|
||||
} Blk16;
|
||||
|
||||
void func_800CB228(s32 arg0) {
|
||||
register s32 ent __asm__("$7");
|
||||
register s32 oth __asm__("$5");
|
||||
s32 cnt;
|
||||
s32 p;
|
||||
u16 t0;
|
||||
u16 t1;
|
||||
|
||||
ent = arg0;
|
||||
cnt = *(s32 *)(ent + 0x1C);
|
||||
oth = *(s32 *)(ent + 0x34);
|
||||
*(s32 *)(ent + 0x1C) = cnt + 1;
|
||||
if (cnt < 10) {
|
||||
*(u16 *)(ent + 0x28) = *(u16 *)(ent + 0x28) + 0x120;
|
||||
} else {
|
||||
t0 = *(u16 *)(ent + 2);
|
||||
*(s16 *)(ent + 0x12) = (*(u16 *)(oth + 0x12) << 16) >> 17;
|
||||
t1 = *(u16 *)(oth + 0x1A);
|
||||
t0 += 1;
|
||||
*(s32 *)(ent + 0x30) = 0x20;
|
||||
*(s32 *)(ent + 0x1C) = -0xC0;
|
||||
*(u16 *)(ent + 0x2A) = 0x500;
|
||||
*(u16 *)(ent + 2) = t0;
|
||||
*(s16 *)(ent + 0x1A) = (t1 << 16) >> 17;
|
||||
}
|
||||
p = *(s32 *)(oth + 0x20);
|
||||
*(Blk16 *)(ent + 0x38) = *(Blk16 *)(p + 0x34);
|
||||
*(Blk16 *)(ent + 0x48) = *(Blk16 *)(p + 0x44);
|
||||
func_800CAF84(ent);
|
||||
}
|
||||
|
||||
|
||||
void func_800CB304(s32 arg0) {
|
||||
extern void func_800CAF84();
|
||||
|
||||
@@ -29,7 +29,18 @@ void func_800CAE88(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAEC0);
|
||||
void func_800CAEC0(void *arg0) {
|
||||
extern s32 func_80165910(void);
|
||||
extern void func_801655E4(s32 arg0);
|
||||
extern void func_80147324(s32 arg0);
|
||||
|
||||
if (func_80165910() == 0) {
|
||||
func_801655E4((s32)arg0);
|
||||
func_80147324(0x7B8);
|
||||
}
|
||||
*(u8 *)((s32)arg0 + 0x197) += 1;
|
||||
}
|
||||
|
||||
|
||||
extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32);
|
||||
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
#include "common.h"
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_040/nonmatchings/md_MAIN_040", func_800CAE0C);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_800183E0(s32 a0);
|
||||
|
||||
void func_800CAE0C(void) {
|
||||
extern s32 D_800CB9F4;
|
||||
extern s32 D_800CB9B4;
|
||||
|
||||
func_800183E0((s32)&D_800CB9F4);
|
||||
func_800183E0((s32)&D_800CB9B4);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2478,7 +2478,49 @@ s32 func_801A419C(s32 arg0) {
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4268);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A43E8);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_801A43E8(void *a0) {
|
||||
switch (*(u16 *)((s32)a0 + 0x5E)) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 35:
|
||||
func_8002D4C8(0xC33, 0);
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0xE8) += 0x2000;
|
||||
break;
|
||||
case 11:
|
||||
case 12:
|
||||
case 18:
|
||||
case 19:
|
||||
case 20:
|
||||
case 21:
|
||||
case 22:
|
||||
case 23:
|
||||
case 24:
|
||||
case 25:
|
||||
case 26:
|
||||
func_8002D4C8(0xC33, 0);
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0xE8) += 0x4000;
|
||||
break;
|
||||
case 36:
|
||||
func_8002D4C8(0xC33, 0);
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0xE8) += 0x4000;
|
||||
break;
|
||||
default:
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0xE8) += 0x2000;
|
||||
break;
|
||||
}
|
||||
if (*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0xE8) > 0x10000) {
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0xE8) = 0x10000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3504,7 +3546,36 @@ void func_801A5A9C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A5AE0);
|
||||
extern void func_8001CD50(s32 a0, s32 a1);
|
||||
extern void func_800233CC(void *a0, u16 a1);
|
||||
|
||||
extern u8 D_801F4444[];
|
||||
extern u8 D_801F4448[];
|
||||
|
||||
typedef struct { u8 d[4]; } Blk4;
|
||||
|
||||
const Blk4 D_801A01CC = {{0x00, 0x00, 0x00, 0x00}};
|
||||
const Blk4 D_801A01D0 = {{0xFF, 0x80, 0x00, 0x00}};
|
||||
|
||||
void func_801A5AE0(void *a0) {
|
||||
void *s1 = D_801F4444;
|
||||
|
||||
func_8001CD50(*(s32 *)((s32)a0 + 0x20), (s32)s1);
|
||||
|
||||
*(u16 *)((s32)a0 + 0xA) -= 0x100;
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x50000000;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) = 0x400;
|
||||
|
||||
*(u16 *)((s32)a0 + 0x2C) = 0x10;
|
||||
func_800233CC(s1, 0x10);
|
||||
|
||||
*(Blk4 *)s1 = D_801A01CC;
|
||||
*(Blk4 *)D_801F4448 = D_801A01D0;
|
||||
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1E) = 0xC00;
|
||||
*(u16 *)((s32)a0 + 0x2) += 1;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -5385,7 +5385,33 @@ void func_801847F8(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80184834);
|
||||
void func_80184834(s32 param_1) {
|
||||
extern s32 func_80014C54(s32, s32, s32);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_8018A978[];
|
||||
s16 v;
|
||||
u16 t;
|
||||
s32 iVar3;
|
||||
s32 base;
|
||||
|
||||
v = func_80014C54(1, 0, 0x40);
|
||||
if (v != 0) {
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) += 0x200;
|
||||
}
|
||||
v = func_80014C54(1, 0, 0x20);
|
||||
if (v != 0) {
|
||||
t = *(u16 *)(param_1 + 0xFC) + 1;
|
||||
*(u16 *)(param_1 + 0xFC) = t;
|
||||
base = D_8018A978[*(s16 *)(param_1 + 0x70)];
|
||||
iVar3 = *(s32 *)(((t << 16) >> 14) + base);
|
||||
if (iVar3 == 0) {
|
||||
*(u16 *)(param_1 + 0xFC) = 0;
|
||||
iVar3 = *(s32 *)D_8018A978[*(s16 *)(param_1 + 0x70)];
|
||||
}
|
||||
func_8012A828(param_1, (void *)iVar3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
|
||||
@@ -9951,7 +9951,7 @@ extern void func_8013CABC(void);
|
||||
extern void func_80186728(void *a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_80186070(s32 a0);
|
||||
extern s32 func_80185FA0(s32 a0);
|
||||
extern s32 func_80185FA0();
|
||||
extern int func_80178970(void);
|
||||
extern s32 func_80188114(void);
|
||||
extern s32 D_801EB520;
|
||||
@@ -10001,7 +10001,38 @@ void func_80185E20(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185FA0);
|
||||
extern u16 D_800B99D8;
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
|
||||
s32 func_80185FA0(s32 param_1)
|
||||
{
|
||||
s32 q;
|
||||
s32 iVar5;
|
||||
s32 iVar4;
|
||||
s16 sVar1;
|
||||
|
||||
iVar5 = 0;
|
||||
do {
|
||||
q = func_80132EF4(param_1, 0x22);
|
||||
if (q != 0) {
|
||||
iVar4 = iVar5 + (D_800B99D8 & 4) * 3 - 0x2A;
|
||||
*(s16 *)(q + 6) = *(u16 *)(q + 6) + iVar4;
|
||||
*(s16 *)(q + 0xA) = *(u16 *)(q + 0xA) - 0x20;
|
||||
*(s16 *)(q + 0xE) = *(u16 *)(q + 0xE) - 0x28;
|
||||
iVar4 = iVar4 << 16;
|
||||
if ((iVar4 >> 16) >= 0) {
|
||||
sVar1 = (s16)((iVar4 >> 16) << 7);
|
||||
} else {
|
||||
sVar1 = (s16)(-((iVar4 >> 16) << 7));
|
||||
}
|
||||
*(s16 *)(q + 0x34) = sVar1 + 0x1000;
|
||||
*(s32 *)(q + 0x14) = 0xFFFE0000;
|
||||
*(s32 *)(q + 0x18) = 0xFFFD0000;
|
||||
}
|
||||
iVar5 += 0x18;
|
||||
} while (iVar5 < 0x49);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8001CA1C(s32 a0, s32 a1);
|
||||
|
||||
@@ -5605,7 +5605,37 @@ s32 func_801809E4(s32 a0, s32 a1, s32 a2) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017BEBC", func_80180B38);
|
||||
typedef struct { s32 w[8]; } Blk20_80180B38;
|
||||
|
||||
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
|
||||
extern void RotMatrixY(s32 a0, void *a1);
|
||||
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
|
||||
extern Blk20_80180B38 D_800AE620;
|
||||
|
||||
s32 func_80180B38(s32 a0, s32 a1)
|
||||
{
|
||||
s32 partner;
|
||||
s32 pad[4];
|
||||
Blk20_80180B38 mat;
|
||||
s32 ang;
|
||||
s32 trailing[4];
|
||||
|
||||
partner = *(s32 *)(a0 + 0x2C);
|
||||
if (*(u16 *)partner == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mat = D_800AE620;
|
||||
ang = func_8012B6D4((s16 *)(a0 + 4), (s16 *)(partner + 4));
|
||||
RotMatrixY(ang, &mat);
|
||||
|
||||
trailing[1] = 0;
|
||||
trailing[0] = 0;
|
||||
trailing[2] = a1;
|
||||
func_800484EC((s32) &mat, (s32) trailing, a0 + 0x10);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void func_80180C10(s32 param)
|
||||
{
|
||||
|
||||
@@ -4329,7 +4329,43 @@ void func_8018046C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017DF84", func_80180580);
|
||||
extern void func_80183094(void);
|
||||
extern void func_8014706C(void *arg0);
|
||||
extern void func_80154274(s32 *a0, s32 a1);
|
||||
extern void func_80154A74(s32 a0, s32 a1);
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern u8 *func_801290DC(s32 arg0, u8 *arg1);
|
||||
extern void func_80147324(s32 arg0);
|
||||
extern s32 func_80171990(u8 *a0);
|
||||
extern s32 D_800D5904;
|
||||
extern u8 D_8018B030[];
|
||||
|
||||
void func_80180580(s32 *a0)
|
||||
{
|
||||
s16 buf[4];
|
||||
s32 i;
|
||||
|
||||
if (*(s16 *)((s32)a0 + 0xA) > -0x83) {
|
||||
i = 0;
|
||||
func_80183094();
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0;
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) = 0xC00;
|
||||
func_8014706C(a0);
|
||||
func_80154274(a0, (s32)&D_800D5904);
|
||||
func_80154A74((s32)a0, 0x20);
|
||||
func_8013C9C4(D_8018B030);
|
||||
*(s32 *)((s32)a0 + 0x200) = 0x10;
|
||||
func_80015978((s32)a0 + 4, (s32 *)buf);
|
||||
buf[1] -= 0x20;
|
||||
for (i = 0; i < 0x14; i++) {
|
||||
func_801290DC(0x64, (u8 *)buf);
|
||||
}
|
||||
func_80147324(0x949);
|
||||
func_80171990((u8 *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3741,7 +3741,38 @@ void func_801816C8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017FF7C", func_80181708);
|
||||
void func_80181708(void *a0) {
|
||||
extern s32 *D_80126B78;
|
||||
extern s32 *D_8018B9A4[];
|
||||
extern u8 func_8014BF6C(void);
|
||||
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012B260(u8 *a0);
|
||||
|
||||
typedef struct { s32 w[8]; } Blk32_80181708;
|
||||
|
||||
Blk32_80181708 *dst;
|
||||
Blk32_80181708 *src;
|
||||
u8 result;
|
||||
s16 field70;
|
||||
u16 sp10[3];
|
||||
|
||||
dst = (Blk32_80181708 *)((u8 *)*(s32 **)((u8 *)a0 + 0x20) + 0x34);
|
||||
src = (Blk32_80181708 *)((u8 *)D_80126B78 + 0x34);
|
||||
*dst = *src;
|
||||
|
||||
result = func_8014BF6C();
|
||||
field70 = *(s16 *)((u8 *)a0 + 0x70);
|
||||
func_8012F214((s32)a0,
|
||||
(s32)D_8018B9A4[result & 0xFF] + (field70 << 3),
|
||||
(s32)sp10);
|
||||
|
||||
*(s16 *)((u8 *)a0 + 0x6) = sp10[0];
|
||||
*(s16 *)((u8 *)a0 + 0xA) = sp10[1];
|
||||
*(s16 *)((u8 *)a0 + 0xE) = sp10[2];
|
||||
|
||||
func_8012B260((u8 *)a0);
|
||||
}
|
||||
|
||||
|
||||
void func_801817D8(u8 *a0, u8 *a1) {
|
||||
u16 sp0[3];
|
||||
|
||||
@@ -4998,7 +4998,31 @@ void func_8017EFD8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F018);
|
||||
extern s32 *D_80126B78;
|
||||
extern u8 func_8014BF6C(void);
|
||||
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012B260(u8 *a0);
|
||||
extern void *D_801859E8[];
|
||||
|
||||
|
||||
|
||||
void func_8017F018(s32 a0) {
|
||||
s32 p;
|
||||
u8 idx;
|
||||
u16 out[4];
|
||||
|
||||
p = *(s32 *)(a0 + 0x20);
|
||||
*(Blk32 *)(p + 0x34) = *(Blk32 *)((s32)D_80126B78 + 0x34);
|
||||
|
||||
idx = func_8014BF6C();
|
||||
func_8012F214(a0, (s32)D_801859E8[idx] + (*(s16 *)(a0 + 0x70) << 3), (s32)out);
|
||||
|
||||
*(s16 *)(a0 + 0x6) = out[0];
|
||||
*(s16 *)(a0 + 0xA) = out[1];
|
||||
*(s16 *)(a0 + 0xE) = out[2];
|
||||
func_8012B260((u8 *)a0);
|
||||
}
|
||||
|
||||
|
||||
extern u8 *func_801290DC(s32 a0, u8 *a1);
|
||||
|
||||
|
||||
@@ -5742,7 +5742,33 @@ s32 func_80182574(s32 a0, s32 a1, s32 a2) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017D898", func_801826C8);
|
||||
|
||||
|
||||
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
|
||||
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
|
||||
extern void RotMatrixY(s32 a0, void *a1);
|
||||
extern Blk20 D_800AE620;
|
||||
|
||||
s32 func_801826C8(s32 arg0, s32 arg1)
|
||||
{
|
||||
s32 pad[4];
|
||||
Blk20 mat;
|
||||
s32 vec[4];
|
||||
s16 *ptr;
|
||||
|
||||
ptr = *(s16 **)(arg0 + 0x2C);
|
||||
if (*(u16 *)ptr == 0) {
|
||||
return 0;
|
||||
}
|
||||
mat = D_800AE620;
|
||||
RotMatrixY(func_8012B6D4((s16 *)(arg0 + 4), ptr + 2), &mat);
|
||||
vec[1] = 0;
|
||||
vec[0] = 0;
|
||||
vec[2] = arg1;
|
||||
func_800484EC((s32)&mat, (s32)vec, arg0 + 0x10);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
|
||||
|
||||
@@ -4600,7 +4600,23 @@ void func_8017D9C8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DA98);
|
||||
extern s16 D_80126B30;
|
||||
extern s16 D_80126B3A;
|
||||
extern s32 D_8012750C;
|
||||
extern s16 D_8011F9C8;
|
||||
extern void func_80174684(void *);
|
||||
extern void func_8017DB00(void *);
|
||||
|
||||
struct S8_8017DA98 { s16 m[4]; };
|
||||
|
||||
void func_8017DA98(s16 a0, void *a1, s32 a2) {
|
||||
*(struct S8_8017DA98 *)&D_80126B30 = *(struct S8_8017DA98 *)a1;
|
||||
D_80126B3A = a0;
|
||||
D_8012750C = a2;
|
||||
func_80174684((void *)func_8017DB00);
|
||||
(*(s32 *)&D_8011F9C8) = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018D620[])(void);
|
||||
|
||||
@@ -9007,7 +9007,49 @@ void func_80184AA8(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80184B30);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012C194(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_80143994(s32 a0, s32 a1);
|
||||
extern u8 D_801A960C[];
|
||||
|
||||
void func_80184B30(s32 param_1) {
|
||||
s32 v0;
|
||||
s32 s0;
|
||||
u16 tmp;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(param_1 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)param_1);
|
||||
return;
|
||||
}
|
||||
func_8001C214(v0, 0);
|
||||
v0 = *(s32 *)(param_1 + 0x20);
|
||||
*(s16 *)(v0 + 0x1A) = 0x1800;
|
||||
*(s16 *)(v0 + 0x18) = 0x1800;
|
||||
s0 = ((s32 (*)(void))func_8012C194)();
|
||||
if (s0 == 0) {
|
||||
func_8012CAE4((void *)param_1);
|
||||
return;
|
||||
}
|
||||
*(s32 *)(param_1 + 0xCC) = s0;
|
||||
func_8001CB6C((u8 *)s0, D_801A960C, 0x2E0, 0x100);
|
||||
*(u8 *)(s0 + 0x27) = 0x37;
|
||||
*(u16 *)(s0 + 0x10) = 0x400;
|
||||
*(s32 *)(s0 + 0x4) |= 0x50000000;
|
||||
tmp = *(u16 *)(param_1 + 0xFC);
|
||||
*(s16 *)(s0 + 0x1A) = 0x1800;
|
||||
*(s16 *)(s0 + 0x18) = 0x1800;
|
||||
*(u16 *)(s0 + 0x14) = tmp;
|
||||
*(s16 *)(param_1 + 2) = 1;
|
||||
func_80143994(param_1, 0x1000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8012B2CC(s32 a0);
|
||||
|
||||
@@ -2899,7 +2899,37 @@ extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80181D34", func_80181EF4);
|
||||
extern void func_801825A4(s32 a0);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern s16 D_801AC426[];
|
||||
extern u8 D_801AC45C[];
|
||||
|
||||
void func_80181EF4(s32 param_1) {
|
||||
*(u16 *)(param_1 + 0xFE) = 0;
|
||||
*(s32 *)(param_1 + 0x1C) = D_801AC426[*(s16 *)(param_1 + 0x70) * 4];
|
||||
if (*(s16 *)(param_1 + 0x70) == 0) {
|
||||
if (*(s32 *)(param_1 + 0xCC) != 0) {
|
||||
func_801825A4(*(s32 *)(param_1 + 0xCC));
|
||||
}
|
||||
if (*(s32 *)(param_1 + 0xD0) != 0) {
|
||||
func_801825A4(*(s32 *)(param_1 + 0xD0));
|
||||
}
|
||||
if (*(s32 *)(param_1 + 0xD4) != 0) {
|
||||
func_801825A4(*(s32 *)(param_1 + 0xD4));
|
||||
}
|
||||
if (*(s32 *)(param_1 + 0xD8) != 0) {
|
||||
func_801825A4(*(s32 *)(param_1 + 0xD8));
|
||||
}
|
||||
*(s32 *)(param_1 + 0x58) = (s32)D_801AC45C;
|
||||
*(u16 *)(param_1 + 0x5C) = 0x800;
|
||||
*(u8 *)(param_1 + 0x75) = 8;
|
||||
*(u16 *)(param_1 + 0x106) = 0;
|
||||
func_8002D4C8(0x94F, 0);
|
||||
}
|
||||
((void (*)(s32, s32))func_8012AD44)(param_1, 2);
|
||||
}
|
||||
|
||||
|
||||
void func_80181FD4(void *a0) {
|
||||
extern u8 D_8018FF4C;
|
||||
|
||||
@@ -5911,7 +5911,29 @@ void func_8018247C(void)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182538);
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
extern s32 rand(void);
|
||||
|
||||
void func_80182538(s32 param_1)
|
||||
{
|
||||
s32 p;
|
||||
s32 r;
|
||||
s32 t;
|
||||
s32 f;
|
||||
|
||||
p = func_80132EF4(param_1, 0x72);
|
||||
if (p != 0) {
|
||||
r = 0x30;
|
||||
t = *(u16 *)(p + 6) - r + rand() % 96;
|
||||
f = *(u16 *)(p + 0xA);
|
||||
*(u16 *)(p + 6) = t;
|
||||
*(u16 *)(p + 0xA) = *(u16 *)(param_1 + 0x52) + (f + 0x80);
|
||||
r = 0x30;
|
||||
t = *(u16 *)(p + 0xE) - r + rand() % 96;
|
||||
*(u16 *)(p + 0xE) = t;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern u16 D_8018A464[];
|
||||
@@ -6262,7 +6284,7 @@ void func_80182C68(s32 a0)
|
||||
extern void func_8018247C(void);
|
||||
extern void func_80182270(void *a0);
|
||||
extern void func_8018241C(void *a0);
|
||||
extern void func_80182538(void *a0);
|
||||
extern void func_80182538();
|
||||
extern void func_80181FE8(void *a0);
|
||||
extern u16 D_800B99DA;
|
||||
extern u16 D_8019FF8A;
|
||||
|
||||
Reference in New Issue
Block a user