mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
feat(decomp): ox wave di overlays — 81 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
@@ -111,6 +111,7 @@ build/src/ov_SC01_006/ov_SC01_006_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC01_006/ov_SC01_006_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC01_006/ov_SC01_006_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC01_006/ov_SC01_006_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28
|
||||
build/src/ov_SC01_006/ov_SC01_006_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC01_006_CHECK_SHA := config/check.ov_SC01_006.sha
|
||||
ov_SC01_006_SYMBOLS := config/symbols.ov_SC01_006.txt
|
||||
@@ -911,6 +912,7 @@ build/src/ov_SC02_011/ov_SC02_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC02_011/ov_SC02_011_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC02_011/ov_SC02_011_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC02_011/ov_SC02_011_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC02_011/ov_SC02_011_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC02_011_CHECK_SHA := config/check.ov_SC02_011.sha
|
||||
ov_SC02_011_SYMBOLS := config/symbols.ov_SC02_011.txt
|
||||
|
||||
@@ -106,6 +106,7 @@ segments:
|
||||
- [0x31390, c, ov_MAIN_012_jr_801594E8]
|
||||
- [0x31b2c, c, ov_MAIN_012_jr_80159C84]
|
||||
- [0x32270, c, ov_MAIN_012_jr_8015A3C8]
|
||||
- [0x42a14, c, ov_MAIN_012_jr_8016AB6C]
|
||||
- [0x42d04, c, ov_MAIN_012_jr_8016AE5C]
|
||||
- [0x499f4, c, ov_MAIN_012_jr_80171B4C]
|
||||
- [0x50854, c, ov_MAIN_012_jr_801789AC]
|
||||
@@ -133,6 +134,7 @@ segments:
|
||||
- [0x5b764, data, tail8]
|
||||
- [0x5b768, .rodata, ov_MAIN_012_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x5b7e4, data, tail9]
|
||||
- [0x5b7fc, .rodata, ov_MAIN_012_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x5b81c, .rodata, ov_MAIN_012_jr_8016AE5C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x5b83c, data, tail10]
|
||||
- [0x5b87c, .rodata, ov_MAIN_012_jr_80171B4C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
|
||||
@@ -173,13 +173,12 @@ segments:
|
||||
- [0xbe894, data, tail18]
|
||||
- [0xbe924, .rodata, ov_SC02_000_jr_8017FB24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xbe944, .rodata, ov_SC02_000_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xbe984, data, tail19]
|
||||
- [0xbe9a4, .rodata, ov_SC02_000_jr_801808C4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xbe9e4, .rodata, ov_SC02_000_jr_80180D6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xbeaa4, .rodata, ov_SC02_000_jr_80181538] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xbeae4, .rodata, ov_SC02_000_jr_80181698] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xbeb04, .rodata, ov_SC02_000_jr_8018173C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xbeb24, data, tail20]
|
||||
- [0xbeb24, data, tail19]
|
||||
- [0xC070C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0xC070F] # 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
|
||||
|
||||
@@ -161,7 +161,7 @@ segments:
|
||||
- [0xc1b78, .rodata, ov_SC02_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc1c04, data, tail17]
|
||||
- [0xc1c08, .rodata, ov_SC02_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc1c1c, data, tail18]
|
||||
- [0xc1c30, data, tail18]
|
||||
- [0xC3924, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0xC3927] # 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
|
||||
|
||||
@@ -163,7 +163,7 @@ segments:
|
||||
- [0x74778, data, tail17]
|
||||
- [0x7477c, .rodata, ov_SC04_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x74790, .rodata, ov_SC04_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x747b0, data, tail18]
|
||||
- [0x747c8, data, tail18]
|
||||
- [0x75C74, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0x75C77] # 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
|
||||
|
||||
@@ -161,7 +161,7 @@ segments:
|
||||
- [0x850b4, .rodata, ov_SC06_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x85140, data, tail17]
|
||||
- [0x85144, .rodata, ov_SC06_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x8516c, data, tail18]
|
||||
- [0x85184, data, tail18]
|
||||
- [0x8A02C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0x8A02F] # 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_022_jr_8017A4AC]
|
||||
- [0x52cd4, c, ov_SC06_022_jr_8017AE2C]
|
||||
- [0x53d64, c, ov_SC06_022_jr_8017BEBC]
|
||||
- [0x58b78, c, ov_SC06_022_jr_80180CD0]
|
||||
- [0x5abb0, c, ov_SC06_022_jr_80182D08]
|
||||
- [0x5c1ac, c, ov_SC06_022_jr_80184304]
|
||||
- [0x5c8d0, c, ov_SC06_022_jr_80184A28]
|
||||
@@ -167,10 +168,12 @@ segments:
|
||||
- [0xb894c, .rodata, ov_SC06_022_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8960, .rodata, ov_SC06_022_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8980, data, tail18]
|
||||
- [0xb8998, .rodata, ov_SC06_022_jr_80180CD0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb89b4, data, tail19]
|
||||
- [0xb89d4, .rodata, ov_SC06_022_jr_80182D08] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8ab4, .rodata, ov_SC06_022_jr_80184304] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8acc, .rodata, ov_SC06_022_jr_80184A28] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8ae0, data, tail19]
|
||||
- [0xb8ae0, data, tail20]
|
||||
- [0xBA114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0xBA117] # 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
|
||||
|
||||
@@ -12,7 +12,22 @@ void func_800CEDFC(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_008/nonmatchings/md_MAIN_008", func_800CEE44);
|
||||
extern void func_8001C044(void);
|
||||
extern void func_80015310(void);
|
||||
extern u8 D_800B9A11;
|
||||
extern s32 D_800CF13C;
|
||||
extern void func_800167B8(s32);
|
||||
extern void func_800118AC(void);
|
||||
|
||||
void func_800CEE44(void) {
|
||||
func_8001C044();
|
||||
func_80015310();
|
||||
D_800B9A11 = 0;
|
||||
D_800CF13C = 0;
|
||||
func_800167B8(0);
|
||||
func_800118AC();
|
||||
}
|
||||
|
||||
|
||||
void func_800CEE8C(void) {
|
||||
extern s32 func_800167F0(s32 a0);
|
||||
|
||||
@@ -15,7 +15,73 @@ void func_800CEE74(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_011/nonmatchings/md_MAIN_011", func_800CEF00);
|
||||
void func_800CEF00(void) {
|
||||
typedef struct { s32 m; } S70;
|
||||
extern u8 D_800AF630[];
|
||||
extern u8 D_800D31FC[];
|
||||
extern u8 D_800D31F8[];
|
||||
extern u8 D_800D3248[];
|
||||
extern u8 D_800D3208[];
|
||||
extern u8 D_800D3214[];
|
||||
extern u8 D_800D3220[];
|
||||
extern u8 D_800D3228[];
|
||||
extern u8 D_800D3230[];
|
||||
extern u8 D_800D3238[];
|
||||
extern u8 D_800D3250[];
|
||||
extern u8 D_800D3258[];
|
||||
extern u8 D_800D3264[];
|
||||
extern u8 D_800D3278[];
|
||||
extern u8 D_800D3284[];
|
||||
extern s32 D_800D4C88;
|
||||
extern s32 D_800D4C8C;
|
||||
extern s32 D_800D4C90;
|
||||
extern s32 D_800D4C94;
|
||||
extern u8 D_800D4B64[];
|
||||
extern S70 D_800D4B70[];
|
||||
extern u16 D_800D4C80;
|
||||
extern u16 D_800D4C84;
|
||||
extern u16 D_800D4CA4;
|
||||
extern u16 D_800D4CA0;
|
||||
extern u16 D_800D4C9C;
|
||||
extern u16 D_800D4C98;
|
||||
extern s32 D_800D3344;
|
||||
register u8 *v0 = D_800AF630;
|
||||
|
||||
v0[0xA3E1] = 1;
|
||||
func_8001C044();
|
||||
func_80015310();
|
||||
func_80011B7C(0);
|
||||
func_8001534C(0, D_800D31FC, 0x40, 0x1E, 0, 0);
|
||||
func_8001534C(1, D_800D31F8, 0x34, 0x46, 0, 0);
|
||||
func_8001534C(9, D_800D3248, 0x40, 0x46, 0, 0);
|
||||
func_8001534C(2, D_800D3208, 0x40, 0x5E, 0, 0);
|
||||
func_8001534C(3, D_800D3214, 0x40, 0x6A, 0, 0);
|
||||
func_8001534C(4, D_800D3220, 0x40, 0x76, 0, 0);
|
||||
func_8001534C(5, D_800D3228, 0x40, 0x82, 0, 0);
|
||||
func_8001534C(6, D_800D3230, 0x40, 0x8E, 0, 0);
|
||||
func_8001534C(7, D_800D3238, 0x40, 0x9A, 0, 0);
|
||||
func_8001534C(0xA, D_800D3250, 0x74, 0x46, 0, 0);
|
||||
func_8001534C(0xB, D_800D3258, 0x74, 0x52, 0, 0);
|
||||
func_8001534C(0xE, D_800D3264, 0x40, 0xA6, 0, 0);
|
||||
func_8001534C(0xF, D_800D3278, 0x40, 0xB2, 0, 0);
|
||||
func_8001534C(0x10, D_800D3284, 0x40, 0xBE, 0, 0);
|
||||
D_800D4C88 = 0;
|
||||
D_800D4C8C = 0;
|
||||
D_800D4C90 = 0;
|
||||
D_800D4C94 = 0;
|
||||
*(u16 *)&v0[0xA3DE] = 0;
|
||||
func_8001534C(0xC, &D_800D4B64[D_800D4C88 * 20], 0xA4, 0x46, 0x44, 0);
|
||||
func_8001534C(0xD, D_800D4B70[D_800D4C88 * 5].m + D_800D4C8C * 36, 0xA4, 0x52, 0x44, 0);
|
||||
D_800D4C80 = 0;
|
||||
D_800D4C84 = 0;
|
||||
D_800D4CA4 = 0;
|
||||
D_800D4CA0 = 0;
|
||||
D_800D4C9C = 0;
|
||||
D_800D4C98 = 0;
|
||||
func_80029514(D_800D3344);
|
||||
func_800118AC();
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_RODATA("asm/md_MAIN_011/nonmatchings/md_MAIN_011", D_800CEDF8);
|
||||
|
||||
|
||||
@@ -82,4 +82,30 @@ INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CB304);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CB400);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CB458);
|
||||
void func_800CB458(s32 arg0) {
|
||||
extern void func_800CAF84(void);
|
||||
extern s32 func_80146A6C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
typedef struct { s32 w[4]; } Struct16;
|
||||
register s32 keep_a0 __asm__("$4");
|
||||
s32 s0 = arg0;
|
||||
s32 s1;
|
||||
s32 v0;
|
||||
s32 id;
|
||||
|
||||
keep_a0 = arg0;
|
||||
s1 = *(s32 *)(s0 + 0x34);
|
||||
v0 = *(s32 *)(s1 + 0x20);
|
||||
|
||||
*(Struct16 *)(s0 + 0x38) = *(Struct16 *)(v0 + 0x34);
|
||||
*(Struct16 *)(s0 + 0x48) = *(Struct16 *)(v0 + 0x44);
|
||||
__asm__ __volatile__("" :: "r"(keep_a0));
|
||||
|
||||
func_800CAF84();
|
||||
|
||||
if ((*(s32 *)(s0 + 0x1C) -= 1) == -1) {
|
||||
id = 0x4B;
|
||||
func_80146A6C(id, s1, 0, 0, 0, 0x8000, 0);
|
||||
*(s32 *)(s0 + 0x1C) = 0x18;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,75 @@ void func_800CAFB4(void *arg) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CAFE0);
|
||||
extern u8 D_800CB860[];
|
||||
extern u8 D_800CB861;
|
||||
extern u8 D_800CB862;
|
||||
extern u8 D_800CB864;
|
||||
extern u8 D_800CB865;
|
||||
extern u8 D_800CB866;
|
||||
extern s16 D_800CB5F4;
|
||||
extern s16 D_800CB5F6;
|
||||
extern u8 D_800D387C[];
|
||||
extern void func_800233CC(void *, u16);
|
||||
extern void func_801465C0(void);
|
||||
extern void func_80146C3C(void);
|
||||
extern void func_8001CC3C(s32, void *, s32, s32);
|
||||
extern void func_8001CD9C(s32, void *);
|
||||
|
||||
void func_800CAFE0(s32 param_1) {
|
||||
s32 pad[2];
|
||||
s32 node;
|
||||
s32 node2;
|
||||
u32 hw;
|
||||
u32 sh;
|
||||
s32 sext;
|
||||
s32 save;
|
||||
|
||||
if (*(u32 *)(param_1 + 0x2C) & 0x8000) {
|
||||
D_800CB861 = 0xA0;
|
||||
D_800CB860[0] = 0xA0;
|
||||
D_800CB862 = 0x70;
|
||||
D_800CB866 = 0;
|
||||
D_800CB865 = 0;
|
||||
D_800CB864 = 0;
|
||||
func_800233CC(D_800CB860, 0x1E);
|
||||
*(u16 *)(param_1 + 0x12) = 0x1C0;
|
||||
*(u16 *)(param_1 + 2) = 1;
|
||||
return;
|
||||
}
|
||||
hw = *(u32 *)(param_1 + 0x30);
|
||||
sh = hw >> 15;
|
||||
node = ((s32 (*)(void))func_801465C0)();
|
||||
if (node == 0) {
|
||||
((void (*)(s32))func_80146C3C)(param_1);
|
||||
return;
|
||||
}
|
||||
sext = (s32)(sh << 16);
|
||||
func_8001CC3C(node, D_800D387C,
|
||||
*(s16 *)((s32)&D_800CB5F4 + (sext >> 15)),
|
||||
*(s16 *)((s32)&D_800CB5F6 + (sext >> 15)));
|
||||
*(u16 *)(node + 0x1A) = 0x2000;
|
||||
*(u16 *)(node + 0x18) = 0x2000;
|
||||
*(u8 *)(node + 0x27) = (sext >> 17) + 0x19;
|
||||
*(u32 *)(node + 4) |= 0xC0000000;
|
||||
save = *(u16 *)(param_1 + 0x30);
|
||||
*(s32 *)(param_1 + 0x20) = node;
|
||||
*(u16 *)(param_1 + 2) = 2;
|
||||
*(u32 *)(param_1 + 0x30) = save;
|
||||
node2 = ((s32 (*)(void))func_801465C0)();
|
||||
if (node2 == 0) {
|
||||
((void (*)(s32))func_80146C3C)(param_1);
|
||||
return;
|
||||
}
|
||||
*(s32 *)(param_1 + 0x34) = node2;
|
||||
func_8001CD9C(node2, D_800CB860);
|
||||
*(u16 *)(node2 + 0x2C) = 0xC001;
|
||||
*(u32 *)(node2 + 4) |= 0xD0000000;
|
||||
*(u16 *)(node2 + 8) = *(u16 *)(param_1 + 6);
|
||||
*(u16 *)(node2 + 0xA) = *(u16 *)(param_1 + 0xA);
|
||||
*(u16 *)(node2 + 0xC) = *(u16 *)(param_1 + 0xE);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CB168);
|
||||
|
||||
|
||||
@@ -188,7 +188,37 @@ void func_800CB2C8(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CB324);
|
||||
void func_800CB324(s32 a0) {
|
||||
extern void func_8014659C(void);
|
||||
extern void func_8001C2C4(s32 a0);
|
||||
extern void func_800CB4C8(void *a0);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern void func_80146CA0(void *a0);
|
||||
extern void func_800CB4A8(void);
|
||||
|
||||
typedef struct { u32 a, b, c, d; } Blk16;
|
||||
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
s32 iVar4;
|
||||
|
||||
iVar2 = *(s32 *)(a0 + 0x4C);
|
||||
iVar1 = ((s32 (*)(void))func_8014659C)();
|
||||
*(s32 *)(a0 + 0x20) = iVar1;
|
||||
if (iVar1 != 0) {
|
||||
func_8001C2C4(iVar1);
|
||||
*(u32 *)(iVar1 + 4) |= 0x80000000;
|
||||
iVar4 = *(s32 *)(iVar2 + 0x20);
|
||||
*(Blk16 *)(iVar1 + 0x34) = *(Blk16 *)(iVar4 + 0x34);
|
||||
*(Blk16 *)(iVar1 + 0x44) = *(Blk16 *)(iVar4 + 0x44);
|
||||
func_800CB4C8((void *)a0);
|
||||
func_80146E90((s32 *)a0, 0x40);
|
||||
func_80146CA0((void *)a0);
|
||||
} else {
|
||||
((void (*)(s32))func_800CB4A8)(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct { s32 vpx, vpy, vpz, vrx, vry, vrz, rz, super; } RView;
|
||||
|
||||
|
||||
@@ -30,7 +30,15 @@ void func_800CAE78(u8 *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAEC0);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAEF8);
|
||||
extern void func_8014BB24(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_801599A4(void *a0);
|
||||
extern void func_80159B3C(void *a0);
|
||||
void func_800CAEF8(void *a0) {
|
||||
func_8014BB24((s32)a0, 10, 1);
|
||||
func_801599A4(a0);
|
||||
func_80159B3C(a0);
|
||||
}
|
||||
|
||||
|
||||
void func_800CAF38(void) {
|
||||
}
|
||||
|
||||
@@ -25,7 +25,16 @@ void func_800CAE78(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_024/nonmatchings/md_MAIN_024", func_800CAEB0);
|
||||
extern s32 func_80165910();
|
||||
extern void func_801655E4(s32 a0);
|
||||
|
||||
void func_800CAEB0(void *a0) {
|
||||
if (func_80165910(a0) == 0) {
|
||||
func_801655E4((s32)a0);
|
||||
}
|
||||
*(u8 *)((s32)a0 + 0x197) += 1;
|
||||
}
|
||||
|
||||
|
||||
void func_800CAEF8(void) {
|
||||
}
|
||||
|
||||
@@ -200,7 +200,69 @@ void func_800CB518(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CB574);
|
||||
void func_800CB574(void *param_1) {
|
||||
typedef struct { u32 a, b, c, d; } Blk16;
|
||||
extern void func_801465E4(void);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern void func_80149350(s32 a0);
|
||||
extern void func_80149374(s32 a0, s32 a1);
|
||||
extern s32 func_80017DC4(void *a0, void *a1);
|
||||
extern void RotMatrixZ(s32 a0, void *a1);
|
||||
extern void MulMatrix0(s32 a0, void *a1, s32 a2);
|
||||
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
extern void func_80146C3C(void);
|
||||
extern void func_800CB780(s32 a0);
|
||||
extern s32 D_800CCA00;
|
||||
extern s32 D_800636C8;
|
||||
|
||||
s32 src;
|
||||
s32 iVar2;
|
||||
s32 iVar3;
|
||||
s16 arr[3];
|
||||
s32 mat[8];
|
||||
|
||||
src = *(s32 *)((s32)param_1 + 0x34);
|
||||
iVar2 = ((s32 (*)(void))func_801465E4)();
|
||||
*(s32 *)((s32)param_1 + 0x20) = iVar2;
|
||||
if (iVar2 != 0) {
|
||||
func_8001C810(iVar2, (s32)&D_800CCA00);
|
||||
*(u32 *)(iVar2 + 4) |= 0x50000040;
|
||||
*(s32 *)(iVar2 + 0x20) = (s32)&D_800636C8;
|
||||
|
||||
arr[0] = 0;
|
||||
arr[1] = -6;
|
||||
arr[2] = (*(u16 *)((s32)param_1 + 0xE)) - 0x24;
|
||||
((void (*)(s32, void *, void *))func_80149350)(src, arr, arr);
|
||||
|
||||
iVar3 = *(s32 *)(src + 0x20);
|
||||
*(Blk16 *)((s32)param_1 + 0x38) = *(Blk16 *)(iVar3 + 0x34);
|
||||
*(Blk16 *)((s32)param_1 + 0x48) = *(Blk16 *)(iVar3 + 0x44);
|
||||
*(s32 *)((s32)param_1 + 0x4C) = arr[0];
|
||||
*(s32 *)((s32)param_1 + 0x50) = arr[1];
|
||||
*(s32 *)((s32)param_1 + 0x54) = arr[2];
|
||||
func_80149374(src, (s32)param_1 + 4);
|
||||
|
||||
arr[2] = 0x1800;
|
||||
arr[1] = 0x1800;
|
||||
arr[0] = 0x1800;
|
||||
((void (*)(void *, void *))func_80017DC4)(arr, mat);
|
||||
RotMatrixZ(rand() & 0xFFF, mat);
|
||||
MulMatrix0(*(s32 *)(src + 0x20) + 0x34, mat, iVar2 + 0x34);
|
||||
|
||||
func_80146A6C(0x44, (void *)param_1,
|
||||
*(s16 *)((s32)param_1 + 6),
|
||||
*(s16 *)((s32)param_1 + 0xA),
|
||||
*(s16 *)((s32)param_1 + 0xE),
|
||||
0, 0);
|
||||
|
||||
*(s32 *)((s32)param_1 + 0x30) = 0x80;
|
||||
func_800CB780((s32)param_1);
|
||||
*(u16 *)((s32)param_1 + 2) = *(u16 *)((s32)param_1 + 2) + 1;
|
||||
} else {
|
||||
((void (*)(void *))func_80146C3C)(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_800CB780(s32 param_1);
|
||||
extern void func_80146C3C(void);
|
||||
|
||||
@@ -67,7 +67,64 @@ void func_800CAF9C(s32 a0) {
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB028);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB118);
|
||||
extern void func_80162FF4();
|
||||
extern void func_80162FC0(s32 *a0);
|
||||
extern s32 func_80146E98(s32 a0);
|
||||
extern s32 func_801638A0(u8 *a0, s32 a1);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern void func_80146CA0(void *a0);
|
||||
extern s32 func_80163408(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_80163328();
|
||||
extern s32 func_801632F0();
|
||||
extern void func_80013E94(void *a0, void *a1);
|
||||
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
extern void func_80147324(s32 a0);
|
||||
extern u8 D_80114EB0[];
|
||||
extern u8 D_80114EC8[];
|
||||
extern s16 D_80126B18;
|
||||
extern s16 D_80126B1A;
|
||||
extern s16 D_80126B1C;
|
||||
|
||||
void func_800CB118(s32 a0) {
|
||||
s32 sp20[2];
|
||||
s32 sp28;
|
||||
register s32 ret __asm__("$3");
|
||||
register s32 m __asm__("$2");
|
||||
|
||||
func_80162FF4(a0, 0, 0x4000, 0);
|
||||
func_80162FC0((s32 *) a0);
|
||||
if (func_80146E98(a0) != 0) {
|
||||
func_80146CA0((void *) a0);
|
||||
return;
|
||||
}
|
||||
ret = func_801638A0((u8 *) a0, (s32) sp20);
|
||||
if (ret == 0) {
|
||||
} else if ((m = ret & 0x8000) != 0) {
|
||||
*(s32 *)(a0 + 0x2C) = 0;
|
||||
*(s32 *)(a0 + 0x24) = 0;
|
||||
} else {
|
||||
func_80146E90((s32 *) a0, 0x20);
|
||||
func_80146CA0((void *) a0);
|
||||
return;
|
||||
}
|
||||
func_80163408(a0, 0x2C, 0x80, 0x200);
|
||||
func_80163328(a0);
|
||||
switch ((u32) func_801632F0(a0)) {
|
||||
case 1:
|
||||
func_80013E94(D_80114EB0, &sp28);
|
||||
sp28 |= 0x80000000;
|
||||
func_80146A6C(0x1F, (void *) a0, D_80126B18, D_80126B1A, D_80126B1C, sp28, 0);
|
||||
func_80147324(0x8E6);
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
func_80013E94(D_80114EC8, &sp28);
|
||||
sp28 |= 0x80000000;
|
||||
func_80146A6C(7, (void *) a0, D_80126B18, D_80126B1A, D_80126B1C, sp28, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80146E98(s32 a0);
|
||||
extern void func_80146CA0(void *a0);
|
||||
|
||||
@@ -11,7 +11,20 @@ void func_801E4C64(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E4CA0);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E4D14);
|
||||
void func_801E4D14(s32 a0) {
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_8013767C(s32);
|
||||
extern s32 D_801270C8;
|
||||
extern u8 D_8019702C[];
|
||||
extern void D_801E5E0C;
|
||||
|
||||
if (D_801270C8 == 3) {
|
||||
*(s32 *)(a0 + 0xB0) = func_8013767C((s32)D_8019702C);
|
||||
func_8012A828(a0, &D_801E5E0C);
|
||||
*(u16 *)((s32)a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801E4D7C(s32 *a0) {
|
||||
s32 *s0 = a0;
|
||||
@@ -123,7 +136,20 @@ void func_801E5030(s32 *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E5094);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E50F0);
|
||||
void func_801E50F0(s32 a0) {
|
||||
s32 s0 = a0;
|
||||
extern void func_801E53E0(s32);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_801270C8;
|
||||
extern void D_801E626C;
|
||||
|
||||
func_801E53E0(s0);
|
||||
if (D_801270C8 == 15) {
|
||||
func_8012A828((s32)s0, &D_801E626C);
|
||||
(*(u16 *)((s32)s0 + 2))++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801E514C(s32 a0) {
|
||||
extern void func_801E53E0(s32);
|
||||
|
||||
@@ -207,7 +207,22 @@ void func_801EFB84(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_074/nonmatchings/md_SC03_074", func_801EFBC0);
|
||||
void func_801EFBC0(void) {
|
||||
|
||||
extern u8 D_80078EB1;
|
||||
extern s32 D_801EF3EC;
|
||||
extern s32 D_801F5F04;
|
||||
extern s32 D_801F0234[];
|
||||
extern s32 D_801F0204[];
|
||||
|
||||
D_801F5F04 = 0;
|
||||
if ((u32)D_80078EB1 >= 0x12) {
|
||||
*(s32 *)(D_801EF3EC + 4) = (s32)D_801F0234;
|
||||
} else {
|
||||
*(s32 *)(D_801EF3EC + 4) = (s32)D_801F0204;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -322,7 +322,41 @@ void func_801EFD70(void *param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_075/nonmatchings/md_SC03_075", func_801EFEA4);
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 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);
|
||||
extern s32 func_80178B18(s32 a0, s32 a1);
|
||||
|
||||
void func_801EFEA4(void *a0) {
|
||||
extern s32 D_801F66FC;
|
||||
extern s32 D_801F04B4;
|
||||
extern s16 D_801C3890;
|
||||
extern s32 D_801F050C;
|
||||
s32 v0;
|
||||
|
||||
if ((u32)(func_80029504() - 0x122) < 0xA) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
v0 = func_8012C1B8();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)&D_801F66FC);
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF;
|
||||
func_8012E8E0((s32)a0, (s32)&D_801F04B4);
|
||||
*(s16 *)((s32)a0 + 0x2) = 1;
|
||||
*(s16 *)((s32)a0 + 0x34) = 0;
|
||||
func_8012A828((s32)a0, (s32)&D_801C3890);
|
||||
func_80178B18((s32)a0, (s32)&D_801F050C);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012BA10(s32 a0, s32 a1);
|
||||
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
@@ -253,7 +253,39 @@ join:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_076/nonmatchings/md_SC03_076_jr_801F218C", func_801F2458);
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_80029178(s32);
|
||||
extern void func_80029124(s32, s32);
|
||||
|
||||
s32 func_801F2458(void) {
|
||||
s32 x;
|
||||
s32 t;
|
||||
|
||||
x = func_80029504();
|
||||
if ((u32)(x - 200) < 100) {
|
||||
t = 0;
|
||||
goto join;
|
||||
}
|
||||
__asm__("");
|
||||
if (x < 300) {
|
||||
t = 1;
|
||||
goto join;
|
||||
}
|
||||
__asm__("");
|
||||
if (func_80029178(250) & 0xFF) {
|
||||
t = 0;
|
||||
goto join;
|
||||
}
|
||||
__asm__("");
|
||||
t = 1;
|
||||
join:
|
||||
if (t != 0 && (func_80029178(276) & 0xFF) == 0) {
|
||||
func_80029124(276, 1);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void func_801F24DC(s32 a0) {
|
||||
extern s32 func_80029504(void);
|
||||
@@ -451,7 +483,22 @@ void func_801F28B0(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_076/nonmatchings/md_SC03_076_jr_801F218C", func_801F28E0);
|
||||
void func_801F28E0(void)
|
||||
{
|
||||
typedef struct { s32 next; u8 pad[0xC]; } Node_801F28E0;
|
||||
extern s32 D_801F9DD4;
|
||||
extern s32 D_801F9F54;
|
||||
Node_801F28E0 *p;
|
||||
s32 i;
|
||||
|
||||
p = (Node_801F28E0 *)&D_801F9DD4;
|
||||
for (i = 0; i < D_801F9F54 - 1; ) {
|
||||
p->next = (s32)(p + 1);
|
||||
i++;
|
||||
p = p + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_80029514(s32 arg0);
|
||||
|
||||
@@ -179,7 +179,46 @@ s32 func_801E5504(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_135/nonmatchings/md_SC03_135_jr_801E5358", func_801E5514);
|
||||
s32 func_801E5514(void) {
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_80029178(s32);
|
||||
extern u8 D_801E67E8[];
|
||||
extern u8 D_801E6828[];
|
||||
extern s32 D_801E256C;
|
||||
s32 x;
|
||||
s32 t;
|
||||
s32 p;
|
||||
s32 v;
|
||||
|
||||
x = func_80029504();
|
||||
if ((u32)(x - 200) < 100) {
|
||||
t = 0;
|
||||
goto join;
|
||||
}
|
||||
__asm__("");
|
||||
if (x < 300) {
|
||||
t = 1;
|
||||
goto join;
|
||||
}
|
||||
__asm__("");
|
||||
if (func_80029178(250) & 0xFF) {
|
||||
t = 0;
|
||||
goto join;
|
||||
}
|
||||
__asm__("");
|
||||
t = 1;
|
||||
join:
|
||||
if (t != 0) {
|
||||
p = D_801E256C;
|
||||
v = (s32)&D_801E67E8;
|
||||
} else {
|
||||
p = D_801E256C;
|
||||
v = (s32)&D_801E6828;
|
||||
}
|
||||
*(s32 *)(p + 4) = v;
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_80029178(s32);
|
||||
|
||||
@@ -350,6 +350,31 @@ void func_801E8380(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC04_029/nonmatchings/md_SC04_029", func_801E83AC);
|
||||
extern u8 *D_80126B10;
|
||||
extern void func_80178CBC(s32 a0, s32 a1);
|
||||
extern void func_80174438(s32 a0);
|
||||
|
||||
void func_801E83AC(void *param_1) {
|
||||
extern s32 func_801789AC();
|
||||
extern s32 D_801E8654;
|
||||
|
||||
switch (*(u16 *)((s32)param_1 + 0x34)) {
|
||||
case 0:
|
||||
if (func_801789AC() != 0) {
|
||||
func_80178CBC((s32)param_1, (s32)&D_801E8654);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (func_801789AC((s32)param_1) != 0) {
|
||||
func_80174438((s32)D_80126B10);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC04_029/nonmatchings/md_SC04_029", func_801E8440);
|
||||
|
||||
@@ -2219,7 +2219,41 @@ void func_801A3BCC(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A419C);
|
||||
#include "common.h"
|
||||
|
||||
/* §37 asm-label alias: the TU canon (md_SC07_003.c:620) declares this symbol
|
||||
`extern s32 D_80126B78[];`, but the target reads its VALUE twice
|
||||
(lui/lw rematerialised per call site), which requires the pointer-variable
|
||||
reading. Distinct C identifier + asm label = no conflicting-types clash,
|
||||
emitted relocations still spell D_80126B78. */
|
||||
extern s32 *aD_80126B78 __asm__("D_80126B78");
|
||||
extern u8 D_800D3918[];
|
||||
extern u8 D_801A68F4[];
|
||||
extern u8 D_801152A8[];
|
||||
extern s32 D_80127078;
|
||||
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012B2CC(s32 a0);
|
||||
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);
|
||||
|
||||
s32 func_801A419C(s32 arg0) {
|
||||
s32 buf[2]; /* 0x18(sp): projected point A */
|
||||
s32 out[2]; /* 0x20(sp): projected point B */
|
||||
|
||||
func_8012F14C((s32)aD_80126B78 + 0x34, (s32)D_800D3918, (s32)buf);
|
||||
func_8012F14C((s32)aD_80126B78 + 0x34, (s32)D_801A68F4, (s32)out);
|
||||
func_8012B2CC(arg0);
|
||||
if (func_80135888(*(s32 *)(arg0 + 0x20), *(s32 *)(arg0 + 0x58), (s32)buf, (s32)out) != 0) {
|
||||
func_8012F568(1, 0x1C,
|
||||
*(u16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) & 0xFFF,
|
||||
0x1E, (s32)out, (s32)D_801152A8);
|
||||
D_80127078 = arg0;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4268);
|
||||
|
||||
|
||||
@@ -723,7 +723,28 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2F34);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A30C8);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A3114);
|
||||
extern void func_801A36F0(void *a0);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern void func_8012A860(void *a0, int a1);
|
||||
extern u8 D_801EF9A8;
|
||||
|
||||
void func_801A3114(s32 *a0)
|
||||
{
|
||||
s32 *s0 = a0;
|
||||
u16 v0;
|
||||
|
||||
v0 = *(u16 *)((s32)s0 + 0x5C);
|
||||
*(u16 *)((s32)s0 + 0x5E) = 0;
|
||||
*(u8 *)((s32)s0 + 0xC1) = 0;
|
||||
*(u16 *)((s32)s0 + 0x5C) = v0 & 0xDFFE;
|
||||
func_801A36F0((void *)s0);
|
||||
func_8012AD44(s0, 12);
|
||||
if (*(s16 *)((s32)s0 + 0xE6) < 0) {
|
||||
*(u16 *)((s32)s0 + 0x34) = 2;
|
||||
func_8012A860((void *)s0, (int)&D_801EF9A8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A3180);
|
||||
|
||||
@@ -4431,7 +4452,18 @@ void func_801A9EB0(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9F5C);
|
||||
extern void func_801AA0B4(void *a0);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
|
||||
void func_801A9F5C(void *arg0) {
|
||||
*(s32 *)((s32)arg0 + 0x1C) = 0x40;
|
||||
func_801AA0B4(arg0);
|
||||
func_8012AD80((s32)arg0);
|
||||
func_8012AD80((s32)arg0);
|
||||
func_8012AD44((s32 *)arg0, 2);
|
||||
}
|
||||
|
||||
|
||||
void func_801A9FA8(void *arg0) {
|
||||
func_8012AD44((s32 *)arg0, 3);
|
||||
|
||||
@@ -1390,7 +1390,31 @@ DEFINE_func_8012D5E4() /* dedup: shared engine-core @0x8012d5e4 (src/shared) */
|
||||
DEFINE_func_8012D624() /* dedup: shared engine-core @0x8012d624 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8012D664);
|
||||
int func_8012D664(int arg0, int arg1, int arg2)
|
||||
{
|
||||
extern u16 D_80126B5E;
|
||||
extern u16 D_80126B62;
|
||||
extern u16 D_80126B66;
|
||||
extern s32 func_800132BC(s32 a0, s32 a1);
|
||||
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5);
|
||||
extern u8 D_8017E6BC[];
|
||||
|
||||
u16 s[3];
|
||||
int ret;
|
||||
int t;
|
||||
|
||||
s[0] = (*(unsigned short *)&D_80126B5E);
|
||||
s[1] = (*(unsigned short *)&D_80126B62) - 0x40;
|
||||
s[2] = (*(unsigned short *)&D_80126B66);
|
||||
ret = ((int (*)())func_800132BC)(arg0, s);
|
||||
t = arg1 + 0x20;
|
||||
if (ret < t * t) {
|
||||
func_8012F568(1, 1, 0, arg2, arg0, &D_8017E6BC);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8012D714() /* dedup: shared engine-core @0x8012d714 (src/shared) */
|
||||
|
||||
|
||||
@@ -4950,7 +4950,13 @@ DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014c118 (src/shared) */
|
||||
DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014c168 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8013F350", func_8014C1A0);
|
||||
extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2);
|
||||
extern s32 D_8017FFC0;
|
||||
|
||||
void func_8014C1A0(s32 arg0, s32 arg1) {
|
||||
func_8014C1C8(arg0, arg1, &D_8017FFC0);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014c1c8 (src/shared) */
|
||||
|
||||
|
||||
@@ -8115,7 +8115,23 @@ void func_80168430(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8015A3C8", func_801684B4);
|
||||
extern void func_80146C3C(u8*);
|
||||
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
void func_801684B4(s32 a0) {
|
||||
s32 *s0 = (s32 *)a0;
|
||||
if ((*(s32 *)(*(s32 *)(a0 + 0x34) + 0x44) & 0x2) == 0) {
|
||||
((void (*)(void))func_80146C3C)();
|
||||
} else {
|
||||
s16 v0 = *(u16 *)(a0 + 0x2A) - 1;
|
||||
*(s16 *)(a0 + 0x2A) = v0;
|
||||
if (v0 == 0) {
|
||||
func_80166994(a0, 0, 2, 0);
|
||||
*(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1;
|
||||
}
|
||||
}
|
||||
(void)s0;
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80168540() /* dedup: shared engine-core @0x80168540 (src/shared) */
|
||||
|
||||
@@ -9033,6 +9049,3 @@ void func_8016AB30(void *a0) {
|
||||
extern void (*D_801814EC[])(void);
|
||||
D_801814EC[*(u16 *)((s32)a0 + 0x2)]();
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8015A3C8", func_8016AB6C);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4389,7 +4389,23 @@ DEFINE_func_8016E688() /* dedup: shared engine-core @0x8016e688 (src/shared) */
|
||||
DEFINE_func_8016E6E4() /* dedup: shared engine-core @0x8016e6e4 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8016AE5C", func_8016E728);
|
||||
extern void func_80146C3C(u8*);
|
||||
extern void func_8016E778();
|
||||
|
||||
void func_8016E728(u8 *a0) {
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
v0 = (u16)*(u16 *)(a0 + 0x12) + 0x400;
|
||||
v1 = (u16)*(u16 *)(a0 + 0x16) - 8;
|
||||
*(u16 *)(a0 + 0x12) = v0;
|
||||
*(u16 *)(a0 + 0x16) = v1;
|
||||
if ((s16)v1 <= 0) {
|
||||
((void (*)(void))func_80146C3C)();
|
||||
} else {
|
||||
((void (*)(void))func_8016E778)();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8016E778() /* dedup: shared engine-core @0x8016e778 (src/shared) */
|
||||
|
||||
|
||||
@@ -5723,7 +5723,18 @@ void func_8017BEB4(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_801789AC", func_8017BEBC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_801789AC", func_8017BEE4);
|
||||
s32 func_8017BEE4(void) {
|
||||
extern void (*D_80181D6C[10])(void);
|
||||
extern s16 D_801853F0;
|
||||
extern s16 D_801853F2;
|
||||
|
||||
D_80181D6C[D_801853F0]();
|
||||
if (D_801853F2 != 0) {
|
||||
return D_801853F2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void func_8017BF38(void) {
|
||||
extern void func_8017C008(s32 a0, s32 a1);
|
||||
|
||||
@@ -3109,7 +3109,19 @@ INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018041
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018048C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180564);
|
||||
extern u8 D_80185E38[];
|
||||
extern void func_800D1724(s32 a0);
|
||||
|
||||
void func_80180564(s32 *a0) {
|
||||
s32 v1;
|
||||
v1 = a0[7] - 1;
|
||||
a0[7] = v1;
|
||||
if (v1 != -1) {
|
||||
return;
|
||||
}
|
||||
func_800D1724((s32)D_80185E38);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_801805A0() /* dedup: shared engine-core @0x801805A0 (src/shared) */
|
||||
|
||||
|
||||
@@ -3725,7 +3725,54 @@ void func_8017DA80(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017BE9C", func_8017DA9C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017BE9C", func_8017DBEC);
|
||||
void func_8017DBEC(void) {
|
||||
extern s16 D_800B9A02;
|
||||
extern s16 D_801A3320;
|
||||
extern u8 D_800B9A15;
|
||||
extern u8 D_801151C8[];
|
||||
extern s32 D_801151D0;
|
||||
extern u32 D_801A3458;
|
||||
extern s32 D_801A345C;
|
||||
extern u16 D_8011511A;
|
||||
extern u8 D_80115138[];
|
||||
extern u16 D_80115112;
|
||||
extern s32 func_80014ED4(s32 a0);
|
||||
extern void func_80139954(void);
|
||||
extern s16 func_8014168C(s16 a0);
|
||||
extern s32 func_8017EC68(s32 a0, s32 a1);
|
||||
extern void func_8017E050(void);
|
||||
extern void func_80137B80(void);
|
||||
|
||||
u16 idx;
|
||||
volatile s32 pad[2];
|
||||
|
||||
D_801151D0 = *(s32 *)&D_801151C8[(*(u16 *)&D_800B9A02) * 4];
|
||||
|
||||
if (D_801A3458 != 0) {
|
||||
if (func_801399F0(D_801A345C) != 0) {
|
||||
D_801A3458 = 0;
|
||||
}
|
||||
} else {
|
||||
if ((func_80014ED4(0) & 0x50) != 0) {
|
||||
idx = *(u16 *)&D_8011511A;
|
||||
if (D_80115138[idx] == 8) {
|
||||
func_8017EC68(0xF, func_8014168C(idx));
|
||||
}
|
||||
if (D_801A3320 != 0) {
|
||||
func_80139954();
|
||||
D_800B9A15 = 0;
|
||||
func_8002D4C8(0x474, 0);
|
||||
D_80115112 = D_80115112 + 1;
|
||||
} else {
|
||||
D_80115112 = D_80115112 - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func_8017E050();
|
||||
func_80137B80();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3161,7 +3161,19 @@ extern void func_8017D2E0(s32 arg0, s32 arg1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017F488);
|
||||
extern s16 func_8017D2D0(void);
|
||||
|
||||
s32 func_8017F488(s32 arg0) {
|
||||
s16 var;
|
||||
|
||||
var = func_8017D2D0();
|
||||
if (var == 0) {
|
||||
return 0;
|
||||
}
|
||||
*(s16 *)(arg0 + 0x10A) = var - 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_800291B4(s32 arg);
|
||||
|
||||
|
||||
@@ -6211,7 +6211,19 @@ extern s32 func_8012AD50(void *a0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80183054);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801831A0);
|
||||
extern void func_80183278();
|
||||
extern void func_8012C098(void *a0);
|
||||
|
||||
void func_801831A0(s32 a0) {
|
||||
s32 s0;
|
||||
|
||||
s0 = a0;
|
||||
func_80183278();
|
||||
if ((*(s32 *)(s0 + 0x1C) != 0) && (--*(s32 *)(s0 + 0x1C) == 0)) {
|
||||
func_8012C098((void *) s0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern u16 D_800B99DA;
|
||||
extern u32 D_801C7594;
|
||||
|
||||
@@ -5129,7 +5129,38 @@ void func_80184FC4(int param_1)
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_8018500C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80185080);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_80047D3C(s32 a0);
|
||||
extern s32 func_801807D8(s16 *a0);
|
||||
extern s32 D_801A1A10;
|
||||
extern void func_8012CBA4(s32 a0);
|
||||
|
||||
void func_80185080(s32 param_1)
|
||||
{
|
||||
s16 tmp[3];
|
||||
s32 sq;
|
||||
|
||||
func_8012CBA4(param_1);
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
*(u16 *)(param_1 + 0xFC) = 0;
|
||||
*(u8 *)(param_1 + 0xC1) = 0;
|
||||
*(s16 *)(param_1 + 0x2) = 1;
|
||||
*(s16 *)(param_1 + 0x34) = 0;
|
||||
func_8012A828(param_1, &D_801A1A10);
|
||||
*(s32 *)(param_1 + 0x1C) = 0xA;
|
||||
*(u16 *)(param_1 + 0x5C) |= 0x8000;
|
||||
*(u16 *)(param_1 + 0x5E) = 0;
|
||||
*(u16 *)(param_1 + 0xFC) ^= 1;
|
||||
tmp[0] = *(s16 *)(param_1 + 0x6);
|
||||
tmp[1] = *(s16 *)(param_1 + 0xA);
|
||||
tmp[2] = *(s16 *)(param_1 + 0xE);
|
||||
sq = (tmp[0] * tmp[0]) + (tmp[2] * tmp[2]);
|
||||
*(s16 *)(param_1 + 0xDE) = func_80047D3C(sq);
|
||||
*(s16 *)(param_1 + 0xDC) = func_801807D8(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801270D4;
|
||||
extern s32 D_801270E4;
|
||||
@@ -5181,7 +5212,38 @@ void func_801851EC(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_8018528C);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_80183630(s32 a0);
|
||||
extern void func_80183790(s32 a0);
|
||||
|
||||
void func_8018528C(void *a0) {
|
||||
void *s0;
|
||||
register unsigned short state __asm__("$4");
|
||||
|
||||
s0 = a0;
|
||||
state = *(u16 *)((u8 *)s0 + 0x34);
|
||||
|
||||
switch (state) {
|
||||
case 0:
|
||||
((struct { unsigned short h; } *)((u8 *)s0 + 0x34))->h = state + 1;
|
||||
((struct { s32 f; } *)((u8 *)s0 + 0x1C))->f = 0;
|
||||
func_8002D4C8(0x4AA, 0);
|
||||
break;
|
||||
case 1:
|
||||
func_80183630((s32)s0);
|
||||
break;
|
||||
case 2:
|
||||
func_80183790((s32)s0);
|
||||
break;
|
||||
case 3:
|
||||
if (func_8012BEE8((s32)s0) != 0) {
|
||||
*(u16 *)((u8 *)s0 + 0x34) = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3029,7 +3029,20 @@ DEFINE_func_80180394() /* dedup: shared engine-core @0x80180394 (src/shared) */
|
||||
DEFINE_func_801803B0() /* dedup: shared engine-core @0x801803B0 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017FCB0", func_801803D0);
|
||||
extern void func_8012A828(int, void *);
|
||||
extern s32 D_801A72C4;
|
||||
|
||||
void func_801803D0(int param_1)
|
||||
{
|
||||
*(short *)(param_1 + 2) = 0xb;
|
||||
*(short *)(param_1 + 0x34) = 1;
|
||||
*(short *)(param_1 + 0x5e) = 0;
|
||||
*(unsigned short *)(param_1 + 0x5c) = 0xaa10;
|
||||
func_8012A828(param_1, ((unsigned char *)&D_801A72C4));
|
||||
*(char *)(param_1 + 0x102) = 0;
|
||||
*(int *)(param_1 + 0x1c) = 0x1e;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// @class: plumbing
|
||||
@@ -3049,7 +3062,64 @@ void func_80180428(int param_1)
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017FCB0", func_8018046C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017FCB0", func_801806E4);
|
||||
extern void func_8012B178(s32 a0, s32 a1);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012C098(void);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern s32 D_801270CC;
|
||||
extern unsigned char D_8018E724[];
|
||||
extern unsigned char D_801A6534[];
|
||||
|
||||
void func_801806E4(int p)
|
||||
{
|
||||
switch (*(unsigned short *)(p + 0x34)) {
|
||||
case 0:
|
||||
func_8012B178(p, 0xfff40000);
|
||||
func_8012AD80(p);
|
||||
if (func_8012BEE8(p) == 0) return;
|
||||
*(unsigned short *)(p + 0x34) = 1;
|
||||
func_8012A828(p, D_8018E724);
|
||||
return;
|
||||
case 1:
|
||||
if (*(short *)(p + 0x98) != 0) return;
|
||||
*(unsigned short *)(p + 0x34) = 2;
|
||||
func_8012A828(p, D_801A6534);
|
||||
*(int *)(p + 0x1c) = 4;
|
||||
return;
|
||||
case 2:
|
||||
*(unsigned short *)(*(int *)(p + 0x20) + 0x12) =
|
||||
*(unsigned short *)(*(int *)(p + 0x20) + 0x12) - 0x200;
|
||||
if (func_8012BEE8(p) == 0) return;
|
||||
*(int *)(p + 0x1c) = 0x3c;
|
||||
*(unsigned short *)(p + 0x34) = 3;
|
||||
return;
|
||||
case 3:
|
||||
func_8012B178(p, 0xfff40000);
|
||||
func_8012AD80(p);
|
||||
if (func_8012BEE8(p) == 0) return;
|
||||
switch (((int)(*(unsigned short *)(p + 0x70) << 16)) >> 24) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
case 6:
|
||||
((void (*)(void *))func_8012C098)(p);
|
||||
return;
|
||||
case 3:
|
||||
case 7:
|
||||
func_8012C218(p);
|
||||
return;
|
||||
case 4:
|
||||
D_801270CC = D_801270CC - 1;
|
||||
func_8012C218(p);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// @class: loose-typing
|
||||
|
||||
@@ -2712,7 +2712,7 @@ extern void func_80143CD4(s32 a0);
|
||||
extern int func_800CB0E8(int param);
|
||||
extern void func_801801EC(int param_1);
|
||||
extern void func_80180394(void *a0);
|
||||
extern void func_801803D0(void);
|
||||
extern void func_801803D0();
|
||||
extern void func_801803B0(void);
|
||||
extern unsigned char D_801A73BC[];
|
||||
extern void func_80180428(int param_1);
|
||||
@@ -2752,7 +2752,7 @@ extern void func_8012B23C(s32 a0);
|
||||
extern void func_8012B14C(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_801803B0(void);
|
||||
extern void func_801803D0(void);
|
||||
extern void func_801803D0();
|
||||
extern s32 rand(void);
|
||||
|
||||
|
||||
|
||||
@@ -2713,7 +2713,7 @@ extern void func_80143CD4(s32 a0);
|
||||
extern int func_800CB0E8(int param);
|
||||
extern void func_801801EC(int param_1);
|
||||
extern void func_80180394(void *a0);
|
||||
extern void func_801803D0(void);
|
||||
extern void func_801803D0();
|
||||
extern void func_801803B0(void);
|
||||
extern unsigned char D_801A73BC[];
|
||||
extern void func_80180428(int param_1);
|
||||
|
||||
@@ -2713,7 +2713,7 @@ extern void func_80143CD4(s32 a0);
|
||||
extern int func_800CB0E8(int param);
|
||||
extern void func_801801EC(int param_1);
|
||||
extern void func_80180394(void *a0);
|
||||
extern void func_801803D0(void);
|
||||
extern void func_801803D0();
|
||||
extern void func_801803B0(void);
|
||||
extern unsigned char D_801A73BC[];
|
||||
extern void func_80180428(int param_1);
|
||||
@@ -3349,7 +3349,26 @@ void func_80182BD0(u8 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8018173C", func_80182CB4);
|
||||
void func_80182CB4(s32 _arg0)
|
||||
{
|
||||
typedef struct { s32 w[4]; } Blk16;
|
||||
extern u8 D_80126948[];
|
||||
extern s32 D_80126E60[];
|
||||
Blk16 *src;
|
||||
Blk16 *dst;
|
||||
Blk16 *end;
|
||||
|
||||
dst = (Blk16 *)&D_80126948;
|
||||
src = (Blk16 *)D_80126E60;
|
||||
end = src + 10;
|
||||
do {
|
||||
*dst = *src;
|
||||
src++;
|
||||
dst++;
|
||||
} while (src != end);
|
||||
*(s32 *)dst = *(s32 *)src;
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80182D00() /* dedup: shared engine-core @0x80182D00 (src/shared) */
|
||||
|
||||
@@ -3903,7 +3922,76 @@ DEFINE_func_8018419C() /* dedup: shared engine-core @0x8018419C (src/shared) */
|
||||
DEFINE_func_80184250() /* dedup: shared engine-core @0x80184250 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8018173C", func_80184358);
|
||||
#include "common.h"
|
||||
|
||||
typedef struct { s16 vx, vy, vz, pad; } SVEC_80184358;
|
||||
|
||||
extern void func_8012B2CC(s32 a0);
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern u8 D_8018EFF4;
|
||||
extern s32 D_801E8738;
|
||||
extern SVEC_80184358 aD_8018F034 __asm__("D_8018F034");
|
||||
extern SVEC_80184358 aD_8018F03C __asm__("D_8018F03C");
|
||||
|
||||
void func_80184358(s32 p) {
|
||||
SVEC_80184358 sv;
|
||||
s32 q;
|
||||
s32 r;
|
||||
s16 t;
|
||||
|
||||
func_8012B2CC(p);
|
||||
|
||||
if (*(s32 *)(p + 0xCC) != 0) {
|
||||
func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &aD_8018F034, (s32) &sv);
|
||||
*(s16 *)(*(s32 *)(p + 0xCC) + 0x8) = sv.vx;
|
||||
*(s16 *)(*(s32 *)(p + 0xCC) + 0xA) = sv.vy;
|
||||
*(s16 *)(*(s32 *)(p + 0xCC) + 0xC) = sv.vz;
|
||||
q = *(s32 *)(p + 0x20);
|
||||
*(s16 *)(*(s32 *)(p + 0xCC) + 0x10) = *(u16 *)(q + 0x10);
|
||||
q = *(s32 *)(p + 0x20);
|
||||
*(s16 *)(*(s32 *)(p + 0xCC) + 0x12) = *(u16 *)(q + 0x12);
|
||||
q = *(s32 *)(p + 0x20);
|
||||
*(s16 *)(*(s32 *)(p + 0xCC) + 0x14) = *(u16 *)(q + 0x14);
|
||||
}
|
||||
|
||||
if (*(s32 *)(p + 0xD0) != 0) {
|
||||
func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &aD_8018F03C, (s32) &sv);
|
||||
*(s16 *)(*(s32 *)(p + 0xD0) + 0x8) = sv.vx;
|
||||
*(s16 *)(*(s32 *)(p + 0xD0) + 0xA) = sv.vy;
|
||||
*(s16 *)(*(s32 *)(p + 0xD0) + 0xC) = sv.vz;
|
||||
q = *(s32 *)(p + 0x20);
|
||||
*(s16 *)(*(s32 *)(p + 0xD0) + 0x10) = *(u16 *)(q + 0x10);
|
||||
q = *(s32 *)(p + 0x20);
|
||||
*(s16 *)(*(s32 *)(p + 0xD0) + 0x12) = *(u16 *)(q + 0x12);
|
||||
q = *(s32 *)(p + 0x20);
|
||||
*(s16 *)(*(s32 *)(p + 0xD0) + 0x14) = *(u16 *)(q + 0x14);
|
||||
}
|
||||
|
||||
t = *(s16 *)(p + 0xDC);
|
||||
if (t == 0) {
|
||||
s16 v = *(u16 *)(p + 0xDE) - 0x40;
|
||||
*(s16 *)(p + 0xDE) = v;
|
||||
if (v <= 0) {
|
||||
*(s16 *)(p + 0xDE) = 0;
|
||||
}
|
||||
D_8018EFF4 = (u8) *(u16 *)(p + 0xDE);
|
||||
if (*(s16 *)(p + 0xDE) == 0) {
|
||||
if (*(s32 *)(p + 0xCC) != 0) {
|
||||
*(s16 *)(*(s32 *)(p + 0xCC)) = 0;
|
||||
}
|
||||
if (*(s32 *)(p + 0xD0) != 0) {
|
||||
*(s16 *)(*(s32 *)(p + 0xD0)) = 0;
|
||||
}
|
||||
r = *(u16 *)(p + 0x2);
|
||||
*(s16 *)(p + 0xDC) = 0x1000;
|
||||
D_801E8738 = 0;
|
||||
*(s16 *)(p + 0x2) = r + 1;
|
||||
}
|
||||
} else {
|
||||
*(s16 *)(p + 0xDC) = t - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct { u16 x, y, z, w; } Blk8_8018453C;
|
||||
typedef struct { s32 f0, f1, f2, f3, f4, f5, f6, f7; } Blk32_801E8788;
|
||||
|
||||
@@ -4069,7 +4069,23 @@ extern u16 D_80126B66;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D9C4);
|
||||
extern u8 *func_8012913C(s32 arg);
|
||||
|
||||
void func_8017D9C4(void *a0)
|
||||
{
|
||||
u8 *var_s0;
|
||||
u8 *var_s1;
|
||||
|
||||
var_s1 = a0;
|
||||
var_s0 = func_8012913C(5);
|
||||
if (var_s0 != NULL) {
|
||||
*(u16 *)(var_s0 + 6) = *(u16 *)(var_s1 + 6);
|
||||
*(u16 *)(var_s0 + 0xA) = *(u16 *)(var_s1 + 0xA);
|
||||
*(u16 *)(var_s0 + 0xE) = *(u16 *)(var_s1 + 0xE);
|
||||
*(u16 *)(var_s0 + 0x2E) = rand() & 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017DA30);
|
||||
|
||||
|
||||
@@ -4279,7 +4279,19 @@ void func_8017FA0C(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FA3C);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_8013767C(s32 a0);
|
||||
extern s32 D_80126CF0;
|
||||
extern s32 D_801972DC;
|
||||
extern u8 D_80126D6C;
|
||||
|
||||
void func_8017FA3C(void) {
|
||||
func_8017E190();
|
||||
func_8002D4C8(0x510, 0x107F);
|
||||
D_80126CF0 = func_8013767C((s32)&D_801972DC);
|
||||
D_80126D6C = D_80126D6C + 1;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -2924,7 +2924,46 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018203
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182098);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_801820E4);
|
||||
#include "common.h"
|
||||
|
||||
extern u16 D_801E43B4;
|
||||
extern s32 D_801270C8;
|
||||
extern u8 D_80195AFA[];
|
||||
extern u8 D_8019103C;
|
||||
extern void func_8018A1D8(s32 a0);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern void func_80186304();
|
||||
extern s32 func_801873FC(s32 a0);
|
||||
extern u16 D_80126B96;
|
||||
extern s16 D_80126B98;
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
s32 func_801820E4(void *arg0)
|
||||
{
|
||||
s16 idx;
|
||||
register u16 cnt asm("v0");
|
||||
|
||||
idx = *(s16 *)((u8 *)arg0 + 0xE0);
|
||||
if (idx >= 0) {
|
||||
cnt = D_801E43B4;
|
||||
D_801270C8 = *(s16 *)((u8 *)D_80195AFA + idx * 8);
|
||||
D_801E43B4 = cnt + 1;
|
||||
*(u32 *)((u8 *)arg0 + 0xE8) = (*(u32 *)((u8 *)arg0 + 0xE8) & ~0x400) | 0x800;
|
||||
}
|
||||
func_8018A1D8((s32)arg0);
|
||||
func_8012B23C((s32)arg0);
|
||||
func_8013C9C4(&D_8019103C);
|
||||
func_80186304(arg0, 0x12, 0);
|
||||
*(s16 *)((u8 *)arg0 + 0x34) = 6;
|
||||
*(u32 *)((u8 *)arg0 + 0xE8) |= 0x20;
|
||||
if (func_801873FC((s32)arg0) != 0) {
|
||||
D_80126B96 = 0x4002;
|
||||
D_80126B98 = 10;
|
||||
}
|
||||
func_8002D4C8(0x501, 0);
|
||||
}
|
||||
|
||||
|
||||
void func_801821C8(s32 *arg0) {
|
||||
u16 t;
|
||||
@@ -2975,7 +3014,14 @@ extern void func_801862F0(void * arg0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_801822B4);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
|
||||
void func_801822B4(s32 arg0) {
|
||||
func_8012B23C(arg0);
|
||||
func_8017DF50();
|
||||
func_801838A8((u8 *)arg0);
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -3318,7 +3364,14 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182A8
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182D80);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182DCC);
|
||||
extern void func_8018622C();
|
||||
|
||||
void func_80182DCC(void *a0) {
|
||||
func_8018622C(a0);
|
||||
*(u32 *)((s32)a0 + 0x14) = 0x100000;
|
||||
*(u16 *)((s32)a0 + 0x34) = 1;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -9632,7 +9685,36 @@ extern void func_8012C218(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018CC28);
|
||||
#include "common.h"
|
||||
|
||||
typedef struct { u8 b[4]; } Blk4_8018CC28;
|
||||
|
||||
/* ---- externs ------------------------------------------------------------ */
|
||||
extern void func_8001CD50(s32 a0, s32 a1);
|
||||
extern void func_800233CC(void *a0, unsigned short a1);
|
||||
|
||||
extern u8 D_801E4958[];
|
||||
extern u8 D_801E495C;
|
||||
extern u8 D_801E2F58;
|
||||
extern u8 D_801E2F5C;
|
||||
|
||||
void func_8018CC28(s32 param_1)
|
||||
{
|
||||
func_8001CD50(*(s32 *)(param_1 + 0x20), (s32)&D_801E4958);
|
||||
|
||||
*(u16 *)(param_1 + 0xA) -= 0x100;
|
||||
*(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000;
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0x400;
|
||||
*(s16 *)(param_1 + 0x2C) = 0x8;
|
||||
|
||||
func_800233CC(&D_801E4958, 0x8);
|
||||
|
||||
*(Blk4_8018CC28 *)&D_801E4958 = *(Blk4_8018CC28 *)&D_801E2F58;
|
||||
*(Blk4_8018CC28 *)&D_801E495C = *(Blk4_8018CC28 *)&D_801E2F5C;
|
||||
|
||||
*(u16 *)(param_1 + 2) += 1;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -10272,7 +10354,16 @@ void func_8018D9A4(void *a0)
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018DA40);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018DA8C);
|
||||
extern void func_8018F704(void);
|
||||
extern s32 D_801270C8;
|
||||
|
||||
void func_8018DA8C(void *a0) {
|
||||
if (D_801270C8 == 0x21) {
|
||||
func_8018F704();
|
||||
*(u16 *)((s32)a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8018DAD8(void) {
|
||||
}
|
||||
@@ -11731,7 +11822,17 @@ void func_80190074(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_801900B0);
|
||||
extern s32 func_800CF854(void);
|
||||
|
||||
s32 func_801900B0(void) {
|
||||
register s32 r __asm__("$2");
|
||||
s32 v;
|
||||
|
||||
v = ((s32 (*)(void))func_800CF854)();
|
||||
r = v ? 9 : 8;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 D_801E4C40;
|
||||
|
||||
@@ -6449,7 +6449,27 @@ extern void func_80171A1C(u8 *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018015C);
|
||||
extern s16 D_80126B3A;
|
||||
extern s16 D_80126B3C;
|
||||
extern void func_8017EAC0(void *a0, s32 a1, s32 a2);
|
||||
extern void func_80171A1C(u8 *a0);
|
||||
|
||||
void func_8018015C(u8 *a0) {
|
||||
s32 v;
|
||||
if (*(u16 *)(a0 + 0xB8) & 0x8000) {
|
||||
switch ((s16)(*(u16 *)&D_80126B3A - 2)) {
|
||||
case 0: v = 0; break;
|
||||
case 1: v = 1; break;
|
||||
case 2: v = 2; break;
|
||||
case 3: v = 3; break;
|
||||
case 4: v = 4; break;
|
||||
}
|
||||
D_80126B3C = v;
|
||||
func_8017EAC0(a0, -0x60, v);
|
||||
func_80171A1C(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80180210() /* dedup: shared engine-core @0x80180210 (src/shared) */
|
||||
|
||||
@@ -7420,7 +7440,22 @@ void func_80182268(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801822F4);
|
||||
extern s32 func_80172658(s32 *a0);
|
||||
extern s32 func_801399F0(s32 a0);
|
||||
extern void func_801823B8(void);
|
||||
|
||||
void func_801822F4(s32 param_1) {
|
||||
s32 s0;
|
||||
|
||||
if (func_80172658((s32 *)param_1) != 0) {
|
||||
s0 = param_1;
|
||||
if (func_801399F0(*(s32 *)(s0 + 0x198)) != 0) {
|
||||
func_801823B8();
|
||||
*(u8 *)(s0 + 0x216) = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
@@ -8672,7 +8707,15 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018526
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801852B0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185388);
|
||||
extern s32 func_80029178(s32 arg);
|
||||
|
||||
void func_80185388(void *a0) {
|
||||
*(s16 *)((char *)a0 + 2) = 4;
|
||||
if ((func_80029178(0x9E) & 0xFF) != 0) {
|
||||
*(s16 *)((char *)a0 + 0xFC) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801853CC);
|
||||
|
||||
@@ -10508,7 +10551,97 @@ void func_8018823C(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188250);
|
||||
#include "common.h"
|
||||
|
||||
/* func_80188250 -- same-class neighbour push-away over the 0x60-entry /
|
||||
* 0x10C-stride entity table D_801202A0. Banked twin: ov_SC06_018:func_80187320
|
||||
* (§193-A), minus its second switch case (no 0x2F4 clamp here) and with a
|
||||
* self-id equality guard instead of constant class ids.
|
||||
*
|
||||
* §37/§124 DEF-SIDE ESCAPE (_body spelling, cf. func_801810CC_body,
|
||||
* ov_SC07_007_jr_8017BEBC.c:6600): this TU already declares
|
||||
* `extern void func_80188250(s32 a0);` at file scope (the func_80188654 block),
|
||||
* while the target tail (`addiu $v0,$zero,1` / `addu $v0,$zero,$zero`) proves
|
||||
* an s32 return. A same-name s32 definition is a hard `conflicting types`;
|
||||
* a void definition cannot emit the $v0 constants. Define under a private C
|
||||
* identifier carrying an __asm__ label: emitted symbol unchanged, no collision,
|
||||
* the existing extern keeps compiling the caller at func_80188654.
|
||||
*
|
||||
* §8d: func_8012CEB0 is declared ONLY at block scope in this TU (the
|
||||
* func_80187844 block) -- its extern rides INSIDE the body, not at file scope.
|
||||
*
|
||||
* Load-bearing constructs (do NOT "clean up"):
|
||||
* 1. NO SECOND WALKED POINTER. All of +0x6/+0xA/+0xE written off the single
|
||||
* biv `p` (twin note 1): an explicit q = p + 0xE excludes the bare *q from
|
||||
* givs and yields THREE IVs / wrong anchor.
|
||||
* 2. `self4` and `sc` are REAL pre-loop locals, in that order (twin note 4):
|
||||
* written inline at the calls they fold into the argument moves and the
|
||||
* $s5/$s6 hoists never happen. Declaration ORDER (p, i, self4, sc) gives
|
||||
* $s2/$s4/$s5/$s6 in the target's prologue emission order.
|
||||
* 3. do-while with `i++` BEFORE `p += 0x10C` (twin note 3): strength_reduce
|
||||
* emits the giv addiu immediately before ITS biv increment =>
|
||||
* addiu $s4,1 / addiu $s3,0x10C / (delay) addiu $s0,0x10C.
|
||||
* 4. NO `s16 y` scalar: the twin's short-local/dead-slot pair belongs to its
|
||||
* second switch case, absent here. Frame is exactly 0x48 with no dead slot.
|
||||
* 5. §5a cross-jump barrier before the second `return 1`: the target keeps TWO
|
||||
* [j .epi][addiu $v0,$zero,1] tails; without the barrier gcc merges them
|
||||
* into one shared li (93 ins).
|
||||
*/
|
||||
|
||||
extern u8 D_801202A0[];
|
||||
|
||||
extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1);
|
||||
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
|
||||
extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
|
||||
s32 func_80188250_body(s32 a0) __asm__("func_80188250");
|
||||
|
||||
s32 func_80188250_body(s32 a0) {
|
||||
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
|
||||
u8 *p;
|
||||
s16 *self4;
|
||||
unsigned int *sc;
|
||||
s32 i;
|
||||
s32 ang;
|
||||
s16 v10[4]; /* sp+0x10 */
|
||||
s16 v18[4]; /* sp+0x18 */
|
||||
s32 sp20[2]; /* sp+0x20 - func_8012B0B4 output */
|
||||
|
||||
p = D_801202A0;
|
||||
i = 0;
|
||||
self4 = (s16 *)(a0 + 4);
|
||||
sc = (unsigned int *)sp20;
|
||||
do {
|
||||
if (*(u16 *)a0 == *(u16 *)p && (u8 *)a0 != p) {
|
||||
if (func_8012BC60(self4, (struct Vec *)(p + 4)) < 0x1000) {
|
||||
ang = func_8012B6D4(self4, (s16 *)(p + 4));
|
||||
func_8012B0B4(sc, ang, 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 *)(a0 + 0x3A);
|
||||
v10[1] = *(u16 *)(a0 + 0x3E);
|
||||
v10[2] = *(u16 *)(a0 + 0x42);
|
||||
if ((func_8012CEB0((s32)&v10[0], (s32)&v18[0], 0) & 0x2000) == 0) {
|
||||
func_8012ADE4((u8 *)a0);
|
||||
return 1;
|
||||
}
|
||||
*(u16 *)(a0 + 6) = v18[0];
|
||||
*(u16 *)(a0 + 0xA) = v18[1];
|
||||
*(u16 *)(a0 + 0xE) = v18[2];
|
||||
__asm__ __volatile__("" ::: "memory"); /* zero-byte cross-jump barrier (§5a) */
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
p += 0x10C;
|
||||
} while (i < 0x60);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 arg0, s32 arg1);
|
||||
void func_801883C8(void) {
|
||||
|
||||
@@ -3449,7 +3449,17 @@ void func_8017F1C8(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F228);
|
||||
extern s32 func_8017F264();
|
||||
extern u16 D_80126B96;
|
||||
extern s16 D_80126B98;
|
||||
|
||||
void func_8017F228() {
|
||||
if (func_8017F264() != 0) {
|
||||
D_80126B96 = 0x4018;
|
||||
D_80126B98 = 0x10;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012DEB8(s32, s32, s32);
|
||||
extern u16 D_801880E0;
|
||||
|
||||
@@ -4323,7 +4323,18 @@ void func_801809A8(void *arg0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017DF34", func_80180A10);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017DF34", func_80180AB8);
|
||||
extern void func_8012E88C(u8 *a0);
|
||||
extern void func_80180C90(s32 a0);
|
||||
|
||||
void func_80180AB8(s32 param_1) {
|
||||
if (*(s32 *)(param_1 + 0xDC) != 0) {
|
||||
*(u16 *)((s32)param_1 + 2) = 2;
|
||||
*(u16 *)((s32)param_1 + 0x34) = 0;
|
||||
func_8012E88C((u8 *)param_1);
|
||||
func_80180C90(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80180CEC();
|
||||
extern s32 func_80180C44();
|
||||
|
||||
@@ -3433,7 +3433,32 @@ void func_8017EE08(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898", func_8017EE44);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8001BFD0(void);
|
||||
extern void func_800D0C48(s32 a0);
|
||||
extern void func_800D1E28(void);
|
||||
extern s32 func_8017FB74(void);
|
||||
|
||||
s32 func_8017EE44(void *a0) {
|
||||
s32 v0;
|
||||
s32 v1 = -1;
|
||||
v0 = *(s32 *)(a0 + 0x28);
|
||||
v0 += -1;
|
||||
*(s32 *)(a0 + 0x28) = v0;
|
||||
if (v0 == v1) {
|
||||
func_8002D4C8(4, 0x6CA);
|
||||
func_8002D4C8(0x1C, 0);
|
||||
func_8001BFD0();
|
||||
func_8002D4C8(0x1D, 0);
|
||||
if (func_8017FB74() != 0) {
|
||||
func_800D0C48(1);
|
||||
}
|
||||
func_800D1E28();
|
||||
*(u8 *)(a0 + 0x15) = *(u8 *)(a0 + 0x15) + 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8016EE40(s32 a0, s32 a1, s32 a2);
|
||||
extern M2C_UNK D_8018F1EC;
|
||||
|
||||
@@ -5375,7 +5375,59 @@ void func_8017FC70(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_8017FD14);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012B200(u8 *a0);
|
||||
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
extern s32 func_8012BCCC(s32 a0);
|
||||
extern s32 func_8017F690(s32 a0, s32 a1);
|
||||
|
||||
extern u8 D_801A3560[];
|
||||
extern u8 D_801A3710[];
|
||||
extern u8 D_801A3608[];
|
||||
|
||||
void func_8017FD14(s32 a0)
|
||||
{
|
||||
s32 v0;
|
||||
unsigned short *p;
|
||||
s16 t;
|
||||
|
||||
if (*(s16 *)(a0 + 0x98) == 0) {
|
||||
func_8012A828(a0, D_801A3560);
|
||||
}
|
||||
|
||||
if (((s32 (*)(s32))func_8012CBCC)(a0) != 0) {
|
||||
func_8012B200((u8 *)a0);
|
||||
}
|
||||
|
||||
v0 = func_8012B8E4(a0, 8);
|
||||
p = (unsigned short *)(*(int *)(a0 + 0x20) + 0x12);
|
||||
*p = (unsigned short)(*p + v0);
|
||||
|
||||
p = (unsigned short *)(*(int *)(a0 + 0x20) + 0x12);
|
||||
*p = (unsigned short)(*p & 0xFFF);
|
||||
|
||||
t = *(s16 *)(a0 + 0xFC);
|
||||
if (t != 0) {
|
||||
*(s16 *)(a0 + 0xFC) = t - 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (func_8012BCCC(a0) < 0x2401) {
|
||||
*(s16 *)(a0 + 0x2) = 3;
|
||||
func_8012A828(a0, D_801A3710);
|
||||
} else {
|
||||
if (func_8017F690(a0, 0x48) != 0) {
|
||||
return;
|
||||
}
|
||||
if (0x40000 < func_8012BCCC(a0)) {
|
||||
return;
|
||||
}
|
||||
*(s16 *)(a0 + 0x2) = 2;
|
||||
func_8012A828(a0, D_801A3608);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s16 D_80126B98;
|
||||
extern s16 D_80126B9A;
|
||||
@@ -6659,7 +6711,40 @@ s32 aF8018A224(param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_80181B04);
|
||||
void func_80181B04(s32 param_1) {
|
||||
extern void (*D_801AD318[])(void);
|
||||
extern void func_80183014(s32 a0);
|
||||
extern s32 func_8012C0EC(s32 a0);
|
||||
extern s32 rand(void);
|
||||
s32 v1;
|
||||
s32 v0;
|
||||
s32 rem;
|
||||
|
||||
D_801AD318[*(u16 *)(param_1 + 2)]();
|
||||
if (*(u16 *)(param_1) != 0) {
|
||||
func_80182B38(param_1);
|
||||
func_80182CCC(param_1);
|
||||
func_80183014(param_1);
|
||||
|
||||
v1 = *(s32 *)(param_1 + 0xEC) + 1;
|
||||
v0 = *(s32 *)(param_1 + 0xF0);
|
||||
rem = v1 % v0;
|
||||
*(s32 *)(param_1 + 0xEC) = v1;
|
||||
if (rem == 0 || (rand() & 0xFFF) == 0) {
|
||||
func_8018317C(param_1);
|
||||
*(s32 *)(param_1 + 0xF0) = rand() % 32 + 0x10;
|
||||
}
|
||||
|
||||
if (*(s16 *)(param_1 + 0xA) >= 0x10) {
|
||||
func_80182B08(param_1);
|
||||
} else {
|
||||
if (*(s16 *)(param_1 + 0x70) & 0x8000) {
|
||||
func_8012C0EC(param_1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80181C40(s32 a0) {
|
||||
extern u8 D_801AD174[];
|
||||
|
||||
@@ -7857,7 +7857,35 @@ void func_801837C4(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183864);
|
||||
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, void *a1);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern void func_8012E8A8(u8 *a0);
|
||||
|
||||
void func_80183864(void *a0) {
|
||||
extern u8 D_801BD274[];
|
||||
extern u8 D_801BAEF0[];
|
||||
extern void (*D_801910C0[])(void);
|
||||
s32 v0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)D_801BD274);
|
||||
*(s16 *)((s32)a0 + 0x34) = 0;
|
||||
*(s32 *)((s32)a0 + 0x1C) = 0;
|
||||
*(u16 *)((s32)a0 + 2) += 1;
|
||||
*(u16 *)((s32)a0 + 0x5C) |= 0x10;
|
||||
func_8012A828((s32)a0, D_801BAEF0);
|
||||
func_8012E8E0((s32)a0, (s32)D_801910C0);
|
||||
func_8012E8A8((u8 *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void (*D_801BFF04[])(void);
|
||||
extern s32 func_8012C044(s32 a0);
|
||||
|
||||
@@ -5948,7 +5948,16 @@ s32 func_801802A4(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018033C);
|
||||
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_801803DC(s32 a0);
|
||||
|
||||
s32 func_8018033C(s32 a0, s32 a1) {
|
||||
s32 t;
|
||||
|
||||
t = func_801803DC(a0);
|
||||
return func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), t, (s16)a1);
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012BC60(void *a0, void *a1);
|
||||
extern s32 func_8012BCCC(s32 a0);
|
||||
|
||||
@@ -4639,7 +4639,40 @@ void func_80188F80(void* arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_80188FB4);
|
||||
int func_80188FB4(int a0, void* a1)
|
||||
{
|
||||
s16 stack_buf[8];
|
||||
register u16 *s0 __asm__("$16") = (u16 *)a1;
|
||||
u16 v0;
|
||||
s32 result;
|
||||
|
||||
v0 = s0[2];
|
||||
stack_buf[0] = v0;
|
||||
v0 = s0[3];
|
||||
stack_buf[4] = v0;
|
||||
v0 = s0[5];
|
||||
stack_buf[5] = v0;
|
||||
stack_buf[1] = v0;
|
||||
v0 = s0[6];
|
||||
stack_buf[6] = v0;
|
||||
stack_buf[2] = v0;
|
||||
|
||||
result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);
|
||||
if (result != 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
v0 = s0[7];
|
||||
stack_buf[6] = v0;
|
||||
stack_buf[2] = v0;
|
||||
|
||||
result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);
|
||||
if (result != 0) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 *D_80126B78;
|
||||
extern s32 *D_80126B90;
|
||||
|
||||
@@ -2837,7 +2837,69 @@ s32 func_80184028(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_o0c", func_80184058);
|
||||
#include "common.h"
|
||||
|
||||
/* 16.16 fixed-point view: unkE0 is a 32-bit accumulator whose HIGH half is the s16
|
||||
* unkE2 the rest of the function reads (little-endian overlay). */
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk00;
|
||||
/* 0x02 */ s16 unk02;
|
||||
/* 0x04 */ u8 pad04[0xD8];
|
||||
/* 0xDC */ s16 unkDC;
|
||||
/* 0xDE */ s16 unkDE;
|
||||
/* 0xE0 */ s32 unkE0;
|
||||
} Ent58_fx;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk00;
|
||||
/* 0x02 */ s16 unk02;
|
||||
/* 0x04 */ u8 pad04[0xD8];
|
||||
/* 0xDC */ s16 unkDC;
|
||||
/* 0xDE */ s16 unkDE;
|
||||
/* 0xE0 */ s16 unkE0;
|
||||
/* 0xE2 */ s16 unkE2;
|
||||
/* 0xE4 */ s16 unkE4;
|
||||
/* 0xE6 */ s16 unkE6;
|
||||
/* 0xE8 */ s16 unkE8;
|
||||
/* 0xEA */ s16 unkEA;
|
||||
} Ent_80184058;
|
||||
|
||||
extern s32 D_801EAFD0;
|
||||
extern s32 D_8018F858[];
|
||||
extern s32 D_801270C8;
|
||||
extern u16 D_800B99DC;
|
||||
extern u8 D_8018BCC8;
|
||||
extern void func_8017DF84(void *a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_80184354(void);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern void func_8013373C(s32 a0);
|
||||
|
||||
void func_80184058(Ent_80184058 *p) {
|
||||
func_8017DF84(&D_801EAFD0, D_8018F858[p->unkE4], p->unkDC, p->unkE2);
|
||||
func_80184354();
|
||||
if (p->unkEA == 0) {
|
||||
((Ent58_fx *)p)->unkE0 += 0x5CCCC;
|
||||
} else {
|
||||
if (--p->unkEA == 0) {
|
||||
func_8002D4C8(0x81E, 0);
|
||||
}
|
||||
}
|
||||
if (--p->unkE8 == 0) {
|
||||
func_8013C9C4(&D_8018BCC8);
|
||||
p->unkE8 = (D_800B99DC & 7) + 3;
|
||||
}
|
||||
if (p->unkE2 >= 0x259) {
|
||||
p->unkE2 = 0;
|
||||
D_801270C8 = 2;
|
||||
p->unkE4 = 0;
|
||||
func_8013373C(1);
|
||||
func_8002D4C8(4, 0x81E);
|
||||
++p->unk02;
|
||||
}
|
||||
p->unkDC += 8;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2);
|
||||
|
||||
@@ -3854,7 +3854,19 @@ extern void func_800D0694(void);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80183BF8", func_801856BC);
|
||||
void func_801856BC(s32 a0, s32 a1)
|
||||
{
|
||||
typedef struct { short x, y, z, w; } Rec8T;
|
||||
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2);
|
||||
extern Rec8T D_801B9330[];
|
||||
|
||||
s32 i;
|
||||
|
||||
for (i = 0; D_801B9330[i].x != 0; i++) {
|
||||
func_8012C658(0x10D, i, a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80185730 — allocates a GTE-projection slot, seeds a random spread
|
||||
|
||||
@@ -8828,7 +8828,15 @@ void func_8018A500(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_8018A618);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
|
||||
void func_8018A618(s32 arg0) {
|
||||
if ((((s32 (*)(s32))func_8012CBCC)(arg0) != 0) || (*(s16 *)((s32)arg0 + 0xA) >= 0x200)) {
|
||||
func_8012C218((void *)arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4724,7 +4724,21 @@ void func_80180980(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180BD8);
|
||||
extern void func_80178B18(s32 a0, s32 a1);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern s32 D_8019AFD4;
|
||||
|
||||
void func_80180BD8(void* a0)
|
||||
{
|
||||
s32 *p = &D_8019AFD4;
|
||||
s32 hi;
|
||||
|
||||
hi = *(s16 *)(a0 + 0xE) << 16;
|
||||
*p = *(u16 *)(a0 + 6) | hi;
|
||||
func_80178B18(a0, (s32)(p - 1));
|
||||
func_8012AD44((s32 *)a0, 2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8019AFE8[])(void);
|
||||
|
||||
@@ -2933,7 +2933,18 @@ void func_80183E04(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_80183C10", func_80183EB4);
|
||||
void func_80183EB4(void *a0) {
|
||||
struct B16_80185634 { s32 w[4]; };
|
||||
|
||||
extern struct B16_80185634 D_800A5EA8;
|
||||
extern struct B16_80185634 D_801C4F2C;
|
||||
extern s32 D_800A5EB0;
|
||||
D_800A5EA8 = D_801C4F2C;
|
||||
D_800A5EB0 = func_8004787C(*(s16 *)((s32)a0 + 0xFE)) * 6 / 4096 - 3;
|
||||
*(u16 *)((s32)a0 + 0xFE) = (*(u16 *)((s32)a0 + 0xFE) + 0x71) & 0xFFF;
|
||||
func_80028620(2, &D_800A5EA8);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* §71 sibling-first: func_80185634 (same TU, already MATCHed) is the exact template.
|
||||
|
||||
@@ -4262,7 +4262,30 @@ void func_8018110C(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8017BEBC", func_801811F0);
|
||||
extern void func_801292C8(u8 *a0);
|
||||
|
||||
s32 func_801811F0(s32 a0)
|
||||
{
|
||||
volatile s32 pad;
|
||||
u32 *p = *(u32 **)((s32)a0 + 0x20);
|
||||
u32 v = p[1];
|
||||
u32 w = 0x80000000;
|
||||
|
||||
if ((s32)v < 0) {
|
||||
w = 0x7fffffff;
|
||||
w = v & w;
|
||||
} else {
|
||||
w = v | w;
|
||||
}
|
||||
p[1] = w;
|
||||
|
||||
if (--*(s32 *)((s32)a0 + 0x1C) == 0) {
|
||||
func_801292C8((u8 *)a0);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3256,7 +3256,26 @@ void func_80185E28(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_801855D0", func_80186028);
|
||||
extern s32 func_801860B0(s32 a0);
|
||||
|
||||
void func_80186028(s32 a0)
|
||||
{
|
||||
s32 v;
|
||||
|
||||
v = *(s16 *)((s32)a0 + 0x70);
|
||||
switch (v) {
|
||||
case 0:
|
||||
func_8002D4C8(0x6D5, 0);
|
||||
break;
|
||||
case 1:
|
||||
func_8002D4C8(0x856, (func_801860B0(a0) | 0x2000) & 0xFFFF);
|
||||
break;
|
||||
case 2:
|
||||
func_8002D4C8(0x857, (func_801860B0(a0) | 0x2000) & 0xFFFF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_801855D0", func_801860B0);
|
||||
|
||||
|
||||
@@ -4697,7 +4697,32 @@ void func_8017F9F4(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_8017F9FC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_8017FAD4);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012E014(s32 a0);
|
||||
extern u16 D_80187164[];
|
||||
extern s16 D_80187154[];
|
||||
|
||||
void func_8017FAD4(void *a0)
|
||||
{
|
||||
register s32 t __asm__("$3");
|
||||
register s32 sum __asm__("$2");
|
||||
s16 diff;
|
||||
|
||||
t = D_80187164[*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x70)];
|
||||
__asm__ __volatile__("");
|
||||
sum = *(u16 *)((s32)a0 + 0xA) + t;
|
||||
*(u16 *)((s32)a0 + 0xA) = sum;
|
||||
diff = sum - *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA);
|
||||
if (diff < 0) {
|
||||
diff = -diff;
|
||||
}
|
||||
if (diff >= D_80187154[*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x70)]) {
|
||||
func_8012C218(a0);
|
||||
} else if (*(u8 *)((s32)a0 + 0x74) != 0) {
|
||||
func_8012E014((s32)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017FB88(void) {
|
||||
}
|
||||
|
||||
@@ -4014,7 +4014,19 @@ void func_80187F2C(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_801863CC", func_8018800C);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
|
||||
void func_8018800C(s32 a0)
|
||||
{
|
||||
*(u16 *)(a0 + 0xFC) += 0x20;
|
||||
*(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0x100);
|
||||
*(s32 *)(a0 + 0x8) -= func_8004787C(*(s16 *)(a0 + 0xFC)) << 10;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) >= 0x800) {
|
||||
*(s16 *)(a0 + 0x2) = 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80188074() /* dedup: shared engine-core @0x80188074 (src/shared) */
|
||||
|
||||
|
||||
@@ -3518,7 +3518,27 @@ void func_8017D658(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_8017D698);
|
||||
#include "common.h"
|
||||
|
||||
extern s32 func_8012BD14(s32 a0);
|
||||
extern s32 func_8016F1AC(void);
|
||||
extern s32 func_80178BF8();
|
||||
extern void func_80172710(void);
|
||||
|
||||
s32 func_8017D698_x(s32 a0) __asm__("func_8017D698");
|
||||
|
||||
s32 func_8017D698_x(s32 a0) {
|
||||
if (func_8012BD14(*(s32 *)(a0 + 0x64)) >= 0x1001) {
|
||||
return 0;
|
||||
}
|
||||
if (func_8016F1AC() != 0) {
|
||||
return 0;
|
||||
}
|
||||
*(s16 *)(*(s32 *)(a0 + 0x64) + 2) = 2;
|
||||
func_80178BF8();
|
||||
return (s32)func_80172710;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80185CCC[])(void);
|
||||
@@ -5113,7 +5133,57 @@ void func_8017FF18(s32 target, u16 *cur, s32 step)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_8017FF9C);
|
||||
extern s16 D_80190E2C;
|
||||
extern s16 D_80190E2E;
|
||||
extern s16 D_80190E30;
|
||||
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012C51C(void *a0, s32 a1);
|
||||
extern void func_8012B2CC(s32 a0);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_8017FF9C(void *a0) {
|
||||
struct S8017FF9C_sp {
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
s16 unk6;
|
||||
s16 unk8;
|
||||
s16 unkA;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
s32 unk10;
|
||||
} sp;
|
||||
s32 vec[3];
|
||||
s32 out[3];
|
||||
s32 ret;
|
||||
|
||||
vec[0] = D_80190E2C << 8;
|
||||
vec[1] = D_80190E2E << 8;
|
||||
vec[2] = D_80190E30 << 8;
|
||||
|
||||
func_800484EC(*(s32 *)((s32)a0 + 0x20) + 0x34, (s32)vec, (s32)out);
|
||||
|
||||
out[0] += *(s16 *)((s32)a0 + 0x6) << 8;
|
||||
out[1] += *(s16 *)((s32)a0 + 0xA) << 8;
|
||||
out[2] += *(s16 *)((s32)a0 + 0xE) << 8;
|
||||
|
||||
sp.unk0 = out[0] / 256;
|
||||
sp.unk2 = out[1] / 256;
|
||||
sp.unk4 = out[2] / 256;
|
||||
sp.unk6 = 0x20;
|
||||
sp.unk8 = 2;
|
||||
sp.unkA = 0;
|
||||
sp.unk10 = 0;
|
||||
sp.unkE = 0;
|
||||
|
||||
ret = func_8012C51C(&sp, (s32)a0);
|
||||
if (ret != 0) {
|
||||
*(u16 *)(*(s32 *)(ret + 0x20) + 0x12) = *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12);
|
||||
func_8012B2CC(ret);
|
||||
func_8002D4C8(0x83A, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s16 D_80126B98;
|
||||
@@ -5542,7 +5612,60 @@ void func_80180C40(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_80180CC0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_80180D50);
|
||||
extern s32 func_80180E34(s32, s32, u16);
|
||||
|
||||
s32 func_80180D50(s32 arg0) {
|
||||
extern u8 D_801202A0[];
|
||||
register s32 zr __asm__("$0");
|
||||
u8 *pe;
|
||||
u8 *ps;
|
||||
s16 *ca;
|
||||
s16 *cb;
|
||||
u16 state;
|
||||
u16 t;
|
||||
s32 count;
|
||||
|
||||
pe = D_801202A0;
|
||||
count = 0;
|
||||
ps = pe + 4;
|
||||
do {
|
||||
if ((s32) pe == arg0) {
|
||||
goto next;
|
||||
}
|
||||
state = *(u16 *) pe;
|
||||
ca = (s16 *) ((s32) arg0 + zr);
|
||||
if (state == 0x1FC) {
|
||||
goto b1fc;
|
||||
}
|
||||
cb = (s16 *) ((s32) ps + zr);
|
||||
if (state == 0x239) {
|
||||
goto b239;
|
||||
}
|
||||
goto next;
|
||||
|
||||
b1fc:
|
||||
cb = (s16 *) ((s32) ps + zr);
|
||||
t = (*(s16 *) (*(s32 *) (arg0 + 0x20) + 0x18) * 9u) >> 9;
|
||||
goto call;
|
||||
|
||||
b239:
|
||||
t = (u32) (*(s16 *) (*(s32 *) (arg0 + 0x20) + 0x18) + *(s16 *) (*(s32 *) (ps + 0x1C) + 0x18)) >> 6;
|
||||
/* fall through */
|
||||
call:
|
||||
if (((s32 (*)(s16 *, s16 *, s32))func_80180E34)(ca, cb, t) == 0) {
|
||||
goto next;
|
||||
}
|
||||
__asm__ __volatile__("" :: "r"(pe));
|
||||
return (s32) pe;
|
||||
|
||||
next:
|
||||
count++;
|
||||
ps += 0x10C;
|
||||
pe += 0x10C;
|
||||
} while (count < 0x60);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
s32 func_80180E34(s32 a0, s32 a1, u16 a2) {
|
||||
s32 d = *(s16 *)(a1 + 2) - *(s16 *)(a0 + 6);
|
||||
|
||||
@@ -7178,7 +7178,28 @@ extern void func_8012B21C(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181BD4);
|
||||
typedef struct { s32 w[8]; } MTX8L_80181BD4;
|
||||
|
||||
void func_80181BD4(s32 a0)
|
||||
{
|
||||
extern MTX8L_80181BD4 aD800AE620 __asm__("D_800AE620");
|
||||
extern void RotMatrixY(s32 a0, void *a1);
|
||||
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
MTX8L_80181BD4 m;
|
||||
s32 vel[3];
|
||||
|
||||
m = aD800AE620;
|
||||
vel[1] = 0;
|
||||
vel[0] = 0;
|
||||
vel[2] = 0xFFF20000;
|
||||
RotMatrixY(*(s16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x12), &m);
|
||||
func_800484EC((s32)&m, (s32)&vel[0], a0 + 0x10);
|
||||
func_8002D4C8(0xB3F, 0);
|
||||
func_8012AD44((s32 *)a0, 3);
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_80192E94;
|
||||
extern void (*D_80192EA4[])(void);
|
||||
|
||||
@@ -8641,7 +8641,21 @@ void func_8018480C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_801849F0);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_8012B200(u8 *a0);
|
||||
|
||||
extern u8 D_801BE52C[];
|
||||
|
||||
void func_801849F0(void *arg0) {
|
||||
func_8012A828((s32)arg0, (s32)&D_801BE52C);
|
||||
*(s16 *)((char *)arg0 + 0x2) = 6;
|
||||
*(s16 *)((char *)arg0 + 0x34) = 0;
|
||||
*(s32 *)((char *)arg0 + 0xD0) = 0;
|
||||
func_8012B200((u8 *)arg0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80184A38 — ov_SC02_041 / ov_SC02_041_jr_8017BEBC.c MATCH (142 ins)
|
||||
|
||||
@@ -4635,7 +4635,64 @@ INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017EF7
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017EFF4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017F180);
|
||||
void func_8017F180(s32 param_1, s32 param_2) {
|
||||
typedef struct { s32 w[8]; } Blk32;
|
||||
extern u8 D_80078EAE;
|
||||
extern u8 D_80078E78[];
|
||||
extern u8 D_800D3918[];
|
||||
extern s16 D_801152B0;
|
||||
extern Blk32 D_800AE620;
|
||||
extern s32 rand(void);
|
||||
extern s32 func_8012B864(s32 a0);
|
||||
extern s32 func_8012B70C(s16 *a0, s16 *a1);
|
||||
extern void RotMatrixY(s32 a0, void *a1);
|
||||
u8 *pb;
|
||||
s32 pd;
|
||||
s32 stack[6];
|
||||
Blk32 m;
|
||||
s32 q;
|
||||
s32 r;
|
||||
|
||||
pb = D_80078E78;
|
||||
stack[1] = 0;
|
||||
stack[0] = 0;
|
||||
if (D_80078EAE != 0) {
|
||||
stack[2] = -0x60000;
|
||||
} else {
|
||||
stack[2] = -0x80000;
|
||||
}
|
||||
switch (param_2) {
|
||||
case 0:
|
||||
if (pb[0x36] != 0 && (rand() & 1) != 0) {
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
*(s16 *)(param_1 + 0xDC) = func_8012B864(param_1);
|
||||
break;
|
||||
case 2:
|
||||
*(u16 *)(param_1 + 0xDC) += 0x800;
|
||||
break;
|
||||
case 3:
|
||||
do {
|
||||
r = rand() % 4096;
|
||||
} while (*(s16 *)(param_1 + 0xDC) == (s16)r);
|
||||
break;
|
||||
case 4:
|
||||
*(s16 *)(param_1 + 0xDC) = (func_8012B864(param_1) + 0x800) & 0xFFF;
|
||||
break;
|
||||
case 5:
|
||||
pd = (s32)D_800D3918;
|
||||
*(s16 *)&stack[4] = *(s32 *)(param_1 + 0x10) >> 8;
|
||||
*(s16 *)&stack[5] = *(s32 *)(param_1 + 0x18) >> 8;
|
||||
q = func_8012B70C((s16 *)pd, &D_801152B0);
|
||||
*(s16 *)(param_1 + 0xDC) = (q * 2 - func_8012B70C((s16 *)&stack[4], (s16 *)pd)) & 0xFFF;
|
||||
break;
|
||||
}
|
||||
m = *(Blk32 *)&D_800AE620;
|
||||
RotMatrixY(*(s16 *)(param_1 + 0xDC), &m);
|
||||
func_800484EC(&m, stack, param_1 + 0x10);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017F354);
|
||||
|
||||
|
||||
@@ -4785,7 +4785,36 @@ void func_8017EFDC(s32 a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_8017F01C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_8017F080);
|
||||
extern s16 D_80126CAC;
|
||||
extern s32 D_801274D8;
|
||||
extern s32 D_801274DC;
|
||||
extern s32 func_800132BC(s32 a0, s32 a1);
|
||||
|
||||
s32 func_8017F080(u16 *param_1) {
|
||||
s32 x = *(u16 *)((s32)param_1 + 6);
|
||||
if ((u32)(x - 0x31) < 2) {
|
||||
return 1;
|
||||
}
|
||||
if ((x & 0xFFFF) == 0x33 || (x & 0xFFFF) == 0x27B) {
|
||||
return 1;
|
||||
}
|
||||
{
|
||||
register s32 ret __asm__("$4");
|
||||
register s32 lim __asm__("$3");
|
||||
s32 res;
|
||||
s32 hi;
|
||||
ret = func_800132BC((s32)&D_80126CAC, (s32)param_1);
|
||||
__asm__ __volatile__("" : : "r"(ret));
|
||||
lim = D_801274D8;
|
||||
res = 0;
|
||||
if (lim < ret) {
|
||||
hi = D_801274DC;
|
||||
res = ret < hi;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80189860[])(void);
|
||||
|
||||
@@ -8713,7 +8713,20 @@ special:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80187574);
|
||||
#include "common.h"
|
||||
|
||||
extern void (*D_801947E4[])(void);
|
||||
extern void func_80187618(s32 *a0, u16 a1, u16 a2);
|
||||
extern void func_801876A0(s32 a0);
|
||||
extern u8 D_801EFD50;
|
||||
|
||||
void func_80187574(void *param_1)
|
||||
{
|
||||
D_801947E4[*(unsigned short *)((char *)param_1 + 2)]();
|
||||
func_80187618((s32 *)&D_801EFD50, 0x160, 0x18F);
|
||||
func_801876A0((s32)param_1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3860,7 +3860,15 @@ void func_8017CFEC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D028);
|
||||
extern void func_8002931C(s32 a0);
|
||||
|
||||
s32 func_8017D028(s32 param_1) {
|
||||
func_8002931C(0x30C0000);
|
||||
*(s32 *)(param_1 + 0x28) = 0xA;
|
||||
*(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8016EE40(s32 a0, s32 a1, s32 a2);
|
||||
void func_8017D06C(void) {
|
||||
@@ -4118,7 +4126,15 @@ extern s32 func_8013CB84(void);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D930);
|
||||
extern s32 func_80029178(s32 arg);
|
||||
|
||||
s32 func_8017D930(void) {
|
||||
if ((func_80029178(0x117) & 0xFF) != 0) {
|
||||
return 0x74;
|
||||
}
|
||||
return 0x53;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801822B0[])(void);
|
||||
|
||||
@@ -6883,7 +6883,27 @@ void func_801826C8(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_801827A0);
|
||||
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
/* TU declares `extern void func_801827A0(s32);` at :6372 (caller discards the
|
||||
* result), but the bytes return s32 (both early exits fill $v0 with 0, success
|
||||
* falls through addiu $v0,$zero,1). §138: asm-label alias on the DEFINITION,
|
||||
* so the existing caller-side decl stays untouched. */
|
||||
s32 aF801827A0(s32 a0) __asm__("func_801827A0");
|
||||
|
||||
s32 aF801827A0(s32 a0) {
|
||||
extern u8 D_801A8FA8[];
|
||||
|
||||
if ((*(s32 *)(a0 + 0xDC) & 1) != 0) {
|
||||
return 0;
|
||||
}
|
||||
if (func_8012D5E4(a0, (s32)D_801A8FA8, (s32)(D_801A8FA8 + 8), 0x13) != 1) {
|
||||
return 0;
|
||||
}
|
||||
*(s32 *)(a0 + 0xDC) |= 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -5113,7 +5113,46 @@ void func_80181F84(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017D898", func_80181FCC);
|
||||
extern u8 D_80062BF4[];
|
||||
extern s32 D_800D5880;
|
||||
extern s32 D_800D58AC;
|
||||
extern void func_80019064(void *a0);
|
||||
extern void func_80149020(s32 *a0);
|
||||
extern void func_80147324(s32 a0);
|
||||
extern int func_801511E0(int a0);
|
||||
extern s32 func_80012A60(s32 a0, s32 a1);
|
||||
extern void func_80154274(s32 *a0, s32 a1);
|
||||
extern void func_80154A74(s32 a0, s32 a1);
|
||||
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
extern void func_80146CA0(void *a0);
|
||||
|
||||
void func_80181FCC(s32 a0)
|
||||
{
|
||||
s32 s1;
|
||||
s32 s0;
|
||||
|
||||
s1 = a0;
|
||||
func_80019064(D_80062BF4);
|
||||
func_80149020((s32 *)s1);
|
||||
func_80147324(0x451);
|
||||
func_801511E0(s1);
|
||||
if ((s16)func_80012A60(*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12), *(s16 *)(s1 + 0xF4)) >= 0x401) {
|
||||
func_80154274((s32 *)s1, (s32)&D_800D5880);
|
||||
} else {
|
||||
func_80154274((s32 *)s1, (s32)&D_800D58AC);
|
||||
}
|
||||
s0 = 1;
|
||||
func_80154A74(s1, 0x16);
|
||||
func_80149020((s32 *)s1);
|
||||
func_80146994(0x42, s1, 0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, 0x20, 0, 0, s0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, 0, 0, 0x20, s0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, -0x20, 0, 0, s0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, 0, 0, -0x20, s0, 0);
|
||||
func_80146CA0((void *)s1);
|
||||
}
|
||||
|
||||
|
||||
extern void func_80149020(s32 *a0);
|
||||
extern void func_80182194(s32 a0);
|
||||
|
||||
@@ -3376,7 +3376,22 @@ void func_8017DA90(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017C8D0", func_8017DC5C);
|
||||
void func_8017DC5C(void) {
|
||||
extern s16 D_8018C4DC;
|
||||
extern s16 D_8018C4DA;
|
||||
extern s16 D_8018C4D8;
|
||||
extern void func_80146CA0(void *a0);
|
||||
s16 sVar1;
|
||||
|
||||
sVar1 = D_8018C4DC + 8;
|
||||
D_8018C4DC = sVar1;
|
||||
D_8018C4DA = sVar1;
|
||||
D_8018C4D8 = sVar1;
|
||||
if (sVar1 >= 0x101) {
|
||||
((void (*)(void))func_80146CA0)();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s16 D_8018C4D8;
|
||||
extern s16 D_8018C4DA;
|
||||
|
||||
@@ -5982,7 +5982,24 @@ void func_80180048(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801800BC);
|
||||
void func_801800BC(void *arg0) {
|
||||
extern void func_8012E8E0(s32, s32);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_80184990(s32);
|
||||
extern s32 D_80191434;
|
||||
extern short D_801C0CFC;
|
||||
extern s32 D_801CE1C0;
|
||||
extern s32 D_801D5210;
|
||||
|
||||
*(short *)((char *)arg0 + 0x2) = 3;
|
||||
func_8012E8E0((s32)arg0, (s32)&D_80191434);
|
||||
func_8012E88C((s32)arg0);
|
||||
func_8012A828((s32)arg0, (s32)&D_801C0CFC);
|
||||
func_80184990((s32)arg0);
|
||||
D_801CE1C0 = D_801D5210;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_8012A828(s32, s32);
|
||||
|
||||
@@ -3456,7 +3456,43 @@ void func_80189BA0(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_80189DB4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_80189E68);
|
||||
void func_80189E68(s32 a0, s32 a1)
|
||||
{
|
||||
extern s32 D_801ED7E4;
|
||||
register s32 rv __asm__("$2");
|
||||
s32 x = D_801ED7E4;
|
||||
s32 y = a1;
|
||||
s32 d;
|
||||
|
||||
if (y < a0) {
|
||||
if (x < y) {
|
||||
x = x + 0x5A0;
|
||||
}
|
||||
y = y + 0x5A0;
|
||||
}
|
||||
if (a0 >= x) {
|
||||
rv = -1;
|
||||
goto done;
|
||||
}
|
||||
if (x >= y) {
|
||||
rv = -1;
|
||||
goto done;
|
||||
}
|
||||
d = x - a0;
|
||||
if (d < 16) {
|
||||
rv = d * 2;
|
||||
goto done;
|
||||
}
|
||||
d = y - x;
|
||||
if (d < 16) {
|
||||
rv = d * 2;
|
||||
goto done;
|
||||
}
|
||||
rv = 31;
|
||||
done:
|
||||
__asm__("" :: "r"(rv));
|
||||
}
|
||||
|
||||
|
||||
extern s32 (*D_801E6758[])();
|
||||
extern s32 D_801ED7E0;
|
||||
@@ -4460,7 +4496,23 @@ void func_8018B430(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_8018B498);
|
||||
extern s32 func_801848AC(s32 arg0, s32 arg1);
|
||||
extern u8 D_80078EBA;
|
||||
|
||||
void func_8018B498(void *a0) {
|
||||
s32 v0;
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2;
|
||||
if (D_80078EBA == 3) {
|
||||
v0 = 0;
|
||||
} else {
|
||||
v0 = func_801848AC(0x7, 0x13);
|
||||
v0 = (0U < (u32)v0) ? 1 : 0;
|
||||
}
|
||||
if (v0 != 0) {
|
||||
*(s16 *)((char *)a0 + 0x2) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012E57C(s32 a0, s32 a1);
|
||||
extern s32 func_801848AC(s32 arg0, s32 arg1);
|
||||
@@ -4745,7 +4797,24 @@ extern void func_80178CBC(s32, s32);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_8018BC64);
|
||||
extern s32 func_801848AC(s32 arg0, s32 arg1);
|
||||
|
||||
void func_8018BC64(void *arg0) {
|
||||
register s32 *s0 asm("$16") = arg0;
|
||||
s32 v0, v1;
|
||||
*(s32 *)((u8 *)(*(s32 **)((u8 *)s0 + 0xCC)) + 0xB0) = 2;
|
||||
v0 = func_801848AC(6, 0x12);
|
||||
if (v0 != 0) {
|
||||
v1 = 1;
|
||||
} else {
|
||||
v0 = func_801848AC(0x12, 0x15);
|
||||
v1 = (v0 != 0) ? 2 : 0;
|
||||
}
|
||||
if (v1 != 0) {
|
||||
func_8018BAE0(s0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_801848AC(s32 arg0, s32 arg1);
|
||||
|
||||
|
||||
@@ -4717,7 +4717,49 @@ void func_8017DE24(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DE8C);
|
||||
extern void func_80147324(s32 a0);
|
||||
extern void func_80147060(u8 *a0);
|
||||
extern void func_80029124(s32 a0, s32 a1);
|
||||
extern void func_80029514(s32 a0);
|
||||
extern s32 func_80174650(s32 a0);
|
||||
extern void func_80171A1C(u8 *a0);
|
||||
extern s16 D_80126B3A;
|
||||
extern s16 D_8011F9C8;
|
||||
|
||||
void func_8017DE8C(u8 *a0) {
|
||||
u16 flags = *(u16 *)(a0 + 0xB8);
|
||||
|
||||
if (flags & 0x4000) {
|
||||
func_80147324(0x445);
|
||||
return;
|
||||
}
|
||||
if (!(flags & 0x8000)) {
|
||||
return;
|
||||
}
|
||||
func_80147060(a0);
|
||||
switch ((s16)(*(u16 *)&D_80126B3A - 2)) {
|
||||
case 0:
|
||||
func_80029124(0x16, 1);
|
||||
func_80029514(0x85);
|
||||
break;
|
||||
case 1:
|
||||
func_80029124(0x17, 1);
|
||||
break;
|
||||
case 2:
|
||||
func_80029124(0x18, 1);
|
||||
break;
|
||||
case 3:
|
||||
func_80029124(0x19, 1);
|
||||
break;
|
||||
case 4:
|
||||
func_80029124(0x1A, 1);
|
||||
break;
|
||||
}
|
||||
(*(s32 *)&D_8011F9C8) = 1;
|
||||
func_80174650((s32)a0);
|
||||
func_80171A1C(a0);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */
|
||||
|
||||
@@ -7779,7 +7821,22 @@ void func_80182B68(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182BB8);
|
||||
void func_80182BB8(s32 arg0)
|
||||
{
|
||||
s32 i;
|
||||
s32 *ptr;
|
||||
|
||||
i = 0;
|
||||
ptr = (s32 *)((s32)arg0 + 0xCC);
|
||||
do {
|
||||
if (*ptr != 0) {
|
||||
func_80183130((void *)*ptr);
|
||||
}
|
||||
i = i + 1;
|
||||
ptr = ptr + 1;
|
||||
} while (i < 4);
|
||||
}
|
||||
|
||||
|
||||
void func_80182C10(s32 a0) {
|
||||
extern s32 func_800133BC(s32 a0, s32 a1);
|
||||
|
||||
@@ -3398,7 +3398,24 @@ void func_8017BEF8(void *a0) {
|
||||
|
||||
DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C0A4);
|
||||
extern void func_800D22E4(s32 a0);
|
||||
|
||||
void func_8017C0A4(s32 param_1) {
|
||||
s32 var_v0;
|
||||
|
||||
*(s32 *)(param_1 + 0x14) = *(s32 *)(param_1 + 0x14) + 0xC000;
|
||||
((void (*)(void))func_800D22E4)();
|
||||
var_v0 = *(s32 *)(param_1 + 0x1C) - 1;
|
||||
*(s32 *)(param_1 + 0x1C) = var_v0;
|
||||
if (var_v0 == -1) {
|
||||
*(s32 *)(param_1 + 0x2C) = 0;
|
||||
*(s32 *)(param_1 + 0x10) = *(s32 *)(param_1 + 4);
|
||||
*(s32 *)(param_1 + 0x18) = *(s32 *)(param_1 + 0xC);
|
||||
func_80146E90(param_1, 0x14);
|
||||
*(u16 *)(param_1 + 2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C120);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -6712,7 +6712,27 @@ void func_8018B19C(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_8018B25C);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_8018B25C(s32 a0) {
|
||||
extern u8 D_801DCF74[];
|
||||
extern u8 D_801DD074[];
|
||||
extern u8 D_801DD174[];
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) == 0) {
|
||||
*(u16 *)(a0 + 2) = 1;
|
||||
func_8012A828(a0, D_801DCF74);
|
||||
if (*(s32 *)(a0 + 0xCC) != 0) {
|
||||
func_8012A828(*(s32 *)(a0 + 0xCC), D_801DD074);
|
||||
}
|
||||
if (*(s32 *)(a0 + 0xD0) != 0) {
|
||||
func_8012A828(*(s32 *)(a0 + 0xD0), D_801DD174);
|
||||
}
|
||||
} else {
|
||||
*(s16 *)(a0 + 0xFC) = *(s16 *)(a0 + 0xFC) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7904,7 +7924,28 @@ extern void func_8018B9E8(void);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_8018CBDC);
|
||||
extern void func_801319E0(s32 a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_8012CBF4(s32 a0);
|
||||
extern void func_80131E00(s32 a0, s32 a1);
|
||||
extern void func_80131C78(s32 a0);
|
||||
extern void func_8018B9E8(void);
|
||||
|
||||
void func_8018CBDC(s32 a0) {
|
||||
if (*(s16 *)(a0 + 0xA) >= 0x10) {
|
||||
func_801319E0(a0);
|
||||
} else {
|
||||
if (func_8012BEE8(a0) != 0) {
|
||||
func_80131E00(a0, 6);
|
||||
} else {
|
||||
if (func_8012CBF4(a0) & 0x2000) {
|
||||
func_80131C78(a0);
|
||||
}
|
||||
((void (*)(s32))func_8018B9E8)(a0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
|
||||
@@ -4456,7 +4456,13 @@ void func_80182850(s32 *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_801828A0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182938);
|
||||
s32 func_80182938(u8 *param_1)
|
||||
{
|
||||
*(u16 *)(*(u8 **)(param_1 + 0x20) + 0x10) = 0;
|
||||
*(u32 *)(param_1 + 0x1C) = 0xFF;
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182950);
|
||||
|
||||
|
||||
@@ -3750,7 +3750,15 @@ void func_8017E584(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_8017E610);
|
||||
extern s16 D_80126B30;
|
||||
extern void func_8017303C(void *);
|
||||
extern u8 D_8019003C[];
|
||||
|
||||
void func_8017E610(void) {
|
||||
func_8017303C((void *)D_8019003C);
|
||||
D_80126B30 = 0;
|
||||
}
|
||||
|
||||
|
||||
extern s16 D_80126B30;
|
||||
extern void func_8017303C(void *);
|
||||
|
||||
@@ -3737,7 +3737,50 @@ void func_8018F194(s32 arg0) {
|
||||
void func_8018F2BC(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8018D98C", func_8018F2C4);
|
||||
extern void func_8012B23C();
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
extern u8 *func_8012913C(s32 a0);
|
||||
|
||||
void func_8018F2C4(s32 param_1)
|
||||
{
|
||||
s32 iv;
|
||||
u32 ret;
|
||||
|
||||
if (*(u16 *)(param_1 + 2) == 0) {
|
||||
*(u8 *)(param_1 + 0xC0) = 1;
|
||||
*(u16 *)(param_1 + 2) += 1;
|
||||
func_8012B23C(param_1);
|
||||
*(s32 *)(param_1 + 0x1C) = 1;
|
||||
return;
|
||||
}
|
||||
*(s32 *)(param_1 + 0xDC) = *(s32 *)(param_1 + 0x14);
|
||||
ret = ((s32 (*)(s32))func_8012CBCC)(param_1);
|
||||
if (ret != 0 && (ret & 0x6000) != 0) {
|
||||
if (--*(s32 *)(param_1 + 0x1C) == 0) {
|
||||
goto kill;
|
||||
}
|
||||
*(s32 *)(param_1 + 0x14) = -*(s32 *)(param_1 + 0xDC) >> 2;
|
||||
}
|
||||
if ((++*(u16 *)(param_1 + 0xFC)) & 1) {
|
||||
iv = (s32)func_8012913C(0x23);
|
||||
if (iv != 0) {
|
||||
*(u16 *)((u8 *)iv + 6) = *(u16 *)(param_1 + 6);
|
||||
*(u16 *)((u8 *)iv + 0xA) = *(u16 *)(param_1 + 0xA);
|
||||
*(u16 *)((u8 *)iv + 0xE) = *(u16 *)(param_1 + 0xE);
|
||||
*(u32 *)((u8 *)iv + 0x18) = 0;
|
||||
*(u32 *)((u8 *)iv + 0x14) = 0;
|
||||
*(u32 *)((u8 *)iv + 0x10) = 0;
|
||||
*(u16 *)((u8 *)iv + 0x34) = 0x3000;
|
||||
}
|
||||
}
|
||||
if (*(s16 *)(param_1 + 0xA) < 0x20) {
|
||||
return;
|
||||
}
|
||||
kill:
|
||||
func_8012C218((void *)param_1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
|
||||
@@ -5140,7 +5140,25 @@ void func_80180D74(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_80180E78);
|
||||
extern s16 D_801AAD6E[];
|
||||
extern void func_8012C218(s32 a0);
|
||||
extern void func_8018088C(s32 a0);
|
||||
extern void func_8012E014(s32 a0);
|
||||
|
||||
void func_80180E78(void *a0) {
|
||||
if (D_801AAD6E[*(s16 *)((s32)a0 + 0x70) * 4] >= 0x400) {
|
||||
func_8012C218((s32)a0);
|
||||
return;
|
||||
}
|
||||
*(s16 *)((s32)a0 + 0xA) = D_801AAD6E[*(s16 *)((s32)a0 + 0x70) * 4] + *(u16 *)((s32)a0 + 0x8A);
|
||||
func_8018088C((s32)a0);
|
||||
if (*(s32 *)((s32)a0 + 0x3C) != *(s32 *)((s32)a0 + 0x8)) {
|
||||
if (*(u8 *)((s32)a0 + 0x74) != 0) {
|
||||
func_8012E014((s32)a0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80180F18(void) {
|
||||
}
|
||||
|
||||
@@ -5309,7 +5309,16 @@ void func_8017F478(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017F540);
|
||||
extern s32 func_8012AD50(void *arg0);
|
||||
|
||||
void func_8017F540(s32 a0) {
|
||||
if (*(s16 *)(a0 + 0x98) != 0) {
|
||||
*(u16 *)(a0 + 0xE) -= 1;
|
||||
} else {
|
||||
func_8012AD50((void *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017F584(s32 a0) {
|
||||
extern s32 func_80180FA4(s32, s32);
|
||||
@@ -6238,7 +6247,17 @@ void func_8018090C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_801809FC);
|
||||
extern s32 func_80180F84(void);
|
||||
extern s32 func_80181334(s32 a0, s32 a1);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
|
||||
void func_801809FC(s32 a0)
|
||||
{
|
||||
if (func_80180F84() == 0x13 && func_80181334(a0, 1) != 0) {
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012AD50(void*);
|
||||
extern s32 func_80180F84(void);
|
||||
|
||||
@@ -4951,7 +4951,42 @@ void func_8017EFA4(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EFC4);
|
||||
void func_8017EFC4(s32 a0) {
|
||||
extern void func_8012C194(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001CD9C(s32 a0, void *a1);
|
||||
extern void func_800233CC(void *a0, unsigned short a1);
|
||||
extern s32 rand(void);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
extern u32 D_801A7D0C[];
|
||||
extern s32 D_80185C90[];
|
||||
|
||||
register s32 s2 __asm__("$18") = a0;
|
||||
register s32 s0 __asm__("$16");
|
||||
register s32 v0 __asm__("$2");
|
||||
s32 s1;
|
||||
|
||||
s1 = (*(s16 *)(s2 + 0x70) << 6) + (s32)&D_801A7D0C;
|
||||
v0 = ((s32 (*)(void))func_8012C194)();
|
||||
__asm__ volatile("addu %0,%1,$0" : "=r"(s0) : "r"(v0));
|
||||
*(s32 *)(s2 + 0x20) = v0;
|
||||
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)s2);
|
||||
} else {
|
||||
func_8001CD9C(s0, (void *)s1);
|
||||
func_800233CC((void *)s1, 0x80);
|
||||
*(s16 *)(s0 + 0x1E) = 0xC00;
|
||||
*(s16 *)(s0 + 0x10) = 0x400;
|
||||
*(s32 *)(s0 + 4) |= 0x50000000;
|
||||
*(s16 *)(s0 + 0x1A) = 0;
|
||||
*(s16 *)(s0 + 0x18) = 0;
|
||||
*(s32 *)s1 = D_80185C90[rand() & 7];
|
||||
*(s32 *)(s1 + 4) = 0;
|
||||
func_8012AD50((void *)s2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8017F478(u8 *a0);
|
||||
extern s32 func_8017F4A8(void *a0, void *a1);
|
||||
|
||||
+17
-1
@@ -1884,7 +1884,23 @@ s32 func_800D1938(S800D1938 *arg0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/resident/nonmatchings/resident", func_800D1984);
|
||||
s32 aF800D1984(u8 *arg0) __asm__("func_800D1984");
|
||||
|
||||
s32 aF800D1984(u8 *arg0) {
|
||||
extern s32 func_800D19DC();
|
||||
register s32 zr __asm__("$0");
|
||||
s32 (*fp)(void);
|
||||
u8 *p;
|
||||
|
||||
fp = *(s32 (**)(void)) (arg0 + 0xC);
|
||||
if (fp() != 0) {
|
||||
p = arg0 + zr;
|
||||
p[0x14] = arg0[0x14] + 1;
|
||||
return func_800D19DC(p);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern s8 D_800B9A10;
|
||||
|
||||
|
||||
@@ -59979,7 +59979,7 @@
|
||||
extern int func_800CB0E8(int param); \
|
||||
extern void func_801801EC(int param_1); \
|
||||
extern void func_80180394(void *a0); \
|
||||
extern void func_801803D0(void); \
|
||||
extern void func_801803D0(); \
|
||||
extern void func_801803B0(void); \
|
||||
extern unsigned char D_801A73BC[]; \
|
||||
extern void func_80180428(int param_1); \
|
||||
@@ -65074,7 +65074,7 @@
|
||||
extern int func_800CB0E8(int param); \
|
||||
extern void func_801801EC(int param_1); \
|
||||
extern void func_80180394(void *a0); \
|
||||
extern void func_801803D0(void); \
|
||||
extern void func_801803D0(); \
|
||||
extern void func_801803B0(void); \
|
||||
extern unsigned char D_801A73BC[]; \
|
||||
extern void func_80180428(int param_1); \
|
||||
@@ -90085,7 +90085,7 @@
|
||||
}
|
||||
|
||||
#define DEFINE_func_801803B0() \
|
||||
extern void func_801803D0(void); \
|
||||
extern void func_801803D0(); \
|
||||
void func_801803B0(void) { \
|
||||
func_801803D0(); \
|
||||
}
|
||||
@@ -155377,7 +155377,7 @@
|
||||
extern int func_800CB0E8(int param); \
|
||||
extern void func_801801EC(int param_1); \
|
||||
extern void func_80180394(void *a0); \
|
||||
extern void func_801803D0(void); \
|
||||
extern void func_801803D0(); \
|
||||
extern void func_801803B0(void); \
|
||||
extern unsigned char D_801A73BC[]; \
|
||||
extern void func_80180428(int param_1); \
|
||||
@@ -160472,7 +160472,7 @@
|
||||
extern int func_800CB0E8(int param); \
|
||||
extern void func_801801EC(int param_1); \
|
||||
extern void func_80180394(void *a0); \
|
||||
extern void func_801803D0(void); \
|
||||
extern void func_801803D0(); \
|
||||
extern void func_801803B0(void); \
|
||||
extern unsigned char D_801A73BC[]; \
|
||||
extern void func_80180428(int param_1); \
|
||||
|
||||
Reference in New Issue
Block a user