mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 15:43:06 -04:00
feat(decomp): ox wave dw overlays — 33 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
+1
-1
@@ -147,7 +147,7 @@ build/src/ov_SC03_001/ov_SC03_001_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC03_001/ov_SC03_001_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_001/ov_SC03_001_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_001/ov_SC03_001_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14,+0x34
|
||||
build/src/ov_SC03_001/ov_SC03_001_jr_80184F64.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC03_001/ov_SC03_001_jr_8018A3A8.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38
|
||||
build/src/ov_SC03_001/ov_SC03_001_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
|
||||
@@ -168,7 +168,7 @@ segments:
|
||||
- [0xc4bac, .rodata, ov_SC03_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc4c38, data, tail17]
|
||||
- [0xc4c3c, .rodata, ov_SC03_001_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc4c70, data, tail18]
|
||||
- [0xc4c84, data, tail18]
|
||||
- [0xc4c9c, .rodata, ov_SC03_001_jr_80184DDC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc4cb0, data, tail19]
|
||||
- [0xc4cb4, .rodata, ov_SC03_001_jr_80184F64] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
|
||||
@@ -59,7 +59,10 @@ void func_800CB018(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CB054);
|
||||
void func_800CB054(void *a0) {
|
||||
*(s32 *)((s32)a0 + 0xC0) = 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CB05C);
|
||||
|
||||
|
||||
@@ -90,7 +90,38 @@ void func_800CB1C0(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CB21C);
|
||||
extern void func_8014659C(void);
|
||||
|
||||
void func_800CB21C(s32 a0) {
|
||||
typedef void (*Fn)(s32);
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
extern void func_8001C2C4(s32 a0);
|
||||
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_80146CA0(void *a0);
|
||||
extern void func_80162CCC(void);
|
||||
|
||||
iVar1 = *(s32 *)(a0 + 0x4C);
|
||||
iVar2 = ((s32 (*)(void))func_8014659C)();
|
||||
*(s32 *)(a0 + 0x20) = iVar2;
|
||||
if (iVar2 != 0) {
|
||||
func_8001C2C4(iVar2);
|
||||
*(u32 *)(iVar2 + 4) |= 0x80000000;
|
||||
func_80149374(iVar1, a0 + 4);
|
||||
*(u16 *)(iVar2 + 0x10) = *(u16 *)(iVar1 + 0x100);
|
||||
*(u16 *)(iVar2 + 0x14) = *(u16 *)(iVar1 + 0x104);
|
||||
*(u16 *)(iVar2 + 0x12) = *(u16 *)(*(s32 *)(iVar1 + 0x20) + 0x12);
|
||||
func_80146DE8((s32 *)a0, 0, 0, (s32)0xFFC00000);
|
||||
func_80146E90((s32 *)a0, 0x10);
|
||||
func_80146CA0((void *)a0);
|
||||
} else {
|
||||
((Fn)func_80162CCC)(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_800CB2E0(void *arg0) {
|
||||
extern s32 func_80146E98(s32 a0);
|
||||
|
||||
@@ -129,7 +129,11 @@ void func_800CCE24(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCEA0);
|
||||
s32 func_800CCEA0(void *a0) {
|
||||
*(s32 *)((s32)a0 + 0x234) = 150;
|
||||
return 150;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCEAC);
|
||||
|
||||
|
||||
@@ -465,7 +465,10 @@ void func_800CDA14(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CDA44);
|
||||
void func_800CDA44(s32 *a0) {
|
||||
*(s16 *)((s32)a0 + 0x1C8) = 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80161A30(s32 a0);
|
||||
extern void (*D_800CE0AC[])(void);
|
||||
|
||||
@@ -371,7 +371,12 @@ void func_801EE278(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC05_029/nonmatchings/md_SC05_029", func_801EE2B4);
|
||||
void func_801EE2B4(void) {
|
||||
|
||||
extern s32 D_801F7368;
|
||||
D_801F7368 = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2601,7 +2601,23 @@ void func_801A4A78(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4CF4);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012B260(u8 *a0);
|
||||
|
||||
void func_801A4CF4(s32 a0) {
|
||||
s32 a1 = *(s32 *)(a0 + 0x64);
|
||||
|
||||
if (*(s16 *)(a1 + 0x36) != *(s16 *)(a0 + 0x10A)) {
|
||||
func_8012C218((void *)a0);
|
||||
return;
|
||||
}
|
||||
|
||||
*(s32 *)(a0 + 0x4) = *(s32 *)(a1 + 0x38);
|
||||
*(s32 *)(a0 + 0x8) = *(s32 *)(a1 + 0x3C);
|
||||
*(s32 *)(a0 + 0xC) = *(s32 *)(a1 + 0x40);
|
||||
func_8012B260((u8 *)a0);
|
||||
}
|
||||
|
||||
|
||||
typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_801A4D58;
|
||||
|
||||
|
||||
@@ -3433,7 +3433,27 @@ void func_8017D440(s32 a0, s32 a1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017BE9C", func_8017D494);
|
||||
void func_8017D494(s32 a0) {
|
||||
extern u8 D_800B9A15;
|
||||
extern unsigned char D_800B9A13;
|
||||
extern u16 D_80115110;
|
||||
extern u16 D_80115112;
|
||||
extern s16 D_80115126;
|
||||
extern s16 D_801A3328;
|
||||
extern void *D_8011DB24;
|
||||
extern void func_8013E5E8(void);
|
||||
void *func_ptr;
|
||||
|
||||
D_800B9A15 = 1;
|
||||
D_80115112 = 7;
|
||||
D_800B9A13 = 1;
|
||||
func_ptr = func_8013E5E8;
|
||||
D_80115110 = 0;
|
||||
D_80115126 = (s16)a0;
|
||||
D_801A3328 = 0;
|
||||
D_8011DB24 = func_ptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_80029444(void);
|
||||
|
||||
@@ -3282,7 +3282,10 @@ void func_80180650(s32 a0, s32 out) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80180720);
|
||||
s32 func_80180720(s32 a0) {
|
||||
return -a0 & 0xFFF;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80047948(s32 a0);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
|
||||
@@ -8266,7 +8266,27 @@ s32 func_8018AD20(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018AD8C);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern void func_8018A4C4(s32 a0);
|
||||
extern s32 D_801E4A58[];
|
||||
|
||||
void func_8018AD8C(s32 arg0, s32 arg1)
|
||||
{
|
||||
s32 s0 = D_801E4A58[arg0];
|
||||
|
||||
if (s0 != 0) {
|
||||
*(s16 *)(s0 + 0xFE) = arg1;
|
||||
*(s32 *)(s0 + 0xC) = 0;
|
||||
*(s32 *)(s0 + 8) = 0;
|
||||
*(s32 *)(s0 + 4) = 0;
|
||||
*(s16 *)(s0 + 0xFC) = 1;
|
||||
func_8012AD44((s32 *)s0, 2);
|
||||
func_8018A4C4(s0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -5860,7 +5860,14 @@ void func_801839C8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80183A40);
|
||||
void func_80183A40(s32 arg0) {
|
||||
void **fp = *(void ***)(*(s32 *)((s32)arg0 + 0x64) + 0xDC);
|
||||
|
||||
if (fp != NULL && *fp != NULL) {
|
||||
(*(void (*)(void)) * fp)();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80183A88);
|
||||
|
||||
|
||||
@@ -6704,7 +6704,19 @@ void func_80180ECC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180FA0);
|
||||
extern void func_80188A14(void *a0, s32 a1, s32 a2);
|
||||
extern s32 func_801886A0(s32 arg0);
|
||||
extern s32 func_80187A64(s32 a0);
|
||||
|
||||
void func_80180FA0(void *arg0) {
|
||||
func_80188A14(arg0, 0xC, 1);
|
||||
if (func_801886A0(0xC)) {
|
||||
if (func_80187A64((s32)arg0)) {
|
||||
func_80180B1C((s32)arg0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -7613,9 +7625,72 @@ extern void func_80187778(s32*, s32);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801826B8);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_80187750(s32);
|
||||
|
||||
void func_801826B8(void *arg0) {
|
||||
extern s16 D_801C36E8;
|
||||
*(short *)((char *)arg0 + 0x2) = 0xA;
|
||||
func_8012E88C((s32)arg0);
|
||||
func_8012A828((s32 *)arg0, (s32)&D_801C36E8);
|
||||
func_80187750((s32)arg0);
|
||||
*(short *)((char *)arg0 + 0x34) = 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80187A64(s32 a0);
|
||||
extern s32 func_801886A0(s32 a0);
|
||||
extern short D_80191D6C;
|
||||
extern u8 D_801B9360[];
|
||||
extern u8 D_801B93A4[];
|
||||
extern u8 D_801B93F4[];
|
||||
extern void func_80187778(s32*, s32);
|
||||
extern void func_80187994(s32, s32, s32, s32);
|
||||
|
||||
void func_80182704(void *a0)
|
||||
{
|
||||
switch (*(u16 *)((s32)a0 + 0x34)) {
|
||||
case 0:
|
||||
if (func_801886A0(0xD) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 1;
|
||||
func_80187994((s32)a0, (s32)D_801B93F4, 1, 0x80);
|
||||
return;
|
||||
case 1:
|
||||
func_801886A0(0xD);
|
||||
if (((s32 (*)(s32))func_80187A64)((s32)a0) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 2;
|
||||
func_80187994((s32)a0, (s32)D_801B93A4, 1, 0x80);
|
||||
return;
|
||||
case 2:
|
||||
if (((s32 (*)(s32))func_80187A64)((s32)a0) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 3;
|
||||
*(s32 *)((s32)a0 + 0x1C) = 0x20;
|
||||
return;
|
||||
case 3:
|
||||
if (func_801886A0(3) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 4;
|
||||
func_80187994((s32)a0, (s32)D_801B9360, 1, 0x80);
|
||||
return;
|
||||
case 4:
|
||||
func_801886A0(3);
|
||||
if (((s32 (*)(s32))func_80187A64)((s32)a0) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x2) = 1;
|
||||
func_80187778((s32 *)a0, (s32)&D_80191D6C);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182704);
|
||||
|
||||
|
||||
extern void (*D_80191E0C[])(void);
|
||||
|
||||
@@ -3732,4 +3732,66 @@ void func_801898E4(void)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80189030", func_8018A270);
|
||||
void func_8018A270(void) {
|
||||
|
||||
extern s32 D_801151D0;
|
||||
extern s32 D_801151C8[];
|
||||
extern u16 xf02 __asm__("D_800B9A02");
|
||||
extern s16 xa __asm__("D_8011511A");
|
||||
extern u16 xb __asm__("D_8011511A");
|
||||
extern s32 func_8014168C(s32 a0);
|
||||
extern u8 D_80115138[];
|
||||
extern s32 D_801EF1E0;
|
||||
extern s32 D_80115130;
|
||||
extern void func_80139954(void);
|
||||
extern s32 func_801376E8(s32 a0, s32 a1);
|
||||
extern s32 D_801C17F0;
|
||||
extern s32 D_801EF1E4;
|
||||
extern void func_80137B80(void);
|
||||
extern s32 func_8018AEE8(void);
|
||||
extern void func_8018B238(void);
|
||||
extern s32 func_8018B8DC(s32 a0, s32 a1);
|
||||
extern u8 D_800B9A15;
|
||||
extern s16 D_801EEB10;
|
||||
extern u16 D_80115112;
|
||||
|
||||
s32 pad[2];
|
||||
s32 v;
|
||||
s32 r2;
|
||||
s32 ret;
|
||||
s16 rn;
|
||||
s32 b;
|
||||
s32 *p30;
|
||||
u16 *p12;
|
||||
|
||||
D_801151D0 = ((s32 *)D_801151C8)[xf02];
|
||||
ret = func_8018AEE8();
|
||||
func_8018B238();
|
||||
r2 = func_8014168C(xa);
|
||||
b = D_80115138[xb];
|
||||
if (D_801EF1E0 == 0) {
|
||||
v = func_8018B8DC(b, (s16)r2);
|
||||
} else {
|
||||
v = D_801EF1E0;
|
||||
}
|
||||
if (v != 0) {
|
||||
p30 = &D_80115130;
|
||||
if (v != *p30) {
|
||||
*p30 = v;
|
||||
func_80139954();
|
||||
D_801EF1E4 = func_801376E8(v, &D_801C17F0);
|
||||
}
|
||||
}
|
||||
func_80137B80();
|
||||
rn = ret;
|
||||
if (rn < 0) {
|
||||
func_80139954();
|
||||
D_800B9A15 = 0;
|
||||
if (D_801EEB10 == 0) {
|
||||
func_8002D4C8(0x474, 0);
|
||||
}
|
||||
p12 = &D_80115112;
|
||||
*p12 += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4961,7 +4961,16 @@ s32 aF80181990(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017D604", func_80181A10);
|
||||
void func_80181A10(void *a0)
|
||||
{
|
||||
s32 v0;
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2;
|
||||
v0 = func_8018317C(5, 0, 5, 0x1E);
|
||||
if (v0 != 0) {
|
||||
func_80181548(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80029504(void);
|
||||
extern int func_80178970(void);
|
||||
|
||||
@@ -7502,7 +7502,30 @@ extern s32 func_8012BEE8(s32 arg);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182AFC);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_8012BCCC(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern u8 D_801CAF38[];
|
||||
|
||||
void func_80182AFC(s32 param_1) {
|
||||
s32 ret;
|
||||
s32 cnt;
|
||||
|
||||
if (func_8012BEE8(param_1) == 1) {
|
||||
ret = func_8012BCCC(param_1);
|
||||
if (ret < 0x9001) {
|
||||
func_801824FC(param_1);
|
||||
} else {
|
||||
cnt = *(u16 *)(param_1 + 0xDC) + 1;
|
||||
*(u16 *)(param_1 + 0xDC) = cnt;
|
||||
if (((s16)cnt >= 0x79) && (ret > 0x24000)) {
|
||||
*(u16 *)(param_1 + 2) = 1;
|
||||
func_8012A828(param_1, D_801CAF38);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// @class: plumbing
|
||||
@@ -7602,7 +7625,53 @@ void func_80182D04(int param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182D88);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
extern s32 func_8012BC60(void *a0, void *a1);
|
||||
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
|
||||
extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3);
|
||||
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
void func_80182D88(s32 arg0) {
|
||||
extern u8 D_801202A0[];
|
||||
u8 *p;
|
||||
s32 i;
|
||||
s16 *self4;
|
||||
unsigned int *sc;
|
||||
s16 v10[4]; /* sp+0x10 */
|
||||
s16 v18[4]; /* sp+0x18 */
|
||||
s32 sp20[2]; /* sp+0x20 */
|
||||
|
||||
p = D_801202A0;
|
||||
i = 0;
|
||||
self4 = (s16 *)(arg0 + 4);
|
||||
sc = (unsigned int *)sp20;
|
||||
do {
|
||||
if (*(u16 *)p != 0 && *(s32 *)(p + 0x58) != 0 && (u8 *)arg0 != p) {
|
||||
if (func_8012BC60((void *)self4, (void *)(p + 4)) < 0x1000) {
|
||||
func_8012B0B4(sc, func_8012B6D4(self4, (s16 *)(p + 4)), 0x41);
|
||||
v18[0] = *(u16 *)(p + 6);
|
||||
v18[1] = *(u16 *)(p + 0xA);
|
||||
v18[2] = *(u16 *)(p + 0xE);
|
||||
v18[0] += sp20[0];
|
||||
v18[2] += sp20[0] >> 16;
|
||||
v10[0] = *(u16 *)(arg0 + 0x3A);
|
||||
v10[1] = *(u16 *)(arg0 + 0x3E);
|
||||
v10[2] = *(u16 *)(arg0 + 0x42);
|
||||
if ((func_8012CEB0((s32)v10, (s32)v18, 0) & 0x2000) == 0) {
|
||||
func_8012ADE4((u8 *)arg0);
|
||||
return;
|
||||
}
|
||||
*(u16 *)(arg0 + 6) = v18[0];
|
||||
*(u16 *)(arg0 + 0xA) = v18[1];
|
||||
*(u16 *)(arg0 + 0xE) = v18[2];
|
||||
return;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
p += 0x10C;
|
||||
} while (i < 0x60);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 arg0, s32 arg1);
|
||||
void func_80182F00(void) {
|
||||
|
||||
@@ -4789,7 +4789,15 @@ void func_80180228(void *a0) {
|
||||
void func_80180324(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8018032C);
|
||||
extern s32 func_8012E544(s32 a0);
|
||||
extern s32 func_80178BF8();
|
||||
|
||||
void func_8018032C(void) {
|
||||
s32 v0 = func_8012E544(0x106);
|
||||
*(s16 *) (v0 + 2) = 2;
|
||||
func_80178BF8();
|
||||
}
|
||||
|
||||
|
||||
void func_80180358(void *a0) {
|
||||
*(short *)((char *)a0 + 0x2) = 0x4;
|
||||
|
||||
@@ -5342,7 +5342,51 @@ void func_80181F7C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017DF84", func_80182108);
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
|
||||
void func_80182108(s32 arg0)
|
||||
{
|
||||
s32 s0;
|
||||
for (s0 = 0; s0 < 0x49; s0 += 0x18) {
|
||||
s32 a1 = func_80132EF4(arg0, 0x22);
|
||||
if (a1 == 0)
|
||||
continue;
|
||||
{
|
||||
register s32 v0 __asm__("v0");
|
||||
register s32 v1 __asm__("v1");
|
||||
register s32 a0 __asm__("a0");
|
||||
v0 = *(u16 *)(arg0 + 0x84);
|
||||
a0 = *(u16 *)(a1 + 0xE);
|
||||
v0 &= 0x4;
|
||||
v1 = v0 * 2;
|
||||
__asm__("":"=r"(v1):"0"(v1));
|
||||
v1 = v1 + v0;
|
||||
v1 = s0 + v1;
|
||||
v1 = v1 - 0x2A;
|
||||
v0 = *(u16 *)(a1 + 0x6);
|
||||
a0 += 0x28;
|
||||
*(u16 *)(a1 + 0xE) = a0;
|
||||
v0 -= v1;
|
||||
*(u16 *)(a1 + 0x6) = v0;
|
||||
v0 = *(u16 *)(a1 + 0xA);
|
||||
v1 = v1 << 16;
|
||||
v0 -= 0x20;
|
||||
*(u16 *)(a1 + 0xA) = v0;
|
||||
v0 = v1 >> 16;
|
||||
if (v0 >= 0) {
|
||||
v0 = v0 << 7;
|
||||
} else {
|
||||
v0 = v0 << 7;
|
||||
v0 = -v0;
|
||||
}
|
||||
v0 += 0x1000;
|
||||
*(u16 *)(a1 + 0x34) = v0;
|
||||
*(s32 *)(a1 + 0x14) = 0xFFFE0000;
|
||||
*(s32 *)(a1 + 0x18) = 0x30000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -2914,7 +2914,69 @@ void func_801828B8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80182268", func_80182968);
|
||||
|
||||
|
||||
/* 8 bytes, align 2 -> lwl/lwr/swl/swr copy (cookbook §48-C2) */
|
||||
|
||||
extern u16 func_80148800(s32 *a0);
|
||||
extern void func_80182B48(s32 param_1, s16 *param_2);
|
||||
extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
void func_80182968(s32 a0) {
|
||||
|
||||
extern s32 D_80126B58;
|
||||
extern s16 D_8019071C[];
|
||||
extern Blk8_80126940_8017D6D0_80182A98 D_80126940;
|
||||
Blk8_80126940_8017D6D0_80182A98 sp10;
|
||||
u8 t;
|
||||
s16 v1;
|
||||
register s16 c __asm__("$4"); /* clamp store value — target stores every bound from $a0 */
|
||||
|
||||
if (func_80148800(&D_80126B58) & 3) {
|
||||
t = (*(u8 *)(a0 + 5) + 1) & 1;
|
||||
*(u8 *)(a0 + 5) = t;
|
||||
*(s32 *)(a0 + 0x14) = D_8019071C[t];
|
||||
}
|
||||
sp10 = D_80126940;
|
||||
|
||||
v1 = sp10.v[0];
|
||||
if (v1 >= 0x440) {
|
||||
if (v1 < 0x500) {
|
||||
*(s16 *)(a0 + 0x2E) = 0x500 - v1;
|
||||
} else {
|
||||
*(s16 *)(a0 + 0x2E) = 0;
|
||||
}
|
||||
} else {
|
||||
*(s16 *)(a0 + 0x2E) = 0;
|
||||
}
|
||||
|
||||
*(s16 *)(a0 + 0x28) = (s16)func_80012F74(*(s16 *)(a0 + 0x28), *(s16 *)(a0 + 0x2E), 4, 1);
|
||||
|
||||
{
|
||||
s16 lo = 0x380;
|
||||
if (sp10.v[0] < lo) {
|
||||
c = lo;
|
||||
sp10.v[0] = c;
|
||||
}
|
||||
}
|
||||
{
|
||||
s16 lim = 0x580;
|
||||
if (lim < sp10.v[0]) {
|
||||
c = lim;
|
||||
sp10.v[0] = c;
|
||||
}
|
||||
}
|
||||
{
|
||||
s16 lo2 = 0xC0;
|
||||
if (sp10.v[2] < lo2) {
|
||||
c = lo2;
|
||||
sp10.v[2] = c;
|
||||
}
|
||||
}
|
||||
|
||||
func_80182B48(a0, sp10.v);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 8 bytes, align 2 -> lwl/lwr/swl/swr copy (cookbook §48-C2) */
|
||||
|
||||
@@ -3488,7 +3488,48 @@ void func_8017D3B8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_8017D458);
|
||||
typedef struct { s16 v[4]; } Blk8_80126940_8017D458;
|
||||
|
||||
void func_8017D458(s32 a0) {
|
||||
|
||||
extern s32 D_80126B58;
|
||||
extern s16 D_8018B48C[];
|
||||
extern Blk8_80126940_8017D458 D_80126940;
|
||||
Blk8_80126940_8017D458 sp10;
|
||||
u8 t;
|
||||
s16 v0, v1, lim;
|
||||
|
||||
if (func_80148800(&D_80126B58) & 3) {
|
||||
t = (*(u8 *)(a0 + 5) + 1) & 1;
|
||||
*(u8 *)(a0 + 5) = t;
|
||||
*(s32 *)(a0 + 0x14) = D_8018B48C[t];
|
||||
}
|
||||
sp10 = D_80126940;
|
||||
|
||||
/* Clamp sp10.v[0] */
|
||||
lim = -0x5C0;
|
||||
v0 = sp10.v[0];
|
||||
if (v0 < lim) {
|
||||
sp10.v[0] = lim;
|
||||
}
|
||||
|
||||
/* Clamp sp10.v[0] */
|
||||
v1 = sp10.v[0];
|
||||
lim = -0x5C0;
|
||||
if (lim < v1) {
|
||||
sp10.v[0] = lim;
|
||||
}
|
||||
|
||||
/* Clamp sp10.v[2] */
|
||||
v1 = sp10.v[2];
|
||||
lim = 0x1340;
|
||||
if (lim < v1) {
|
||||
sp10.v[2] = lim;
|
||||
}
|
||||
|
||||
func_8017D6D0(a0, sp10.v);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_8017D544);
|
||||
|
||||
|
||||
@@ -5154,7 +5154,12 @@ void func_80181778(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017D898", func_801819DC);
|
||||
void func_801819DC(s32 a0)
|
||||
{
|
||||
*(u16 *)(a0 + 0x2) = 1;
|
||||
*(u16 *)(a0 + 0x5C) = 0xA810;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 rand(void);
|
||||
|
||||
@@ -6030,7 +6030,19 @@ extern void func_80178CBC(s32 *a0, s32 a1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180BB0);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
|
||||
void func_80180BB0(void *a0) {
|
||||
extern u32 D_8018FE2C;
|
||||
if (func_80178970() != 0) {
|
||||
((void (*)(s32))func_80178D18)((s32)a0);
|
||||
*(short *)((char *)a0 + 0x2) = 1;
|
||||
*(s32 *)((char *)a0 + 0x58) = (s32)&D_8018FE2C | 0x40000000;
|
||||
*(short *)((char *)a0 + 0x5C) = 0x800;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_8012C1B8(void);
|
||||
|
||||
@@ -3010,7 +3010,22 @@ void func_80181EC4(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_80181F2C);
|
||||
extern s32 func_801842D4(s32 arg0, s32 arg1);
|
||||
extern u8 D_80078EBA;
|
||||
|
||||
void func_80181F2C(void *a0) {
|
||||
s32 v0;
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2;
|
||||
if (D_80078EBA == 3) {
|
||||
v0 = 0;
|
||||
} else {
|
||||
v0 = func_801842D4(7, 0x13) != 0;
|
||||
}
|
||||
if (v0 != 0) {
|
||||
*(s16 *)((s32)a0 + 2) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012E57C(s32 a0, s32 a1);
|
||||
extern s32 func_801842D4(s32 arg0, s32 arg1);
|
||||
|
||||
@@ -3904,7 +3904,28 @@ extern s32 func_8012AD50(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017D604", func_8017FD98);
|
||||
extern void func_8017FE60();
|
||||
|
||||
void func_8017FD98(void *a0) {
|
||||
typedef struct { short vx, vy, vz, pad; } SVFD98;
|
||||
extern SVFD98 D_801C2D6C;
|
||||
extern SVFD98 D_801C2D74;
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
SVFD98 buf10;
|
||||
SVFD98 buf18;
|
||||
SVFD98 buf20;
|
||||
|
||||
buf10 = D_801C2D6C;
|
||||
buf18 = D_801C2D74;
|
||||
if (*(s16 *)((s32)a0 + 0xFC) == 0) {
|
||||
func_8017FE60(&buf10, &buf18);
|
||||
} else {
|
||||
func_80015978((s32)a0 + 4, (s32 *)&buf20);
|
||||
func_8017FE60(&buf10, &buf20);
|
||||
func_8017FE60(&buf20, &buf18);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* identical layout to SVECTOR_8016E7C8 (src/shared/engine_types.h) */
|
||||
|
||||
@@ -4941,7 +4941,13 @@ void func_8017F470(s32 param_1) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_8017F4EC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_8017F534);
|
||||
extern void func_8017F55C(s32 a0, s32 a1);
|
||||
extern u8 D_8018C054[];
|
||||
|
||||
void func_8017F534(s32 arg0) {
|
||||
func_8017F55C(arg0, D_8018C054);
|
||||
}
|
||||
|
||||
|
||||
typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017F55C; /* 0x20 bytes, align 4 */
|
||||
|
||||
|
||||
@@ -5488,126 +5488,7 @@ void func_801826E4(s32 param_1)
|
||||
}
|
||||
|
||||
|
||||
void func_801827DC(s32 param_1)
|
||||
{
|
||||
extern void func_80186C1C(void);
|
||||
extern void func_80183F10(void);
|
||||
extern void func_8018BA9C(void);
|
||||
extern void func_80183EA8(void);
|
||||
extern void func_8018BAC4(void);
|
||||
extern void func_80182D34(s32 a0);
|
||||
extern void func_8018AC00(void *a0);
|
||||
extern void func_8012BEE8(u8 *a0);
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern void func_8018637C(s32 arg0, s32 arg1);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8018B9D4();
|
||||
extern void func_80182AF8();
|
||||
extern void *D_80194500[][3];
|
||||
extern s32 aFC4C[] __asm__("D_801EFC4C");
|
||||
extern s32 D_801EFC54;
|
||||
extern s32 D_801EFC5C;
|
||||
extern s32 D_801EFC60;
|
||||
extern s32 D_801EFC64[];
|
||||
extern s32 D_801EFC68;
|
||||
extern s32 D_801EFD28;
|
||||
extern u16 D_801EFD40;
|
||||
extern u8 D_80190B88[];
|
||||
s32 r;
|
||||
s32 obj;
|
||||
u16 t;
|
||||
u16 f;
|
||||
|
||||
switch (*(u16 *)(param_1 + 0x34)) {
|
||||
case 0:
|
||||
case 1:
|
||||
if (*(s16 *)(param_1 + 0x98) == 0) {
|
||||
func_8018637C(param_1, (s32)D_80194500[*(s16 *)(param_1 + 0xE2)][*(u16 *)(param_1 + 0x34) + 1]);
|
||||
goto incr;
|
||||
}
|
||||
goto draw;
|
||||
case 2:
|
||||
if (*(s32 *)(param_1 + 0x94) != 0xB) {
|
||||
goto draw;
|
||||
}
|
||||
func_80186C1C();
|
||||
*(s16 *)(param_1 + 0x76) = 0x64;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x80;
|
||||
*(s16 *)(param_1 + 0xF2) = 1;
|
||||
*(s16 *)(param_1 + 0xE2) = (s16)*(u16 *)(param_1 + 0xE2) >> 1;
|
||||
func_8013C9C4(D_80190B88);
|
||||
func_8018AC00((void *)aFC4C[0]);
|
||||
func_8018AC00((void *)D_801EFC54);
|
||||
func_8018AC00((void *)D_801EFC5C);
|
||||
func_8018AC00((void *)D_801EFC60);
|
||||
func_8018AC00((void *)D_801EFC64[0]);
|
||||
func_8018AC00((void *)D_801EFC68);
|
||||
func_8002D4C8(0x907, 0);
|
||||
incr:
|
||||
*(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1;
|
||||
draw:
|
||||
func_8018B9D4(D_801EFC54, *(s32 *)(param_1 + 0xD0));
|
||||
return;
|
||||
case 3:
|
||||
if (*(s16 *)(param_1 + 0x76) == 0) {
|
||||
t = *(u16 *)(param_1 + 0xF6) - 1;
|
||||
*(u16 *)(param_1 + 0xF6) = t;
|
||||
*(s16 *)&D_801EFD28 = (s16)t * 100;
|
||||
func_80183F10();
|
||||
obj = *(s32 *)(param_1 + 0xD0);
|
||||
if (obj != 0) {
|
||||
*(u16 *)(obj + 0x1A) = 0x800;
|
||||
*(u16 *)(obj + 0x18) = 0x800;
|
||||
}
|
||||
func_8018BA9C();
|
||||
*(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1;
|
||||
if (*(s16 *)(param_1 + 0xF6) == 0) {
|
||||
f = D_801EFD40;
|
||||
*(s32 *)(param_1 + 0x1C) = 8;
|
||||
D_801EFD40 = f | 0x100;
|
||||
return;
|
||||
}
|
||||
*(s32 *)(param_1 + 0x1C) = 0x10;
|
||||
return;
|
||||
}
|
||||
r = ((s32 (*)(s32))func_8012BEE8)((s32)param_1);
|
||||
if (r == 0) {
|
||||
if (((*(s32 *)(param_1 + 0x1C) & 0xF) == 0) && (*(s16 *)(param_1 + 0xF2) != 0)) {
|
||||
*(s16 *)(param_1 + 0xF2) = *(s16 *)(param_1 + 0xF2) - 1;
|
||||
func_8013C9C4(D_80190B88);
|
||||
}
|
||||
func_8018B9D4(D_801EFC54, *(s32 *)(param_1 + 0xD0));
|
||||
if ((*(s32 *)(param_1 + 0x1C) & 1) != 0) {
|
||||
return;
|
||||
}
|
||||
func_80183EA8();
|
||||
return;
|
||||
}
|
||||
goto L_af8;
|
||||
case 4:
|
||||
r = ((s32 (*)(s32))func_8012BEE8)((s32)param_1);
|
||||
if (r != 0) {
|
||||
if (*(s16 *)(param_1 + 0xF6) == 0) {
|
||||
func_80182D34(param_1);
|
||||
return;
|
||||
}
|
||||
L_af8:
|
||||
func_80182AF8(param_1);
|
||||
return;
|
||||
}
|
||||
obj = *(s32 *)(param_1 + 0xD0);
|
||||
if (obj != 0) {
|
||||
t = *(u16 *)(obj + 0x18) + 0x600;
|
||||
*(u16 *)(obj + 0x18) = t;
|
||||
*(u16 *)(obj + 0x1A) = t;
|
||||
}
|
||||
func_8018BAC4();
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_801827DC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80182AF8);
|
||||
|
||||
|
||||
@@ -3399,7 +3399,27 @@ void func_801835FC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_801836A4);
|
||||
extern s32 func_801848D0(u8 a0, u8 a1, u8 a2, u8 a3);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_80184990(s32);
|
||||
extern void func_80184BD4(s32, s32, s32, s32);
|
||||
extern u8 D_801B680C[];
|
||||
|
||||
void func_801836A4(void *arg0) {
|
||||
|
||||
extern short D_801B9964;
|
||||
if (func_801848D0(0xB, 0, 0xE, 0xF) != 0) {
|
||||
return;
|
||||
}
|
||||
*(short *)((char *)arg0 + 0x2) = 0xB;
|
||||
*(short *)((char *)arg0 + 0x34) = 0;
|
||||
func_8012E88C((s32)arg0);
|
||||
((void (*)(s32 *, s32))func_8012A828)((s32 *)arg0, (s32)&D_801B9964);
|
||||
func_80184990((s32)arg0);
|
||||
func_80184BD4((s32)arg0, (s32)D_801B680C, 1, 0x60);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern int func_80178970(void);
|
||||
@@ -3478,7 +3498,49 @@ void func_80183830(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_801838A0);
|
||||
extern s32 func_801831C8(void *a0);
|
||||
|
||||
void func_801838A0(void *a0) {
|
||||
s32 v0;
|
||||
void *v1;
|
||||
|
||||
extern s32 func_801844BC(void *a0, void *a1);
|
||||
extern s32 func_801848D0(u8 a0, u8 a1, u8 a2, u8 a3);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern void func_8012E88C(s32 a0);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_80184990(s32 a0);
|
||||
extern void func_801849B8(s32 *a0, s32 a1);
|
||||
extern s32 func_801788B8(s32 arg0, s32 arg1);
|
||||
extern u16 D_80191ED0;
|
||||
extern s16 D_80191EC0;
|
||||
extern s16 D_80191EC8;
|
||||
extern s16 D_801B990C;
|
||||
|
||||
if (func_801844BC(a0, &D_80191ED0) != 0) {
|
||||
v0 = func_801848D0(0xB, 0, 0xE, 0xF);
|
||||
if (v0 != 0) {
|
||||
*(s16 *)((char *)a0 + 0x2) = 8;
|
||||
func_8012E8E0((s32)a0, (s32)&D_80191EC8);
|
||||
func_8012E88C((s32)a0);
|
||||
func_8012A828((s32)a0, (s32)&D_801B990C);
|
||||
func_80184990((s32)a0);
|
||||
} else {
|
||||
v0 = func_801848D0(0xE, 0xF, 0x17, 0);
|
||||
if (v0 != 0) {
|
||||
v0 = 2;
|
||||
} else {
|
||||
v0 = 1;
|
||||
}
|
||||
*(s16 *)((char *)a0 + 0x2) = v0;
|
||||
func_801849B8((s32 *)a0, (s32)&D_80191EC0);
|
||||
}
|
||||
v1 = *(void **)((char *)a0 + 0x68);
|
||||
*(s16 *)((char *)v1 + 0xC) = 0x7FFF;
|
||||
*(s32 *)((char *)a0 + 0xD4) = func_801788B8((s32)a0, (s32)&func_801831C8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_801849B8(s32*, s32);
|
||||
|
||||
@@ -3546,7 +3546,35 @@ void func_801862B0(u8 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_80185754", func_801862F8);
|
||||
void func_801862F8(s32 arg0) {
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern void func_8012C218(void *a0);
|
||||
s32 flag;
|
||||
s32 r;
|
||||
|
||||
r = func_80029504();
|
||||
flag = 0;
|
||||
switch (*(s16 *)((s32)arg0 + 0x70)) {
|
||||
case 0:
|
||||
if ((u32)(r - 0x64) < 0x1E) {
|
||||
flag = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if ((u32)(r - 0x3B6) < 0x32) {
|
||||
flag = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (flag != 0) {
|
||||
func_8012C658(0x21, 1 - *(u16 *)((s32)arg0 + 2), arg0);
|
||||
func_8012C218((void *)arg0);
|
||||
} else if (*(u16 *)((s32)arg0 + 2) == 0) {
|
||||
*(u16 *)((s32)arg0 + 2) = *(u16 *)((s32)arg0 + 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3504,7 +3504,30 @@ void func_8017DC18(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017DC30);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017DCC4);
|
||||
extern s16 D_80126CB0;
|
||||
extern s16 D_80126CAC;
|
||||
|
||||
int func_8017DCC4(s16 *a0) {
|
||||
int data[3];
|
||||
data[0] = D_80126CAC - a0[3];
|
||||
data[1] = 0;
|
||||
data[2] = D_80126CB0 - a0[7];
|
||||
__asm__ __volatile__(
|
||||
"lwc2 $9, 0($sp)\n"
|
||||
"lwc2 $10, 4($sp)\n"
|
||||
"lwc2 $11, 8($sp)\n"
|
||||
"nop\n"
|
||||
"nop\n"
|
||||
"sqr 0\n"
|
||||
: : : "$9", "$10", "$11", "memory");
|
||||
__asm__ __volatile__(
|
||||
"swc2 $25, 0($sp)\n"
|
||||
"swc2 $26, 4($sp)\n"
|
||||
"swc2 $27, 8($sp)\n"
|
||||
: : : "memory");
|
||||
return 0xC3FFF < data[0] + data[1] + data[2];
|
||||
}
|
||||
|
||||
|
||||
void func_8017DD48(void) {
|
||||
extern u8 D_801202A0[];
|
||||
|
||||
@@ -3558,7 +3558,93 @@ void func_80187588(s32 p) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80186574", func_80187624);
|
||||
|
||||
|
||||
|
||||
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
|
||||
"lw $12, 0( %0 );" \
|
||||
"lw $13, 4( %0 );" \
|
||||
"ctc2 $12, $0;" \
|
||||
"ctc2 $13, $1;" \
|
||||
"lw $12, 8( %0 );" \
|
||||
"lw $13, 12( %0 );" \
|
||||
"lw $14, 16( %0 );" \
|
||||
"ctc2 $12, $2;" \
|
||||
"ctc2 $13, $3;" \
|
||||
"ctc2 $14, $4" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "$13", "$14" )
|
||||
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
|
||||
"lw $12, 20( %0 );" \
|
||||
"lw $13, 24( %0 );" \
|
||||
"ctc2 $12, $5;" \
|
||||
"lw $14, 28( %0 );" \
|
||||
"ctc2 $13, $6;" \
|
||||
"ctc2 $14, $7" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "$13", "$14" )
|
||||
|
||||
void func_80187624(s32 param_1)
|
||||
{
|
||||
extern s32 *D_80126B78;
|
||||
extern s32 *D_80126B90;
|
||||
extern u8 D_801152A8[];
|
||||
extern u8 D_801AFCF8[];
|
||||
extern void func_80049CAC(s32 a0, s32 a1);
|
||||
extern void RotTransSV(void *a0, void *a1, void *a2);
|
||||
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5);
|
||||
extern s32 func_8012CBF4(s32 a0);
|
||||
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
MATRIX mat;
|
||||
SVECTOR sv;
|
||||
SVECTOR b;
|
||||
SVECTOR c;
|
||||
SVECTOR flag;
|
||||
s32 iVar;
|
||||
|
||||
sv.vx = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10);
|
||||
sv.vy = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12);
|
||||
sv.vz = 0;
|
||||
func_80049CAC((s32)&sv, (s32)&mat);
|
||||
|
||||
gte_SetRotMatrix(&mat);
|
||||
gte_SetTransMatrix(*(s32 *)(param_1 + 0x20) + 0x34);
|
||||
|
||||
RotTransSV(&D_801AFCF8[0], &b, &flag);
|
||||
RotTransSV(&D_801AFCF8[8], &c, &flag);
|
||||
|
||||
if (func_80135888((s32)D_80126B78, (s32)D_80126B90, (s32)&b, (s32)&c) != 0) {
|
||||
s16 sVar1 = *(s16 *)(param_1 + 0xFE);
|
||||
func_8012F568(1, 1, sVar1, 0x50, (s32)&c, (s32)D_801152A8);
|
||||
} else {
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) =
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) - 0x100;
|
||||
iVar = func_8012CBF4(param_1);
|
||||
if (iVar != 0) {
|
||||
s16 sVar1 = *(s16 *)(param_1 + 6);
|
||||
s16 sVar2 = *(s16 *)(param_1 + 0xA);
|
||||
s16 sVar3 = *(s16 *)(param_1 + 0xE);
|
||||
func_80146A6C(6, (void *)param_1, sVar1, sVar2, sVar3, 0, 0);
|
||||
iVar = func_80132EF4(param_1, 0x22);
|
||||
if (iVar != 0) {
|
||||
*(u16 *)(iVar + 0x34) = 0x2000;
|
||||
}
|
||||
} else {
|
||||
iVar = func_8012BEE8(param_1);
|
||||
if (iVar == 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
func_8012C218((void *)param_1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3821,7 +3907,44 @@ void func_80187A88(s32 a0, s32 a1) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80186574", func_80187D0C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80186574", func_80187DA4);
|
||||
extern s32 func_8012C51C(void *a0, s32 a1);
|
||||
|
||||
typedef struct {
|
||||
u16 f10; /* 0x10 */
|
||||
u16 f12; /* 0x12 */
|
||||
u16 f14; /* 0x14 */
|
||||
s16 f16; /* 0x16 */
|
||||
s16 f18; /* 0x18 */
|
||||
s16 f1a; /* 0x1A */
|
||||
s16 f1c; /* 0x1C */
|
||||
u16 f1e; /* 0x1E */
|
||||
s32 f20; /* 0x20 */
|
||||
} buf_80187DA4;
|
||||
|
||||
void func_80187DA4(a0, a1, a2, a3, a4, a5)
|
||||
s32 a0;
|
||||
void *a1;
|
||||
s32 a2;
|
||||
s32 a3;
|
||||
u16 a4;
|
||||
s32 a5;
|
||||
{
|
||||
buf_80187DA4 sp;
|
||||
u16 t;
|
||||
|
||||
sp.f10 = *(u16 *)a1;
|
||||
sp.f12 = *(u16 *)(2 + (char *)a1);
|
||||
t = *(u16 *)(4 + (char *)a1);
|
||||
sp.f16 = a2;
|
||||
sp.f18 = a3;
|
||||
sp.f1a = 0;
|
||||
sp.f1e = a4;
|
||||
sp.f20 = a5;
|
||||
sp.f1c = 0x7FFF;
|
||||
sp.f14 = t;
|
||||
func_8012C51C(&sp, a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80186574", func_80187E08);
|
||||
|
||||
|
||||
@@ -5043,7 +5043,10 @@ void func_801817E0(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80181834);
|
||||
s32 func_80181834(s32 arg0) {
|
||||
return -(arg0 < 0x640) & 0x98;
|
||||
}
|
||||
|
||||
|
||||
void func_80181844(void) {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user