mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
feat(decomp): ox wave cx overlays — 50 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
@@ -3195,6 +3195,7 @@ build/src/ov_SC04_007/ov_SC04_007_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC04_007/ov_SC04_007_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_007/ov_SC04_007_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_007/ov_SC04_007_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_007/ov_SC04_007_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC04_007_CHECK_SHA := config/check.ov_SC04_007.sha
|
||||
ov_SC04_007_SYMBOLS := config/symbols.ov_SC04_007.txt
|
||||
|
||||
@@ -94,7 +94,9 @@ segments:
|
||||
# 0x801E25E8 ahead of the code, a 1-word analogue of main's rodata-island (no ld_interleave).
|
||||
# - [0x0, rodata, head]
|
||||
- [0x0, .rodata, md_SC03_136] # module-id header (+jtbl/ptr table) — §154-A
|
||||
- [0x14, .rodata, md_SC03_136_jr_801E2CD0] # §154-A island split (jtbl_carve --island-split)
|
||||
- [0x28, c, md_SC03_136]
|
||||
- [0x6e8, c, md_SC03_136_jr_801E2CD0]
|
||||
- [0xBEC, data, tail] # data tail: pointer tables + packed data (split iterated)
|
||||
- [0x7FC8] # 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:
|
||||
- [0x8bd34, data, tail17]
|
||||
- [0x8bd38, .rodata, ov_SC04_007_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x8bd4c, .rodata, ov_SC04_007_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x8bd6c, data, tail18]
|
||||
- [0x8bd80, data, tail18]
|
||||
- [0x8DA34, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0x8DA37] # 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
|
||||
|
||||
@@ -72,7 +72,26 @@ void func_801E514C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E51C0);
|
||||
void func_801E51C0(s32 a0) {
|
||||
extern void func_801E53E0(s32);
|
||||
extern s32 func_801399F0(s32);
|
||||
extern void func_80139914(s32);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8017E454(void);
|
||||
extern s32 func_8013767C(s32);
|
||||
extern u8 D_801E5FFC[];
|
||||
extern u8 D_801974DC[];
|
||||
|
||||
func_801E53E0(a0);
|
||||
if (func_801399F0(*(s32 *)(a0 + 0xB0)) != 0) {
|
||||
func_80139914(*(s32 *)(a0 + 0xB0));
|
||||
func_8012A828(a0, D_801E5FFC);
|
||||
func_8017E454();
|
||||
*(s32 *)(a0 + 0xB0) = func_8013767C((s32)D_801974DC);
|
||||
*(u16 *)((s32)a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E5240);
|
||||
|
||||
@@ -148,9 +167,41 @@ INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E5580);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E55F4);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E5664);
|
||||
void func_801E5664(s32 *a0) {
|
||||
s32 *s0 = a0;
|
||||
extern void func_801E590C();
|
||||
extern s32 func_801399F0(s32 a0);
|
||||
extern void func_80139914(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_801270C8;
|
||||
extern s32 D_801E63C4;
|
||||
|
||||
func_801E590C(s0);
|
||||
if (func_801399F0(*(s32 *)((u8 *)s0 + 0xB0)) != 0) {
|
||||
func_80139914(*(s32 *)((u8 *)s0 + 0xB0));
|
||||
D_801270C8 = 12;
|
||||
func_8012A828((s32)s0, &D_801E63C4);
|
||||
(*(u16 *)((u8 *)s0 + 2))++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801E56D8(s32 a0) {
|
||||
extern void func_801E590C();
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_8013767C(s32);
|
||||
extern s32 D_801270C8;
|
||||
extern u8 D_80197418[];
|
||||
extern u8 D_801E644C[];
|
||||
|
||||
func_801E590C(a0);
|
||||
if (D_801270C8 == 14) {
|
||||
*(s32 *)((s32)a0 + 0xB0) = func_8013767C((s32)D_80197418);
|
||||
func_8012A828(a0, D_801E644C);
|
||||
*(u16 *)((s32)a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E56D8);
|
||||
|
||||
void func_801E5748(s32 *a0) {
|
||||
s32 *s0 = a0;
|
||||
@@ -172,9 +223,36 @@ void func_801E5748(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E57C4);
|
||||
extern s32 MoveImage(void *a0, s32 a1, s32 a2);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern u8 D_801E65E4[];
|
||||
|
||||
void func_801E57C4(s32 a0) {
|
||||
s16 rect[4];
|
||||
s32 s0;
|
||||
s32 v0;
|
||||
|
||||
s0 = a0;
|
||||
v0 = *(s32 *)(s0 + 0x1C) - 1;
|
||||
*(s32 *)(s0 + 0x1C) = v0;
|
||||
if (v0 == -1) {
|
||||
rect[0] = 0x328;
|
||||
rect[1] = 0x140;
|
||||
rect[2] = 8;
|
||||
rect[3] = 0x20;
|
||||
MoveImage(rect, 0x32C, 0x1C8);
|
||||
func_8012A828(s0, D_801E65E4);
|
||||
*(u16 *)(s0 + 2) = *(u16 *)(s0 + 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801E584C(void *a0) {
|
||||
if (*(s16 *)((s32)a0 + 0x98) == 0) {
|
||||
*(u16 *)((s32)a0 + 0x2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E584C);
|
||||
|
||||
void func_801E5874(void *a0) {
|
||||
|
||||
|
||||
@@ -229,115 +229,3 @@ void func_801E2B30(s32 param_1, s16 *param_2) {
|
||||
s32 func_801E2CC8(void) {
|
||||
return 39;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136", func_801E2CD0);
|
||||
|
||||
|
||||
|
||||
void func_801E2E2C(void *a0) {
|
||||
|
||||
extern void (*D_801E3598[])(void);
|
||||
D_801E3598[*(u16 *)((s32)a0 + 0x2)]();
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136", func_801E2E68);
|
||||
|
||||
|
||||
|
||||
void func_801E2E78(void) {
|
||||
|
||||
extern s32 D_801EA5AC;
|
||||
D_801EA5AC = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
s32 func_801E2E8C(void) {
|
||||
|
||||
extern s32 D_801EA5AC;
|
||||
return D_801EA5AC;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern void func_80029124(s32, s32);
|
||||
s32 func_801E2E9C(void) {
|
||||
if ((func_80029178(0x111) & 0xFF) == 0) {
|
||||
((void (*)(void *, s32))func_80029124)((void *)0x111, 1);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136", func_801E2ED8);
|
||||
|
||||
extern void func_80029514(int);
|
||||
void func_801E2FB4(void) {
|
||||
func_80029514(0x181);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8018A788(void);
|
||||
void func_801E2FD4(void) {
|
||||
func_8018A788();
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136", func_801E2FF4);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136", func_801E3080);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136", func_801E3098);
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136", func_801E30C8);
|
||||
|
||||
extern s32 D_801BF4F0;
|
||||
extern s32 D_801E3280;
|
||||
extern s32 D_801E32B0;
|
||||
extern s32 D_801EA574;
|
||||
extern s32 D_801EA5A4;
|
||||
extern s32 D_801EA5A8;
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8001C214(s32, s32);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_8012CAE4(void *);
|
||||
extern void func_8012E8E0(s32, s32);
|
||||
extern void func_80178B18(s32, s32);
|
||||
|
||||
void func_801E3124(void *a0) {
|
||||
extern s32 D_801EA574;
|
||||
extern s32 D_801BF4F0;
|
||||
extern s32 D_801E3280;
|
||||
extern s32 D_801E32B0;
|
||||
extern s32 D_801EA5A8;
|
||||
extern s32 D_801EA5A4;
|
||||
s32 v0;
|
||||
s32 ptr;
|
||||
|
||||
v0 = func_8012C1B8();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)&D_801EA574);
|
||||
ptr = *(s32 *)((s32)a0 + 0x68);
|
||||
*(s32 *)&D_801EA5A8 = 0;
|
||||
*(s16 *)(ptr + 0xC) = 0x7FFF;
|
||||
*(s16 *)((s32)a0 + 0x2) = 1;
|
||||
func_8012A828((s32)a0, (s32)&D_801BF4F0);
|
||||
func_8012E8E0((s32)a0, (s32)&D_801E3280);
|
||||
*(s16 *)((s32)a0 + 0x34) = 0;
|
||||
func_80178B18((s32)a0, (s32)&D_801E32B0);
|
||||
v0 = func_80029504();
|
||||
*(s32 *)&D_801EA5A4 = v0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,313 @@
|
||||
#include "common.h"
|
||||
|
||||
/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) ===================
|
||||
* The file-scope decl environment from earlier code regions of this object —
|
||||
* file-local types, col-0 decls, DEFINE_func macro externs, and each earlier
|
||||
* definition's implied prototype (types first, then decls in original order).
|
||||
* Decls emit no code => byte-neutral. See cookbook §8c. */
|
||||
typedef struct { u8 c[8]; } Blk8;
|
||||
typedef struct { short vx, vy, vz, pad; } SVECTOR;
|
||||
typedef struct { short m[3][3]; long t[3]; } MATRIX;
|
||||
extern u8 *D_80126B10;
|
||||
extern u8 D_801E3230[];
|
||||
extern void func_80175414(s32 _arg0);
|
||||
void func_800167B8(int);
|
||||
extern int func_801E2610(u8 *arg);
|
||||
extern s32 func_800167F0(s32 a0);
|
||||
extern s32 func_801E2668(void);
|
||||
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_801E293C(void *arg0);
|
||||
extern s32 func_801E268C(s32 param_1);
|
||||
extern s32 func_800D1E28(void);
|
||||
extern s32 func_8002D4C8(s32, s32);
|
||||
extern s32 func_8001BFD0(void);
|
||||
extern s32 func_800291B4(s32);
|
||||
extern s32 func_80029524(void);
|
||||
extern s32 func_800D0C48(s32);
|
||||
extern s32 func_801E26D8(s32 param_1);
|
||||
extern void func_800D1EBC(void);
|
||||
extern void func_801E2778(void);
|
||||
extern void func_801E2798(void *a0);
|
||||
extern void func_801E27D4(void *a0);
|
||||
extern void func_801E2810(void *a0);
|
||||
extern void func_80171A1C(void*);
|
||||
extern void func_801E284C(void);
|
||||
extern s32 func_80171D78(u32, void *);
|
||||
extern void func_801E2874(u32 arg0);
|
||||
extern s32 func_80014C54(s32, s32, s32);
|
||||
extern void func_800D1724(void *);
|
||||
extern void func_80171A1C(void *);
|
||||
extern void func_801E28DC(void *arg0);
|
||||
extern void func_801E2934(void);
|
||||
extern void func_801E293C(void *a0);
|
||||
extern void func_801E2978(void);
|
||||
extern void func_801E2998(u32 arg0);
|
||||
extern void func_801E2A00(void);
|
||||
extern void func_801E2ACC(void *a0);
|
||||
extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_80049CAC(s32 a0, s32 a1);
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_801E2B30(s32 param_1, s16 *param_2);
|
||||
extern s32 func_801E2CC8(void);
|
||||
/* ==== end §8b carried decl layer ==== */
|
||||
|
||||
|
||||
extern s32 func_801789AC(s32 a0);
|
||||
extern void func_80178CBC(s32 a0, s32 a1);
|
||||
extern void func_80174438(s32 a0);
|
||||
extern void func_80185B88(s32 a0);
|
||||
extern s16 func_80185B78(void);
|
||||
extern u8 *D_80126B10;
|
||||
|
||||
void func_801E2CD0(void *param_1) {
|
||||
|
||||
extern s32 D_801E336C;
|
||||
extern s32 D_801E3384;
|
||||
extern s32 D_801E3308;
|
||||
extern s32 D_801E3580[];
|
||||
|
||||
switch (*(u16 *)((s32)param_1 + 0x34)) {
|
||||
case 0: {
|
||||
s32 v1 = func_801789AC((s32)param_1);
|
||||
switch (v1) {
|
||||
case 1:
|
||||
*(u16 *)((s32)param_1 + 0x34) = 2;
|
||||
func_80185B88(2);
|
||||
break;
|
||||
case 2:
|
||||
func_80178CBC((s32)param_1, (s32)&D_801E336C);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 0;
|
||||
break;
|
||||
case 3:
|
||||
func_80178CBC((s32)param_1, (s32)&D_801E3384);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 3;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
case 2: {
|
||||
s32 v0 = func_80185B78();
|
||||
if (v0 != 0) {
|
||||
func_80178CBC((s32)param_1, (s32)D_801E3580[v0]);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 4;
|
||||
} else {
|
||||
func_80178CBC((s32)param_1, (s32)&D_801E3308);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
if (func_801789AC((s32)param_1) != 0) {
|
||||
func_80174438((s32)D_80126B10);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 1;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (func_801789AC((s32)param_1) != 0) {
|
||||
*(u16 *)((s32)param_1 + 0x34) = 2;
|
||||
func_80185B88(2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void func_801E2E2C(void *a0) {
|
||||
|
||||
extern void (*D_801E3598[])(void);
|
||||
D_801E3598[*(u16 *)((s32)a0 + 0x2)]();
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_136/nonmatchings/md_SC03_136_jr_801E2CD0", func_801E2E68);
|
||||
|
||||
|
||||
|
||||
void func_801E2E78(void) {
|
||||
|
||||
extern s32 D_801EA5AC;
|
||||
D_801EA5AC = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
s32 func_801E2E8C(void) {
|
||||
|
||||
extern s32 D_801EA5AC;
|
||||
return D_801EA5AC;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern void func_80029124(s32, s32);
|
||||
s32 func_801E2E9C(void) {
|
||||
if ((func_80029178(0x111) & 0xFF) == 0) {
|
||||
((void (*)(void *, s32))func_80029124)((void *)0x111, 1);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_801844F8(void);
|
||||
extern s32 func_8018456C(void);
|
||||
extern void func_801845C8(void);
|
||||
|
||||
void func_801E2ED8(s32 a0) {
|
||||
|
||||
extern s32 D_801EA5A4;
|
||||
extern s32 D_801E3328[];
|
||||
extern s32 D_801E333C[];
|
||||
extern s32 D_801E3358[];
|
||||
|
||||
s32 v1 = func_80029504();
|
||||
|
||||
if (v1 < 0xC8) {
|
||||
s32 x = D_801EA5A4;
|
||||
s32 idx;
|
||||
if (x < 0x14) {
|
||||
idx = 0;
|
||||
} else if (x < 0x46) {
|
||||
idx = 1;
|
||||
} else if (x < 0x64) {
|
||||
idx = 2;
|
||||
} else if (x < 0x82) {
|
||||
idx = 3;
|
||||
} else {
|
||||
idx = 4;
|
||||
}
|
||||
*(s32 *)(a0 + 0xE4) = D_801E3328[idx];
|
||||
} else if (v1 < 0x384) {
|
||||
s32 v0 = func_801844F8();
|
||||
*(s32 *)(a0 + 0xE4) = D_801E333C[v0];
|
||||
} else {
|
||||
s32 v0 = func_8018456C();
|
||||
*(s32 *)(a0 + 0xE4) = D_801E3358[v0];
|
||||
func_801845C8();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_80029514(int);
|
||||
void func_801E2FB4(void) {
|
||||
func_80029514(0x181);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8018A788(void);
|
||||
void func_801E2FD4(void) {
|
||||
func_8018A788();
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
extern s16 D_801E2498;
|
||||
extern s32 D_801E256C;
|
||||
extern s32 D_801E3488;
|
||||
extern void *D_801E34C0[];
|
||||
extern void *D_801E34F4[];
|
||||
|
||||
void func_801E2FF4(void) {
|
||||
switch (D_801E2498) {
|
||||
case 0:
|
||||
*(s32 *)(*(s32 *)&D_801E256C + 4) = (s32)((void *)&D_801E3488);
|
||||
break;
|
||||
case 1:
|
||||
*(s32 *)(*(s32 *)&D_801E256C + 4) = (s32)D_801E34C0;
|
||||
break;
|
||||
case 2:
|
||||
*(s32 *)(*(s32 *)&D_801E256C + 4) = (s32)D_801E34F4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801E3080(void) {
|
||||
extern s32 D_801E256C;
|
||||
extern s32 D_801E249C;
|
||||
*(s32 *)(D_801E256C + 4) = D_801E249C;
|
||||
}
|
||||
|
||||
|
||||
void func_801E3098(void) {
|
||||
extern s32 D_801E256C;
|
||||
extern s32 D_801E24A4;
|
||||
extern s32 D_801E24A0;
|
||||
extern s32 D_801E34F0;
|
||||
|
||||
*(s32 *)(*(s32 *)&D_801E256C + 4) = D_801E24A4;
|
||||
D_801E34F0 = D_801E24A0;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8018A788(void);
|
||||
extern s16 D_801E2498;
|
||||
extern s32 D_801E256C;
|
||||
extern s32 D_801E3488;
|
||||
extern s32 D_801E34A8;
|
||||
|
||||
void func_801E30C8(void) {
|
||||
func_8018A788();
|
||||
if (D_801E2498 == 0) {
|
||||
*(s32 *)(D_801E256C + 4) = (s32)&D_801E3488;
|
||||
} else {
|
||||
*(s32 *)(D_801E256C + 4) = (s32)&D_801E34A8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801BF4F0;
|
||||
extern s32 D_801E3280;
|
||||
extern s32 D_801E32B0;
|
||||
extern s32 D_801EA574;
|
||||
extern s32 D_801EA5A4;
|
||||
extern s32 D_801EA5A8;
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8001C214(s32, s32);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_8012CAE4(void *);
|
||||
extern void func_8012E8E0(s32, s32);
|
||||
extern void func_80178B18(s32, s32);
|
||||
|
||||
void func_801E3124(void *a0) {
|
||||
extern s32 D_801EA574;
|
||||
extern s32 D_801BF4F0;
|
||||
extern s32 D_801E3280;
|
||||
extern s32 D_801E32B0;
|
||||
extern s32 D_801EA5A8;
|
||||
extern s32 D_801EA5A4;
|
||||
s32 v0;
|
||||
s32 ptr;
|
||||
|
||||
v0 = func_8012C1B8();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)&D_801EA574);
|
||||
ptr = *(s32 *)((s32)a0 + 0x68);
|
||||
*(s32 *)&D_801EA5A8 = 0;
|
||||
*(s16 *)(ptr + 0xC) = 0x7FFF;
|
||||
*(s16 *)((s32)a0 + 0x2) = 1;
|
||||
func_8012A828((s32)a0, (s32)&D_801BF4F0);
|
||||
func_8012E8E0((s32)a0, (s32)&D_801E3280);
|
||||
*(s16 *)((s32)a0 + 0x34) = 0;
|
||||
func_80178B18((s32)a0, (s32)&D_801E32B0);
|
||||
v0 = func_80029504();
|
||||
*(s32 *)&D_801EA5A4 = v0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5978,7 +5978,19 @@ void func_801AC47C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AC54C);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_801A9B80(s32 *a0, u16 a1, u16 a2);
|
||||
extern u8 D_801F8A58;
|
||||
|
||||
void func_801AC54C(s32 param_1) {
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
func_8012C218((void *)param_1);
|
||||
} else {
|
||||
func_801A9B80(&D_801F8A58, 0x160, 0x157);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3163,7 +3163,17 @@ extern void func_8017D2E0(s32 arg0, s32 arg1);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017F488);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017F4D0);
|
||||
extern s32 func_800291B4(s32 arg);
|
||||
|
||||
s32 func_8017F4D0(void *a0) {
|
||||
*(s16 *)((char *)a0 + 0x104) = 4;
|
||||
if ((func_800291B4(0x45) & 0xFF) != 0) {
|
||||
return 0;
|
||||
}
|
||||
*(s16 *)((char *)a0 + 0x104) -= 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017F520);
|
||||
|
||||
@@ -3195,7 +3205,13 @@ extern void func_800291A0(s32 arg0, s32 arg1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017F67C);
|
||||
extern void func_800291A0(s32, s32);
|
||||
|
||||
void func_8017F67C(s32 *a0) {
|
||||
func_800291A0(0x3B, 8);
|
||||
*(s16 *)((s32)a0 + 2) = 5;
|
||||
}
|
||||
|
||||
|
||||
void func_8017F6B4(void *a0) {
|
||||
*(short *)((char *)a0 + 0x2) = 0x5;
|
||||
@@ -3315,7 +3331,14 @@ void func_8017F8D8(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017F8E4);
|
||||
extern s32 D_801E97C4;
|
||||
|
||||
void func_8017F8E4(void *a0) {
|
||||
*(s16 *)((s32)a0 + 0xFA) = -1;
|
||||
*(s32 *)((s32)a0 + 0x1C) = 0;
|
||||
D_801E97C4 = 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 ratan2(s32 dx, s32 dy);
|
||||
extern void func_80171B10(void *a0);
|
||||
@@ -3488,7 +3511,65 @@ INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017FED
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017FFD0);
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_801803E4);
|
||||
void func_801803E4(s32 param_1) {
|
||||
extern void func_800183E0(s32 a0);
|
||||
extern s32 rand(void);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2);
|
||||
extern void (*D_801EFF04)();
|
||||
extern u8 D_801F0154[];
|
||||
extern u8 D_801ECC74[];
|
||||
extern u8 D_801ECCDC[];
|
||||
extern u8 D_801EE8A0[];
|
||||
|
||||
s32 v1;
|
||||
s32 v0;
|
||||
s32 val;
|
||||
s16 h;
|
||||
|
||||
v1 = *(s16 *)(param_1 + 0xF8);
|
||||
if (v1 == 0) {
|
||||
func_800183E0((s32)&D_801EFF04);
|
||||
val = (rand() & 0x1F) + 0x23;
|
||||
} else {
|
||||
if (v1 == 2) {
|
||||
func_800183E0((s32)D_801F0154);
|
||||
}
|
||||
val = *(u16 *)(param_1 + 0xF8) - 1;
|
||||
}
|
||||
*(u16 *)(param_1 + 0xF8) = (u16)val;
|
||||
__asm__ ("" ::: "memory");
|
||||
|
||||
v0 = *(s32 *)(param_1 + 0x64);
|
||||
h = *(s16 *)(v0 + 0xFA);
|
||||
if (h != 0) {
|
||||
*(s16 *)(v0 + 0xFA) = 0;
|
||||
if (h >= 0) {
|
||||
val = h & 0xFFF;
|
||||
if (val != 0) {
|
||||
*(u16 *)(param_1 + 0xFA) = (u16)val;
|
||||
}
|
||||
if ((h & 0x1000) != 0) {
|
||||
func_8012A828(param_1, D_801ECC74);
|
||||
}
|
||||
if ((h & 0x2000) != 0) {
|
||||
func_8012A828(param_1, D_801ECCDC);
|
||||
}
|
||||
} else {
|
||||
func_8012A828(param_1, D_801ECCDC);
|
||||
func_800183E0((s32)&D_801EFF04);
|
||||
*(s32 *)(param_1 + 0xCC) = (s32)D_801EE8A0;
|
||||
*(s32 *)(param_1 + 0x1C) = 0;
|
||||
*(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) =
|
||||
func_80012ABC(*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12),
|
||||
*(s16 *)(param_1 + 0xFA), 4);
|
||||
}
|
||||
|
||||
|
||||
extern void (*D_801EEDBC[])(void);
|
||||
|
||||
|
||||
@@ -8072,7 +8072,19 @@ s32 func_80183C2C(s32 param_1, s32 param_2, u32 param_3)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801840C0);
|
||||
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
s32 func_801840C0(s32 a0, s32 a1, s32 a2, s32 a3) {
|
||||
s32 sp10[2];
|
||||
s32 sp18[2];
|
||||
|
||||
func_8012F214(a0, a2, (s32)sp10);
|
||||
func_8012F214(a0, a3, (s32)sp18);
|
||||
return func_80135888(*(s32 *)(a1 + 0x20), *(s32 *)(a1 + 0x58),
|
||||
(s32)sp10, (s32)sp18) != 0;
|
||||
}
|
||||
|
||||
|
||||
extern void func_80184738(s32 a0);
|
||||
extern void func_80188228(void);
|
||||
|
||||
@@ -3308,7 +3308,58 @@ void func_8017EE24(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017EE60);
|
||||
extern u16 func_80148800(s32 *a0);
|
||||
extern void func_8017EF84(s32 a0, s16 *a1);
|
||||
extern s32 D_80126B58;
|
||||
extern s16 D_80126940;
|
||||
extern s16 D_80126942;
|
||||
extern s16 D_80126944;
|
||||
extern s16 D_801880B0[];
|
||||
|
||||
void func_8017EE60(s32 param_1) {
|
||||
s16 sp10[3];
|
||||
|
||||
if ((func_80148800(&D_80126B58) & 3) != 0) {
|
||||
*(u8 *)(param_1 + 5) = (*(u8 *)(param_1 + 5) + 1) & 1;
|
||||
*(s32 *)(param_1 + 0x14) = D_801880B0[*(u8 *)(param_1 + 5)];
|
||||
}
|
||||
if (D_80126942 < -0x200) {
|
||||
*(s16 *)(param_1 + 0x20) = 0xAA;
|
||||
} else {
|
||||
*(s16 *)(param_1 + 0x20) = 0x18D;
|
||||
}
|
||||
if (D_80126940 < -0x380) {
|
||||
sp10[0] = -0x380;
|
||||
} else if (D_80126940 < 0x2A1) {
|
||||
goto c1mid;
|
||||
} else {
|
||||
sp10[0] = 0x2A0;
|
||||
}
|
||||
goto c1end;
|
||||
c1mid:
|
||||
sp10[0] = D_80126940;
|
||||
c1end:
|
||||
if (D_80126942 < -0x460) {
|
||||
sp10[1] = -0x460;
|
||||
} else {
|
||||
goto c2mid;
|
||||
}
|
||||
goto c2end;
|
||||
c2mid:
|
||||
sp10[1] = D_80126942;
|
||||
c2end:
|
||||
if (D_80126944 < -0x13F) {
|
||||
goto c3mid;
|
||||
} else {
|
||||
sp10[2] = -0x140;
|
||||
}
|
||||
goto c3end;
|
||||
c3mid:
|
||||
sp10[2] = D_80126944;
|
||||
c3end:
|
||||
func_8017EF84(param_1, sp10);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// @class: schedule
|
||||
@@ -3361,7 +3412,15 @@ INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F11
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F154);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F190);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
|
||||
void func_8017F190(s32 a0) {
|
||||
*(u16 *)(a0 + 0xFE) = *(u16 *)(a0 + 6);
|
||||
*(u16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
|
||||
*(u16 *)(a0 + 0x102) = *(u16 *)(a0 + 0xE);
|
||||
func_8012AD44((s32 *)a0, 3);
|
||||
}
|
||||
|
||||
|
||||
void func_8017F1C8(void *a0) {
|
||||
extern void (*D_801880EC[])(void);
|
||||
@@ -3470,7 +3529,31 @@ void func_8017F33C(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F434);
|
||||
#include "/home/musashi/bfm-decomp/src/shared/engine_core.h"
|
||||
|
||||
extern u16 D_80126B5E;
|
||||
extern u16 D_80126B62;
|
||||
extern u16 D_80126B66;
|
||||
extern s32 func_800132BC(s32 a0, s32 a1);
|
||||
|
||||
s32 func_8017F434(s32 a0) {
|
||||
SV3_8012CC88 sp10;
|
||||
SV3_8012CC88 sp18;
|
||||
SV3_8012CC88 sp20;
|
||||
|
||||
sp10.vx = D_80126B5E;
|
||||
sp10.vy = D_80126B62;
|
||||
sp10.vz = D_80126B66;
|
||||
sp18.vx = *(u16 *)(a0 + 6);
|
||||
sp18.vy = *(u16 *)(a0 + 0xA);
|
||||
sp18.vz = 0;
|
||||
sp20.vx = D_80126B5E;
|
||||
sp20.vy = D_80126B62;
|
||||
sp20.vz = 0;
|
||||
|
||||
return func_800132BC((s32)&sp18, (s32)&sp20);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801880FC[])(void);
|
||||
@@ -3508,7 +3591,82 @@ void func_8017F880(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F8C0);
|
||||
#include "common.h"
|
||||
|
||||
|
||||
|
||||
extern void func_8004978C(s16 *a0, void *a1);
|
||||
extern void func_8017F228();
|
||||
|
||||
void func_8017F8C0(void *a0) {
|
||||
u8 *s0 = (u8 *)a0;
|
||||
MTX_801749C8 mtx;
|
||||
s16 angle[3];
|
||||
s16 vec0[4];
|
||||
s32 flags;
|
||||
|
||||
angle[2] = 0;
|
||||
angle[0] = 0;
|
||||
angle[1] = *(u16 *)(s0 + 0xFC);
|
||||
|
||||
vec0[1] = 0;
|
||||
vec0[0] = 0;
|
||||
vec0[2] = *(u16 *)(s0 + 0xDC);
|
||||
|
||||
mtx.t[0] = *(s16 *)(s0 + 0xFE);
|
||||
mtx.t[1] = *(s16 *)(s0 + 0x100);
|
||||
mtx.t[2] = *(s16 *)(s0 + 0x102);
|
||||
|
||||
func_8004978C(angle, &mtx);
|
||||
|
||||
__asm__ __volatile__(
|
||||
"lw $12, 0(%0)\n"
|
||||
"lw $13, 4(%0)\n"
|
||||
"ctc2 $12, $0\n"
|
||||
"ctc2 $13, $1\n"
|
||||
"lw $12, 8(%0)\n"
|
||||
"lw $13, 12(%0)\n"
|
||||
"lw $14, 16(%0)\n"
|
||||
"ctc2 $12, $2\n"
|
||||
"ctc2 $13, $3\n"
|
||||
"ctc2 $14, $4\n"
|
||||
"lw $12, 20(%0)\n"
|
||||
"lw $13, 24(%0)\n"
|
||||
"ctc2 $12, $5\n"
|
||||
"lw $14, 28(%0)\n"
|
||||
"ctc2 $13, $6\n"
|
||||
"ctc2 $14, $7\n"
|
||||
: : "r"(&mtx) : "$12", "$13", "$14");
|
||||
|
||||
__asm__ __volatile__(
|
||||
"lwc2 $0, 0(%0)\n"
|
||||
"lwc2 $1, 4(%0)\n"
|
||||
"nop\n"
|
||||
"nop\n"
|
||||
"mvmva 1, 0, 0, 0, 0\n"
|
||||
: : "r"(vec0) : "memory");
|
||||
|
||||
__asm__ __volatile__(
|
||||
"swc2 $25, 0(%0)\n"
|
||||
"swc2 $26, 4(%0)\n"
|
||||
"swc2 $27, 8(%0)\n"
|
||||
: : "r"(s0 + 4) : "memory");
|
||||
|
||||
__asm__ __volatile__(
|
||||
"cfc2 $12, $31\n"
|
||||
"nop\n"
|
||||
"sw $12, 0(%0)\n"
|
||||
: : "r"(&flags) : "$12", "memory");
|
||||
|
||||
*(s32 *)(s0 + 4) <<= 16;
|
||||
*(s32 *)(s0 + 8) <<= 16;
|
||||
*(s32 *)(s0 + 0xC) <<= 16;
|
||||
|
||||
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x12) = *(u16 *)(s0 + 0xFC) - 0x400;
|
||||
*(u16 *)(s0 + 0xFC) = *(u16 *)(s0 + 0xFC) + 0x40;
|
||||
func_8017F228(s0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8001CD9C(int, void *);
|
||||
extern void func_800233CC(void *, unsigned short);
|
||||
|
||||
@@ -8003,7 +8003,40 @@ void func_8018911C(void *a0)
|
||||
void func_80189234(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_8018923C);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001CA1C(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_8018923C(void *a0)
|
||||
{
|
||||
register void *s0 __asm__("$16");
|
||||
s32 v0;
|
||||
|
||||
s0 = a0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)s0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(s0);
|
||||
} else {
|
||||
extern u8 D_801906D0;
|
||||
extern u8 D_801906F4;
|
||||
s16 t;
|
||||
|
||||
func_8001CA1C(v0, (s32)&D_801906D0);
|
||||
func_8012A828((s32)s0, &D_801906F4);
|
||||
*(s16 *)((s32)s0 + 0x2) = 1;
|
||||
|
||||
t = 0x1800;
|
||||
*(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = t;
|
||||
*(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = t;
|
||||
*(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = t;
|
||||
|
||||
*(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801892E0(s32 arg0) {
|
||||
s16 var;
|
||||
|
||||
@@ -3658,7 +3658,26 @@ void func_8017FE54(void *arg)
|
||||
void func_8017FF18(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017FF20);
|
||||
extern u8 D_801202A0[];
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern u8 D_801862AC[];
|
||||
|
||||
void func_8017FF20(void *a0) {
|
||||
u8 *p = D_801202A0;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0x60; i++) {
|
||||
if (*(u16 *)p == 0xE5) {
|
||||
*(s16 *)((s32)p + 0xFC) = (s32)a0 + 1;
|
||||
}
|
||||
p += 0x10C;
|
||||
}
|
||||
|
||||
if (a0 == NULL) {
|
||||
func_8013C9C4(&D_801862AC);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80186434[])(void);
|
||||
@@ -3670,7 +3689,13 @@ void func_8017FF88(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017FFC4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_80180008);
|
||||
extern void (*D_801864FC[])(void);
|
||||
|
||||
void func_80180008(void *a0) {
|
||||
*(u16 *)((s32)a0 + 0xFC) = *(u16 *)((s32)a0 + 0xFC) + 1;
|
||||
D_801864FC[*(u16 *)((s32)a0 + 2)]();
|
||||
}
|
||||
|
||||
|
||||
extern void (*D_80186560[])(void);
|
||||
|
||||
@@ -3767,7 +3792,32 @@ INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_801802E
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_801803AC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8018043C);
|
||||
extern void func_800183E0(s32 a0);
|
||||
extern void (*D_80186478[])(void *);
|
||||
extern s32 D_801A46CC;
|
||||
|
||||
void func_8018043C(void *a0)
|
||||
{
|
||||
s32 v1;
|
||||
u16 h;
|
||||
|
||||
v1 = *(s32 *)(*(u32 *)((u8 *)a0 + 0x64) + 0xDC);
|
||||
switch (v1) {
|
||||
case 0:
|
||||
func_800183E0((s32)&D_801A46CC);
|
||||
break;
|
||||
case 1:
|
||||
h = *(u16 *)((u8 *)a0 + 0xFC);
|
||||
func_800183E0(*(s32 *)((u8 *)D_80186478 + ((h << 1) & 0x1C)));
|
||||
break;
|
||||
case 2:
|
||||
*(u16 *)((u8 *)a0 + 2) = 3;
|
||||
*(u16 *)((u8 *)a0 + 0xFC) = 0;
|
||||
*(s32 *)(*(u32 *)((u8 *)a0 + 0x64) + 0xDC) = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_801804EC);
|
||||
|
||||
@@ -4205,7 +4255,65 @@ int param_1;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_801813F8);
|
||||
void func_801813F8(void *a0) {
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_8012B8E4(s32 a0, s32 a1);
|
||||
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012A828(s32*, s32);
|
||||
extern u8 D_801B6EC4[];
|
||||
extern u8 D_801BEF74[];
|
||||
extern u8 D_801BF42C[];
|
||||
extern short D_801BF01C;
|
||||
s32 base = (s32)a0;
|
||||
s32 ptr;
|
||||
s32 ret;
|
||||
|
||||
switch (*(u16 *)(base + 0x34)) {
|
||||
case 0:
|
||||
if (*(s32 *)(base + 0x1C) == 7) {
|
||||
func_8012D5E4(base, (s32)D_801B6EC4, (s32)D_801B6EC4 + 8, 0xB);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
ret = func_8012B8E4(base, 6);
|
||||
ptr = *(s32 *)(base + 0x20);
|
||||
*(u16 *)(ptr + 0x12) += ret;
|
||||
break;
|
||||
case 2:
|
||||
if (*(s32 *)(base + 0x1C) == 0xA) {
|
||||
func_8012D5E4(base, (s32)D_801B6EC4, (s32)D_801B6EC4 + 8, 0xB);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (func_8012BEE8(base) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (*(u16 *)(base + 0x34)) {
|
||||
case 0:
|
||||
if (func_8012BD3C(base, 0x400, 0x4000) == 0) {
|
||||
goto state_off;
|
||||
}
|
||||
*(u16 *)(base + 0x34) = 1;
|
||||
func_8012A828((s32 *)base, (s32)D_801BEF74);
|
||||
*(s32 *)(base + 0x1C) = 0xA;
|
||||
break;
|
||||
case 1:
|
||||
*(u16 *)(base + 0x34) = 2;
|
||||
*(s32 *)(base + 0x1C) = 0x18;
|
||||
func_8012A828((s32 *)base, (s32)D_801BF42C);
|
||||
break;
|
||||
case 2:
|
||||
state_off:
|
||||
*(u16 *)(base + 0x2) = 2;
|
||||
*(u16 *)(base + 0x34) = 0;
|
||||
func_8012A828((s32 *)base, (s32)&D_801BF01C);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8018156C(void *a0) {
|
||||
extern u8 D_801B6ED8[];
|
||||
|
||||
@@ -3411,7 +3411,24 @@ void func_8017D374(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017D3B0);
|
||||
typedef struct {
|
||||
s16 v[4];
|
||||
} Blk8_80126940_8017D3B0;
|
||||
|
||||
extern void func_8017D420(s32 param_1, s16 *param_2);
|
||||
|
||||
void func_8017D3B0(s32 a0) {
|
||||
extern Blk8_80126940_8017D3B0 D_80126940;
|
||||
Blk8_80126940_8017D3B0 sp10;
|
||||
|
||||
sp10 = D_80126940;
|
||||
if (sp10.v[0] < -0x170) {
|
||||
sp10.v[0] = -0x170;
|
||||
}
|
||||
sp10.v[2] = -0x20;
|
||||
func_8017D420(a0, sp10.v);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// @class: schedule
|
||||
@@ -3516,7 +3533,59 @@ void func_8017D7BC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017D7CC);
|
||||
typedef struct {
|
||||
s8 pad00[0x02];
|
||||
u16 f002;
|
||||
s8 pad04[0x1C];
|
||||
s32 *f020;
|
||||
s8 pad24[0x4C];
|
||||
s16 f070;
|
||||
s8 pad72[0x4E];
|
||||
u8 f0C0;
|
||||
} Obj_8017D7CC;
|
||||
|
||||
void func_8017D7CC(s32 a0) {
|
||||
extern s32 func_8012C1B8();
|
||||
extern void func_8001CA1C(s32 a0, s32 a1);
|
||||
extern void (*D_80183F48[][2])(void);
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern s32 func_800291B4(s32 a0);
|
||||
extern void func_8012B2CC(s32 a0);
|
||||
extern void func_8012A828(s32 *a0, s32 a1);
|
||||
extern void (*D_80183F70[][2])(void);
|
||||
extern s32 func_801788B8(s32 a0, s32 a1);
|
||||
extern void func_8017D9C4(void);
|
||||
|
||||
Obj_8017D7CC *obj = (Obj_8017D7CC *)a0;
|
||||
s32 v0;
|
||||
|
||||
v0 = func_8012C1B8();
|
||||
obj->f020 = (s32 *)v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
func_8001CA1C(v0, (s32)D_80183F48);
|
||||
if ((u32)func_80029504() >= 0x294) {
|
||||
func_8012C218((void *)a0);
|
||||
return;
|
||||
}
|
||||
v0 = func_800291B4(0xDE);
|
||||
if ((v0 & 0xFF) == obj->f070) {
|
||||
obj->f070 = 0;
|
||||
((s32 *)obj->f020)[1] |= (s32)0x80000000;
|
||||
func_8012B2CC((s32)a0);
|
||||
}
|
||||
func_8012A828((s32 *)a0, (s32)&D_80183F70[obj->f070]);
|
||||
obj->f0C0 = 1;
|
||||
obj->f002 = 1;
|
||||
if ((u32)func_80029504() >= 0x280) {
|
||||
func_801788B8((s32)a0, (s32)func_8017D9C4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017D8C0(void) {
|
||||
}
|
||||
@@ -3709,7 +3778,39 @@ void func_8017DCEC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017DDB0);
|
||||
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012BCCC(s32 a0);
|
||||
extern s32 func_8012B8E4(s32 a0, s32 a1);
|
||||
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012B178(s32 a0, s32 a1);
|
||||
extern s32 func_8017EE7C(s32 a0, s32 a1);
|
||||
extern s32 func_8017EC80(s32 a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8017EBD8(s32 a0);
|
||||
|
||||
void func_8017DDB0(s32 a0) {
|
||||
if (func_8012BD3C(a0, 0x400, 0x20000) == 1) {
|
||||
if (func_8012BCCC(a0) < 0x3001) {
|
||||
*(s16 *)(a0 + 2) = 8;
|
||||
return;
|
||||
}
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) =
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + func_8012B8E4(a0, 8);
|
||||
} else {
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) =
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) +
|
||||
func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12),
|
||||
*(s32 *)(a0 + 0xE0), 0xA);
|
||||
}
|
||||
func_8012B178(a0, *(s32 *)(a0 + 0xE8));
|
||||
func_8017EE7C(a0, 0);
|
||||
if (func_8017EC80(a0) != 0) {
|
||||
if (func_8012BEE8(a0) != 0) {
|
||||
func_8017EBD8(a0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017DE88);
|
||||
|
||||
@@ -3822,7 +3923,28 @@ void func_8017E0D8(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017E190);
|
||||
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
|
||||
void func_8017E190(s32 arg0)
|
||||
{
|
||||
s32 v;
|
||||
|
||||
if ((*(s32 *)(arg0 + 0xDC) & 8) != 0) {
|
||||
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) += 0x44;
|
||||
} else {
|
||||
v = func_8012B8E4(arg0, 8);
|
||||
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) += v;
|
||||
if (v == 0) {
|
||||
goto store5;
|
||||
}
|
||||
}
|
||||
if (func_8012BEE8(arg0) != 0) {
|
||||
store5:
|
||||
*(u16 *)(arg0 + 2) = 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017E220);
|
||||
|
||||
|
||||
@@ -2992,7 +2992,23 @@ void func_80181E88(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_80181EC4);
|
||||
extern s32 func_801842D4(s32 arg0, s32 arg1);
|
||||
extern u8 D_80078EBA;
|
||||
extern void func_80181E7C(void *a0);
|
||||
|
||||
void func_80181EC4(void *a0) {
|
||||
s32 v0;
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1;
|
||||
if (D_80078EBA == 3) {
|
||||
v0 = 0;
|
||||
} else {
|
||||
v0 = func_801842D4(7, 0x13) != 0;
|
||||
}
|
||||
if (v0 == 0) {
|
||||
func_80181E7C(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_80181F2C);
|
||||
|
||||
@@ -3038,7 +3054,25 @@ INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_8018209
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_801820DC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_8018211C);
|
||||
extern s32 func_8012E57C(s32 arg0, s32 arg1);
|
||||
extern s32 func_80182044(void);
|
||||
|
||||
void func_8018211C(void *a0) {
|
||||
s32 v0;
|
||||
|
||||
v0 = func_8012E57C(0x61, 0xC);
|
||||
*(s32 *)((char *)a0 + 0xCC) = v0;
|
||||
v0 = func_80182044();
|
||||
|
||||
if (v0 != 0) {
|
||||
v0 = 1;
|
||||
} else {
|
||||
v0 = 2;
|
||||
}
|
||||
|
||||
*(s16 *)((char *)a0 + 0x2) = v0;
|
||||
}
|
||||
|
||||
|
||||
void func_80182164(void *a0) {
|
||||
M2C_FIELD(a0, s16 *, 0x2) = 2;
|
||||
@@ -3102,7 +3136,32 @@ INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_8018242
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_80182488);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_801824DC);
|
||||
void func_801824DC(s32 a0, s32 a1)
|
||||
{
|
||||
extern u8 D_8019066C[];
|
||||
extern u16 D_800B99DA;
|
||||
extern void func_80182598(u16 *a0, s32 a1);
|
||||
s32 var_v1;
|
||||
s32 var_v0;
|
||||
s32 val;
|
||||
|
||||
var_v1 = (D_8019066C[D_800B99DA & 0xF] == 0) ? 0x60 : 0x50;
|
||||
a1 += 1;
|
||||
var_v1 = var_v1 * a1 / 32;
|
||||
var_v0 = var_v1 / 2;
|
||||
*(s8 *)&val = var_v1;
|
||||
*((s8 *)&val + 1) = var_v1;
|
||||
*((s8 *)&val + 2) = var_v0;
|
||||
*((s8 *)&val + 3) = 0;
|
||||
|
||||
if (*(s16 *)(a0 + 6) != -1) {
|
||||
do {
|
||||
func_80182598(a0, val);
|
||||
a0 += 8;
|
||||
} while (*(s16 *)(a0 + 6) != -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80182598 (ov_SC04_018, ov_SC04_018_jr_8017AE2C) — MATCH (250 ins)
|
||||
@@ -3792,7 +3851,30 @@ void func_80183454(u8 *arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_80183570);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern s32 func_80128ED8(s32 param_1, s32 *param_2);
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
|
||||
void func_80183570(s32 a0) {
|
||||
s32 owner = *(s32 *)(a0 + 0xCC);
|
||||
s32 obj;
|
||||
|
||||
func_8012AD80(a0);
|
||||
obj = *(s32 *)(a0 + 0xCC);
|
||||
*(u16 *)(obj + 8) = *(u16 *)(a0 + 6);
|
||||
*(u16 *)(obj + 0xA) = *(u16 *)(a0 + 0xA);
|
||||
*(u16 *)(obj + 0xC) = *(u16 *)(a0 + 0xE);
|
||||
if ((*(u32 *)(a0 + 0x1C) & 7) == 0) {
|
||||
func_80128ED8(owner, (s32 *)(a0 + 0xD0));
|
||||
}
|
||||
if (func_8012BEE8(a0) != 0) {
|
||||
func_80016714((void *)owner, 0x38);
|
||||
func_8012C218((void *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8012B414(int a0);
|
||||
@@ -3827,9 +3909,60 @@ extern void func_8012B414(int a0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_801836B8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_80183700);
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern s32 D_801943AC[];
|
||||
extern s32 D_801906C8[];
|
||||
|
||||
void func_80183700(s32 a0) {
|
||||
s32 v0;
|
||||
if ((u32)(func_80029504() - 0x181) < 0x55) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
*(s32 *)(a0 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
func_8001C810(v0, (s32)D_801943AC);
|
||||
*(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000;
|
||||
func_8001D0E8(*(s32 *)(a0 + 0x20), 0x7FFF, 0x7FFF);
|
||||
func_8012E8E0(a0, (s32)D_801906C8);
|
||||
*(s16 *)(a0 + 0x2) = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32, s32);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
|
||||
void func_801837A4(s32 a0) {
|
||||
extern s32 D_801948AC[];
|
||||
extern s32 D_801906D8[];
|
||||
s32 v0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)a0);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)D_801948AC);
|
||||
func_8012E8E0(a0, (s32)D_801906D8);
|
||||
*(s16 *)(a0 + 0x2) = 1;
|
||||
*(s16 *)(a0 + 0x34) = 0;
|
||||
*(s32 *)(a0 + 0xDC) = 0;
|
||||
*(s32 *)(a0 + 0xE0) = 0;
|
||||
*(s32 *)(a0 + 0xE4) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_801837A4);
|
||||
|
||||
|
||||
extern void (*D_80190700[])(void);
|
||||
|
||||
@@ -7097,7 +7097,41 @@ void func_80182424(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_801824A4);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012CBF4(s32 a0);
|
||||
extern void func_801319E0(s32 a0);
|
||||
extern s32 func_801826E8(s32 a0);
|
||||
extern s32 func_80182CBC(s32 a0, void *a1);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
extern void func_80131E00(void *a0, s32 a1);
|
||||
extern void func_80131C78(s32 a0);
|
||||
|
||||
void func_801824A4(s32 param_1) {
|
||||
s32 flag;
|
||||
s32 hit;
|
||||
|
||||
flag = ((s32 (*)(s32))func_8012CBF4)(param_1);
|
||||
if ((flag & 0xFF) == 0x1A) {
|
||||
func_801319E0(param_1);
|
||||
return;
|
||||
}
|
||||
hit = func_801826E8(param_1);
|
||||
if (hit != 0) {
|
||||
func_80182CBC(param_1, hit);
|
||||
func_8012ADE4((u8 *)param_1);
|
||||
} else if (flag != 0x2000) {
|
||||
func_8012ADE4((u8 *)param_1);
|
||||
}
|
||||
if (*(s16 *)(param_1 + 0x98) == 0) {
|
||||
if (*(s16 *)(param_1 + 0x76) <= 0) {
|
||||
func_80131E00((void *)param_1, 6);
|
||||
} else {
|
||||
func_80131C78(param_1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801A86E4;
|
||||
extern s32 func_801826E8(s32 arg0);
|
||||
@@ -7986,7 +8020,17 @@ INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_8018379
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80183820);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80183904);
|
||||
s32 func_80183904(s16 *a0, s16 *a1, s32 a2) {
|
||||
s32 d;
|
||||
|
||||
d = a1[1] - a0[3];
|
||||
if (d < 0) d = -d;
|
||||
if (d > (a2 & 0xFFFF)) return 0;
|
||||
d = a1[5] - a0[7];
|
||||
if (d < 0) d = -d;
|
||||
return d <= (a2 & 0xFFFF);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8079,7 +8123,44 @@ void func_80183C54(s32 param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80183D94);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern void func_801835E0(s32 a0);
|
||||
extern void func_80183614(s32 a0);
|
||||
extern void func_80143994(s32 a0, s32 a1);
|
||||
extern s32 D_801A1F34;
|
||||
extern void (*D_801C16BC)(void);
|
||||
|
||||
void func_80183D94(void *param_1) {
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)param_1 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(param_1);
|
||||
return;
|
||||
}
|
||||
|
||||
func_8001C810(v0, (s32)&D_801C16BC);
|
||||
|
||||
*(u16 *)(*(s32 *)((s32)param_1 + 0x20) + 0x2C) |= 0x10;
|
||||
*(s32 *)(*(s32 *)((s32)param_1 + 0x20) + 0x4) |= 0x8040;
|
||||
|
||||
*(u16 *)((s32)param_1 + 0x5C) = 0xCC00;
|
||||
*(u8 *)((s32)param_1 + 0x75) = 2;
|
||||
|
||||
*(s32 *)((s32)param_1 + 0x58) = (s32)&D_801A1F34 | 0x20000000;
|
||||
if (*(s16 *)((s32)param_1 + 0x70) != 0) {
|
||||
func_80183614((s32)param_1);
|
||||
return;
|
||||
}
|
||||
func_801835E0((s32)param_1);
|
||||
v1 = ((s32 (*)(s32, s32))func_80143994)((s32)param_1, 0x3000);
|
||||
*(s32 *)((s32)param_1 + 0xD0) = v1;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012CBF4(s32 a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
@@ -9313,7 +9394,16 @@ tail_short:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80185A68);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern u8 D_801BE120[];
|
||||
|
||||
void func_80185A68(s32 a0) {
|
||||
func_8012B23C(a0);
|
||||
func_8012A828(a0, &D_801BE120);
|
||||
*(s16 *)((char *)a0 + 0x2) = 0xA;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
void func_80185AA8(void *a0) {
|
||||
|
||||
@@ -5339,7 +5339,24 @@ s32 func_8017FC8C(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_8017FCFC);
|
||||
extern u8 D_801202A0[];
|
||||
|
||||
void func_8017FCFC(void) {
|
||||
extern void func_8012C218(void *a0);
|
||||
u8 *p;
|
||||
s32 i;
|
||||
s32 t;
|
||||
|
||||
p = D_801202A0;
|
||||
for (i = 0; i < 0x60; i++) {
|
||||
t = *(u16 *)p;
|
||||
if (t == 0x1FC || (t < 0x1FD ? t == 0x1DC : (t == 0x210 || t == 0x219))) {
|
||||
func_8012C218(p);
|
||||
}
|
||||
p += 0x10C;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017FDB0(void *a0)
|
||||
{
|
||||
@@ -6642,7 +6659,47 @@ void func_80181DE0(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_80181F80);
|
||||
extern void func_8012B200(u8 *a0);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern s32 D_8011F730;
|
||||
extern u8 D_801A0E6C[];
|
||||
extern s32 D_801A0CE4;
|
||||
extern s32 D_801A0D4C;
|
||||
extern s16 D_801A0E04;
|
||||
|
||||
s32 func_80181F80(s32 a0) {
|
||||
s32 ret;
|
||||
|
||||
ret = 1;
|
||||
switch (D_8011F730) {
|
||||
case 1:
|
||||
func_8012B200((u8 *)a0);
|
||||
((void (*)(s32, void *))func_8012A828)(a0, D_801A0E6C);
|
||||
*(u16 *)((char *)a0 + 0x2) = 8;
|
||||
*(u16 *)((char *)a0 + 0x34) = 0;
|
||||
break;
|
||||
case 2:
|
||||
*(u16 *)((char *)a0 + 0x2) = 0xB;
|
||||
break;
|
||||
case 3:
|
||||
((void (*)(s32, void *))func_8012A828)(a0, (void *)&D_801A0CE4);
|
||||
*(u16 *)((char *)a0 + 0x2) = 0xE;
|
||||
break;
|
||||
case 4:
|
||||
((void (*)(s32, void *))func_8012A828)(a0, (void *)&D_801A0D4C);
|
||||
*(u16 *)((char *)a0 + 0x2) = 0x10;
|
||||
break;
|
||||
case 5:
|
||||
*(u16 *)((char *)a0 + 0x2) = 0x12;
|
||||
((void (*)(s32, void *))func_8012A828)(a0, (void *)&D_801A0E04);
|
||||
return ret;
|
||||
default:
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_80182074);
|
||||
|
||||
@@ -7835,9 +7892,81 @@ void func_80183DDC(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_80183E80);
|
||||
extern u8 D_801ABCF8[];
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_8012B1B4(s32, void *);
|
||||
extern s16 D_80126B96;
|
||||
extern s16 D_801A1474;
|
||||
extern s32 D_801A1590;
|
||||
extern s32 D_801A15AC;
|
||||
extern s32 D_801A15B4;
|
||||
extern void func_8002D4C8(s32, s32);
|
||||
extern s32 func_8012D5E4(s32, s32, s32, s32);
|
||||
|
||||
void func_80183E80(s32 arg0) {
|
||||
register s32 s0 __asm__("$16");
|
||||
register s32 v0 __asm__("$2");
|
||||
register s32 v1 __asm__("$3");
|
||||
register s32 a0 __asm__("$4");
|
||||
register s32 a1 __asm__("$5");
|
||||
register s32 a2 __asm__("$6");
|
||||
register s32 a3 __asm__("$7");
|
||||
|
||||
s0 = arg0;
|
||||
|
||||
if (*(s16 *)(s0 + 0x98) == 0) {
|
||||
func_8012A828(s0, (s32)D_801ABCF8);
|
||||
*(s16 *)(s0 + 0xFC) = 0;
|
||||
}
|
||||
|
||||
if (*(s32 *)(s0 + 0x94) == 15) {
|
||||
func_8012B1B4(s0, (void *)&D_801A1590);
|
||||
a0 = s0;
|
||||
a1 = (s32)&D_801A15AC;
|
||||
__asm__ __volatile__("" :: "r"(a1));
|
||||
v0 = 0xFFF60000;
|
||||
s0 = 4;
|
||||
*(s32 *)(a0 + 0x14) = v0;
|
||||
v0 = (s32)&D_801A1474;
|
||||
v1 = 0x40000000;
|
||||
v0 = v0 | v1;
|
||||
v1 = 0x20000000;
|
||||
v0 = v0 | v1;
|
||||
a2 = (s32)&D_801A15B4;
|
||||
a3 = 0x20;
|
||||
*(s16 *)(a0 + 2) = s0;
|
||||
*(s32 *)(a0 + 0x58) = v0;
|
||||
if (func_8012D5E4(a0, a1, a2, a3) == 1) {
|
||||
D_80126B96 = s0;
|
||||
}
|
||||
func_8002D4C8(0xA9D, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012CBCC(s32);
|
||||
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern s16 D_80126B96;
|
||||
extern u8 D_801A1464[];
|
||||
extern u8 D_801A159C[];
|
||||
extern u8 D_801A15A4[];
|
||||
extern u8 D_801ABDA0[];
|
||||
|
||||
void func_80183F4C(s32 a0) {
|
||||
if (*(s32 *)(a0 + 0x94) < 0x3D) {
|
||||
if (func_8012D5E4(a0, (s32)D_801A159C, (s32)D_801A15A4, 0x20) == 1) {
|
||||
D_80126B96 = 4;
|
||||
}
|
||||
}
|
||||
if (((s32 (*)(s32))func_8012CBCC)(a0) & 0x6000) {
|
||||
*(s16 *)(a0 + 0x2) = 5;
|
||||
((void (*)(s32, void *))func_8012A828)(a0, D_801ABDA0);
|
||||
*(s16 *)(a0 + 0xFC) = 0;
|
||||
*(s32 *)(a0 + 0x58) = ((s32)D_801A1464 | 0x40000000) | 0x20000000;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_80183F4C);
|
||||
|
||||
typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017D7C0_8017F19C_8018259C_80183FF8; /* 0x20 bytes, align 4 */
|
||||
typedef struct {
|
||||
@@ -8056,7 +8185,19 @@ void func_8018447C(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_80184488);
|
||||
void func_80184488(s32 a0) {
|
||||
extern s32 func_8012B8E4(s32 a0, s32 a1);
|
||||
|
||||
s32 ret = func_8012B8E4(a0, 8);
|
||||
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + ret;
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF;
|
||||
|
||||
if ((u32)(ret + 0x1F) < 0x3F) {
|
||||
*(s16 *)(a0 + 0x2) = 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012B23C(s32 a0);
|
||||
|
||||
@@ -8612,7 +8753,27 @@ void func_80185010(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_80185060);
|
||||
extern void func_80147324(s32 a0);
|
||||
extern int func_801511E0(int arg);
|
||||
extern void func_80154274(s32 *a0, s32 a1);
|
||||
extern void func_80149020(s32 *a0);
|
||||
extern s32 func_80172630(u8 *a0);
|
||||
extern void func_80146CA0(void *a0);
|
||||
|
||||
void func_80185060(s32 p)
|
||||
{
|
||||
extern u8 D_801B2668;
|
||||
func_80147324(0x451);
|
||||
((void (*)(s32))func_801511E0)(p);
|
||||
((void (*)(s32 *, s32))func_80154274)(p, (s32)&D_801B2668);
|
||||
((void (*)(s32 *))func_80149020)(p);
|
||||
*(u8 *)(p + 0xDE) = 0x1E;
|
||||
*(u8 *)(p + 0xDF) = 0;
|
||||
func_80185274();
|
||||
((void (*)(u8 *))func_80172630)(p);
|
||||
((void (*)(void *))func_80146CA0)(p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_801850CC @ ov_SC02_016 (subseg ov_SC02_016_jr_8017DC70) — 85 ins.
|
||||
|
||||
@@ -3987,7 +3987,28 @@ s32 func_8017E414(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017BEBC", func_8017E41C);
|
||||
extern s32 D_8019FF34;
|
||||
extern s32 D_80196B4C;
|
||||
extern s32 D_8019FE48;
|
||||
extern s32 D_8019FF50;
|
||||
extern void func_8013C0F8();
|
||||
|
||||
void func_8017E41C(void)
|
||||
{
|
||||
switch (D_8019FF34) {
|
||||
case 0:
|
||||
func_8013C0F8(&D_80196B4C);
|
||||
D_8019FE48 = 0;
|
||||
D_8019FF34 = D_8019FF34 + 1;
|
||||
break;
|
||||
case 1:
|
||||
func_8017CD9C(&D_8019FF50, &D_80196B4C, D_8019FE48, 0);
|
||||
D_8019FE48 = D_8019FE48 + 0x14;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8017F194(void *a0);
|
||||
@@ -4486,7 +4507,51 @@ void func_8017F30C(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017BEBC", func_8017F348);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017BEBC", func_8017F538);
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
extern s16 D_8019C7C4[];
|
||||
extern s16 D_8019C800[];
|
||||
extern s16 D_8019C7D4[];
|
||||
extern u16 D_8019C7DC[];
|
||||
|
||||
void func_8017F538(void *a0) {
|
||||
s16 step;
|
||||
s32 ent;
|
||||
|
||||
if (*(s16 *)((s32)a0 + 0xFE) != 0 && (func_80029178(0xBA) & 0xFF) == 0) {
|
||||
step = D_8019C800[*(s16 *)((s32)a0 + 0x70)];
|
||||
if (step < D_8019C7C4[*(s16 *)((s32)a0 + 0x70)]) {
|
||||
do {
|
||||
ent = func_8012C588(0x1A4, (s32)a0);
|
||||
if (ent != 0) {
|
||||
if (D_8019C7D4[*(s16 *)((s32)a0 + 0x70)] < 0) {
|
||||
*(u16 *)(ent + 0xA) = *(u16 *)(ent + 0xA) - step;
|
||||
} else {
|
||||
*(u16 *)(ent + 0xA) = *(u16 *)(ent + 0xA) + step;
|
||||
}
|
||||
}
|
||||
step += 0x100;
|
||||
} while (step < D_8019C7C4[*(s16 *)((s32)a0 + 0x70)]);
|
||||
}
|
||||
} else {
|
||||
step = 0;
|
||||
if (D_8019C7C4[*(s16 *)((s32)a0 + 0x70)] > 0) {
|
||||
do {
|
||||
ent = func_8012C588(0x1A4, (s32)a0);
|
||||
if (ent != 0) {
|
||||
if (D_8019C7D4[*(s16 *)((s32)a0 + 0x70)] < 0) {
|
||||
*(u16 *)(ent + 0xA) = *(u16 *)(ent + 0xA) - step;
|
||||
} else {
|
||||
*(u16 *)(ent + 0xA) = *(u16 *)(ent + 0xA) + step;
|
||||
}
|
||||
}
|
||||
step += 0x180;
|
||||
} while (step < D_8019C7C4[*(s16 *)((s32)a0 + 0x70)]);
|
||||
}
|
||||
*(s32 *)((s32)a0 + 0x1C) = D_8019C7DC[*(s16 *)((s32)a0 + 0x70)];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8019C818[])(void);
|
||||
@@ -4496,12 +4561,86 @@ void func_8017F734(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017BEBC", func_8017F770);
|
||||
extern void func_8012C194(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_8017F538();
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
|
||||
void func_8017F770(void *a0) {
|
||||
extern u8 D_8019C614[];
|
||||
extern u16 D_8019C7CC[];
|
||||
s32 node;
|
||||
|
||||
*(u16 *)((s32)a0 + 0xFE) = *(u16 *)((s32)a0 + 0x70) & 0x8000;
|
||||
*(u16 *)((s32)a0 + 0x70) = *(u16 *)((s32)a0 + 0x70) & 3;
|
||||
node = ((s32 (*)(void))func_8012C194)();
|
||||
if (node == 0) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
*(s32 *)((s32)a0 + 0x20) = node;
|
||||
func_8001CB6C((u8 *)node, (s32)D_8019C614, 0x300, 0x100);
|
||||
*(u8 *)(node + 0x27) = 0x64;
|
||||
*(u16 *)(node + 0x30) = *(u16 *)((s32)D_8019C7CC + *(s16 *)((s32)a0 + 0x70) * 2);
|
||||
*(s16 *)(node + 0x32) = -0x20;
|
||||
*(u16 *)(node + 0x2C) = 0x8004;
|
||||
func_8017F538((s32)a0);
|
||||
if (*(s16 *)((s32)a0 + 0xFE) != 0 && (func_80029178(0xBA) & 0xFF) == 0) {
|
||||
func_8012AD44((s32 *)a0, 2);
|
||||
} else {
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017F860(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017BEBC", func_8017F868);
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
extern s32 D_8019CA2C;
|
||||
extern u8 D_8019C808[];
|
||||
|
||||
void func_8017F868(void *a0) {
|
||||
register s32 v0 __asm__("$2");
|
||||
s32 p;
|
||||
u16 u;
|
||||
|
||||
*(s32 *)((s32)a0 + 0x20) = v0 = func_8012C1B8();
|
||||
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
func_8001C810(v0, (s32)&D_8019CA2C);
|
||||
|
||||
*(s32 *)((s32)a0 + 0x58) = (s32)D_8019C808 | 0x40000000;
|
||||
*(u16 *)((s32)a0 + 0x5C) = 0x4400;
|
||||
*(u8 *)((s32)a0 + 0x75) = 0x8;
|
||||
|
||||
u = *(u16 *)((s32)a0 + 0xE);
|
||||
p = *(s32 *)((s32)a0 + 0x20);
|
||||
*(u16 *)((s32)a0 + 0xE) = u - 0x18;
|
||||
*(s32 *)(p + 4) |= 0x8040;
|
||||
|
||||
if (*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0xFE) != 0) {
|
||||
if ((func_80029178(0xBA) & 0xFF) == 0) {
|
||||
func_8012AD44((s32 *)a0, 2);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017BEBC", func_8017F940);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user