mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-02 07:59:52 -04:00
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:
+2
-1
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user