mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
feat(decomp): integration-resolver pass — 99 banked of 171 staged (zero model tokens)
Drafts the ledgers already recorded as byte-correct (closeness 0 / reloc shape MATCH), re-judged against today's tree by rtu_match + reloc_identity, staged, and gated on the whole-binary SHA. Ledger: .run/resolver/verdicts.jsonl
This commit is contained in:
+2
-2
@@ -2450,7 +2450,7 @@ build/src/ov_SC03_108/ov_SC03_108_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (
|
||||
build/src/ov_SC03_108/ov_SC03_108_jr_801588CC.o: JTBL_PADS := 0,4,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28,+0x48
|
||||
build/src/ov_SC03_108/ov_SC03_108_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_108/ov_SC03_108_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_108/ov_SC03_108_jr_8016AB6C.o: JTBL_PADS := 0 # §8e pads — 1 table(s), byte-proven by jtbl_pads_fix
|
||||
build/src/ov_SC03_108/ov_SC03_108_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_108/ov_SC03_108_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC03_108/ov_SC03_108_jr_8017F83C.o: JTBL_PADS := 0,4,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0xe0
|
||||
build/src/ov_SC03_108/ov_SC03_108_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
@@ -4171,7 +4171,7 @@ build/src/ov_SC06_011/ov_SC06_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC06_011/ov_SC06_011_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_011/ov_SC06_011_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_011/ov_SC06_011_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC06_011/ov_SC06_011_jr_8017BEBC.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_011/ov_SC06_011_jr_8017BEBC.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x3c
|
||||
build/src/ov_SC06_011/ov_SC06_011_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC06_011_CHECK_SHA := config/check.ov_SC06_011.sha
|
||||
ov_SC06_011_SYMBOLS := config/symbols.ov_SC06_011.txt
|
||||
|
||||
@@ -5118,7 +5118,12 @@ DEFINE_func_8014CB9C() /* dedup: shared engine-core @0x8014cb9c (src/shared) */
|
||||
DEFINE_func_8014CBD8() /* dedup: shared engine-core @0x8014cbd8 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8013F350", func_8014CBE8);
|
||||
extern u16 D_80126CC4;
|
||||
|
||||
void func_8014CBE8(void) {
|
||||
D_80126CC4 = 0;
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8014CBF8() /* dedup: shared engine-core @0x8014cbf8 (src/shared) */
|
||||
|
||||
|
||||
@@ -3897,7 +3897,13 @@ DEFINE_func_8015D480() /* dedup: shared engine-core @0x8015d480 (src/shared) */
|
||||
DEFINE_func_8015D4B4() /* dedup: shared engine-core @0x8015d4b4 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8015A3C8", func_8015D4E8);
|
||||
extern void (*D_80180C54[])(void);
|
||||
|
||||
s32 func_8015D4E8(void *a0)
|
||||
{
|
||||
D_80180C54[*(u16 *)((s32)a0 + 0x2)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8015D524() /* dedup: shared engine-core @0x8015d524 (src/shared) */
|
||||
|
||||
@@ -4244,7 +4250,13 @@ DEFINE_func_8015E150() /* dedup: shared engine-core @0x8015e150 (src/shared) */
|
||||
DEFINE_func_8015E184() /* dedup: shared engine-core @0x8015e184 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8015A3C8", func_8015E1B8);
|
||||
extern void (*D_80180CD4[])(void);
|
||||
|
||||
func_8015E1B8(a0)
|
||||
{
|
||||
D_80180CD4[*(u16 *)((s32)a0 + 0x2)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8015E1F4() /* dedup: shared engine-core @0x8015e1f4 (src/shared) */
|
||||
|
||||
|
||||
@@ -3356,7 +3356,12 @@ DEFINE_func_80172760() /* dedup: shared engine-core @0x80172760 (src/shared) */
|
||||
DEFINE_func_80172780() /* dedup: shared engine-core @0x80172780 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_801727D0);
|
||||
s32 func_801727D0(void *a0)
|
||||
{
|
||||
extern void (*D_80181900[])(void);
|
||||
D_80181900[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8017280C() /* dedup: shared engine-core @0x8017280c (src/shared) */
|
||||
|
||||
@@ -3370,7 +3375,12 @@ void func_8017288C(void) {
|
||||
DEFINE_func_80172894() /* dedup: shared engine-core @0x80172894 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_801728E4);
|
||||
s32 func_801728E4(void *a0) {
|
||||
|
||||
extern void (*D_8018190C[])(void);
|
||||
D_8018190C[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80172920() /* dedup: shared engine-core @0x80172920 (src/shared) */
|
||||
|
||||
@@ -3384,7 +3394,12 @@ void func_801729A8(void) {
|
||||
DEFINE_func_801729B0() /* dedup: shared engine-core @0x801729b0 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_801729F0);
|
||||
s32 func_801729F0(void *a0) {
|
||||
|
||||
extern void (*D_80181918[])();
|
||||
D_80181918[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80172A2C() /* dedup: shared engine-core @0x80172a2c (src/shared) */
|
||||
|
||||
@@ -3401,7 +3416,12 @@ void func_80172B0C(void) {
|
||||
DEFINE_func_80172B14() /* dedup: shared engine-core @0x80172b14 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_80172B44);
|
||||
s32 func_80172B44(void *a0) {
|
||||
|
||||
extern void (*D_80181928[])(void);
|
||||
D_80181928[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80172B80() /* dedup: shared engine-core @0x80172b80 (src/shared) */
|
||||
|
||||
@@ -3436,7 +3456,12 @@ void func_80172D60(void) {
|
||||
DEFINE_func_80172D68() /* dedup: shared engine-core @0x80172d68 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_80172DAC);
|
||||
s32 func_80172DAC(void *a0) {
|
||||
|
||||
extern u8 D_80181940[];
|
||||
((void (**)())D_80181940)[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80172DE8() /* dedup: shared engine-core @0x80172de8 (src/shared) */
|
||||
|
||||
@@ -3471,7 +3496,12 @@ DEFINE_func_80172FEC() /* dedup: shared engine-core @0x80172fec (src/shared) */
|
||||
DEFINE_func_8017303C() /* dedup: shared engine-core @0x8017303c (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_80173078);
|
||||
s32 func_80173078(void *a0)
|
||||
{
|
||||
extern void (*D_8018194C[])(void);
|
||||
D_8018194C[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_801730B4() /* dedup: shared engine-core @0x801730b4 (src/shared) */
|
||||
|
||||
@@ -3485,7 +3515,16 @@ void func_8017316C(void) {
|
||||
DEFINE_func_80173174() /* dedup: shared engine-core @0x80173174 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_8017319C);
|
||||
extern void func_80174684(void *);
|
||||
extern s32 func_8017319C();
|
||||
|
||||
extern void (*D_80181958[])(void);
|
||||
|
||||
s32 func_8017319C(void *a0)
|
||||
{
|
||||
D_80181958[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_801731D8() /* dedup: shared engine-core @0x801731d8 (src/shared) */
|
||||
|
||||
@@ -3596,7 +3635,11 @@ void func_801736A8(void) {
|
||||
DEFINE_func_801736B0() /* dedup: shared engine-core @0x801736b0 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_801736FC);
|
||||
s32 func_801736FC(void *a0) {
|
||||
extern s32 D_80181978;
|
||||
((s32 (*)(void *))(*(&D_80181978 + *(u8 *)((s32)a0 + 0x214))))(a0);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80173738() /* dedup: shared engine-core @0x80173738 (src/shared) */
|
||||
|
||||
@@ -3610,7 +3653,13 @@ void func_801737B0(void) {
|
||||
DEFINE_func_801737B8() /* dedup: shared engine-core @0x801737b8 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_801737E8);
|
||||
extern u8 D_80181984[];
|
||||
|
||||
s32 func_801737E8(void *a0)
|
||||
{
|
||||
((void (**)(void *))D_80181984)[*(u8 *)((s32)a0 + 0x214)](a0);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80173824() /* dedup: shared engine-core @0x80173824 (src/shared) */
|
||||
|
||||
@@ -3624,7 +3673,12 @@ void func_801738D4(void) {
|
||||
DEFINE_func_801738DC() /* dedup: shared engine-core @0x801738dc (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_8017390C);
|
||||
s32 func_8017390C(void *a0) {
|
||||
|
||||
extern void (*D_80181990[])(void);
|
||||
D_80181990[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80173948() /* dedup: shared engine-core @0x80173948 (src/shared) */
|
||||
|
||||
@@ -3690,7 +3744,12 @@ void func_80174274(void) {
|
||||
DEFINE_func_8017427C() /* dedup: shared engine-core @0x8017427c (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_801742A4);
|
||||
extern void (*aD_801819C0[])(void) __asm__("D_801819C0");
|
||||
|
||||
s32 func_801742A4(void *a0) {
|
||||
aD_801819C0[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_801742E0() /* dedup: shared engine-core @0x801742e0 (src/shared) */
|
||||
|
||||
@@ -3704,7 +3763,13 @@ void func_80174354(void) {
|
||||
DEFINE_func_8017435C() /* dedup: shared engine-core @0x8017435c (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_80174384);
|
||||
s32 func_80174384(void* a0)
|
||||
{
|
||||
|
||||
extern void (*D_801819CC[])(void);
|
||||
D_801819CC[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_801743C0() /* dedup: shared engine-core @0x801743c0 (src/shared) */
|
||||
|
||||
@@ -3718,7 +3783,13 @@ void func_80174430(void) {
|
||||
DEFINE_func_80174438() /* dedup: shared engine-core @0x80174438 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_80174474);
|
||||
extern void (*D_801819D8[])(void);
|
||||
|
||||
s32 func_80174474(void* a0)
|
||||
{
|
||||
D_801819D8[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_801744B0() /* dedup: shared engine-core @0x801744b0 (src/shared) */
|
||||
|
||||
@@ -3783,7 +3854,13 @@ DEFINE_func_80174784() /* dedup: shared engine-core @0x80174784 (src/shared) */
|
||||
DEFINE_func_801747AC() /* dedup: shared engine-core @0x801747ac (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_80171B4C", func_801747CC);
|
||||
s32 func_801747CC(void* a0)
|
||||
{
|
||||
|
||||
extern void (*D_801819E4[])(void);
|
||||
D_801819E4[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80174808() /* dedup: shared engine-core @0x80174808 (src/shared) */
|
||||
|
||||
|
||||
@@ -3923,5 +3923,28 @@ s32 func_8017CBC8(s32 ot, u8 *s, s16 c) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8017CA18", func_8017CEB8);
|
||||
s32 func_8017CEB8(s32 a0, s16 a1, s16 a2, s16 a3, s32* p)
|
||||
{
|
||||
extern u8 D_80115158[];
|
||||
s32 t0 = 0;
|
||||
*p = 0x808080;
|
||||
a2 = D_80115158[(s16)a2 * 2];
|
||||
if (a1 < 5) {
|
||||
if (a1 > 0) {
|
||||
if ((s16)a3 < a2) {
|
||||
t0 = *(s32 *)(a0 + a3 * 4);
|
||||
}
|
||||
} else if (a1 != 0) {
|
||||
if ((s16)a3 < a2) {
|
||||
t0 = *(s32 *)(a0 + a3 * 4);
|
||||
}
|
||||
}
|
||||
} else if (a1 != 5) {
|
||||
if ((s16)a3 < a2) {
|
||||
t0 = *(s32 *)(a0 + a3 * 4);
|
||||
}
|
||||
}
|
||||
return t0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4378,7 +4378,14 @@ s32 *func_8017DD28(s32 *out) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8017CF3C", func_8017DF18);
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern s8 D_801857F8;
|
||||
|
||||
void func_8017DF18(void)
|
||||
{
|
||||
func_80016714(&D_801857F8, 0x2DC);
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -4438,11 +4445,54 @@ void func_8017DF40(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8017CF3C", func_8017E22C);
|
||||
void func_8017E22C(s32 a0) {
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern char D_80185B00;
|
||||
func_80016714(&D_80185B00, 8);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8017CF3C", func_8017E254);
|
||||
|
||||
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8017CF3C", func_8017E298);
|
||||
s32 func_8017E254(void)
|
||||
{
|
||||
extern s16 D_80185B00;
|
||||
extern s16 D_80185B02;
|
||||
extern void (*D_801827D8[])(void);
|
||||
D_801827D8[D_80185B00]();
|
||||
return ((u32)D_80185B02) >> 31;
|
||||
}
|
||||
|
||||
|
||||
extern s16 D_80185B08;
|
||||
extern s32 func_80029504(void);
|
||||
extern u16 D_80185B00;
|
||||
extern void func_8017C008(s32, s16);
|
||||
|
||||
void func_8017E298() {
|
||||
|
||||
extern s16 D_80185B08;
|
||||
extern u16 D_80185B00;
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_8017C008(s32, s16);
|
||||
s32 v;
|
||||
u16 *p;
|
||||
|
||||
v = func_80029504();
|
||||
|
||||
if ((u32)(v - 5) >= 0x4B5) {
|
||||
if (v != 0x6A4) {
|
||||
D_80185B08 = 1;
|
||||
} else {
|
||||
D_80185B08 = 2;
|
||||
}
|
||||
} else {
|
||||
D_80185B08 = 0;
|
||||
}
|
||||
|
||||
func_8017C008(1, D_80185B08);
|
||||
p = &D_80185B00;
|
||||
(*p)++;
|
||||
}
|
||||
|
||||
|
||||
void func_8017E324(void) {
|
||||
|
||||
|
||||
@@ -3178,7 +3178,20 @@ void func_8017C340(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017D220);
|
||||
extern s32 D_80126B58;
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_8014BD98(s32 a0, u16 a1);
|
||||
extern void func_8014BB0C(void);
|
||||
extern void func_8014BE78(void);
|
||||
|
||||
void func_8017D220(void) {
|
||||
if (func_80029504() < 10) {
|
||||
func_8014BD98((s32)&D_80126B58, 100);
|
||||
func_8014BB0C();
|
||||
func_8014BE78();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80185EAC[])(void);
|
||||
@@ -3340,7 +3353,39 @@ void func_8017D5FC(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017D624);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017D6E4);
|
||||
void func_8017D6E4(void) {
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017D7A4(void *a0);
|
||||
extern u8 D_80126948[];
|
||||
extern s32 D_80126954;
|
||||
extern s32 D_8012695C;
|
||||
extern s16 D_80126968;
|
||||
extern s16 D_8012696A;
|
||||
extern s16 D_8012696C;
|
||||
extern s16 D_80126976;
|
||||
extern s16 D_80126978;
|
||||
extern s16 D_8012697A;
|
||||
extern s32 D_801274E8;
|
||||
extern s16 D_801274EA;
|
||||
extern s16 D_801274EC;
|
||||
|
||||
D_80126954 = 400;
|
||||
D_8012695C = 400;
|
||||
D_8012696A = 0x850;
|
||||
D_80126968 = 0;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = -0x82;
|
||||
D_8012697A = -0x180;
|
||||
func_8012A018((s32)func_8017D7A4, 0);
|
||||
(*(s16 *)&D_801274E8) = 0xD;
|
||||
D_801274EA = -0x82;
|
||||
D_801274EC = 0x8A;
|
||||
func_8017D7A4(D_80126948);
|
||||
func_8012A094((s32)D_80126948);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80185EF8[])(void);
|
||||
@@ -3399,7 +3444,27 @@ s16 func_8017DA9C(void) {
|
||||
DEFINE_func_8017DAAC() /* dedup: shared engine-core @0x8017DAAC (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017DB00);
|
||||
void func_8017DB00(void *a0) {
|
||||
extern u8 D_800B9A15;
|
||||
extern unsigned char D_800B9A13;
|
||||
extern u16 D_80115110;
|
||||
extern u16 D_80115112;
|
||||
extern s16 D_80115126;
|
||||
extern s16 D_801CD878;
|
||||
extern void *D_8011DB24;
|
||||
extern void func_8013E5E8(void);
|
||||
void *func_ptr;
|
||||
|
||||
D_800B9A15 = 1;
|
||||
D_80115112 = 7;
|
||||
D_800B9A13 = 1;
|
||||
func_ptr = func_8013E5E8;
|
||||
D_80115110 = 0;
|
||||
D_80115126 = (s16)a0;
|
||||
D_801CD878 = 0;
|
||||
D_8011DB24 = func_ptr;
|
||||
}
|
||||
|
||||
|
||||
extern void func_80029444(void);
|
||||
extern void func_801754A8(void);
|
||||
@@ -3702,7 +3767,70 @@ void func_8017DEFC(void) {
|
||||
DEFINE_func_8017E0EC() /* dedup: shared engine-core @0x8017E0EC (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017E108);
|
||||
void func_8017E108(void)
|
||||
{
|
||||
extern s32 D_801151D0;
|
||||
extern s32 D_801151C8[];
|
||||
extern s16 D_800B9A02;
|
||||
extern u16 D_8011511A;
|
||||
extern s16 D_80115126;
|
||||
extern u8 D_80115138[];
|
||||
extern u32 D_801CD9A8;
|
||||
extern u32 D_801CD9AC;
|
||||
extern s32 D_80115130;
|
||||
extern u8 D_801BBA3C[];
|
||||
extern u8 D_800B9A15;
|
||||
extern u16 D_80115112;
|
||||
|
||||
extern s32 func_8017E3DC(void);
|
||||
extern void func_8017E6BC(void);
|
||||
extern s16 func_8014168C(s16 a0);
|
||||
extern s32 func_8017ED5C(s32 a0, s32 a1);
|
||||
extern void func_80139954(void);
|
||||
extern s32 func_801376E8(s32 a0, s32 a1);
|
||||
extern void func_80137B80(void);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
register s32 b __asm__("$6");
|
||||
s32 r;
|
||||
s16 c;
|
||||
s32 p;
|
||||
s32 *p30;
|
||||
u16 *p12;
|
||||
s32 frame_pad[2];
|
||||
|
||||
D_801151D0 = D_801151C8[*(u16 *)&D_800B9A02];
|
||||
r = func_8017E3DC();
|
||||
func_8017E6BC();
|
||||
c = func_8014168C(*(s16 *)&D_8011511A);
|
||||
b = D_80115138[D_8011511A];
|
||||
if (D_80115126 != 4) {
|
||||
if (D_801CD9A8 != 0) {
|
||||
p = D_801CD9A8;
|
||||
} else {
|
||||
p = func_8017ED5C(b, c);
|
||||
}
|
||||
if (p != 0) {
|
||||
p30 = &D_80115130;
|
||||
if (p != *p30) {
|
||||
*p30 = p;
|
||||
func_80139954();
|
||||
D_801CD9AC = func_801376E8(p, (s32)D_801BBA3C);
|
||||
}
|
||||
}
|
||||
func_80137B80();
|
||||
}
|
||||
if ((s16)r < 0) {
|
||||
func_80139954();
|
||||
D_800B9A15 = 0;
|
||||
if ((s16)r == -1) {
|
||||
func_8002D4C8(0x474, 0);
|
||||
}
|
||||
p12 = &D_80115112;
|
||||
*p12 += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017E258(void) {
|
||||
extern short D_800B9A02;
|
||||
|
||||
@@ -3348,7 +3348,22 @@ extern s32 func_8017DAAC(s32 a0, s32 a1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180614);
|
||||
s32 func_80180614(s32 a0) {
|
||||
if (*(s16 *)(a0 + 0x10A) != 0) {
|
||||
u16 next = *(u16 *)(a0 + 0x106) - 0x10;
|
||||
*(s16 *)(a0 + 0x106) = next;
|
||||
*(s16 *)(a0 + 0x108) = next;
|
||||
if ((s16)next < 0) {
|
||||
*(s16 *)(a0 + 0x106) = 0;
|
||||
*(s16 *)(a0 + 0x108) = 0;
|
||||
}
|
||||
*(u16 *)(a0 + 0x10A) = *(u16 *)(a0 + 0x10A) - 3;
|
||||
return 0;
|
||||
}
|
||||
*(s16 *)(*(s32 *)(a0 + 0xD4) + 0xFC) = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180674);
|
||||
|
||||
@@ -3369,7 +3384,23 @@ DEFINE_func_80180800() /* dedup: shared engine-core @0x80180800 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180808);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180908);
|
||||
extern s32 func_8016F1AC(void);
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern u8 D_801BBC4C[];
|
||||
|
||||
void func_80180908(a0)
|
||||
s32 a0;
|
||||
{
|
||||
if (*(s32 *)(a0 + 0x1C) != 0) {
|
||||
*(s32 *)(a0 + 0x1C) -= 1;
|
||||
} else {
|
||||
if (func_8016F1AC() == 0) {
|
||||
func_80178B18(a0, &D_801BBC4C);
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8017FBCC(void);
|
||||
extern void func_8017FD50(s32 a0);
|
||||
@@ -3396,7 +3427,19 @@ void func_80180974(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_801809F4);
|
||||
extern u8 D_80185E38[];
|
||||
extern void func_800D1724(s32 a0);
|
||||
|
||||
void func_801809F4(s32 *a0) {
|
||||
s32 v1;
|
||||
v1 = a0[7] - 1;
|
||||
a0[7] = v1;
|
||||
if (v1 != -1) {
|
||||
return;
|
||||
}
|
||||
func_800D1724((s32)D_80185E38);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80180A30() /* dedup: shared engine-core @0x80180A30 (src/shared) */
|
||||
|
||||
@@ -3404,7 +3447,14 @@ INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180A3
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180AD0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180AE8);
|
||||
|
||||
|
||||
void func_80180AE8(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
*(u16 *)(*(s32 *)(param_1 + 0xd0) + 0x2) += 1;
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80180B04() /* dedup: shared engine-core @0x80180B04 (src/shared) */
|
||||
|
||||
@@ -3559,7 +3609,21 @@ void func_80180FB0(s32 param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80180FFC);
|
||||
extern s32 func_80180BDC(s32 a0);
|
||||
extern u8 D_801BC5F8[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80180FFC(s32 a0) {
|
||||
s32 v0;
|
||||
v0 = func_80180BDC(a0);
|
||||
if ((v0 << 16) != 0) {
|
||||
return;
|
||||
}
|
||||
func_8012A828(a0, &D_801BC5F8);
|
||||
*(s32 *)(a0 + 0x1c) = 0x28;
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_801BC680[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
@@ -3633,7 +3697,31 @@ extern void func_8012A828(s32 a0, void *a1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_80181228);
|
||||
extern void *D_801BC798[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80181228(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s16 temp;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) == 0) {
|
||||
return;
|
||||
}
|
||||
temp = *(s16 *)(a0 + 0xFE);
|
||||
if (temp == 0) {
|
||||
*(s16 *)(a0 + 0xFE) = 8;
|
||||
return;
|
||||
}
|
||||
temp = temp - 1;
|
||||
*(s16 *)(a0 + 0xFE) = temp;
|
||||
if ((temp << 16) != 0) {
|
||||
return;
|
||||
}
|
||||
func_8012A828(a0, D_801BC798[*(s16 *)(a0 + 0xFC)]);
|
||||
*(s16 *)(a0 + 0xFC) = 0;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3434,7 +3434,18 @@ void func_8017C2A4(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C2F4);
|
||||
extern void func_80154150(s32 a0, s32 a1);
|
||||
extern void func_80171A1C(u8 *a0);
|
||||
|
||||
void func_8017C2F4(a0)
|
||||
void *a0;
|
||||
{
|
||||
if (*(u16 *)((s32)a0 + 0xB8) == 0x8000) {
|
||||
func_80154150((s32)a0, 0x25);
|
||||
func_80171A1C((u8 *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8017C338() /* dedup: shared engine-core @0x8017C338 (src/shared) */
|
||||
|
||||
|
||||
@@ -3176,7 +3176,20 @@ void func_8017C340(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017D220);
|
||||
extern s32 D_80126B58;
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_8014BD98(s32 a0, u16 a1);
|
||||
extern void func_8014BB0C(void);
|
||||
extern void func_8014BE78(void);
|
||||
|
||||
void func_8017D220(void) {
|
||||
if (func_80029504() < 10) {
|
||||
func_8014BD98((s32)&D_80126B58, 100);
|
||||
func_8014BB0C();
|
||||
func_8014BE78();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80185EAC[])(void);
|
||||
@@ -3338,7 +3351,39 @@ void func_8017D5FC(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017D624);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017D6E4);
|
||||
void func_8017D6E4(void) {
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017D7A4(void *a0);
|
||||
extern u8 D_80126948[];
|
||||
extern s32 D_80126954;
|
||||
extern s32 D_8012695C;
|
||||
extern s16 D_80126968;
|
||||
extern s16 D_8012696A;
|
||||
extern s16 D_8012696C;
|
||||
extern s16 D_80126976;
|
||||
extern s16 D_80126978;
|
||||
extern s16 D_8012697A;
|
||||
extern s32 D_801274E8;
|
||||
extern s16 D_801274EA;
|
||||
extern s16 D_801274EC;
|
||||
|
||||
D_80126954 = 400;
|
||||
D_8012695C = 400;
|
||||
D_8012696A = 0x850;
|
||||
D_80126968 = 0;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = -0x82;
|
||||
D_8012697A = -0x180;
|
||||
func_8012A018((s32)func_8017D7A4, 0);
|
||||
(*(s16 *)&D_801274E8) = 0xD;
|
||||
D_801274EA = -0x82;
|
||||
D_801274EC = 0x8A;
|
||||
func_8017D7A4(D_80126948);
|
||||
func_8012A094((s32)D_80126948);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80185EF8[])(void);
|
||||
@@ -3370,7 +3415,27 @@ s16 func_8017DA9C(void) {
|
||||
|
||||
DEFINE_func_8017DAAC() /* dedup: shared engine-core @0x8017DAAC (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017DB00);
|
||||
void func_8017DB00(void *a0) {
|
||||
extern u8 D_800B9A15;
|
||||
extern unsigned char D_800B9A13;
|
||||
extern u16 D_80115110;
|
||||
extern u16 D_80115112;
|
||||
extern s16 D_80115126;
|
||||
extern s16 D_801CD878;
|
||||
extern void *D_8011DB24;
|
||||
extern void func_8013E5E8(void);
|
||||
void *func_ptr;
|
||||
|
||||
D_800B9A15 = 1;
|
||||
D_80115112 = 7;
|
||||
D_800B9A13 = 1;
|
||||
func_ptr = func_8013E5E8;
|
||||
D_80115110 = 0;
|
||||
D_80115126 = (s16)a0;
|
||||
D_801CD878 = 0;
|
||||
D_8011DB24 = func_ptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_80029444(void);
|
||||
@@ -3652,7 +3717,70 @@ void func_8017DEFC(void) {
|
||||
DEFINE_func_8017E0EC() /* dedup: shared engine-core @0x8017E0EC (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017E108);
|
||||
void func_8017E108(void)
|
||||
{
|
||||
extern s32 D_801151D0;
|
||||
extern s32 D_801151C8[];
|
||||
extern s16 D_800B9A02;
|
||||
extern u16 D_8011511A;
|
||||
extern s16 D_80115126;
|
||||
extern u8 D_80115138[];
|
||||
extern u32 D_801CD9A8;
|
||||
extern u32 D_801CD9AC;
|
||||
extern s32 D_80115130;
|
||||
extern u8 D_801BBA3C[];
|
||||
extern u8 D_800B9A15;
|
||||
extern u16 D_80115112;
|
||||
|
||||
extern s32 func_8017E3DC(void);
|
||||
extern void func_8017E6BC(void);
|
||||
extern s16 func_8014168C(s16 a0);
|
||||
extern s32 func_8017ED5C(s32 a0, s32 a1);
|
||||
extern void func_80139954(void);
|
||||
extern s32 func_801376E8(s32 a0, s32 a1);
|
||||
extern void func_80137B80(void);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
register s32 b __asm__("$6");
|
||||
s32 r;
|
||||
s16 c;
|
||||
s32 p;
|
||||
s32 *p30;
|
||||
u16 *p12;
|
||||
s32 frame_pad[2];
|
||||
|
||||
D_801151D0 = D_801151C8[*(u16 *)&D_800B9A02];
|
||||
r = func_8017E3DC();
|
||||
func_8017E6BC();
|
||||
c = func_8014168C(*(s16 *)&D_8011511A);
|
||||
b = D_80115138[D_8011511A];
|
||||
if (D_80115126 != 4) {
|
||||
if (D_801CD9A8 != 0) {
|
||||
p = D_801CD9A8;
|
||||
} else {
|
||||
p = func_8017ED5C(b, c);
|
||||
}
|
||||
if (p != 0) {
|
||||
p30 = &D_80115130;
|
||||
if (p != *p30) {
|
||||
*p30 = p;
|
||||
func_80139954();
|
||||
D_801CD9AC = func_801376E8(p, (s32)D_801BBA3C);
|
||||
}
|
||||
}
|
||||
func_80137B80();
|
||||
}
|
||||
if ((s16)r < 0) {
|
||||
func_80139954();
|
||||
D_800B9A15 = 0;
|
||||
if ((s16)r == -1) {
|
||||
func_8002D4C8(0x474, 0);
|
||||
}
|
||||
p12 = &D_80115112;
|
||||
*p12 += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017E258);
|
||||
|
||||
|
||||
@@ -3097,9 +3097,163 @@ INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8017FD5
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8017FF74);
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180010);
|
||||
extern s32 func_8016F1AC(void);
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern u8 D_801BBE98[];
|
||||
extern void func_80029124(s32, s32);
|
||||
extern void func_80029514(s32);
|
||||
extern void func_8017FD50(s32);
|
||||
|
||||
void func_80180010(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
extern void func_8017FD50(s32);
|
||||
extern s32 func_8016F1AC(void);
|
||||
extern void func_80029514(s32);
|
||||
extern void func_80029124(s32, s32);
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern u8 D_801BBE98[];
|
||||
|
||||
func_8017FD50(param_1);
|
||||
if (*(s32 *)(param_1 + 0x1C) != 0) {
|
||||
(*(s32 *)(param_1 + 0x1C))--;
|
||||
} else {
|
||||
if (func_8016F1AC() == 0) {
|
||||
func_80029514(10);
|
||||
func_80029124(0x125, 0);
|
||||
func_80029124(0x126, 0);
|
||||
func_80029124(0x127, 0);
|
||||
func_80029124(0x128, 0);
|
||||
*(u16 *)(param_1 + 0xDE) = 0;
|
||||
*(u16 *)(param_1 + 0xDC) = 0;
|
||||
func_80178B18(param_1, (s32)D_801BBE98);
|
||||
*(s32 *)(param_1 + 0x1C) = 0;
|
||||
*(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 *D_80126B78;
|
||||
extern s32 D_80126B58;
|
||||
extern u8 D_80185E80[];
|
||||
extern void func_8017FD50(s32);
|
||||
extern s32 func_800149E0(s32);
|
||||
extern s32 func_800CF8B4();
|
||||
extern void func_80029514(s32);
|
||||
extern void func_80029124(s32, s32);
|
||||
extern s32 func_80029178(s32);
|
||||
extern void func_80172F9C(void);
|
||||
extern void func_80171B10(void *a0);
|
||||
extern void func_80172B14(s16);
|
||||
extern void func_80172EFC(void);
|
||||
extern void func_80182324(void);
|
||||
extern s32 func_801789AC(s32);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_801746A4(void);
|
||||
extern void func_800D1724(s32 a0);
|
||||
|
||||
typedef struct { s16 a; s16 b; s16 c; } Trio;
|
||||
|
||||
void func_801800C0(s32 arg0)
|
||||
{
|
||||
register s32 s1v __asm__("$17");
|
||||
s32 v0;
|
||||
s16 var;
|
||||
s16 var2;
|
||||
u16 u0;
|
||||
Trio sp; // unused
|
||||
|
||||
*(s32*)(arg0 + 0x1c) += 1;
|
||||
var = *(s16*)(arg0 + 0x10a);
|
||||
if (var != 0) {
|
||||
var = var - 1;
|
||||
*(s16*)(arg0 + 0x10a) = var;
|
||||
if ((var * 0x10000 >> 16) < 0x40) {
|
||||
var2 = *(s16*)(arg0 + 0x106);
|
||||
if (var2 != 0) {
|
||||
var2 = var2 - 8;
|
||||
*(s16*)(arg0 + 0x106) = var2;
|
||||
if (var2 * 0x10000 < 0) {
|
||||
*(u16*)(arg0 + 0x106) = 0;
|
||||
}
|
||||
} else {
|
||||
u0 = *(u16*)(arg0 + 0x108) - 8;
|
||||
*(u16*)(arg0 + 0x108) = u0;
|
||||
if ((s16)u0 < 0) {
|
||||
*(u16*)(arg0 + 0x108) = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
func_8017FD50(arg0);
|
||||
v0 = 1;
|
||||
} else {
|
||||
v0 = 0;
|
||||
}
|
||||
if (v0 == 0 && (func_800149E0(0) & 0x800) != 0 && func_800CF8B4() != 0) {
|
||||
if (*(s32*)(arg0 + 0x1c) == 0x8e) {
|
||||
*(u16*)(D_80126B78 + 4) = 0;
|
||||
}
|
||||
*(u16*)(arg0 + 2) += 2;
|
||||
func_80029514(2);
|
||||
((void (*)(u8*))func_800D1724)(D_80185E80);
|
||||
return;
|
||||
}
|
||||
if (func_80029178(0x125) & 0xFF) {
|
||||
func_80029124(0x125, 0);
|
||||
func_80172F9C();
|
||||
}
|
||||
if (func_80029178(0x129) & 0xFF) {
|
||||
func_80029124(0x129, 0);
|
||||
func_80029124(0x126, 0);
|
||||
sp.a = 0x20;
|
||||
sp.b = 0;
|
||||
sp.c = -0x80;
|
||||
((void (*)(void*, void*))func_80171B10)(&D_80126B58, &sp);
|
||||
}
|
||||
if (!(func_80029178(0x126) & 0xFF)) goto block_126;
|
||||
switch (*(s16*)(arg0 + 0xdc)) {
|
||||
case 0:
|
||||
s1v = 0xe00;
|
||||
break;
|
||||
case 1:
|
||||
s1v = 0x180;
|
||||
break;
|
||||
case 2:
|
||||
s1v = 0xfc0;
|
||||
break;
|
||||
case 3:
|
||||
s1v = -1;
|
||||
func_80029124(0x126, 0);
|
||||
break;
|
||||
}
|
||||
if ((s16)s1v > 0) {
|
||||
u0 = *(u16*)(arg0 + 0xde) + 1;
|
||||
*(u16*)(arg0 + 0xde) = u0;
|
||||
if ((u0 * 0x10000 >> 16) >= 0x10) {
|
||||
*(u16*)(arg0 + 0xde) = 0;
|
||||
*(u16*)(arg0 + 0xdc) += 1;
|
||||
}
|
||||
func_80172B14(s1v);
|
||||
}
|
||||
__asm__ __volatile__("" : : "r"(s1v));
|
||||
block_126:
|
||||
if (func_80029178(0x127) & 0xFF) {
|
||||
func_80029124(0x127, 0);
|
||||
func_80172EFC();
|
||||
}
|
||||
if (func_80029178(0x128) & 0xFF) {
|
||||
func_80029124(0x128, 0);
|
||||
func_80182324();
|
||||
}
|
||||
if (func_801789AC(arg0) != 0) {
|
||||
((void (*)(s32))func_80178D18)(arg0);
|
||||
func_801746A4();
|
||||
*(s32*)(arg0 + 0x1c) = 0x10;
|
||||
*(u16*)(arg0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_801800C0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_801803AC);
|
||||
|
||||
@@ -3143,7 +3297,22 @@ extern void func_8017DAAC(s32 arg0, s32 arg1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180614);
|
||||
s32 func_80180614(s32 a0) {
|
||||
if (*(s16 *)(a0 + 0x10A) != 0) {
|
||||
u16 next = *(u16 *)(a0 + 0x106) - 0x10;
|
||||
*(s16 *)(a0 + 0x106) = next;
|
||||
*(s16 *)(a0 + 0x108) = next;
|
||||
if ((s16)next < 0) {
|
||||
*(s16 *)(a0 + 0x106) = 0;
|
||||
*(s16 *)(a0 + 0x108) = 0;
|
||||
}
|
||||
*(u16 *)(a0 + 0x10A) = *(u16 *)(a0 + 0x10A) - 3;
|
||||
return 0;
|
||||
}
|
||||
*(s16 *)(*(s32 *)(a0 + 0xD4) + 0xFC) = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180674);
|
||||
|
||||
@@ -3180,9 +3349,49 @@ DEFINE_func_80180800() /* dedup: shared engine-core @0x80180800 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180808);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180908);
|
||||
extern s32 func_8016F1AC(void);
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern u8 D_801BBC4C[];
|
||||
|
||||
void func_80180908(a0)
|
||||
s32 a0;
|
||||
{
|
||||
if (*(s32 *)(a0 + 0x1C) != 0) {
|
||||
*(s32 *)(a0 + 0x1C) -= 1;
|
||||
} else {
|
||||
if (func_8016F1AC() == 0) {
|
||||
func_80178B18(a0, &D_801BBC4C);
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_801789AC(s32 arg0);
|
||||
extern void func_801746A4(void);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_8017FBCC(void);
|
||||
extern void func_8017FD50(s32);
|
||||
|
||||
void func_80180974(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s32 v0;
|
||||
|
||||
if (*(s16 *)(a0 + 0x100) == 0) {
|
||||
func_8017FBCC();
|
||||
} else {
|
||||
func_8017FD50(a0);
|
||||
}
|
||||
v0 = func_801789AC(a0);
|
||||
if (v0 != 0) {
|
||||
((void (*)(s32))func_80178D18)(a0);
|
||||
func_801746A4();
|
||||
*(s32 *)(a0 + 0x1c) = 0x10;
|
||||
*(u16 *)(a0 + 2) = *(u16 *)(a0 + 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180974);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_801809F4);
|
||||
|
||||
@@ -3196,7 +3405,14 @@ extern s32 D_801CDED4;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180AE8);
|
||||
|
||||
|
||||
void func_80180AE8(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
*(u16 *)(*(s32 *)(param_1 + 0xd0) + 0x2) += 1;
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80180B04() /* dedup: shared engine-core @0x80180B04 (src/shared) */
|
||||
|
||||
@@ -3240,15 +3456,63 @@ INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180BD
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180C98);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180D10);
|
||||
extern u8 D_801BC6C8[];
|
||||
|
||||
void func_80180D10(a0)
|
||||
void *a0;
|
||||
{
|
||||
if (*(s32 *)((char *)a0 + 0x1c) != 0) {
|
||||
*(s32 *)((char *)a0 + 0x1c) = *(s32 *)((char *)a0 + 0x1c) - 1;
|
||||
} else {
|
||||
*(void **)((char *)a0 + 0xcc) = D_801BC6C8;
|
||||
*(u16 *)((char *)a0 + 2) = *(u16 *)((char *)a0 + 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80180D48() /* dedup: shared engine-core @0x80180D48 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180D9C);
|
||||
extern void *D_801BC78C[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80180D9C(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s16 temp;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) == 0) {
|
||||
return;
|
||||
}
|
||||
temp = *(s16 *)(a0 + 0xFE);
|
||||
if (temp == 0) {
|
||||
*(s16 *)(a0 + 0xFE) = 8;
|
||||
return;
|
||||
}
|
||||
temp = temp - 1;
|
||||
*(s16 *)(a0 + 0xFE) = temp;
|
||||
if ((temp << 16) != 0) {
|
||||
return;
|
||||
}
|
||||
func_8012A828(a0, D_801BC78C[*(s16 *)(a0 + 0xFC)]);
|
||||
*(s16 *)(a0 + 0xFC) = 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180E24);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180E9C);
|
||||
extern u8 D_801BC718[];
|
||||
|
||||
void func_80180E9C(a0)
|
||||
void *a0;
|
||||
{
|
||||
if (*(s32 *)((char *)a0 + 0x1c) != 0) {
|
||||
*(s32 *)((char *)a0 + 0x1c) = *(s32 *)((char *)a0 + 0x1c) - 1;
|
||||
} else {
|
||||
*(void **)((char *)a0 + 0xcc) = D_801BC718;
|
||||
*(u16 *)((char *)a0 + 2) = *(u16 *)((char *)a0 + 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80180BDC(s32 a0);
|
||||
extern u8 D_801BC5E0[];
|
||||
@@ -3265,19 +3529,129 @@ extern void func_8012A828(s32 a0, void *a1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180F28);
|
||||
extern void *D_801BC798[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180FB0);
|
||||
void func_80180F28(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s16 temp;
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180FFC);
|
||||
if (*(s16 *)(a0 + 0xFC) == 0) {
|
||||
return;
|
||||
}
|
||||
temp = *(s16 *)(a0 + 0xFE);
|
||||
if (temp == 0) {
|
||||
*(s16 *)(a0 + 0xFE) = 8;
|
||||
return;
|
||||
}
|
||||
temp = temp - 1;
|
||||
*(s16 *)(a0 + 0xFE) = temp;
|
||||
if ((temp << 16) != 0) {
|
||||
return;
|
||||
}
|
||||
func_8012A828(a0, D_801BC798[*(s16 *)(a0 + 0xFC)]);
|
||||
*(s16 *)(a0 + 0xFC) = 0;
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_801BC578[];
|
||||
extern u8 D_801BC764[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80180FB0(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
extern u8 D_801BC578[];
|
||||
extern u8 D_801BC764[];
|
||||
s32 v1;
|
||||
|
||||
func_8012A828(param_1, D_801BC578);
|
||||
v1 = *(u16 *)(param_1 + 2);
|
||||
*(s32 *)(param_1 + 0xCC) = (s32)D_801BC764;
|
||||
*(s32 *)(param_1 + 0x1C) = 0;
|
||||
*(u16 *)(param_1 + 2) = v1 + 1;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80180BDC(s32 a0);
|
||||
extern u8 D_801BC5F8[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80180FFC(s32 a0) {
|
||||
s32 v0;
|
||||
v0 = func_80180BDC(a0);
|
||||
if ((v0 << 16) != 0) {
|
||||
return;
|
||||
}
|
||||
func_8012A828(a0, &D_801BC5F8);
|
||||
*(s32 *)(a0 + 0x1c) = 0x28;
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_801BC680[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80181054(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s32 v0;
|
||||
v0 = *(s32 *)(a0 + 0x1C) - 1;
|
||||
*(s32 *)(a0 + 0x1C) = v0;
|
||||
if (v0 == -1) {
|
||||
func_8012A828(a0, &D_801BC680);
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80181054);
|
||||
|
||||
DEFINE_func_801810AC() /* dedup: shared engine-core @0x801810AC (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80181100);
|
||||
extern void *D_801BC798[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80181100(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s16 temp;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) == 0) {
|
||||
return;
|
||||
}
|
||||
temp = *(s16 *)(a0 + 0xFE);
|
||||
if (temp == 0) {
|
||||
*(s16 *)(a0 + 0xFE) = 8;
|
||||
return;
|
||||
}
|
||||
temp = temp - 1;
|
||||
*(s16 *)(a0 + 0xFE) = temp;
|
||||
if ((temp << 16) != 0) {
|
||||
return;
|
||||
}
|
||||
func_8012A828(a0, D_801BC798[*(s16 *)(a0 + 0xFC)]);
|
||||
*(s16 *)(a0 + 0xFC) = 0;
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_801BC578[];
|
||||
extern u8 D_801BC778[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80181188(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
extern u8 D_801BC578[];
|
||||
extern u8 D_801BC778[];
|
||||
s32 v1;
|
||||
|
||||
func_8012A828(param_1, D_801BC578);
|
||||
v1 = *(u16 *)(param_1 + 2);
|
||||
*(s32 *)(param_1 + 0xCC) = (s32)D_801BC778;
|
||||
*(s32 *)(param_1 + 0x1C) = 0;
|
||||
*(u16 *)(param_1 + 2) = v1 + 1;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80181188);
|
||||
|
||||
extern s32 func_80180BDC(s32 a0);
|
||||
extern u8 D_801BC5E0[];
|
||||
@@ -3294,7 +3668,31 @@ extern void func_8012A828(s32 a0, void *a1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80181228);
|
||||
extern void *D_801BC798[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80181228(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s16 temp;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) == 0) {
|
||||
return;
|
||||
}
|
||||
temp = *(s16 *)(a0 + 0xFE);
|
||||
if (temp == 0) {
|
||||
*(s16 *)(a0 + 0xFE) = 8;
|
||||
return;
|
||||
}
|
||||
temp = temp - 1;
|
||||
*(s16 *)(a0 + 0xFE) = temp;
|
||||
if ((temp << 16) != 0) {
|
||||
return;
|
||||
}
|
||||
func_8012A828(a0, D_801BC798[*(s16 *)(a0 + 0xFC)]);
|
||||
*(s16 *)(a0 + 0xFC) = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_8012C1B8(void);
|
||||
@@ -3576,7 +3974,57 @@ void func_80182000(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018203C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_801820F8);
|
||||
typedef struct { u8 b[12]; } Blk12_820F8;
|
||||
typedef struct { u8 b[8]; } Blk8_820F8;
|
||||
extern s32 D_801C339C[];
|
||||
extern s32 D_801C36F8[];
|
||||
extern s32 D_801CDD30;
|
||||
extern s32 D_801CDE20;
|
||||
extern u8 D_801CD9C0[];
|
||||
|
||||
void func_801820F8(a0)
|
||||
s32 a0;
|
||||
{
|
||||
s32 *dst = (s32 *)D_801CD9C0;
|
||||
s32 k = *(s16 *)(a0 + 0x70);
|
||||
s32 m = *(s16 *)(a0 + 0xFE);
|
||||
s32 *src = (s32 *)D_801C339C[k];
|
||||
s32 base = *(s32 *)(D_801C36F8[m] + k * 4);
|
||||
Blk12_820F8 *pd12;
|
||||
Blk8_820F8 *pd8;
|
||||
u8 *t0;
|
||||
u8 *t1;
|
||||
s32 cond;
|
||||
|
||||
base += *(s32 *)(a0 + 0x94) * 8;
|
||||
base = *(s32 *)base;
|
||||
cond = base & 0x1000000;
|
||||
if (cond == 0) {
|
||||
pd12 = (Blk12_820F8 *)&D_801CDD30;
|
||||
t0 = (u8 *)base;
|
||||
} else {
|
||||
pd8 = (Blk8_820F8 *)&D_801CDE20;
|
||||
t1 = (u8 *)(base & 0xFEFFFFFF);
|
||||
}
|
||||
while (*src != 0) {
|
||||
if (cond == 0) {
|
||||
if ((u16)(*(u16 *)(t0 + 2) + 0x1FF) < 0x3FF) {
|
||||
*dst++ = *src;
|
||||
*pd12 = *(Blk12_820F8 *)t0;
|
||||
pd12++;
|
||||
}
|
||||
} else {
|
||||
*dst++ = *src;
|
||||
*pd8 = *(Blk8_820F8 *)t1;
|
||||
pd8++;
|
||||
}
|
||||
src++;
|
||||
t0 += 12;
|
||||
t1 += 8;
|
||||
}
|
||||
*dst = 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80182240);
|
||||
|
||||
|
||||
@@ -3856,7 +3856,13 @@ void func_80174430(void) {
|
||||
DEFINE_func_80174438() /* dedup: shared engine-core @0x80174438 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037_jr_80171B4C", func_80174474);
|
||||
extern void (*D_80187264[])(void);
|
||||
|
||||
s32 func_80174474(void* a0)
|
||||
{
|
||||
D_80187264[*(u8 *)((s32)a0 + 0x214)]();
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_801744B0() /* dedup: shared engine-core @0x801744b0 (src/shared) */
|
||||
|
||||
|
||||
@@ -2904,7 +2904,17 @@ TAIL:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017F83C", func_8017FBD8);
|
||||
|
||||
|
||||
void func_8017FBD8(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
*(s32 *)(param_1 + 0x48) = 0x4000;
|
||||
*(s16 *)(param_1 + 2) = 7;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x50;
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = rand() % 0x1000;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017F83C", func_8017FC3C);
|
||||
|
||||
@@ -3414,7 +3424,46 @@ void func_80180A84(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017F83C", func_80180B7C);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern u16 D_800B99DA;
|
||||
extern u8 D_8019E682;
|
||||
extern u8 D_8019E6BC;
|
||||
extern u8 D_8019E6BD;
|
||||
extern u8 D_8019E6BE;
|
||||
|
||||
void func_80180B7C(arg0)
|
||||
s32 arg0;
|
||||
{
|
||||
s32 r;
|
||||
s32 x;
|
||||
s32 col0;
|
||||
s32 col1;
|
||||
s32 col2;
|
||||
u8 *p;
|
||||
s32 i;
|
||||
s32 off;
|
||||
|
||||
r = func_8004787C((((D_800B99DA << 3) - D_800B99DA) << 3) & 0x7F8);
|
||||
x = (((((r << 1) + r) << 3) + r) << 2) >> 12;
|
||||
col0 = x + 100;
|
||||
col1 = x - 126;
|
||||
col2 = ((((((r << 3) - r) << 3) - r) << 1) >> 12) + 100;
|
||||
i = 0;
|
||||
p = &D_8019E682;
|
||||
off = 0;
|
||||
do {
|
||||
i++;
|
||||
p[off - 2] = col0;
|
||||
p[off - 1] = col1;
|
||||
p[off] = col2;
|
||||
off += 16;
|
||||
} while (i < 3);
|
||||
D_8019E6BC = col0 - 50;
|
||||
D_8019E6BD = col1 - 50;
|
||||
D_8019E6BE = col2 - 50;
|
||||
*(s32 *)(arg0 + 0x1C) += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5350,7 +5350,27 @@ ret0:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F500);
|
||||
extern short D_801B99A8;
|
||||
extern u8 D_801E396C[];
|
||||
extern void func_8012A828(s32*, s32);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_80184C90(s32);
|
||||
extern void func_80184ED4(s32, s32, s32, s32);
|
||||
|
||||
void func_8017F500(arg0)
|
||||
void *arg0;
|
||||
{
|
||||
extern short D_801B99A8;
|
||||
extern u8 D_801E396C[];
|
||||
|
||||
*(short *)((char *)arg0 + 0x2) = 5;
|
||||
*(short *)((char *)arg0 + 0x34) = 0;
|
||||
func_8012E88C((s32)arg0);
|
||||
((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B99A8);
|
||||
func_80184C90((s32)arg0);
|
||||
func_80184ED4((s32)arg0, (s32)D_801E396C, 0, 0x60);
|
||||
}
|
||||
|
||||
|
||||
void func_8017F564(void *a0) {
|
||||
extern short D_80191578;
|
||||
@@ -5921,7 +5941,15 @@ DEFINE_func_8018042C() /* dedup: shared engine-core @0x8018042C (src/shared) */
|
||||
DEFINE_func_8018048C() /* dedup: shared engine-core @0x8018048C (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801804C8);
|
||||
extern void func_80178CBC(s32, s32);
|
||||
extern short D_8019195C;
|
||||
|
||||
void func_801804C8(s32 arg0) {
|
||||
*(short *)((char *)arg0 + 0x2) = 0x5;
|
||||
((void (*)(s32 *, s32))func_80178CBC)((s32 *)arg0, (s32)&D_8019195C);
|
||||
*(short *)((char *)arg0 + 0x34) = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80184DD0(s32 a0);
|
||||
@@ -5964,7 +5992,20 @@ void func_80180580(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801805C0);
|
||||
void func_801805C0(s32 arg0) {
|
||||
extern void func_80185F54(void*, s32, s32);
|
||||
extern s32 func_80185BE0(s32);
|
||||
extern s32 func_80184FA4(void);
|
||||
extern void func_801803BC(void*);
|
||||
|
||||
((void (*)(s32, s32, s32))func_80185F54)(arg0, 0xC, 1);
|
||||
if (func_80185BE0(0xC) != 0) {
|
||||
if (((s32 (*)(s32))func_80184FA4)(arg0) != 0) {
|
||||
((void (*)(s32))func_801803BC)(arg0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80180618(void *arg0) {
|
||||
extern short D_801B65C8;
|
||||
@@ -6311,7 +6352,46 @@ s32 func_80180CC0(void *a0)
|
||||
DEFINE_func_80180D38() /* dedup: shared engine-core @0x80180D38 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180E28);
|
||||
void func_80180E28(s32 a0) {
|
||||
s32 s2;
|
||||
s32 code;
|
||||
s32 a0val;
|
||||
s32 dd;
|
||||
s32 sel;
|
||||
|
||||
s2 = a0;
|
||||
*(s32 *)(*(s32 *)(s2 + 0xCC) + 0xB0) = 2;
|
||||
dd = func_80184DD0(a0);
|
||||
sel = func_80029504();
|
||||
|
||||
if (dd == 2 && sel < 0x276) {
|
||||
a0val = 0xA;
|
||||
} else {
|
||||
if (func_80184BAC(0xA, 0x10) != 0) {
|
||||
code = 0;
|
||||
goto ladder_done;
|
||||
}
|
||||
a0val = 0x10;
|
||||
}
|
||||
if (func_80184BAC(a0val, 0x16) != 0) {
|
||||
code = 1;
|
||||
} else {
|
||||
code = 2;
|
||||
}
|
||||
ladder_done:
|
||||
|
||||
switch (code) {
|
||||
case 0:
|
||||
func_80180888((void *)a0);
|
||||
break;
|
||||
case 1:
|
||||
func_801809DC((void *)a0);
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80185BE0(s32 a0);
|
||||
|
||||
@@ -3114,7 +3114,29 @@ void func_80181B34(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80181804", func_80181B74);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
|
||||
void func_80181B74(void *a0) {
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern void func_8012E88C(s32 a0);
|
||||
extern void func_8012A828(s32 *a0, s32 a1);
|
||||
extern void func_80184C90(s32 a0);
|
||||
extern void func_80181998(void);
|
||||
extern s32 D_80191B3C;
|
||||
extern short D_801C0D40;
|
||||
|
||||
if (func_80178970() != 0) {
|
||||
((void (*)(s32))func_80178D18)((s32)a0);
|
||||
*(short *)((char *)a0 + 0x2) = 3;
|
||||
func_8012E8E0((s32)a0, (s32)&D_80191B3C);
|
||||
func_8012E88C((s32)a0);
|
||||
func_8012A828((s32 *)a0, (s32)&D_801C0D40);
|
||||
func_80184C90((s32)a0);
|
||||
((void (*)(void))func_80181998)();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80184FA4(void);
|
||||
@@ -3418,7 +3440,78 @@ INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80181804", func_801821D
|
||||
|
||||
DEFINE_func_8018233C() /* dedup: shared engine-core @0x8018233C (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80181804", func_80182378);
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_8012E544(s32 a0);
|
||||
extern short D_80191C10;
|
||||
extern short D_80191CD8;
|
||||
extern short D_80191D30;
|
||||
extern short D_80191D88;
|
||||
extern short D_80191E60;
|
||||
extern short D_80191E88;
|
||||
extern short D_801B9B50;
|
||||
extern void func_8012A828(s32*, s32);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern void func_80178CBC(s32 arg0, s32 arg1);
|
||||
|
||||
void func_80182378(a0)
|
||||
void *a0;
|
||||
{
|
||||
|
||||
extern short D_80191C10;
|
||||
extern short D_801B9B50;
|
||||
extern short D_80191E88;
|
||||
extern short D_80191E60;
|
||||
extern short D_80191CD8;
|
||||
extern short D_80191D88;
|
||||
extern short D_80191D30;
|
||||
|
||||
s32 v;
|
||||
s32 arg;
|
||||
|
||||
*(short *)((char *)a0 + 0x2) = 9;
|
||||
func_8012E8E0((s32)a0, (s32)&D_80191C10);
|
||||
func_8012E88C((s32)a0);
|
||||
func_8012A828((s32 *)a0, (s32)&D_801B9B50);
|
||||
|
||||
|
||||
if (*(u16 *)a0 == 0x2A0) {
|
||||
v = func_8012E544(0x2A3);
|
||||
if (v == 0) {
|
||||
goto zero;
|
||||
}
|
||||
goto chk;
|
||||
} else {
|
||||
v = func_8012E544(0x2A0);
|
||||
if (v != 0) {
|
||||
goto chk;
|
||||
}
|
||||
}
|
||||
zero:
|
||||
v = 0;
|
||||
goto join;
|
||||
chk:
|
||||
v = (*(u16 *)(v + 2) == 3);
|
||||
join:
|
||||
if (v == 0) {
|
||||
arg = (s32)&D_80191E88;
|
||||
if (*(u16 *)a0 == 0x2A0) {
|
||||
arg = (s32)&D_80191E60;
|
||||
}
|
||||
} else {
|
||||
s32 t = func_80029504();
|
||||
if (t < 0x2A8) {
|
||||
arg = (s32)&D_80191CD8;
|
||||
} else if (t < 0x2DA) {
|
||||
arg = (s32)&D_80191D30;
|
||||
} else {
|
||||
arg = (s32)&D_80191D88;
|
||||
}
|
||||
}
|
||||
|
||||
func_80178CBC((s32 *)a0, arg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_80178CBC(s32 a0, s32 a1);
|
||||
@@ -3553,7 +3646,59 @@ s32 func_801825BC(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80181804", func_801826AC);
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_80184BAC(s32 arg0, s32 arg1);
|
||||
extern s32 func_80184DD0(s32 a0);
|
||||
|
||||
void func_801826AC(arg0)
|
||||
void *arg0;
|
||||
{
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_80184BAC(s32 arg0, s32 arg1);
|
||||
extern s32 func_80184DD0(s32 a0);
|
||||
extern void func_80181F70(void *);
|
||||
extern void func_801821A8(void *);
|
||||
|
||||
void *s2 = arg0;
|
||||
s32 state;
|
||||
s32 dd;
|
||||
s32 sel;
|
||||
s32 code;
|
||||
s32 a0val;
|
||||
|
||||
state = 2;
|
||||
*(s32 *)(*(s32 *)((char *)s2 + 0xCC) + 0xB0) = state;
|
||||
dd = func_80184DD0((s32)arg0);
|
||||
sel = func_80029504();
|
||||
|
||||
if (dd == state && sel < 0x276) {
|
||||
a0val = 0xA;
|
||||
} else {
|
||||
if (func_80184BAC(0xA, 0x10) != 0) {
|
||||
code = 0;
|
||||
goto ladder_done;
|
||||
}
|
||||
a0val = 0x10;
|
||||
}
|
||||
if (func_80184BAC(a0val, 0x15) != 0) {
|
||||
code = 1;
|
||||
} else {
|
||||
code = 2;
|
||||
}
|
||||
ladder_done:
|
||||
|
||||
switch (code) {
|
||||
case 0:
|
||||
func_80181F70(s2);
|
||||
break;
|
||||
case 1:
|
||||
func_801821A8(s2);
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80185BE0(s32 a0);
|
||||
@@ -4199,7 +4344,16 @@ void func_8018375C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80181804", func_801837A8);
|
||||
extern s32 func_80184FA4();
|
||||
extern void func_801832A8();
|
||||
|
||||
void func_801837A8(void *a0) {
|
||||
*(s32 *)(*(s32 *)((char *)a0 + 0xCC) + 0xB0) = 2;
|
||||
if (((s32 (*)(s32))func_80184FA4)((s32)a0)) {
|
||||
func_801832A8(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80184FA4(void);
|
||||
extern s32 func_80185BE0(s32 arg0);
|
||||
@@ -4221,7 +4375,28 @@ DEFINE_func_80183838() /* dedup: shared engine-core @0x80183838 (src/shared) */
|
||||
DEFINE_func_80183890() /* dedup: shared engine-core @0x80183890 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80181804", func_801838E0);
|
||||
extern int func_80178970(void);
|
||||
extern void func_8012A828(s32 *a0, s32 a1);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_80178D18(void);
|
||||
|
||||
void func_801838E0(arg0)
|
||||
void *arg0;
|
||||
{
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_8012A828(s32 *a0, s32 a1);
|
||||
extern short D_801B9AA8;
|
||||
|
||||
if (func_80178970() != 0) {
|
||||
((void (*)(s32))func_80178D18)((s32)arg0);
|
||||
*(s16 *)((s32)arg0 + 2) = 6;
|
||||
func_8012E88C((s32)arg0);
|
||||
func_8012A828((s32 *)arg0, (s32)&D_801B9AA8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80183938 — state-entry init (family exemplar, reach x11).
|
||||
|
||||
@@ -3245,7 +3245,34 @@ INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80183E6C", func_8018450
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80183E6C", func_80184560);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80183E6C", func_801845B8);
|
||||
extern s32 func_801847BC(void *a0, void *a1);
|
||||
extern s32 func_80184BAC(s32 a0, s32 a1);
|
||||
extern void func_80184CB8(s32 *a0, s32 a1);
|
||||
extern s32 func_801788B8(s32 a0, s32 a1);
|
||||
extern s32 func_8018465C(a0);
|
||||
extern short D_8019224C;
|
||||
extern short D_8019225C;
|
||||
|
||||
void func_801845B8(void *a0) {
|
||||
s32 v1;
|
||||
|
||||
if (func_801847BC(a0, &D_8019225C) != 0) {
|
||||
if (func_80184BAC(6, 7) != 0) {
|
||||
*(s16 *)((char *)a0 + 0x2) = 5;
|
||||
} else if (func_80184BAC(7, 0x10) != 0) {
|
||||
*(s16 *)((char *)a0 + 0x2) = 6;
|
||||
} else if (func_80184BAC(0x10, 0x14) != 0) {
|
||||
*(s16 *)((char *)a0 + 0x2) = 0xC;
|
||||
} else {
|
||||
*(s16 *)((char *)a0 + 0x2) = 1;
|
||||
}
|
||||
func_80184CB8((s32 *)a0, (s32)&D_8019224C);
|
||||
v1 = *(s32 *)((char *)a0 + 0x68);
|
||||
*(s16 *)((char *)v1 + 0xC) = 0x7FFF;
|
||||
func_801788B8((s32)a0, (s32)&func_8018465C);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012BD14(s32 a0);
|
||||
extern s32 func_80178BF8();
|
||||
|
||||
@@ -3398,7 +3398,27 @@ s16 func_80186450(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80185D70", func_80186460);
|
||||
extern void func_801864AC(void);
|
||||
extern u8 D_800B9A15;
|
||||
extern u8 D_800B9A13;
|
||||
extern u16 D_80115110;
|
||||
extern u16 D_80115112;
|
||||
extern s16 D_80115126;
|
||||
extern void *D_8011DB24;
|
||||
|
||||
s32 func_80186460(s32 a0) {
|
||||
void *func_ptr;
|
||||
|
||||
D_800B9A15 = 1;
|
||||
D_800B9A13 = 4;
|
||||
D_80115110 = 3;
|
||||
func_ptr = func_801864AC;
|
||||
D_80115112 = 0;
|
||||
D_80115126 = (s16)a0;
|
||||
D_8011DB24 = func_ptr;
|
||||
return (s32)func_ptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_80029444(void);
|
||||
|
||||
@@ -4810,7 +4810,30 @@ void func_8018BE38(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80188E1C", func_8018BE74);
|
||||
extern s32 D_801E05E0[];
|
||||
extern s32 D_801E05F4[];
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_80184D00(void);
|
||||
extern s32 func_80184DD0(s32);
|
||||
|
||||
void func_8018BE74(a0)
|
||||
s32 a0;
|
||||
{
|
||||
|
||||
extern s32 D_801E05E0[];
|
||||
extern s32 D_801E05F4[];
|
||||
|
||||
s32 v1 = func_80029504();
|
||||
|
||||
if (v1 < 0xC8) {
|
||||
s32 v0 = ((s32 (*)(void))func_80184D00)();
|
||||
*(s32 *)(a0 + 0xE4) = D_801E05E0[v0];
|
||||
} else {
|
||||
s32 v0 = ((s32 (*)(void))func_80184DD0)();
|
||||
*(s32 *)(a0 + 0xE4) = D_801E05F4[v0];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8014CB1C(void);
|
||||
s32 func_8018BEE8(void) {
|
||||
|
||||
@@ -3272,7 +3272,70 @@ DEFINE_func_8018CDDC() /* dedup: shared engine-core @0x8018CDDC (src/shared) */
|
||||
|
||||
DEFINE_func_8018CDE4() /* dedup: shared engine-core @0x8018CDE4 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8018CC40", func_8018CDEC);
|
||||
extern void func_80029124(s32, s32);
|
||||
extern s32 func_800291B4(s32 arg);
|
||||
extern s32 func_800D0FE0(s32);
|
||||
extern void func_800D0F0C(s32, s32);
|
||||
|
||||
extern s16 D_8010EDEC;
|
||||
extern u8 D_8010EDF1;
|
||||
extern s32 D_801E3D60;
|
||||
extern u32 D_801E3D74;
|
||||
extern s32 D_801E3EA4;
|
||||
|
||||
typedef struct {
|
||||
s16 unk00; /* 0x00 */
|
||||
s16 pad02; /* 0x02 */
|
||||
s32 unk04; /* 0x04 */
|
||||
s32 unk08; /* 0x08 */
|
||||
s32 unk0C; /* 0x0C */
|
||||
} Struct801E79D8;
|
||||
|
||||
extern Struct801E79D8 D_801E79D8;
|
||||
|
||||
void func_8018CDEC(void) {
|
||||
s16 i;
|
||||
|
||||
D_801E79D8.unk00 = 0;
|
||||
for (i = 0; i < 0xC; i++) {
|
||||
s32 slot = i + 0x2F;
|
||||
s32 id = func_800291B4(slot) & 0xFF;
|
||||
if (id != 0) {
|
||||
register s32 tmp __asm__("$2");
|
||||
register s32 t __asm__("$5");
|
||||
register s32 rb __asm__("$6");
|
||||
s16 flags;
|
||||
s32 m;
|
||||
tmp = (id << 1) + id;
|
||||
t = tmp << 2;
|
||||
flags = *(s16 *)((u8 *)&D_8010EDEC + t);
|
||||
if (flags < 0) {
|
||||
rb = *(u8 *)((u8 *)&D_8010EDF1 + t);
|
||||
m = rb & 0xFF;
|
||||
if (flags & 0x4000) {
|
||||
D_801E79D8.unk08 = (&D_801E3D60)[id];
|
||||
D_801E79D8.unk0C = (&D_801E3D74)[id];
|
||||
func_80029124(m, 1);
|
||||
func_800D0FE0(slot);
|
||||
D_801E79D8.unk00 = 2;
|
||||
return;
|
||||
} else {
|
||||
register s32 sc __asm__("$4");
|
||||
register s32 d __asm__("$2");
|
||||
sc = slot;
|
||||
__asm__("" : "=r"(sc) : "0"(sc));
|
||||
d = rb - 0x14;
|
||||
__asm__("" : "=r"(d) : "0"(d));
|
||||
D_801E79D8.unk04 = (&D_801E3EA4)[d >> 1];
|
||||
((void (*)(s32))func_800D0F0C)(sc);
|
||||
D_801E79D8.unk00 = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3880,7 +3880,17 @@ void func_8017CC44(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CCC4);
|
||||
void func_8017CCC4(void *a0) {
|
||||
s32 *a1 = *(s32 **)((s32)a0 + 0x20);
|
||||
if (*(s32 *)((s32)a0 + 0x1C) & 1) {
|
||||
*(s32 *)(a1 + 1) |= 0x80000000;
|
||||
} else {
|
||||
*(s32 *)(a1 + 1) &= 0x7FFFFFFF;
|
||||
}
|
||||
*(s16 *)((s32)a0 + 0x24) = 3;
|
||||
*(s32 *)((s32)a0 + 0x1C) += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8017CE10(void *a0, s32 a1, s32 a2);
|
||||
@@ -7459,7 +7469,34 @@ extern void func_8013C0F8(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801823BC);
|
||||
extern s16 D_801AEB52[];
|
||||
extern s32 D_801A158C;
|
||||
extern s32 D_801AEB1C;
|
||||
extern s32 D_801B20E0;
|
||||
extern void func_80049CAC(s32 a0, s32 a1);
|
||||
extern void func_8017EF68(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
void func_801823BC(a0, a1)
|
||||
s32 a0;
|
||||
s32 a1;
|
||||
{
|
||||
extern void func_80049CAC(s32 a0, s32 a1);
|
||||
extern void func_8017EF68(s32 a0, s32 a1, s32 a2);
|
||||
extern s16 D_801AEB52[];
|
||||
extern s32 D_801B20E0;
|
||||
extern s32 D_801A158C;
|
||||
extern s32 D_801AEB1C;
|
||||
register s16 *q asm("$17");
|
||||
|
||||
q = D_801AEB52;
|
||||
*q = a0;
|
||||
func_80049CAC((s32)q - 2, (s32)q - 78);
|
||||
__asm__("" : "=r"(q) : "0"(q));
|
||||
D_801AEB1C = (s16)a1;
|
||||
*(s32 *)((s32)q - 82) = 0;
|
||||
func_8017EF68((s32)&D_801B20E0, (s32)&D_801A158C, (s32)q - 82);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8013C0F8(void *a0);
|
||||
extern s32 func_8017EF08(s32 a0);
|
||||
@@ -8101,7 +8138,22 @@ void func_801837DC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018381C);
|
||||
/*
|
||||
* func_8018381C — actor update gate.
|
||||
* Runs the table swap + state entry only while the actor is idle (+0x102 == 0)
|
||||
* and the global mode word is anything except 2/3 (sltiu range check).
|
||||
*/
|
||||
void func_8018381C(void *param_1)
|
||||
{
|
||||
extern s32 D_80126B58;
|
||||
extern void (*D_8018C5A0[])(void);
|
||||
|
||||
if ((*(s16 *)((s32)param_1 + 0x102) == 0) && ((u32)(*(u16 *)&D_80126B58 - 2) >= 2)) {
|
||||
func_80178B18((s32)param_1, (s32)D_8018C5A0);
|
||||
func_8018291C((s32)param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
@@ -8269,7 +8321,36 @@ void func_80183C9C(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183DAC);
|
||||
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);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
|
||||
extern u8 D_8018C804;
|
||||
extern s32 D_8018C8C4;
|
||||
|
||||
void func_80183DAC(void *arg0)
|
||||
{
|
||||
register void *self __asm__("$16") = arg0;
|
||||
s32 h;
|
||||
|
||||
h = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)self + 0x20) = h;
|
||||
if (h == 0) {
|
||||
func_8012CAE4(self);
|
||||
} else {
|
||||
func_8001CA1C(h, (s32)&D_8018C804);
|
||||
func_8012A828((s32)self, &D_8018C8C4);
|
||||
*(u16 *)(*(s32 *)((s32)self + 0x20) + 0x18) = 0x2800;
|
||||
*(u16 *)(*(s32 *)((s32)self + 0x20) + 0x1A) = 0x2800;
|
||||
*(u32 *)(*(s32 *)((s32)self + 0x20) + 4) |= 0x50000000;
|
||||
func_8002D4C8(0x92B, 0);
|
||||
func_8012AD50(self);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct { s32 w[8]; } Mat32L;
|
||||
|
||||
@@ -8675,7 +8756,41 @@ void func_80184870(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801848A4);
|
||||
|
||||
|
||||
int func_801848A4(int a0, void* a1)
|
||||
{
|
||||
s16 stack_buf[8];
|
||||
register s16 *s0 __asm__("$16") = (s16 *)a1;
|
||||
s16 v0;
|
||||
s32 result;
|
||||
s32 ret;
|
||||
|
||||
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_80184940((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);
|
||||
|
||||
if (result != 0) {
|
||||
ret = 1;
|
||||
} else {
|
||||
v0 = s0[7];
|
||||
stack_buf[6] = v0;
|
||||
stack_buf[2] = v0;
|
||||
result = func_80184940((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);
|
||||
ret = (result != 0);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void func_80184940(s32 param_1, s32 param_2, s32 param_3)
|
||||
{
|
||||
@@ -9401,7 +9516,23 @@ void func_80185DA4(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185DE0);
|
||||
void func_80185DE0(int param_1)
|
||||
{
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
extern u8 D_801AA1C8[];
|
||||
|
||||
int v0;
|
||||
|
||||
*(int *)(param_1 + 0x20) = v0 = ((int (*)(void))func_8012C1B8)();
|
||||
if (v0 != 0) {
|
||||
func_8001C810(v0, (s32)D_801AA1C8);
|
||||
*(int *)(v0 + 4) |= 0x50000000;
|
||||
((s32 (*)(void *))func_8012AD50)((void *)param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80185E44(void) {
|
||||
}
|
||||
|
||||
@@ -3832,9 +3832,54 @@ void func_801838F0(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80181D34", func_80183940);
|
||||
s32 func_80183940(s32 a0, s32 a1) {
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
extern s32 rand(void);
|
||||
s32 s0;
|
||||
s32 rr;
|
||||
register s32 x1 __asm__("$3");
|
||||
register s32 x2 __asm__("$4");
|
||||
|
||||
if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) >= 0x800) {
|
||||
if (*(s16 *)(a0 + 0xE4) == 0) {
|
||||
*(s16 *)(a0 + 0xE4) = *(u16 *)(a0 + 0xE6);
|
||||
s0 = func_80132EF4(a0, 0x22);
|
||||
if (s0 != 0) {
|
||||
rr = rand();
|
||||
x1 = *(u16 *)(s0 + 0x6);
|
||||
x1 = x1 - 0x10;
|
||||
*(u16 *)(s0 + 0x6) = x1 + (rr & 0x1F);
|
||||
rr = rand();
|
||||
*(s32 *)(s0 + 0x14) = -0x40000;
|
||||
x2 = *(u16 *)(s0 + 0xE);
|
||||
x2 = x2 - 0x10;
|
||||
*(u16 *)(s0 + 0xE) = x2 + (rr & 0x1F);
|
||||
*(s16 *)(s0 + 0x34) = a1;
|
||||
*(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) = 0xC010;
|
||||
*(u32 *)(*(s32 *)(s0 + 0x20) + 0x4) |= 0x40000000;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
*(s16 *)(a0 + 0xE4) = *(s16 *)(a0 + 0xE4) - 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern u16 D_80126B66;
|
||||
extern void func_80181EF4(s32 arg0);
|
||||
|
||||
void func_80183A28(param_1)
|
||||
int param_1;
|
||||
{
|
||||
if ((short)(*(u16 *)(param_1 + 0xE) - D_80126B66) < 0x140) {
|
||||
void **fp = *(void **)(param_1 + 0xDC);
|
||||
if (fp != 0 && *fp != 0)
|
||||
(*(void (*)(void))*fp)();
|
||||
func_80181EF4(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80181D34", func_80183A28);
|
||||
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8001C924(s32 a0, void *a1);
|
||||
@@ -4122,7 +4167,20 @@ void func_80183FDC(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80181D34", func_801841F8);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_80142414(s32 a0, s16 a1);
|
||||
|
||||
void func_801841F8(p)
|
||||
s32 p;
|
||||
{
|
||||
if (*(s32 *)(p + 0x1C) == 0xF) {
|
||||
func_80142414(p, -0x90);
|
||||
}
|
||||
if (func_8012BEE8(p) != 0) {
|
||||
*(u16 *)(p + 2) = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80184248 — a randomised state entry: seed the timer at 0x1C with
|
||||
|
||||
@@ -3384,7 +3384,17 @@ void func_80185D38(s32 param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801851E0", func_80185EB0);
|
||||
extern u8 D_801D3784[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80185EB0(s32 a0) {
|
||||
*(u16 *)(a0 + 0x2) = 0x20;
|
||||
func_8012A828(a0, (s32)&D_801D3784);
|
||||
*(s32 *)(a0 + 0x1C) = 0;
|
||||
*(s32 *)(a0 + 0xE4) = 0;
|
||||
*(s32 *)(a0 + 0x48) = 0x4650;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3086,6 +3086,25 @@ void func_80186E48(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801867DC", func_80186E94);
|
||||
extern s32 D_801BC408;
|
||||
extern s32 D_801BC418;
|
||||
extern void func_8012B14C(s32 a0, s32 a1);
|
||||
extern void func_80131B14();
|
||||
|
||||
void func_80186E94(a0)
|
||||
s32 *a0;
|
||||
{
|
||||
s32 s0 = a0;
|
||||
*(u8 *)(s0 + 0xC2) = 0;
|
||||
*(u8 *)(s0 + 0xC3) = 0;
|
||||
*(s32 *)(s0 + 0x1C) = 0;
|
||||
func_80131B14();
|
||||
if ((*(u16 *)(s0 + 0x5E) == 9) || (*(u16 *)(s0 + 0x5E) == 0x1C)) {
|
||||
func_8012B14C(s0, (s32)&D_801BC408);
|
||||
} else {
|
||||
func_8012B14C(s0, (s32)&D_801BC418);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4623,7 +4623,42 @@ s32 func_801897F0(void *a0, s32 a1, s32 a2) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80186F00", func_80189888);
|
||||
void func_80189888(a0, a1, a2, a3, a4, a5)
|
||||
s32 a0;
|
||||
void *a1;
|
||||
s32 a2;
|
||||
s32 a3;
|
||||
u16 a4;
|
||||
s32 a5;
|
||||
{
|
||||
extern s32 func_8012C51C(void *a0, s32 a1);
|
||||
typedef struct {
|
||||
u16 f10; /* 0x10 */
|
||||
u16 f12; /* 0x12 */
|
||||
u16 f14; /* 0x14 */
|
||||
s16 f16; /* 0x16 */
|
||||
s16 f18; /* 0x18 */
|
||||
s16 f1a; /* 0x1A */
|
||||
s16 f1c; /* 0x1C */
|
||||
u16 f1e; /* 0x1E */
|
||||
s32 f20; /* 0x20 */
|
||||
} buf_80189888;
|
||||
buf_80189888 sp;
|
||||
u16 t;
|
||||
|
||||
sp.f10 = *(u16 *)a1;
|
||||
sp.f12 = *(u16 *)(2 + (char *)a1);
|
||||
t = *(u16 *)(4 + (char *)a1);
|
||||
sp.f16 = a2;
|
||||
sp.f18 = a3;
|
||||
sp.f1a = 0;
|
||||
sp.f1e = a4;
|
||||
sp.f20 = a5;
|
||||
sp.f1c = 0x7FFF;
|
||||
sp.f14 = t;
|
||||
func_8012C51C(&sp, a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80186F00", func_801898EC);
|
||||
|
||||
|
||||
@@ -3412,5 +3412,23 @@ INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017C0A
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017C120);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017C1DC);
|
||||
extern s32 func_80146E98(s32 a0);
|
||||
extern void func_80146C3C();
|
||||
|
||||
void func_8017C1DC(param_1)
|
||||
int param_1;
|
||||
{
|
||||
int addr;
|
||||
|
||||
addr = *(int *)(param_1 + 0x20);
|
||||
if (*(unsigned int *)(param_1 + 0x1c) & 1) {
|
||||
*(unsigned int *)(addr + 4) = *(unsigned int *)(addr + 4) | 0x80000000;
|
||||
} else {
|
||||
*(unsigned int *)(addr + 4) = *(unsigned int *)(addr + 4) & 0x7fffffff;
|
||||
}
|
||||
if (func_80146E98(param_1) != 0) {
|
||||
((void (*)(s32))func_80146C3C)(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3385,7 +3385,47 @@ int func_8017D77C(short *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017D810);
|
||||
/* Handwritten GTE squared-distance check (§265 verbatim-asm lane, file-scope form).
|
||||
* Recovered C semantics: dx=D_80126CAC-a0[3]; dz=D_80126CB0-a0[7];
|
||||
* GTE SQR of {dx,0,dz}; return 0xC3FFF < (MAC1+MAC2+MAC3). */
|
||||
__asm__(".text\n.align 2\n.globl func_8017D810\n.ent\tfunc_8017D810\n"
|
||||
"func_8017D810:\n.frame $sp,16,$31\n.mask 0,0\n.fmask 0,0\n"
|
||||
".set\tnoreorder\n"
|
||||
"lui $2, %hi(D_80126CAC)\n"
|
||||
"lh $2, %lo(D_80126CAC)($2)\n"
|
||||
"lh $3, 6($4)\n"
|
||||
"addiu $29, $29, -16\n"
|
||||
"sw $0, 4($29)\n"
|
||||
"subu $2, $2, $3\n"
|
||||
"sw $2, 0($29)\n"
|
||||
"lui $2, %hi(D_80126CB0)\n"
|
||||
"lh $2, %lo(D_80126CB0)($2)\n"
|
||||
"lh $3, 14($4)\n"
|
||||
"nop\n"
|
||||
"subu $2, $2, $3\n"
|
||||
"sw $2, 8($29)\n"
|
||||
"lwc2 $9, 0($29)\n"
|
||||
"lwc2 $10, 4($29)\n"
|
||||
"lwc2 $11, 8($29)\n"
|
||||
"nop\n"
|
||||
"nop\n"
|
||||
"sqr 0\n"
|
||||
"swc2 $25, 0($29)\n"
|
||||
"swc2 $26, 4($29)\n"
|
||||
"swc2 $27, 8($29)\n"
|
||||
"lui $5, 12\n"
|
||||
"ori $5, $5, 16383\n"
|
||||
"lw $2, 0($29)\n"
|
||||
"lw $3, 4($29)\n"
|
||||
"lw $4, 8($29)\n"
|
||||
"addu $2, $2, $3\n"
|
||||
"addu $2, $2, $4\n"
|
||||
"slt $2, $5, $2\n"
|
||||
"addiu $29, $29, 16\n"
|
||||
"jr $31\n"
|
||||
"nop\n"
|
||||
".set\treorder\n.end\tfunc_8017D810\n");
|
||||
|
||||
|
||||
|
||||
extern void (*D_80196DE0[])(void);
|
||||
@@ -3417,7 +3457,53 @@ void func_8017D8D0(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017D940);
|
||||
extern void func_8017DABC();
|
||||
|
||||
void func_8017D940(int param_1)
|
||||
{
|
||||
int iVar2;
|
||||
int iVar3;
|
||||
int iVar4;
|
||||
int iVar5;
|
||||
int tmp;
|
||||
int dcVal;
|
||||
|
||||
if (*(short *)(param_1 + 0xfe) == 0) {
|
||||
iVar2 = func_8004787C((int)*(short *)(param_1 + 0x100));
|
||||
if (iVar2 < 0) {
|
||||
iVar2 = iVar2 + 0x7f;
|
||||
}
|
||||
iVar2 = iVar2 >> 7;
|
||||
tmp = *(unsigned short *)(param_1 + 0x100) + *(unsigned short *)(param_1 + 0x102);
|
||||
*(short *)(param_1 + 0x100) = (short)tmp;
|
||||
iVar3 = func_80047948((short)tmp);
|
||||
if (iVar3 < 0) {
|
||||
iVar3 = iVar3 + 0x7f;
|
||||
}
|
||||
*(int *)(param_1 + 0xe4) = *(int *)(param_1 + 0xe4) + 4;
|
||||
iVar3 = iVar3 >> 7;
|
||||
if (*(int *)(param_1 + 0xe4) >= 0x40) {
|
||||
*(int *)(param_1 + 0xe4) = 0;
|
||||
}
|
||||
dcVal = *(int *)(param_1 + 0xdc);
|
||||
*(int *)(param_1 + 0xe0) = *(int *)(param_1 + 0xe0) + 0xb;
|
||||
iVar4 = func_8004787C(*(int *)(param_1 + 0xe0)) * 0x30;
|
||||
if (iVar4 < 0) {
|
||||
iVar4 = iVar4 + 0xfff;
|
||||
}
|
||||
iVar5 = iVar4 >> 0xc;
|
||||
if (*(int *)(param_1 + 0xe0) >= 0x800) {
|
||||
*(unsigned short *)(param_1 + 2) = *(unsigned short *)(param_1 + 2) - 1;
|
||||
return;
|
||||
}
|
||||
iVar5 = iVar5 << 0x10 | iVar5 << 8 | iVar5;
|
||||
func_8017DABC(param_1, 0, (short)iVar2, (short)iVar3, dcVal, iVar5);
|
||||
func_8017DABC(param_1, 1, (short)iVar2, (short)iVar3, dcVal, iVar5);
|
||||
} else {
|
||||
*(short *)(param_1 + 0xfe) = *(short *)(param_1 + 0xfe) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017DABC);
|
||||
|
||||
@@ -4384,7 +4470,19 @@ set_and_return:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017F0C0);
|
||||
extern u8 D_801BE038[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_8017F0C0(arg0)
|
||||
void *arg0;
|
||||
{
|
||||
func_8012A828((s32)arg0, D_801BE038);
|
||||
*(s16 *)((s32)arg0 + 0x2) = 0xB;
|
||||
*(s32 *)((s32)arg0 + 0x10) *= 2;
|
||||
*(s32 *)((s32)arg0 + 0x18) *= 2;
|
||||
*(s16 *)((s32)arg0 + 0x34) = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80181ED4(s32 a0, s32 a1);
|
||||
@@ -4679,7 +4777,26 @@ void func_8017F6E8(s32 p)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017F84C);
|
||||
extern u8 D_801A63EC[];
|
||||
extern u8 D_801BD9C0[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_8017F84C(p)
|
||||
s32 p;
|
||||
{
|
||||
extern u8 D_801A63EC[];
|
||||
extern u8 D_801BD9C0[];
|
||||
|
||||
*(s16 *)(p + 2) = 0x14;
|
||||
if (!(*(u32 *)(p + 0xE0) & 0x400)) {
|
||||
*(s16 *)(p + 0x34) = 1;
|
||||
func_8012A828(p, D_801BD9C0);
|
||||
} else {
|
||||
*(s16 *)(p + 0x34) = 0;
|
||||
func_8012A828(p, D_801A63EC);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct {
|
||||
SVECTOR_8016E7C8 v[4]; /* 0x00 */
|
||||
@@ -5122,7 +5239,15 @@ void func_801800C4(s32 p) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_801801A4);
|
||||
extern u8 D_801BD7E8[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_801801A4(s32 a0) {
|
||||
*(s16 *)(a0 + 0x2) = 0x1B;
|
||||
func_8012A828(a0, (s32)&D_801BD7E8);
|
||||
*(s32 *)(a0 + 0x1C) = 0x20;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012F214(s32, s32, s32);
|
||||
extern s32 func_80184028(void *a0, s32 a1, s32 a2);
|
||||
|
||||
@@ -2966,7 +2966,16 @@ void func_80181478(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80181014", func_801814DC);
|
||||
extern s32 D_801A67EC[];
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_801814DC(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
func_8012A828(param_1, (void *)D_801A67EC[*(u16 *)(param_1 + 0x70) & 0xF]);
|
||||
*(s32 *)(param_1 + 0xE4) = 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 DUMMY_UNUSED;
|
||||
|
||||
@@ -3413,7 +3422,75 @@ store:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80181014", func_801820C4);
|
||||
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 *p, int a1, int a2);
|
||||
extern s32 func_8012CEB0(void *a0, void *a1, s32 a2);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
extern void func_8012C098(void *param_1);
|
||||
|
||||
void func_801820C4(s32 a0) {
|
||||
u8 *p;
|
||||
s16 *self4;
|
||||
unsigned int *sc;
|
||||
s32 i;
|
||||
s16 y;
|
||||
s32 z;
|
||||
s32 ang;
|
||||
s16 v10[4];
|
||||
s16 v18[4];
|
||||
s32 sp20[2];
|
||||
|
||||
p = D_801202A0;
|
||||
i = 0;
|
||||
self4 = (s16 *)(a0 + 4);
|
||||
sc = (unsigned int *)sp20;
|
||||
do {
|
||||
if ((u8 *)a0 != p) {
|
||||
switch (*(u16 *)p) {
|
||||
case 0x27A:
|
||||
if (func_8012BC60((struct Vec *)self4, (struct Vec *)(p + 4)) < 0x6400) {
|
||||
ang = func_8012B6D4(self4, (s16 *)(p + 4));
|
||||
func_8012B0B4(sc, ang, 0xA1);
|
||||
v18[0] = *(u16 *)(p + 6);
|
||||
v18[1] = *(u16 *)(p + 0xA);
|
||||
v18[2] = *(u16 *)(p + 0xE);
|
||||
v18[0] += sp20[0];
|
||||
v18[2] += sp20[0] >> 16;
|
||||
v18[1] = *(u16 *)(a0 + 0xA);
|
||||
v10[0] = *(u16 *)(a0 + 0x3A);
|
||||
v10[1] = *(u16 *)(a0 + 0x3E);
|
||||
v10[2] = *(u16 *)(a0 + 0x42);
|
||||
if ((func_8012CEB0(v10, v18, 0) & 0x2000) == 0) {
|
||||
func_8012ADE4((u8 *)a0);
|
||||
return;
|
||||
}
|
||||
*(u16 *)(a0 + 6) = v18[0];
|
||||
*(u16 *)(a0 + 0xA) = v18[1];
|
||||
*(u16 *)(a0 + 0xE) = v18[2];
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 0x2F4:
|
||||
y = *(s16 *)(p + 0xE);
|
||||
z = *(s16 *)(a0 + 0xE);
|
||||
if (y + 0x10 < z) {
|
||||
func_8012C098((void *)a0);
|
||||
return;
|
||||
}
|
||||
if (y - 0x60 < z) {
|
||||
*(s16 *)(a0 + 0xE) = y - 0x60;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
p += 0x10C;
|
||||
} while (i < 0x60);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80181014", func_80182288);
|
||||
|
||||
|
||||
@@ -4666,7 +4666,18 @@ void func_80185670(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_801857B0);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern void func_8012B23C();
|
||||
|
||||
void func_801857B0(param_1)
|
||||
s32 param_1;
|
||||
{
|
||||
func_8012B23C((void *)param_1);
|
||||
*(s32 *)(param_1 + 0x14) = 0xFFD80000;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x10;
|
||||
func_8012AD44((s32 *)param_1, 4);
|
||||
}
|
||||
|
||||
|
||||
extern void (*D_801BEEF8[])(void);
|
||||
extern void func_801875D0(void);
|
||||
@@ -5395,7 +5406,27 @@ void func_80186CF0(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_80186D90);
|
||||
extern int func_8018853C(short *pos, int a1, int a2);
|
||||
|
||||
void func_80186D90(a0)
|
||||
s32 a0;
|
||||
{
|
||||
short buf[4];
|
||||
s32 p;
|
||||
|
||||
buf[0] = *(u16 *)(a0 + 0x6);
|
||||
buf[1] = *(u16 *)(a0 + 0xA);
|
||||
buf[2] = *(u16 *)(a0 + 0xE);
|
||||
buf[3] = 0xC;
|
||||
|
||||
p = func_8018853C(buf, 0, 0x40C0C0);
|
||||
if (p != 0) {
|
||||
*(u16 *)(*(s32 *)(p + 0x20) + 0x2C) = 0xC006;
|
||||
*(s32 *)(*(s32 *)(p + 0x20) + 0x4) |= 0x50000000;
|
||||
*(s16 *)(*(s32 *)(p + 0x20) + 0x18) = 0xA00;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
|
||||
@@ -9083,7 +9114,31 @@ void func_8018C77C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018C7B8);
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern void func_8002A04C(s32 a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
|
||||
void func_8018C7B8(a0)
|
||||
s32 a0;
|
||||
{
|
||||
if (*(s16 *)(a0 + 0x70) != 0) {
|
||||
*(u16 *)(a0 + 0x2) = 4;
|
||||
*(u16 *)(a0 + 0x5C) = 0;
|
||||
*(u16 *)(a0 + 0x5E) = 0;
|
||||
*(u8 *)(a0 + 0xC1) = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (*(s32 *)(a0 + 0xCC) != 0)
|
||||
func_80016714(*(void **)(a0 + 0xCC), 0x84);
|
||||
|
||||
if (*(s32 *)(a0 + 0xD0) != 0)
|
||||
func_80016714(*(void **)(a0 + 0xD0), 0x84);
|
||||
|
||||
func_8002A04C(a0);
|
||||
func_8012C218((void *)a0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 arg0, s32 arg1);
|
||||
@@ -9326,7 +9381,35 @@ void func_8018CD54(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018CDB4);
|
||||
void func_8018CDB4(s32 param_1)
|
||||
{
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(s32);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern u8 D_801CC5A8[];
|
||||
extern u8 D_80193650[];
|
||||
|
||||
s32 v0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(param_1 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
((void (*)(void *))func_8012CAE4)((void *)param_1);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)D_801CC5A8);
|
||||
func_8012A828(param_1, (void *)D_80193650);
|
||||
*(u16 *)(param_1 + 0x2) = 1;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x40;
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) =
|
||||
*(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x10);
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) =
|
||||
*(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x12);
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) =
|
||||
*(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x14);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern u8 D_801CA8D4[];
|
||||
extern u8 D_801CA8E0[];
|
||||
|
||||
@@ -3911,7 +3911,18 @@ s32 func_8017E1A8(s32 arg0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017E1BC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017E20C);
|
||||
extern u16 D_801863A0[];
|
||||
extern void func_8017E7E8(void *a0);
|
||||
|
||||
void func_8017E20C(void *a0) {
|
||||
func_800D0C48(1);
|
||||
func_8017E7E8(a0);
|
||||
*(s32 *)((s32)a0 + 0x1C) = 0x20;
|
||||
func_80178B18((s32)a0, (s32)D_801863A0);
|
||||
*(s16 *)((s32)a0 + 0x100) = 0;
|
||||
func_8012AD44((s32 *)a0, 4);
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012BEE8(s32 arg0);
|
||||
extern void func_8012AD80(s32 arg0);
|
||||
@@ -4004,7 +4015,20 @@ extern void func_8002D4C8(s32 arg0, s32 arg1);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017E448);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017E4B0);
|
||||
void func_8017E4B0(s32 a0) {
|
||||
extern void func_8012B200(u8 *a0);
|
||||
extern s32 func_8012B8A4(s16 *a0);
|
||||
|
||||
*(s16 *)(a0 + 0x06) = 0x1B0;
|
||||
*(s16 *)(a0 + 0x0A) = -0x600;
|
||||
*(s16 *)(a0 + 0x0E) = 0x2C70;
|
||||
func_8012B200((u8 *)a0);
|
||||
*(s32 *)(a0 + 0x10) = 0xFFFE8000;
|
||||
*(s32 *)(a0 + 0x18) = 0x38000;
|
||||
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = func_8012B8A4((s16 *)a0);
|
||||
*(s16 *)(a0 + 0x34) = 3;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017E524);
|
||||
|
||||
@@ -4509,7 +4533,24 @@ void func_8017F3FC(s32 arg0)
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017F464);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017F4F8);
|
||||
extern u16 D_8018657C[];
|
||||
extern u16 D_8018657E[];
|
||||
|
||||
void func_8017F4F8(a0)
|
||||
s32 a0;
|
||||
{
|
||||
extern u16 D_8018657C[];
|
||||
extern u16 D_8018657E[];
|
||||
extern void MoveImage(void *a0, s32 a1, s32 a2);
|
||||
s16 sp[4];
|
||||
|
||||
sp[0] = *(u16 *)((u8 *)D_8018657C + a0 * 4);
|
||||
sp[1] = *(u16 *)((u8 *)D_8018657E + a0 * 4);
|
||||
sp[2] = 0x8;
|
||||
sp[3] = 0x20;
|
||||
MoveImage(&sp[0], 0x2F4, 0x1a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017F554);
|
||||
|
||||
@@ -4914,7 +4955,20 @@ void func_80180AA4(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_80180B3C);
|
||||
void func_80180B3C(s32 a0)
|
||||
{
|
||||
extern s16 D_801D0B7C;
|
||||
extern void func_8017F098(void);
|
||||
extern s32 func_8012B8A4(s16 *a0);
|
||||
extern void func_8017F464();
|
||||
|
||||
if ((*(u16 *)&D_801D0B7C) == 4) {
|
||||
func_8017F098();
|
||||
}
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = func_8012B8A4((s16 *)a0);
|
||||
func_8017F464(a0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_80142414(s32 a0, s16 a1);
|
||||
extern void func_8017F0D0(s32 a0);
|
||||
@@ -5255,7 +5309,30 @@ void func_801814B0(s32 param)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_80181528);
|
||||
extern s32 D_801ADE64[];
|
||||
extern s32 D_801D0900[];
|
||||
extern s32 D_801D0904[];
|
||||
|
||||
void func_80181528(void *a0) {
|
||||
*(s32 *)((u8 *)a0 + 0x20) = func_8012C1B8();
|
||||
if (*(s32 *)((u8 *)a0 + 0x20) == 0) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
*(s32 *)((s8 *)D_801D0900 + (*(s16 *)((u8 *)a0 + 0x70) << 3)) =
|
||||
D_801ADE64[*(s16 *)((u8 *)a0 + 0x70)];
|
||||
*(s32 *)((s8 *)D_801D0904 + (*(s16 *)((u8 *)a0 + 0x70) << 3)) = 0;
|
||||
func_8001C214(*(s32 *)((u8 *)a0 + 0x20),
|
||||
(s32)((s8 *)D_801D0900 + (*(s16 *)((u8 *)a0 + 0x70) << 3)));
|
||||
|
||||
*(u16 *)((u8 *)a0 + 0x106) = rand() & 0xF0;
|
||||
*(u16 *)((u8 *)a0 + 0x108) = rand() & 0xF0;
|
||||
func_8012B23C(a0);
|
||||
*(s32 *)((u8 *)a0 + 0x1C) = 0x20;
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012BEE8(s32 arg0);
|
||||
extern void func_8012C218(void *arg0);
|
||||
|
||||
Reference in New Issue
Block a user