feat(decomp): ox wave ci overlays — 34 banked

Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
Drew T
2026-08-25 02:54:38 -06:00
parent 5dc373deaf
commit 10dadb6c1c
18 changed files with 6230 additions and 2411 deletions
+2 -1
View File
@@ -3332,6 +3332,7 @@ build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC04_011/ov_SC04_011_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
ov_SC04_011_CHECK_SHA := config/check.ov_SC04_011.sha
ov_SC04_011_SYMBOLS := config/symbols.ov_SC04_011.txt
@@ -4031,7 +4032,7 @@ ov_SC06_006_ELF := $(ov_SC06_006_OUT).elf
ov_SC06_006_MAPFILE := $(ov_SC06_006_OUT).map
ov_SC06_006_LD_SCRIPT := $(ov_SC06_006_OUT).ld
ov_SC06_006_SPLAT_YAML := config/splat.ov_SC06_006.yaml
ov_SC06_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_006.o,ov_SC06_006_jr_8012ACE0.o,tail2.data.o,ov_SC06_006_jr_80135888.o,tail3.data.o,ov_SC06_006_jr_80135A4C.o,tail4.data.o,ov_SC06_006_jr_80135D20.o,tail5.data.o,ov_SC06_006_jr_801380E0.o,ov_SC06_006_o0c.o,tail6.data.o,ov_SC06_006_jr_8013F350.o,tail7.data.o,ov_SC06_006_jr_8013FFD8.o,tail8.data.o,ov_SC06_006_jr_80140608.o,tail9.data.o,ov_SC06_006_jr_8015444C.o,ov_SC06_006_jr_80154C24.o,ov_SC06_006_jr_801588CC.o,ov_SC06_006_jr_80159C84.o,tail10.data.o,ov_SC06_006_jr_8015A3C8.o,tail11.data.o,ov_SC06_006_jr_8015AE2C.o,tail12.data.o,ov_SC06_006_jr_8015C32C.o,tail13.data.o,ov_SC06_006_jr_8016AB6C.o,tail14.data.o,ov_SC06_006_jr_80171B4C.o,ov_SC06_006_jr_801734BC.o,tail15.data.o,ov_SC06_006_jr_801789AC.o,ov_SC06_006_jr_80178D40.o,tail16.data.o,ov_SC06_006_jr_8017A4AC.o,tail17.data.o,ov_SC06_006_jr_8017AE2C.o,ov_SC06_006_jr_8017BEBC.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC06_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_006.o,ov_SC06_006_jr_8012ACE0.o,tail2.data.o,ov_SC06_006_jr_80135888.o,tail3.data.o,ov_SC06_006_jr_80135A4C.o,tail4.data.o,ov_SC06_006_jr_80135D20.o,tail5.data.o,ov_SC06_006_jr_801380E0.o,ov_SC06_006_o0c.o,tail6.data.o,ov_SC06_006_jr_8013F350.o,tail7.data.o,ov_SC06_006_jr_8013FFD8.o,tail8.data.o,ov_SC06_006_jr_80140608.o,tail9.data.o,ov_SC06_006_jr_8015444C.o,ov_SC06_006_jr_80154C24.o,ov_SC06_006_jr_801588CC.o,ov_SC06_006_jr_80159C84.o,tail10.data.o,ov_SC06_006_jr_8015A3C8.o,tail11.data.o,ov_SC06_006_jr_8015AE2C.o,tail12.data.o,ov_SC06_006_jr_8015C32C.o,tail13.data.o,ov_SC06_006_jr_8016AB6C.o,tail14.data.o,ov_SC06_006_jr_80171B4C.o,ov_SC06_006_jr_801734BC.o,tail15.data.o,ov_SC06_006_jr_801789AC.o,ov_SC06_006_jr_80178D40.o,tail16.data.o,ov_SC06_006_jr_8017A4AC.o,tail17.data.o,ov_SC06_006_jr_8017AE2C.o,ov_SC06_006_jr_8017BEBC.o,tail18.data.o,ov_SC06_006_jr_8017DB90.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC06_006/ov_SC06_006.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
build/src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
build/src/ov_SC06_006/ov_SC06_006_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
+1 -1
View File
@@ -164,7 +164,7 @@ segments:
- [0xc565c, .rodata, ov_SC04_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xc5670, data, tail18]
- [0xc57a8, .rodata, ov_SC04_011_jr_8017D494] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xc57c8, data, tail19]
- [0xc57e4, data, tail19]
- [0xC9554, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0xC9557] # EOF marker = the 0.4.dec byte length
# @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes
+3
View File
@@ -121,6 +121,7 @@ segments:
- [0x52354, c, ov_SC06_006_jr_8017A4AC]
- [0x52cd4, c, ov_SC06_006_jr_8017AE2C]
- [0x53d64, c, ov_SC06_006_jr_8017BEBC]
- [0x55a38, c, ov_SC06_006_jr_8017DB90]
- [0x59c08, data, tail]
- [0xcd92c, .rodata, ov_SC06_006] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xcda08, .rodata, ov_SC06_006_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
@@ -164,6 +165,8 @@ segments:
- [0xcea4c, .rodata, ov_SC06_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xcea60, .rodata, ov_SC06_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xcea80, data, tail18]
- [0xceb38, .rodata, ov_SC06_006_jr_8017DB90] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xceb74, data, tail19]
- [0xD0A0C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0xD0A0F] # EOF marker = the 0.4.dec byte length
# @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes
+25 -1
View File
@@ -97,7 +97,31 @@ void func_800CB134(void *arg0) {
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB190);
void func_800CB190(void *arg0) {
extern void func_800CB5F4();
extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32);
extern void func_80146E90(s32 *, s32);
extern void func_80146CA0(void *);
extern s32 rand();
s32 color;
s32 tmp;
func_800CB5F4(arg0);
if (*(s32 *)((u8 *)arg0 + 0x50) == 0) {
color = (rand() & 0xF) << 8;
func_801466F0(0xC, arg0, 0, 0, 0, color, 0, 0);
tmp = color + 0x555;
func_801466F0(0xC, arg0, 0, 0, 0, tmp, 0, 0);
tmp = color + 0xAAA;
func_801466F0(0xC, arg0, 0, 0, 0, tmp, 0, 0);
func_80146E90((s32 *)arg0, 8);
} else {
func_80146E90((s32 *)arg0, 0);
}
func_80146CA0(arg0);
}
#include "common.h"
+121 -7
View File
@@ -2,7 +2,20 @@
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAE0C);
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAE70);
extern s32 func_800183E0(s32 *a0);
void func_800CAE70(void) {
extern s32 D_800CB6FC;
extern s32 D_800CB73C;
extern s32 D_800CB6BC;
extern s32 D_800CB95C;
func_800183E0(&D_800CB6FC);
func_800183E0(&D_800CB73C);
D_800CB95C = 0;
func_800183E0(&D_800CB6BC);
}
@@ -26,9 +39,32 @@ void func_800CAF04(u8 *a0) {
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAF4C);
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAF94);
extern void func_801599A4(void *a0);
extern void func_80159B3C(void *a0);
extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3,
s32 sp4, s32 sp5, s32 sp6, s32 sp7);
extern s32 func_80161208(); /* canonical no-proto (§17a-1) */
void func_800CAF94(void *a0) {
u16 flag;
flag = *(u16 *)((u8 *)a0 + 0xB8);
if (flag == 0x8000) {
func_801599A4(a0);
func_80159B3C(a0);
} else {
if (flag & 0x4000) {
func_801466F0(0x1E, (s32)a0, 0, -0x40, 0, 0, 0, 0);
}
func_80161208(a0);
}
}
void func_800CB014(void *a0) {
*(u32 *)((s32)a0 + 0x44) &= ~2;
}
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB014);
#include "common.h"
@@ -55,13 +91,55 @@ void func_800CB028(s32 a0) {
}
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB09C);
extern void func_8014659C(void);
extern void func_8001CA1C(s32 a0, s32 a1);
extern void func_80149374(s32 a0, s32 a1);
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3);
extern void func_80146E90(s32 *a0, s32 a1);
extern void func_80147324(s32 a0);
extern void func_80146CA0(void *a0);
extern void func_800CB358(void);
extern u32 D_800CB61C[];
void func_800CB09C(s32 a0) {
s32 iVar1;
s32 iVar2;
u16 uVar1;
iVar1 = *(s32 *)(a0 + 0x4C);
iVar2 = ((s32 (*)(void))func_8014659C)();
*(s32 *)(a0 + 0x20) = iVar2;
if (iVar2 != 0) {
func_8001CA1C(iVar2, (s32)&D_800CB61C);
uVar1 = *(u16 *)(*(s32 *)(iVar1 + 0x20) + 0x12);
*(u16 *)(iVar2 + 0x12) = uVar1;
func_80149374(iVar1, a0 + 4);
func_80146DE8((s32 *)a0, 0, 0xFFF40000, 0xFFE80000);
func_80146E90((s32 *)a0, 0x3C);
func_80147324(0x912);
func_80146CA0((void *)a0);
} else {
((void (*)(s32))func_800CB358)(a0);
}
}
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB150);
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB2A8);
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB30C);
extern void func_800CB358(void);
void func_800CB30C(u8 *a0) {
u8 *p = *(u8 **)(a0 + 0x20);
s16 v = *(u16 *)(p + 0x1A) - 0x300;
*(u16 *)(p + 0x1A) = v;
*(u16 *)(p + 0x18) = v;
if (v < 0) {
((void (*)(s32))func_800CB358)(a0);
}
}
extern void func_80162CCC(void);
void func_800CB358(void) {
@@ -69,7 +147,32 @@ void func_800CB358(void) {
}
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB378);
extern u8 D_801202A0[];
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);
void func_800CB378(s32 a0) {
u8 *p;
s16 buf[4];
s32 s1;
s1 = a0;
p = D_801202A0;
if (p < p + 0x6480) {
do {
if (func_8014C308(s1, (s32)p, 0x27, 0x80) != 0) {
if (func_8014C278(s1, (s32)p, 0x60) != 0) {
func_80015978((s32)(p + 4), (s32 *)buf);
buf[3] = 0;
func_8014C3A4((void *)s1, (s32)p, 0x27, (s32)buf);
}
}
p += 0x10C;
} while (p < D_801202A0 + 0x6480);
}
}
extern void func_80146C3C(void);
@@ -89,4 +192,15 @@ void func_800CB424(void *arg0) {
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB480);
INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CB55C);
extern void func_80146C3C(void);
void func_800CB55C(s32 *arg0) {
arg0[1] += arg0[4];
arg0[3] += arg0[6];
arg0[5] += 0xC000;
arg0[2] += arg0[5];
if (--arg0[7] == -1) {
((void (*)(s32))func_80146C3C)((s32)arg0);
}
}
+24 -1
View File
@@ -4223,7 +4223,30 @@ u32 func_8017DC48(s32 a0, s32 a1) {
}
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8017CF3C", func_8017DCB0);
extern unsigned short *D_80182540[];
void func_8017DCB0(s32 val, s32 n, void *dst, s32 flag) {
register u32 d __asm__("$3");
s32 idx;
s16 i;
n = (s16)n;
for (i = 0; i < n; i++) {
d = (u32)val >> 28;
idx = d;
if ((flag << 16) != 0) {
if (d != 0) {
flag = 0;
} else {
idx = 10;
}
}
val <<= 4;
*(u16 *)dst = *D_80182540[idx];
dst = (u16 *)dst + 1;
}
}
#include "common.h"
+17 -1
View File
@@ -4557,7 +4557,23 @@ void func_80189630(void *param_1) {
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_801848E4", func_80189680);
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_801848E4", func_8018973C);
extern u8 D_801EAC94;
extern u8 D_801EAC95;
extern u8 D_801EAC96;
void func_8018973C(void) {
u8 *p = &D_801EAC94;
if (*p < 0xC0) {
*p += 4;
}
if (D_801EAC95 < 0x40) {
D_801EAC95 += 4;
}
if (D_801EAC96 < 0x40) {
D_801EAC96 += 4;
}
}
extern void func_80189110(void);
void func_801897A4(void) {
+25 -1
View File
@@ -7041,7 +7041,31 @@ void func_80182870(void *a0)
}
INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017BEBC", func_801828E8);
extern s32 rand(void);
extern void func_80182998(s32 a0, s32 a1);
extern u16 D_801BC62C;
extern u16 D_801BC62E;
extern u16 D_801BC630;
void func_801828E8(s32 a0) {
u16 *p;
u16 w;
s32 r;
s32 t;
if (func_8012BEE8(a0)) {
r = rand();
p = &D_801BC62C;
w = *(u16 *)(a0 + 0xFC);
t = (s16)w / 2 - (r & (w - 1));
p[0] = *(u16 *)(a0 + 6) + t * 2;
D_801BC62E = *(u16 *)(a0 + 0xA);
D_801BC630 = *(u16 *)(a0 + 0xE) + t * 2;
func_80182998(a0, (s32)p);
*(s32 *)(a0 + 0x1C) = (rand() & 0x7F) + 0x40;
}
}
+11 -1
View File
@@ -4276,7 +4276,17 @@ void func_801817C4(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181800);
extern void func_8013B7AC(s32 a0);
void func_80181800(s32 a0) {
s32 i;
for (i = 0; i < 3; i++) {
func_8013B7AC(i);
}
*(u16 *)(a0 + 2) += 1;
*(s32 *)(a0 + 0xCC) = 0;
}
typedef struct { short vx, vy, vz, pad; } SV_801851A8_80181858;
typedef struct { short m[3][3]; long t[3]; } MTX_801851A8_80181858;
+85 -6
View File
@@ -6124,7 +6124,24 @@ void func_80181FFC(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80182038);
extern u8 *func_8012913C(s32 a0);
extern void func_8001CD50(s32 a0, s32 a1);
void func_80182038(void *a0)
{
extern u8 D_801A5A40[];
u8 pad[16];
u8 *v1;
v1 = func_8012913C(0x7C);
if (v1 != 0) {
*(u16 *)(v1 + 6) = *(u16 *)((s32)a0 + 6);
*(u16 *)(v1 + 0xA) = *(u16 *)((s32)a0 + 0xA);
*(u16 *)(v1 + 0xE) = *(u16 *)((s32)a0 + 0xE);
func_8001CD50(*(s32 *)(v1 + 0x20), (s32)D_801A5A40);
}
}
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_8018209C);
@@ -6244,7 +6261,21 @@ void func_801822BC(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_801823A8);
extern s32 func_8004787C(s32 a0);
extern void func_8012E688(s32, s32, s32);
void func_801823A8(s32 a0)
{
*(u16 *)(a0 + 0xFC) += 0x20;
*(s16 *)(a0 + 0xA) = *(u16 *)(a0 + 0x100);
*(s32 *)(a0 + 8) -= func_8004787C(*(s16 *)(a0 + 0xFC)) << 10;
if (*(s16 *)(a0 + 0xFC) >= 0x400) {
*(s16 *)(a0 + 2) = 5;
*(s16 *)(a0 + 0xFE) = 4;
func_8012E688(a0, 0x98F, 0);
}
}
extern s32 D_8019F298;
extern s32 D_8019F2A0;
@@ -6310,9 +6341,41 @@ INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_801825B
}
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80182684);
void func_80182684(s32 a0) {
extern u8 D_80126B5C;
u8 sp28[8];
s32 t;
s16 w;
func_8012B77C((s32)sp28, a0 + 4, (s32)&D_80126B5C);
t = *(s32 *)sp28;
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = t >> 16;
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = t;
w = *(u16 *)(a0 + 0xA) - 8;
*(u16 *)(a0 + 0xA) = w;
if ((*(s16 *)(a0 + 0x8A) - (s16)w) >= 0x81) {
*(s16 *)(a0 + 0x2) = 0xA;
*(s16 *)(a0 + 0xFC) = 0xC;
}
func_80181F18(a0);
}
void func_80182714(s32 param_1) {
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_80181F18(s32 a0);
if (--*(s16 *)(param_1 + 0xFC) == 0) {
*(s16 *)(param_1 + 2) = 0xB;
}
if (*(s16 *)(param_1 + 0xFC) == 6) {
func_8012C658(0x1EA, 0xE, param_1);
func_8002D4C8(0xC5D, 0);
}
func_80181F18(param_1);
}
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80182714);
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80182788);
@@ -6321,7 +6384,7 @@ extern s32 D_8019F2B8;
extern void func_8012CBF4(s32);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_8012C218(void *a0);
extern void func_80182038(s32 a0);
extern void func_80182038();
void func_801827D8(s32 param_1) {
s32 v0;
@@ -6604,7 +6667,23 @@ void func_80182C44(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80182D38);
void func_80182D38(void *a0) {
s32 v0;
s32 s0;
v0 = *(s32 *)((s32)a0 + 0x2C);
s0 = *(s32 *)((s32)a0 + 0x20);
v0 = v0 - 0x80;
*(s32 *)((s32)a0 + 0x2C) = v0;
if (v0 <= 0) {
func_801292C8((u8 *)a0);
} else {
v0 = func_8004787C(v0);
*(s16 *)(s0 + 0x1A) = v0;
*(s16 *)(s0 + 0x18) = v0;
}
}
+34 -1
View File
@@ -6066,7 +6066,40 @@ extern s32 func_8018107C(void);
}
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018158C);
extern s32 func_80029504(void);
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, s32 a1);
extern void func_8012E8E0(s32 a0, s32 a1);
void func_8018158C(void *arg0) {
extern s32 D_801D71F0[];
extern s32 D_80190018[];
extern u8 D_801DE0E8[];
extern u8 D_80190008;
s32 v0;
v0 = func_80029504();
if ((u32)(v0 - 0xC8) >= 0x190) {
func_8012CAE4(arg0);
return;
}
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((char *)arg0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4(arg0);
return;
}
func_8001C214(v0, (s32)D_801D71F0);
func_8012A828((s32)arg0, (s32)D_801DE0E8);
*(s16 *)(*(s32 *)((char *)arg0 + 0x68) + 0xC) = 0x7FFF;
func_8012E8E0((s32)arg0, (s32)&D_80190018);
*(s32 *)((char *)arg0 + 0x58) = (s32)&D_80190008 | 0x40000000;
*(s16 *)((char *)arg0 + 0x5C) = 0x810;
*(s16 *)((char *)arg0 + 0x2) = 1;
}
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181644);
+23 -1
View File
@@ -6610,7 +6610,29 @@ void func_80182C90(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017BEBC", func_80182D08);
extern void func_80182D78(void);
extern void func_8012C098(void *param_1);
void func_80182D08(s32 a0) {
u8 *s0;
u16 val;
s0 = *(u8 **)(a0 + 0x20);
func_80182D78();
val = *(u16 *)(s0 + 0x18);
val -= 0x800;
*(u16 *)(s0 + 0x18) = val;
if ((s16)val < 0) {
*(u16 *)(s0 + 0x18) = 0;
}
if (*(s16 *)(s0 + 0x18) == 0) {
func_8012C098((void *)a0);
}
}
extern s32 D_801AAEA8;
extern u16 D_800B99DA;
+150 -5
View File
@@ -3313,7 +3313,35 @@ void func_8017D0A0(void) {
}
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017D0C8);
void func_8017D0C8(void) {
extern s32 D_80126954;
extern s32 D_8012695C;
extern s16 D_80126968;
extern s16 D_8012696A;
extern s16 D_8012696C;
extern s16 D_80126976;
extern s16 D_80126978;
extern s16 D_8012697A;
extern u8 D_80126948[];
extern void func_8012A018(s32, s32);
extern void func_8012A094(s32);
extern void func_8017D170(void *);
D_80126954 = 0x1F4;
D_8012695C = 0x384;
D_80126968 = 0x1C7;
D_8012696A = 0x600;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = 0;
D_8012697A = 0;
func_8012A018((s32)func_8017D170, 0);
func_8012A094((s32)D_80126948);
func_8017D170((void *)D_80126948);
func_8012A094((s32)D_80126948);
func_8017D170((void *)D_80126948);
}
extern void (*D_80182580[])(void);
@@ -3323,7 +3351,41 @@ void func_8017D170(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017D1AC);
typedef struct {
s16 v[4];
} Blk8_80126940_8017D1AC;
void func_8017D1AC(s32 a0) {
extern s32 D_80126B58;
extern s16 D_80182584[];
extern Blk8_80126940_8017D1AC D_80126940;
extern void func_8017D288(s32 param_1, s16 *param_2);
Blk8_80126940_8017D1AC sp10;
u8 t;
s16 v1;
if (func_80148800(&D_80126B58) & 3) {
t = (*(u8 *)(a0 + 5) + 1) & 1;
*(u8 *)(a0 + 5) = t;
*(s32 *)(a0 + 0x14) = D_80182584[t];
}
sp10 = D_80126940;
v1 = sp10.v[1];
if (v1 < -0x680) {
*(s16 *)(a0 + 0x20) = 0x2AA;
} else if (v1 >= -0x602) {
*(s16 *)(a0 + 0x20) = 0x1C7;
} else if (sp10.v[0] < 0x81) {
*(s16 *)(a0 + 0x20) = 0x1C7;
} else {
*(s16 *)(a0 + 0x20) = 0x2AA;
}
func_8017D288(a0, sp10.v);
}
// @class: schedule
@@ -3428,9 +3490,80 @@ INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017D63
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017D6A8);
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017D768);
void func_8017D768(s32 arg0) {
extern void func_80029124(s32, s32);
extern void func_8012C218(void *a0);
extern int func_80178970(void);
extern s32 func_80178B18(s32 param_1, s32 param_2);
extern void func_80178D18(void);
extern s16 D_8018259C[];
u16 v1 = *(u16 *)(arg0 + 0x34);
switch (v1) {
case 0:
if (*(s16 *)(arg0 + 0xFE) == 0) {
func_80029124(0xDD, 1);
func_80178B18(arg0, (s32)D_8018259C);
*(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1;
}
break;
case 1:
if (((int (*)(s32))func_80178970)(arg0) != 0) {
((void (*)(s32))func_80178D18)(arg0);
((void (*)(s32))func_8012C218)(arg0);
}
break;
}
}
extern s32 func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C2C4(s32 a0);
extern s32 func_80029178(s32 arg);
extern void func_8017D5E4(void);
extern s32 func_8012AD50(void *a0);
extern u16 D_8018277C[][4];
extern u16 D_8018277E[][4];
extern u16 D_80182780[][4];
extern u8 D_8018276C[];
extern u8 D_8018275C[];
void func_8017D808(void *a0)
{
s32 v0;
v0 = func_8012C1B8();
*(s32 *)((s32)a0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4(a0);
return;
}
func_8001C2C4(v0);
*(u16 *)((s32)a0 + 0x6) = D_8018277C[*(s16 *)((s32)a0 + 0x70)][0];
*(u16 *)((s32)a0 + 0xA) = D_8018277E[*(s16 *)((s32)a0 + 0x70)][0];
*(u16 *)((s32)a0 + 0xE) = D_80182780[*(s16 *)((s32)a0 + 0x70)][0];
*(u8 *)((s32)a0 + 0xC0) = 1;
*(u16 *)((s32)a0 + 0x5C) = 0x8000;
*(s16 *)((s32)a0 + 0xAE) = -5;
*(s32 *)((s32)a0 + 0xB4) = 0;
*(s32 *)((s32)a0 + 0xBC) = (s32)D_8018276C;
*(s32 *)((s32)a0 + 0xC4) |= 2;
*(s32 *)((s32)a0 + 0x58) = (s32)D_8018275C;
if ((func_80029178(0xDD) & 0xFF) != 0) {
((s32 (*)(s32))func_8017D5E4)((s32)a0);
}
func_8012AD50(a0);
}
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017D808);
void func_8017D904(void) {
}
@@ -4232,7 +4365,19 @@ void func_8017E788(s32 a0) {
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017E7C8);
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017BEBC", func_8017E888);
void func_8017E888(void *a0) {
extern u8 D_801954E4[];
if (*(s16 *)((s32)a0 + 0x98) == 0) {
if (*(s16 *)((s32)a0 + 0xFE) == 2) {
func_8002D4C8(0x888, 0);
func_8012A828((s32)a0, D_801954E4);
}
*(s16 *)((s32)a0 + 2) = 5;
*(s16 *)((s32)a0 + 0xFE) = 0;
}
}
void func_8017E8F4(void *a0) {
*(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1;
+144 -1
View File
@@ -4808,7 +4808,150 @@ void func_80181220(s32 a0) {
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80181390);
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_801813FC);
void func_801813FC(s32 s0)
{
u16 t;
s16 tc;
s32 a0;
s32 v7;
s32 vcmp;
s32 vs1e;
s16 buf[7];
u8 *s1;
extern u16 D_801EFD20;
extern u16 D_801EFD40;
extern s32 D_801EFD18;
extern s32 aFC4C[] __asm__("D_801EFC4C");
extern s32 aB58_801813FC[1] __asm__("D_80126B58");
extern s16 aB62_801813FC __asm__("D_80126B62");
extern u8 D_801944B8[];
extern u8 D_801944C8[];
extern u8 D_80190B88[];
extern void func_801833D4(int a0, int a1);
extern s32 func_80183A28(u8*);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8012BE54(s32 a0);
extern void func_80186B08(s32 a0);
extern void func_8013C9C4(void *a0);
extern void func_80183564(s32 a0, s16 *a1);
extern void func_80185FAC(void);
extern s32 func_80188E00(s32 a0, void *a1);
extern void func_801439C0();
extern void func_801837C4(s32, s32);
extern void func_80183BAC(u8*);
extern void func_80183880(s32 a0);
extern void func_8012BEE8(u8 *a0);
extern void func_80183BD0(u8 *a0);
s1 = (u8 *)aB58_801813FC;
if (*(u16 *)(s0 + 0x34) != 7) {
if (((s32 (*)(int, int))func_801833D4)(s0, 0) != 0) {
switch (*(u16 *)(s0 + 0x34)) {
case 0:
func_80186B08(s0);
func_8013C9C4(D_80190B88);
buf[0] = 0x500;
buf[1] = -0xB00;
buf[2] = *(u16 *)(D_801944B8 + ((*(s16 *)(s0 + 0xF4) << 16) >> 15)) - 0x100;
func_80183564(s0, buf);
v7 = 1;
t = D_801EFD20;
*(u16 *)(s0 + 0x34) = v7;
if (((s32 (*)(s32))func_8012BE54)(aFC4C[t]) <= 0x23FFF) {
func_8002D4C8(0x992, 0);
}
break;
case 1:
*(u16 *)(s0 + 0xF4) = *(u16 *)(s0 + 0xF4) + 1;
if ((s16)*(u16 *)(s0 + 0xF4) >= 8) {
func_80185FAC();
v7 = 6;
t = D_801EFD40;
*(u16 *)(s0 + 0x34) = v7;
D_801EFD40 = t | 8;
} else {
buf[0] = 0x500;
buf[1] = -0xB00;
a0 = *(u16 *)(D_801944B8 + ((*(s16 *)(s0 + 0xF4) << 16) >> 15));
buf[2] = a0 + 0x580;
vs1e = *(s16 *)(s1 + 0xE);
vcmp = *(s16 *)(D_801944B8 + ((*(s16 *)(s0 + 0xF4) << 16) >> 15)) + 0xE0;
if (vs1e > vcmp) {
buf[2] = a0 + 0x280;
}
func_80183564(s0, buf);
*(u16 *)(s0 + 0x34) = 2;
}
break;
case 2:
buf[0] = 0x600;
buf[1] = -0xB00;
buf[2] = *(u16 *)(D_801944B8 + ((*(s16 *)(s0 + 0xF4) << 16) >> 15)) + 0x180;
func_80183564(s0, buf);
*(u16 *)(s0 + 0x34) = 3;
break;
case 3:
buf[0] = 0x500;
buf[1] = -0x700;
buf[2] = *(u16 *)(D_801944B8 + ((*(s16 *)(s0 + 0xF4) << 16) >> 15));
D_801EFD18 = func_80188E00(aFC4C[D_801EFD20], buf);
func_80183564(s0, buf);
*(s16 *)(s0 + 0x84) = 0;
*(u16 *)(s0 + 0x34) = 4;
break;
case 4:
func_80186B08(s0);
func_8013C9C4(D_80190B88);
if (D_801EFD18 != 0) {
func_801439C0(D_801EFD18);
D_801EFD18 = 0;
}
func_80183564(s0, (s16 *)D_801944C8);
*(u16 *)(s0 + 0x34) = 5;
break;
case 5:
((void (*)(s32))func_801837C4)(s0);
func_80183BAC((u8 *)s0);
*(u16 *)(s0 + 0x100) = 0;
tc = *(u16 *)(s0 + 0xF4) + 1;
*(u16 *)(s0 + 0xF4) = tc;
vs1e = *(s16 *)(s1 + 0xE);
vcmp = *(s16 *)(D_801944B8 + ((tc << 16) >> 15)) + 0xC0;
if (vs1e > vcmp) {
*(s32 *)(s0 + 0x1C) = 0x18;
} else {
*(s32 *)(s0 + 0x1C) = (tc == 7) ? 0x18 : 0x90;
}
*(u16 *)(s0 + 0x34) = 7;
break;
case 6:
break;
}
} else {
((void (*)(u8 *))func_80183A28)((u8 *)s0);
if (*(u16 *)(s0 + 0x34) == 4 && *(s16 *)(s0 + 0x84) == 0) {
if (((s32 (*)(s32))func_8012BE54)(aFC4C[D_801EFD20]) <= 0x23FFF &&
aB62_801813FC - *(s16 *)(aFC4C[D_801EFD20] + 0xA) < 0x180) {
func_8002D4C8(0x992, 0);
*(s16 *)(s0 + 0x84) = 1;
}
}
}
} else {
func_80183880(s0);
if (((s32 (*)(u8 *))func_8012BEE8)((u8 *)s0) != 0) {
buf[0] = 0x500;
buf[1] = -0x700;
buf[2] = *(u16 *)(D_801944B8 + ((*(s16 *)(s0 + 0xF4) << 16) >> 15));
func_80183BD0((u8 *)s0);
func_80183564(s0, buf);
*(u16 *)(s0 + 0x34) = 0;
}
}
}
#include "common.h"
+25 -1
View File
@@ -6661,7 +6661,31 @@ void func_80180D5C(void *a0) {
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180D98);
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180DD4);
extern s32 func_80171990(u8 *a0);
extern s16 D_801274EA;
void func_80180DD4(u8 *a0) {
s16 *p;
s32 d;
s32 t;
s32 w;
s32 lim;
p = &D_801274EA;
d = *(u16 *)(a0 + 0xA) - 0x300;
t = *(u16 *)p - d;
w = *(s32 *)(a0 + 0x204) + 0x4000;
*(s32 *)(a0 + 0x204) = w;
lim = 0x600000;
if (w > lim) {
*(s32 *)(a0 + 0x204) = lim;
}
*(u16 *)p = *(u16 *)p - *(u16 *)(a0 + 0x206);
if ((s16)t < 0x200) {
func_80171990(a0);
}
}
extern s32 func_80171990(u8 *a0);
extern s16 D_801274EA;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+321 -5
View File
@@ -5267,9 +5267,247 @@ void func_80183814(void *a0) {
}
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_8018881C);
void func_8018881C(void *a0) {
extern void func_8012EC04(s32 a0, s32 a1, s32 *a2);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
extern s32 func_8012C51C(void *a0, s32 a1);
extern s32 rand(void);
extern s32 D_801F61C0[];
extern s32 D_801F61D0;
extern s32 D_801F61D8;
extern s32 D_801F61DC;
extern s32 D_801F61E8;
extern s32 D_801F61F0;
extern s32 D_801F61F4;
s32 sp18[8];
s16 sp38[4];
s16 sp40[10];
s32 s0;
s32 s1;
s32 s4;
s32 s5;
s32 *p;
s32 *q;
s5 = 0xC;
func_8012EC04((s32)a0, 0xC, sp18);
for (s4 = 0, q = &D_801F61C0[0]; s4 < 4; s4++, q++) {
if (*q % 80 == 0) {
p = ((s32 **)(*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x24)))[0xC];
if (p[1] == 1) {
s1 = p[3];
} else {
s1 = (s32)((u8 *)p + ((((u32)p[3] >> 2) << 2) + 0xC));
}
s0 = p[4] - 1;
s1 = s1 + (rand() % (u32)s0) * 8;
((void (*)(s32 *, s32, s16 *))func_8012F14C)(sp18, s1, sp38);
sp40[3] = 0x3C5;
sp40[7] = s5;
sp40[5] = 0;
sp40[4] = 0;
*(s32 *)&sp40[8] = s1;
sp40[6] = 0x7FFF;
sp40[0] = sp38[0];
sp40[1] = sp38[1];
sp40[2] = sp38[2];
((s32 (*)(s16 *, s32))func_8012C51C)(sp40, (s32)a0);
}
}
{
s32 *p, *q;
s32 s0, s1, s4, s5;
s5 = 0x9;
func_8012EC04((s32)a0, 0x9, sp18);
for (s4 = 4, q = &D_801F61D0; s4 < 6; s4++, q++) {
if (*q % 80 == 0) {
p = ((s32 **)(*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x24)))[0x9];
if (p[1] == 1) {
s1 = p[3];
} else {
s1 = (s32)((u8 *)p + ((((u32)p[3] >> 2) << 2) + 0xC));
}
s0 = p[4] - 1;
s1 = s1 + (rand() % (u32)s0) * 8;
((void (*)(s32 *, s32, s16 *))func_8012F14C)(sp18, s1, sp38);
sp40[3] = 0x3C5;
sp40[7] = s5;
sp40[5] = 0;
sp40[4] = 0;
*(s32 *)&sp40[8] = s1;
sp40[6] = 0x7FFF;
sp40[0] = sp38[0];
sp40[1] = sp38[1];
sp40[2] = sp38[2];
((s32 (*)(s16 *, s32))func_8012C51C)(sp40, (s32)a0);
}
}
}
{
s32 *p, *q;
s32 s0, s1, s4, s5;
s5 = 0xA;
func_8012EC04((s32)a0, 0xA, sp18);
for (s4 = 6, q = &D_801F61D8; s4 < 7; s4++, q++) {
if (*q % 80 == 0) {
p = ((s32 **)(*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x24)))[0xA];
if (p[1] == 1) {
s1 = p[3];
} else {
s1 = (s32)((u8 *)p + ((((u32)p[3] >> 2) << 2) + 0xC));
}
s0 = p[4] - 1;
s1 = s1 + (rand() % (u32)s0) * 8;
((void (*)(s32 *, s32, s16 *))func_8012F14C)(sp18, s1, sp38);
sp40[3] = 0x3C5;
sp40[7] = s5;
sp40[5] = 0;
sp40[4] = 0;
*(s32 *)&sp40[8] = s1;
sp40[6] = 0x7FFF;
sp40[0] = sp38[0];
sp40[1] = sp38[1];
sp40[2] = sp38[2];
((s32 (*)(s16 *, s32))func_8012C51C)(sp40, (s32)a0);
}
}
}
{
s32 *p, *q;
s32 s0, s1, s4, s5;
s5 = 0xB;
func_8012EC04((s32)a0, 0xB, sp18);
for (s4 = 7, q = &D_801F61DC; s4 < 10; s4++, q++) {
if (*q % 80 == 0) {
p = ((s32 **)(*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x24)))[0xB];
if (p[1] == 1) {
s1 = p[3];
} else {
s1 = (s32)((u8 *)p + ((((u32)p[3] >> 2) << 2) + 0xC));
}
s0 = p[4] - 1;
s1 = s1 + (rand() % (u32)s0) * 8;
((void (*)(s32 *, s32, s16 *))func_8012F14C)(sp18, s1, sp38);
sp40[3] = 0x3C5;
sp40[7] = s5;
sp40[5] = 0;
sp40[4] = 0;
*(s32 *)&sp40[8] = s1;
sp40[6] = 0x7FFF;
sp40[0] = sp38[0];
sp40[1] = sp38[1];
sp40[2] = sp38[2];
((s32 (*)(s16 *, s32))func_8012C51C)(sp40, (s32)a0);
}
}
}
{
s32 *p, *q;
s32 s0, s1, s4, s5;
s5 = 0xD;
func_8012EC04((s32)a0, 0xD, sp18);
for (s4 = 10, q = &D_801F61E8; s4 < 12; s4++, q++) {
if (*q % 80 == 0) {
p = ((s32 **)(*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x24)))[0xD];
if (p[1] == 1) {
s1 = p[3];
} else {
s1 = (s32)((u8 *)p + ((((u32)p[3] >> 2) << 2) + 0xC));
}
s0 = p[4] - 1;
s1 = s1 + (rand() % (u32)s0) * 8;
((void (*)(s32 *, s32, s16 *))func_8012F14C)(sp18, s1, sp38);
sp40[3] = 0x3C5;
sp40[7] = s5;
sp40[5] = 0;
sp40[4] = 0;
*(s32 *)&sp40[8] = s1;
sp40[6] = 0x7FFF;
sp40[0] = sp38[0];
sp40[1] = sp38[1];
sp40[2] = sp38[2];
((s32 (*)(s16 *, s32))func_8012C51C)(sp40, (s32)a0);
}
}
}
{
s32 *p, *q;
s32 s0, s1, s4, s5;
s5 = 0xE;
func_8012EC04((s32)a0, 0xE, sp18);
for (s4 = 12, q = &D_801F61F0; s4 < 13; s4++, q++) {
if (*q % 80 == 0) {
p = ((s32 **)(*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x24)))[0xE];
if (p[1] == 1) {
s1 = p[3];
} else {
s1 = (s32)((u8 *)p + ((((u32)p[3] >> 2) << 2) + 0xC));
}
s0 = p[4] - 1;
s1 = s1 + (rand() % (u32)s0) * 8;
((void (*)(s32 *, s32, s16 *))func_8012F14C)(sp18, s1, sp38);
sp40[3] = 0x3C5;
sp40[7] = s5;
sp40[5] = 0;
sp40[4] = 0;
*(s32 *)&sp40[8] = s1;
sp40[6] = 0x7FFF;
sp40[0] = sp38[0];
sp40[1] = sp38[1];
sp40[2] = sp38[2];
((s32 (*)(s16 *, s32))func_8012C51C)(sp40, (s32)a0);
}
}
}
{
s32 *p, *q;
s32 s0, s1, s4, s5;
s5 = 0xF;
func_8012EC04((s32)a0, 0xF, sp18);
for (s4 = 13, q = &D_801F61F4; s4 < 16; s4++, q++) {
if (*q % 80 == 0) {
p = ((s32 **)(*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x24)))[0xF];
if (p[1] == 1) {
s1 = p[3];
} else {
s1 = (s32)((u8 *)p + ((((u32)p[3] >> 2) << 2) + 0xC));
}
s0 = p[4] - 1;
s1 = s1 + (rand() % (u32)s0) * 8;
((void (*)(s32 *, s32, s16 *))func_8012F14C)(sp18, s1, sp38);
sp40[3] = 0x3C5;
sp40[7] = s5;
sp40[5] = 0;
sp40[4] = 0;
*(s32 *)&sp40[8] = s1;
sp40[6] = 0x7FFF;
sp40[0] = sp38[0];
sp40[1] = sp38[1];
sp40[2] = sp38[2];
((s32 (*)(s16 *, s32))func_8012C51C)(sp40, (s32)a0);
}
}
}
}
extern void (*D_8018E940[])(void);
extern s32 D_801F61C0[];
void func_80189098(void *a0) {
s32 *p;
s32 i;
D_8018E940[*(u16 *)((s32)a0 + 0x2)]();
i = 0;
p = D_801F61C0;
do {
i++;
*p += 1;
p++;
} while (i < 16);
}
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_80189098);
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_801890FC);
@@ -5480,11 +5718,89 @@ void func_80189D98(void) {
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_80189DB8);
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_80189EF4);
extern void func_8012C218(void *a0);
extern void func_8012CBCC(s32 a0);
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_80189F70);
void func_80189EF4(void *a0) {
*(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) - 1;
if ((((s32 (*)(s32))func_8012CBCC)((s32)a0) & 0x2000) != 0 ||
*(s32 *)((s32)a0 + 0x1C) == 0) {
func_8012C218((void *)a0);
} else {
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) =
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) + *(u16 *)((s32)a0 + 0xFC);
}
}
extern void func_8012C218(void *a0);
void func_80189F70(void *param_1)
{
if ((--*(s32 *)((char *)param_1 + 0x1C)) == 0) {
func_8012C218(param_1);
} else {
*(s32 *)((char *)param_1 + 0x8) =
*(s32 *)(*(s32 *)((char *)param_1 + 0x64) + 8) + *(s32 *)((char *)param_1 + 0x14);
*(s32 *)((char *)param_1 + 0xC) =
*(s32 *)(*(s32 *)((char *)param_1 + 0x64) + 0xC) + *(s32 *)((char *)param_1 + 0x18);
}
}
extern u8 D_801F6140;
extern u8 D_801F6141;
extern u8 D_801F6142;
extern u8 D_801F6144;
extern u8 D_801F6145;
extern u8 D_801F6146;
extern u8 D_801F6180;
extern u8 D_801F6181;
extern u8 D_801F6182;
extern u8 D_801F6184;
extern u8 D_801F6185;
extern u8 D_801F6186;
void func_80189FDC(s32 param_1)
{
register s32 s1 __asm__("$17");
register s32 s0 __asm__("$16");
s1 = param_1;
s0 = *(s32 *)((s32)param_1 + 0x20);
switch (*(s32 *)((s32)param_1 + 0x2C)) {
case 0:
*(s16 *)((s32)s0 + 0x12) = 0x400;
*(s32 *)((s32)s0 + 4) |= 0x60000000;
D_801F6180 = 0;
D_801F6184 = 0;
D_801F6185 = 0;
D_801F6186 = 0;
D_801F6181 = 0;
D_801F6182 = 0;
*(s32 *)((s32)s1 + 0x1C) = 0x3C;
break;
case 1:
*(s16 *)((s32)s0 + 0x12) = 0x400;
*(s32 *)((s32)s0 + 4) |= 0x50000000;
D_801F6140 = 0xC0;
D_801F6144 = 0;
D_801F6145 = 0;
D_801F6146 = 0;
D_801F6141 = 0;
D_801F6142 = 0;
*(s32 *)((s32)s1 + 0x1C) = 0x3C;
break;
case 2:
*(s16 *)((s32)s0 + 0x1E) = 0xC00;
*(s32 *)((s32)s0 + 4) |= 0x60000000;
*(s16 *)((s32)s0 + 0x10) = rand();
*(s16 *)((s32)s0 + 0x12) = rand();
break;
}
*(u16 *)((s32)s1 + 2) += 1;
}
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_80189FDC);
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_8018A124);