mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-08 01:34:14 -04:00
chore(decomp): commit in-tree banked work before the next gate
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
This commit is contained in:
@@ -87,6 +87,7 @@ segments:
|
||||
- [0x58a0c, c, ov_SC01_077_jr_80180B64]
|
||||
- [0x58ee4, c, ov_SC01_077_jr_8018103C]
|
||||
- [0x59a8c, c, ov_SC01_077_jr_80181BE4]
|
||||
- [0x59db0, c, ov_SC01_077_jr_80181F08]
|
||||
- [0x59f84, c, ov_SC01_077_jr_801820DC]
|
||||
- [0x5a110, c, ov_SC01_077_jr_80182268]
|
||||
- [0x5ad24, c, ov_SC01_077_jr_80182E7C]
|
||||
@@ -147,6 +148,8 @@ segments:
|
||||
- [0xb1000, .rodata, ov_SC01_077_jr_8018103C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1098, .rodata, ov_SC01_077_jr_80181BE4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb10ac, data, tail17]
|
||||
- [0xb10c0, .rodata, ov_SC01_077_jr_80181F08] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1124, data, tail18]
|
||||
- [0xb1128, .rodata, ov_SC01_077_jr_801820DC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1148, .rodata, ov_SC01_077_jr_80182268] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb11a8, .rodata, ov_SC01_077_jr_80182E7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
@@ -154,7 +157,7 @@ segments:
|
||||
- [0xb12a8, .rodata, ov_SC01_077_jr_80183AF0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb12c8, .rodata, ov_SC01_077_jr_80183BAC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1308, .rodata, ov_SC01_077_jr_80183CF4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1328, data, tail18]
|
||||
- [0xb1328, data, tail19]
|
||||
- [0xB29D4, bin, trailing] # final 3 bytes (EOF 0xB29D7 not word-aligned; spimdisasm drops
|
||||
# a trailing partial word and a <4-byte `data` carve emits nothing,
|
||||
# so use `bin` = raw .incbin, byte-exact). Word-aligned overlays omit this.
|
||||
|
||||
@@ -169,11 +169,10 @@ segments:
|
||||
- [0xb8960, .rodata, ov_SC06_022_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8980, data, tail18]
|
||||
- [0xb8998, .rodata, ov_SC06_022_jr_80180CD0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb89b4, data, tail19]
|
||||
- [0xb89d4, .rodata, ov_SC06_022_jr_80182D08] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8ab4, .rodata, ov_SC06_022_jr_80184304] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8acc, .rodata, ov_SC06_022_jr_80184A28] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb8ae0, data, tail20]
|
||||
- [0xb8ae0, data, tail19]
|
||||
- [0xBA114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0xBA117] # EOF marker = the 0.4.dec byte length
|
||||
# @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes
|
||||
|
||||
@@ -163,7 +163,7 @@ segments:
|
||||
- [0xa6534, data, tail17]
|
||||
- [0xa6538, .rodata, ov_SC07_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xa654c, .rodata, ov_SC07_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xa6588, data, tail18]
|
||||
- [0xa65a0, data, tail18]
|
||||
- [0xA8B8C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0xA8B8F] # 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
|
||||
|
||||
@@ -88,7 +88,39 @@ void func_800CB164(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CB254);
|
||||
void func_800CB254(void *a0) {
|
||||
typedef struct { s32 w[4]; } S16;
|
||||
extern u8 D_80078EC1;
|
||||
extern void func_80146C3C(void *a0);
|
||||
extern void func_800CAF90(void *a0);
|
||||
s32 a1;
|
||||
s32 n;
|
||||
s32 m;
|
||||
s32 v0;
|
||||
a1 = *(s32 *)((s32)a0 + 0x34);
|
||||
if (D_80078EC1 == 5) {
|
||||
if ((*(s32 *)((s32)a0 + 0x1C))++ < 10) {
|
||||
*(u16 *)((s32)a0 + 0x28) += 0x120;
|
||||
} else {
|
||||
n = *(u16 *)((s32)a0 + 2);
|
||||
n += 1;
|
||||
*(u16 *)((s32)a0 + 0x12) = (s16)*(u16 *)(a1 + 0x12) >> 1;
|
||||
m = *(u16 *)(a1 + 0x1A);
|
||||
*(s32 *)((s32)a0 + 0x30) = 0x20;
|
||||
*(s32 *)((s32)a0 + 0x1C) = -0xC0;
|
||||
*(u16 *)((s32)a0 + 0x2A) = 0x500;
|
||||
*(u16 *)((s32)a0 + 2) = n;
|
||||
*(u16 *)((s32)a0 + 0x1A) = (s16)m >> 1;
|
||||
}
|
||||
v0 = *(s32 *)(a1 + 0x20);
|
||||
*(S16 *)((s32)a0 + 0x38) = *(S16 *)(v0 + 0x34);
|
||||
*(S16 *)((s32)a0 + 0x48) = *(S16 *)(v0 + 0x44);
|
||||
func_800CAF90(a0);
|
||||
} else {
|
||||
func_80146C3C(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -424,7 +424,41 @@ void func_801E2F08(void *param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_134/nonmatchings/md_SC03_134", func_801E303C);
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, s32 a1);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern s32 func_80178B18(s32 a0, s32 a1);
|
||||
|
||||
void func_801E303C(void *a0) {
|
||||
extern s32 D_801E988C;
|
||||
extern s32 D_801E3644;
|
||||
extern s16 D_801BEBF8;
|
||||
extern s32 D_801E369C;
|
||||
s32 v0;
|
||||
|
||||
if ((u32)(func_80029504() - 0x122) < 0xA) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
v0 = func_8012C1B8();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)&D_801E988C);
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF;
|
||||
func_8012E8E0((s32)a0, (s32)&D_801E3644);
|
||||
*(s16 *)((s32)a0 + 0x2) = 1;
|
||||
*(s16 *)((s32)a0 + 0x34) = 0;
|
||||
func_8012A828((s32)a0, (s32)&D_801BEBF8);
|
||||
func_80178B18((s32)a0, (s32)&D_801E369C);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_8012BA10(s32 a0, s32 a1);
|
||||
|
||||
@@ -345,6 +345,31 @@ void func_801E2E18(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_137/nonmatchings/md_SC03_137", func_801E2E44);
|
||||
void func_801E2E44(void *param_1) {
|
||||
|
||||
extern u8 *D_80126B10;
|
||||
extern s32 D_801E30EC;
|
||||
extern s32 func_801789AC(s32 a0);
|
||||
extern void func_80178CBC(s32 a0, s32 a1);
|
||||
extern void func_80174438(s32 a0);
|
||||
|
||||
switch (*(u16 *)((s32)param_1 + 0x34)) {
|
||||
case 0:
|
||||
if (func_801789AC((s32)param_1) != 0) {
|
||||
func_80178CBC((s32)param_1, (s32)&D_801E30EC);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (func_801789AC((s32)param_1) != 0) {
|
||||
func_80174438((s32)D_80126B10);
|
||||
*(u16 *)((s32)param_1 + 0x34) = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC03_137/nonmatchings/md_SC03_137", func_801E2ED8);
|
||||
|
||||
@@ -297,7 +297,59 @@ void func_801E8284(void) {
|
||||
void func_801E828C(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/md_SC04_030/nonmatchings/md_SC04_030", func_801E8294);
|
||||
extern s32 func_801789AC(s32 a0);
|
||||
extern void func_80178CBC(s32 a0, s32 a1);
|
||||
extern void func_80174438(s32 a0);
|
||||
extern void func_80186460(s32 a0);
|
||||
extern s16 func_80186450(void);
|
||||
extern u8 *D_80126B10;
|
||||
|
||||
void func_801E8294(void *a0) {
|
||||
|
||||
extern s32 D_801E877C;
|
||||
extern s32 D_801E8794;
|
||||
extern s32 D_801E8718;
|
||||
extern u8 D_800D39CC[];
|
||||
|
||||
switch (*(u16 *)((s32)a0 + 0x34)) {
|
||||
case 0: {
|
||||
s32 v1 = func_801789AC((s32)a0);
|
||||
switch (v1) {
|
||||
case 1:
|
||||
*(u16 *)((s32)a0 + 0x34) = 2;
|
||||
func_80186460(5);
|
||||
break;
|
||||
case 2:
|
||||
func_80178CBC((s32)a0, (s32)&D_801E877C);
|
||||
*(u16 *)((s32)a0 + 0x34) = 0;
|
||||
break;
|
||||
case 3:
|
||||
func_80178CBC((s32)a0, (s32)&D_801E8794);
|
||||
*(u16 *)((s32)a0 + 0x34) = 3;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
if (func_80186450() != 0) {
|
||||
func_800D1724(D_800D39CC);
|
||||
*(u16 *)((s32)a0 + 0x34) = 1;
|
||||
} else {
|
||||
func_80178CBC((s32)a0, (s32)&D_801E8718);
|
||||
*(u16 *)((s32)a0 + 0x34) = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (func_801789AC((s32)a0) != 0) {
|
||||
func_80174438((s32)D_80126B10);
|
||||
*(u16 *)((s32)a0 + 0x34) = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3205,7 +3205,3 @@ void func_80181BE4(s32 p)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80181BE4", func_80181F08);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3625,7 +3625,26 @@ void func_8017E6FC(void) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017E798);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017E898);
|
||||
void func_8017E898(void)
|
||||
{
|
||||
typedef struct { s32 w[4]; } Blk16_E898;
|
||||
extern u8 D_80126948[];
|
||||
extern s32 D_80126E60[];
|
||||
Blk16_E898 *src;
|
||||
Blk16_E898 *dst;
|
||||
Blk16_E898 *end;
|
||||
|
||||
dst = (Blk16_E898 *)&D_80126948;
|
||||
src = (Blk16_E898 *)D_80126E60;
|
||||
end = src + 10;
|
||||
do {
|
||||
*dst = *src;
|
||||
src++;
|
||||
dst++;
|
||||
} while (src != end);
|
||||
*(s32 *)dst = *(s32 *)src;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
|
||||
@@ -6484,7 +6484,16 @@ void func_80187B0C(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80187B48);
|
||||
extern void func_80181F04(void *arg0);
|
||||
extern void func_8017DF28(void);
|
||||
|
||||
void func_80187B48(s32 arg0) {
|
||||
s32 temp_s0 = arg0;
|
||||
((void (*)(void))func_80181F04)();
|
||||
*(s16 *)(temp_s0 + 0xDC) = 1;
|
||||
((void (*)(void))func_8017DF28)();
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80185D84(s32 a0);
|
||||
extern s32 func_80181F70();
|
||||
@@ -8743,7 +8752,18 @@ void func_8018B7F8(s32 param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018B8CC);
|
||||
extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3);
|
||||
extern u8 D_801921F8;
|
||||
|
||||
void func_8018B8CC(s32 param_1)
|
||||
{
|
||||
func_8001CB6C((u8 *)*(s32 *)(param_1 + 0x20), (s32)&D_801921F8, 0x250, 0x1A0);
|
||||
*(s32 *)(*(s32 *)(param_1 + 0x20) + 4) = 0x60000000;
|
||||
*(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x14;
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0x400;
|
||||
*(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1;
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801270C8;
|
||||
extern void func_801292C8(u8 *a0);
|
||||
|
||||
@@ -4306,7 +4306,156 @@ void func_80180B30(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_80180BD8);
|
||||
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012A828(s32, s32);
|
||||
extern void func_8012B178(s32 a0, s32 a1);
|
||||
extern void func_8012CBA4(s32 a0);
|
||||
extern s32 func_8012BCCC(s32 a0);
|
||||
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_80142414(s32 a0, s16 a1);
|
||||
extern s32 func_80143B6C(s32 a0, s32 a1);
|
||||
extern void func_8018035C(void *a0);
|
||||
extern void func_8018109C(s32 a0, s32 a1);
|
||||
extern void func_80180F6C(s32 a0);
|
||||
extern void func_80180F98(s32 a0);
|
||||
extern void func_80180FE0(s32 a0);
|
||||
extern s32 func_8012B744(void *a0, void *a1);
|
||||
extern void Square0(s32 *a0, s32 *a1);
|
||||
extern s32 rand(void);
|
||||
|
||||
extern s16 D_801AFBBC;
|
||||
extern s16 D_801AFC44;
|
||||
extern s16 D_801B04DC;
|
||||
extern u8 D_801AFB14[];
|
||||
extern s32 D_8018861C;
|
||||
|
||||
void func_80180BD8(s32 a0)
|
||||
{
|
||||
u16 st;
|
||||
s32 v;
|
||||
s32 flags;
|
||||
s32 d[3];
|
||||
s16 t;
|
||||
s32 r;
|
||||
s32 off;
|
||||
void *target;
|
||||
s32 b178arg;
|
||||
unsigned short *p;
|
||||
|
||||
st = *(u16 *)(a0 + 0x34);
|
||||
switch (st) {
|
||||
case 0:
|
||||
v = func_8012B8E4(a0, 4);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) =
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + v;
|
||||
if (*(s32 *)(a0 + 0x1C) == 0xF) {
|
||||
func_80142414(a0, -0x78);
|
||||
func_8002D4C8(0x6A9, 0);
|
||||
}
|
||||
if (func_8012BEE8(a0) != 0) {
|
||||
*(u16 *)(a0 + 0x2) = 3;
|
||||
if ((*(u16 *)(a0 + 0x86) & 0x2) != 0) {
|
||||
*(u16 *)(a0 + 0x34) = 1;
|
||||
*(s32 *)(a0 + 0x1C) = 0x28;
|
||||
if ((*(u16 *)(a0 + 0x70) & 0x200) != 0) {
|
||||
((void (*)(s32, void *))func_8012A828)(a0, &D_801B04DC);
|
||||
} else {
|
||||
((void (*)(s32, void *))func_8012A828)(a0, &D_801AFBBC);
|
||||
}
|
||||
*(u16 *)(a0 + 0xFE) = 0;
|
||||
} else {
|
||||
*(u16 *)(a0 + 0x34) = 0;
|
||||
((void (*)(s32, void *))func_8012A828)(a0, &D_801AFC44);
|
||||
*(s32 *)(a0 + 0x1C) = 0x19;
|
||||
*(u16 *)(a0 + 0x86) = *(u16 *)(a0 + 0x86) | 0x2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
v = func_8012B8E4(a0, 6);
|
||||
b178arg = D_8018861C;
|
||||
{
|
||||
register s32 newval __asm__("$6");
|
||||
|
||||
p = (unsigned short *)(*(s32 *)(a0 + 0x20) + 0x12);
|
||||
newval = *p + v;
|
||||
*p = (unsigned short)newval;
|
||||
}
|
||||
func_8012B178(a0, b178arg);
|
||||
|
||||
flags = ((s32 (*)(s32))func_8012CBA4)(a0);
|
||||
if ((flags & 0x1000) != 0) {
|
||||
func_80131E00((struct S80131E00 *)a0, 0x12);
|
||||
} else if (flags != 0x2000) {
|
||||
func_8012ADE4((u8 *)a0);
|
||||
}
|
||||
|
||||
func_8018035C((void *)a0);
|
||||
|
||||
t = *(u16 *)(a0 + 0xFE) - 1;
|
||||
*(u16 *)(a0 + 0xFE) = t;
|
||||
if (t <= 0) {
|
||||
func_80143B6C(a0, 0);
|
||||
*(u16 *)(a0 + 0xFE) = 8;
|
||||
}
|
||||
|
||||
if ((*(u16 *)(a0 + 0x70) & 0x200) != 0) {
|
||||
func_8018109C(a0, 0x11);
|
||||
}
|
||||
|
||||
target = (void *)(a0 + 0x88);
|
||||
d[0] = *(s16 *)(a0 + 0x6) - *(s16 *)(a0 + 0x88);
|
||||
d[1] = 0;
|
||||
d[2] = *(s16 *)(a0 + 0xE) - *(s16 *)(a0 + 0x8C);
|
||||
Square0(d, d);
|
||||
if (d[0] + d[2] > 0x8FFFF || func_8012BCCC(a0) > 0x10000) {
|
||||
*(u16 *)(a0 + 0x2) = 1;
|
||||
*(u16 *)(a0 + 0x34) = 0;
|
||||
*(u16 *)(a0 + 0x5C) = 0xAA10;
|
||||
*(s32 *)(a0 + 0x1C) = (rand() & 0x1F) + 0x28;
|
||||
|
||||
d[0] = *(s16 *)(a0 + 0x6) - *(s16 *)(a0 + 0x88);
|
||||
d[1] = 0;
|
||||
d[2] = *(s16 *)(a0 + 0xE) - *(s16 *)(a0 + 0x8C);
|
||||
Square0(d, d);
|
||||
if (d[0] + d[2] > 0x8FFFF) {
|
||||
*(u16 *)(a0 + 0xFC) =
|
||||
func_8012B744((void *)(a0 + 4), target);
|
||||
} else {
|
||||
r = rand() & 0x3FF;
|
||||
off = r - 0x200;
|
||||
if (off < 0) {
|
||||
off = r - 0x500;
|
||||
} else {
|
||||
off = r + 0x100;
|
||||
}
|
||||
*(u16 *)(a0 + 0xFC) =
|
||||
(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + off) & 0xFFF;
|
||||
}
|
||||
((void (*)(s32, void *))func_8012A828)(a0, D_801AFB14);
|
||||
}
|
||||
|
||||
if ((*(u16 *)(a0 + 0x70) & 0x100) == 0) {
|
||||
if (func_8012BD3C(a0, 0x200, 0x1000) != 0) {
|
||||
if ((*(u16 *)(a0 + 0x70) & 0xF00) == 0) {
|
||||
func_80180F6C(a0);
|
||||
} else {
|
||||
func_80180F98(a0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (func_8012BD3C(a0, 0x400, 0x40000) != 0) {
|
||||
func_80180FE0(a0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_80181054(s32 arg0, s32 arg1, s32 arg2, void *arg3);
|
||||
|
||||
|
||||
@@ -5150,7 +5150,16 @@ void func_80180DBC(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180E04);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_801A2284;
|
||||
extern void *D_801A2280;
|
||||
extern u8 D_801859BC;
|
||||
|
||||
void func_80180E04(void) {
|
||||
func_8012A828(D_801A2284, &D_801859BC);
|
||||
func_8012A828((s32)D_801A2280, &D_801859BC);
|
||||
}
|
||||
|
||||
|
||||
extern s32 *D_80126B78;
|
||||
extern u8 D_80126B5C;
|
||||
|
||||
@@ -3864,7 +3864,23 @@ void func_8018089C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017EB7C", func_80180A68);
|
||||
extern void func_80146CA0(void *a0);
|
||||
extern s16 D_8018F544;
|
||||
extern s16 D_8018F542;
|
||||
extern s16 D_8018F540;
|
||||
|
||||
void func_80180A68(void) {
|
||||
s16 sVar1;
|
||||
|
||||
sVar1 = *(u16 *)&D_8018F544 + 8;
|
||||
D_8018F544 = sVar1;
|
||||
D_8018F542 = sVar1;
|
||||
D_8018F540 = sVar1;
|
||||
if (sVar1 >= 0x101) {
|
||||
((void (*)(void))func_80146CA0)();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s16 D_8018F540;
|
||||
extern s16 D_8018F542;
|
||||
|
||||
@@ -4729,7 +4729,17 @@ void func_8018A5F4(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80188274", func_8018A84C);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
|
||||
void func_8018A84C(void *arg0) {
|
||||
extern s32 D_801C9084;
|
||||
s32 *base = &D_801C9084;
|
||||
s32 v = (u32)*(u16 *)((s32)arg0 + 0x6) | ((s32)*(s16 *)((s32)arg0 + 0xE) << 16);
|
||||
*base = v;
|
||||
func_80178B18((s32)arg0, (s32)base - 4);
|
||||
((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801C9098[])(void);
|
||||
|
||||
@@ -7296,7 +7296,33 @@ void func_80182BDC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017BEBC", func_80182DDC);
|
||||
extern s32 func_80182E64(s32 a0);
|
||||
|
||||
void func_80182DDC(s32 a0)
|
||||
{
|
||||
s32 t;
|
||||
s32 id;
|
||||
|
||||
switch (*(s16 *)(a0 + 0x70)) {
|
||||
case 0:
|
||||
func_8002D4C8(0x6D5, 0);
|
||||
return;
|
||||
case 1:
|
||||
t = func_80182E64(a0);
|
||||
id = 0x856;
|
||||
break;
|
||||
case 2:
|
||||
t = func_80182E64(a0);
|
||||
id = 0x857;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
t |= 0x2000;
|
||||
func_8002D4C8(id, t & 0xFFFF);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017BEBC", func_80182E64);
|
||||
|
||||
|
||||
@@ -3248,7 +3248,30 @@ void func_8018A1F0(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_80189798", func_8018A278);
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern void func_8012EFB8(s32 a0);
|
||||
|
||||
s32 func_8018A278(a0)
|
||||
s32 a0;
|
||||
{
|
||||
extern void func_8012EFB8(s32 a0);
|
||||
s32 sp10;
|
||||
s32 v1;
|
||||
|
||||
func_80015978(a0 + 4, &sp10);
|
||||
if ((((s32 (*)(s32, s32))func_8012EFB8)((s32)&sp10, (s32)&sp10) & 0xFFFFEFFF) != 0) {
|
||||
v1 = 1;
|
||||
} else {
|
||||
v1 = (*(s16 *)&sp10 * 64) / 160 + 0x40;
|
||||
}
|
||||
if (v1 <= 0) {
|
||||
v1 = 1;
|
||||
} else if (v1 >= 0x80) {
|
||||
v1 = 0x7F;
|
||||
}
|
||||
return v1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2914,7 +2914,126 @@ INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_801800F
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180270);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_8018035C);
|
||||
void func_8018035C(s32 param_1)
|
||||
{
|
||||
extern void func_80180C40(s32);
|
||||
extern void func_80180D2C();
|
||||
extern s32 func_8012CC64(s32 a0, void *a1);
|
||||
extern s32 func_8012CC1C(s32 a0, void *a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void func_80131C78(s32 a0);
|
||||
extern s32 func_80143B6C(s32 a0, s32 a1);
|
||||
extern void func_80131E00(s32 a0, s32 a1);
|
||||
extern s32 D_8019C004;
|
||||
|
||||
s32 iVar1;
|
||||
|
||||
if (*(s16 *)(param_1 + 0xa) >= 0x10) {
|
||||
func_80180C40(param_1);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (*(u16 *)(param_1 + 0x34)) {
|
||||
case 0:
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) -= 0x100;
|
||||
iVar1 = func_8012CC64(param_1, &D_8019C004);
|
||||
if ((iVar1 & 0xff) == 0x1a) {
|
||||
goto EXIT;
|
||||
}
|
||||
if ((iVar1 & 0x2000) != 0) {
|
||||
*(u16 *)(param_1 + 0x34) += 1;
|
||||
*(s32 *)(param_1 + 0x1c) = 0;
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0;
|
||||
goto TAIL;
|
||||
}
|
||||
if ((iVar1 & 0x4000) != 0) {
|
||||
*(u16 *)(param_1 + 0x34) = 4;
|
||||
*(s32 *)(param_1 + 0x1c) = 0;
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0;
|
||||
func_8012B23C(param_1);
|
||||
goto TAIL;
|
||||
}
|
||||
*(s32 *)(param_1 + 0x1c) += 1;
|
||||
if (*(s32 *)(param_1 + 0x1c) >= 0x3c) {
|
||||
*(u16 *)(param_1 + 0x34) = 2;
|
||||
}
|
||||
goto TAIL;
|
||||
|
||||
case 1:
|
||||
*(s32 *)(param_1 + 0x10) = *(s32 *)(param_1 + 0x10) * 15 / 16;
|
||||
*(s32 *)(param_1 + 0x18) = *(s32 *)(param_1 + 0x18) * 15 / 16;
|
||||
iVar1 = func_8012CC1C(param_1, &D_8019C004);
|
||||
if ((iVar1 & 0xff) == 0x1a) {
|
||||
goto EXIT;
|
||||
}
|
||||
if ((iVar1 & 0x6000) == 0) {
|
||||
*(s32 *)(param_1 + 0x1c) = 0;
|
||||
*(u16 *)(param_1 + 0x34) += 1;
|
||||
func_8012B23C(param_1);
|
||||
goto TAIL;
|
||||
}
|
||||
if ((*(u32 *)(param_1 + 0x1c) % 4) == 0) {
|
||||
func_80143B6C(param_1, 1);
|
||||
}
|
||||
*(s32 *)(param_1 + 0x1c) += 1;
|
||||
if (*(s32 *)(param_1 + 0x1c) < 0x10) {
|
||||
goto TAIL;
|
||||
}
|
||||
func_80131C78(param_1);
|
||||
goto TAIL;
|
||||
|
||||
case 2:
|
||||
iVar1 = func_8012CC64(param_1, &D_8019C004);
|
||||
if ((iVar1 & 0x2000) != 0) {
|
||||
func_80143B6C(param_1, 1);
|
||||
func_80131C78(param_1);
|
||||
goto TAIL;
|
||||
}
|
||||
if ((iVar1 & 0x4000) == 0) {
|
||||
goto L_E00;
|
||||
}
|
||||
*(u16 *)(param_1 + 0x34) = 4;
|
||||
func_80143B6C(param_1, 1);
|
||||
func_8012B23C(param_1);
|
||||
goto TAIL;
|
||||
|
||||
case 3:
|
||||
*(s32 *)(param_1 + 0x1c) += 1;
|
||||
if (*(s32 *)(param_1 + 0x1c) < 0x10) {
|
||||
goto TAIL;
|
||||
}
|
||||
func_80131C78(param_1);
|
||||
goto TAIL;
|
||||
|
||||
case 4:
|
||||
iVar1 = func_8012CC1C(param_1, &D_8019C004);
|
||||
if ((iVar1 & 0xff) == 0x1a) {
|
||||
EXIT:
|
||||
func_80180C40(param_1);
|
||||
return;
|
||||
}
|
||||
if ((iVar1 & 0x2000) == 0) {
|
||||
goto C4_B;
|
||||
}
|
||||
func_80131C78(param_1);
|
||||
goto TAIL;
|
||||
C4_B:
|
||||
if ((*(u32 *)(param_1 + 0x1c) % 4) == 0) {
|
||||
func_80143B6C(param_1, 1);
|
||||
}
|
||||
L_E00:
|
||||
*(s32 *)(param_1 + 0x1c) += 1;
|
||||
if (*(s32 *)(param_1 + 0x1c) >= 0x3c) {
|
||||
func_80131E00(param_1, 0xd);
|
||||
}
|
||||
}
|
||||
TAIL:
|
||||
((s32 (*)(s32))func_80180D2C)(param_1);
|
||||
if (0x100000 < *(s32 *)(param_1 + 0x14)) {
|
||||
*(s32 *)(param_1 + 0x14) = 0x100000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_8019BFAC;
|
||||
extern void func_80180D2C();
|
||||
|
||||
@@ -3981,7 +3981,14 @@ store5:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017E220);
|
||||
extern void func_8017E998(s32 a0);
|
||||
|
||||
void func_8017E220(s32 a0) {
|
||||
*(s32 *)(a0 + 0xDC) &= ~0x10;
|
||||
func_8017E998(a0);
|
||||
*(s32 *)(a0 + 0x1C) = 0xA;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_8012BEE8(s32 arg);
|
||||
|
||||
@@ -4114,7 +4114,121 @@ void func_8017E6A0(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8017BEBC", func_8017E6EC);
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern void func_8012A828(s32 a0, s32 a1);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8017EB34(s32);
|
||||
extern void func_8017ECC4(s32 arg0, u16 arg1);
|
||||
extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
extern void func_80029124(s32, s32);
|
||||
extern void func_8002959C(void);
|
||||
extern void func_80180C78(void);
|
||||
extern s32 func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_8017E99C(s32 a0);
|
||||
extern s16 D_8018503C;
|
||||
extern u8 D_80185018;
|
||||
extern u8 D_801884F4[];
|
||||
|
||||
void func_8017E6EC(void *arg0) {
|
||||
register s32 t __asm__("$2");
|
||||
s32 c;
|
||||
s32 s0;
|
||||
|
||||
switch (*(u16 *)((s32)arg0 + 0x34)) {
|
||||
case 0:
|
||||
if ((*(u32 *)((s32)arg0 + 0x1C) & 7) == 0) {
|
||||
func_8013C9C4(&D_8018503C);
|
||||
}
|
||||
if (func_8012BEE8((s32)arg0) != 0) {
|
||||
*(u32 *)(*(s32 *)((s32)arg0 + 0x20) + 0x24) = 0;
|
||||
s0 = 0;
|
||||
do {
|
||||
func_8012C658(0x1E0, s0, (s32)arg0);
|
||||
s0 = s0 + 1;
|
||||
} while (s0 < 0xB);
|
||||
func_8012A828((s32)arg0, (s32)&D_801884F4);
|
||||
func_8002D4C8(0x866, 0);
|
||||
*(u16 *)((s32)arg0 + 0x34) = *(u16 *)((s32)arg0 + 0x34) + 1;
|
||||
}
|
||||
((void (*)(void *))func_8017EB34)(arg0);
|
||||
break;
|
||||
case 1:
|
||||
if ((*(u16 *)((s32)arg0 + 0x72) & 0x4000) != 0) {
|
||||
func_8002D4C8(0x866, 0);
|
||||
}
|
||||
c = *(s32 *)((s32)arg0 + 0x94);
|
||||
if (c == 0x10) {
|
||||
t = *(u16 *)((s32)arg0 + 0x106) + 1;
|
||||
*(u16 *)((s32)arg0 + 0x106) = t;
|
||||
if ((t << 16) >> 16 == 2) {
|
||||
*(u16 *)((s32)arg0 + 0x98) = 0;
|
||||
t = *(u16 *)((s32)arg0 + 0x34) + 1;
|
||||
*(u16 *)((s32)arg0 + 0x34) = t;
|
||||
func_8002D4C8(0x865, 0);
|
||||
}
|
||||
}
|
||||
if ((*(u32 *)((s32)arg0 + 0x1C) & 7) == 0) {
|
||||
func_8013C9C4(&D_8018503C);
|
||||
}
|
||||
t = *(u32 *)((s32)arg0 + 0x1C) + 1;
|
||||
*(u32 *)((s32)arg0 + 0x1C) = t;
|
||||
((void (*)(void *))func_8017EB34)(arg0);
|
||||
break;
|
||||
case 2:
|
||||
func_8017ECC4((s32)arg0, 0);
|
||||
((void (*)(void *))func_8017EB34)(arg0);
|
||||
c = *(s16 *)((s32)arg0 + 0xFE);
|
||||
if (c != 6) {
|
||||
break;
|
||||
}
|
||||
t = *(u16 *)((s32)arg0 + 0x34);
|
||||
*(s32 *)((s32)arg0 + 0x1C) = 0x10;
|
||||
goto lab_e958;
|
||||
case 3:
|
||||
func_8017ECC4((s32)arg0, 0);
|
||||
if (func_8012BEE8((s32)arg0)) {
|
||||
*(u16 *)((s32)arg0 + 0x5C) = 0;
|
||||
*(u16 *)((s32)arg0 + 0x108) = 1;
|
||||
*(u16 *)((s32)arg0 + 0x10A) = 1;
|
||||
func_8012C588(0x23A, (s32)arg0);
|
||||
*(u16 *)((s32)arg0 + 0xE2) = 0;
|
||||
func_8002D4C8(0x868, 0);
|
||||
goto lab_e954;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
func_8017ECC4((s32)arg0, 1);
|
||||
if ((*(u32 *)((s32)arg0 + 0x1C) & 0xF) == 0) {
|
||||
func_8013C9C4(&D_80185018);
|
||||
}
|
||||
t = *(u32 *)((s32)arg0 + 0x1C) + 1;
|
||||
*(u32 *)((s32)arg0 + 0x1C) = t;
|
||||
if (*(s16 *)((s32)arg0 + 0xE2) == 0) {
|
||||
break;
|
||||
}
|
||||
func_80029124(0xBB, 1);
|
||||
func_8002959C();
|
||||
func_8002D4C8(4, 0x868);
|
||||
func_80180C78();
|
||||
lab_e954:
|
||||
t = *(u16 *)((s32)arg0 + 0x34);
|
||||
lab_e958:
|
||||
t = t + 1;
|
||||
*(u16 *)((s32)arg0 + 0x34) = t;
|
||||
break;
|
||||
case 5:
|
||||
break;
|
||||
}
|
||||
|
||||
if (((s32 (*)(void *))func_80178970)(arg0) != 0) {
|
||||
((void (*)(void *))func_80178D18)(arg0);
|
||||
func_8017E99C((s32)arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8017BEBC", func_8017E99C);
|
||||
|
||||
|
||||
@@ -3363,7 +3363,14 @@ void func_8017D104(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017BEBC", func_8017D16C);
|
||||
void func_8017D16C(void *a0) {
|
||||
if (func_80146E98((s32)a0) != 0) {
|
||||
func_80159B3C(a0);
|
||||
func_8012DB84();
|
||||
func_80146CA0(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017D1B4(void) {
|
||||
}
|
||||
|
||||
@@ -5259,7 +5259,186 @@ void func_8017FEBC(s32 a0) {
|
||||
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017BEBC", func_80180020);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_800233CC(void *a0, unsigned short a1);
|
||||
extern void func_80029514(s32 a0);
|
||||
extern void func_8001CD50(s32 a0, s32 a1);
|
||||
extern void func_800D0F4C(s32 a0);
|
||||
extern s32 func_80178970();
|
||||
extern void func_80178D18();
|
||||
extern u8 *func_8012913C(s32 a0);
|
||||
extern u8 D_801A9CE8;
|
||||
extern u8 D_801A9CE9;
|
||||
extern u8 D_801A9CEA;
|
||||
extern u8 D_801A9CEC;
|
||||
extern u8 D_801A9D68;
|
||||
extern u8 D_801A9D69;
|
||||
extern u8 D_801A9D6A;
|
||||
extern u8 D_801A9D6C;
|
||||
extern u8 D_801A9D28;
|
||||
extern u8 D_801A9D29;
|
||||
extern u8 D_801A9D2A;
|
||||
extern u8 D_801A9D2C;
|
||||
|
||||
void func_80180020(s32 arg) {
|
||||
register u8 *s0 __asm__("$16");
|
||||
register s32 s1 __asm__("$17");
|
||||
register s32 v1 __asm__("$3");
|
||||
register s32 t __asm__("$2");
|
||||
register s32 ca0 __asm__("$4");
|
||||
register s32 ca1 __asm__("$5");
|
||||
volatile u8 pad[40];
|
||||
s32 u34;
|
||||
|
||||
s1 = arg;
|
||||
|
||||
switch (*(s16 *)(s1 + 0x10A)) {
|
||||
case 0:
|
||||
goto tailjoin;
|
||||
case 1:
|
||||
v1 = (s32)func_8012913C(0x6D);
|
||||
if (v1 == 0) {
|
||||
goto tailjoin;
|
||||
}
|
||||
s0 = &D_801A9CE8;
|
||||
*(s32 *)(s1 + 0xD0) = v1;
|
||||
*(u16 *)(v1 + 6) = *(u16 *)(s1 + 6) + 0x80;
|
||||
*(u16 *)(v1 + 0xA) = *(u16 *)(s1 + 0xA) - 0x38;
|
||||
*(u16 *)(v1 + 0xE) = *(u16 *)(s1 + 0xE) - 0x28;
|
||||
func_8001CD50(*(s32 *)(v1 + 0x20), (s32)s0);
|
||||
D_801A9CE9 = 0;
|
||||
D_801A9CEA = 0;
|
||||
D_801A9CEC = 0;
|
||||
D_801A9CE9 = 0;
|
||||
D_801A9CEA = 0;
|
||||
*s0 = 0xFF;
|
||||
func_800233CC(s0, 0x40);
|
||||
*(s16 *)(s1 + 0x10A) = 2;
|
||||
*(s16 *)(s1 + 0xFC) = 0x20;
|
||||
return;
|
||||
case 2:
|
||||
t = *(s16 *)(s1 + 0xFC);
|
||||
v1 = t;
|
||||
if (t != 0) {
|
||||
goto decr;
|
||||
}
|
||||
v1 = (s32)func_8012913C(0x6D);
|
||||
if (v1 == 0) {
|
||||
goto tailjoin;
|
||||
}
|
||||
s0 = &D_801A9D68;
|
||||
*(s32 *)(s1 + 0xD8) = v1;
|
||||
*(u16 *)(v1 + 6) = *(u16 *)(s1 + 6) + 0x68;
|
||||
*(u16 *)(v1 + 0xA) = *(u16 *)(s1 + 0xA) - 0x20;
|
||||
*(u16 *)(v1 + 0xE) = *(u16 *)(s1 + 0xE) - 0x28;
|
||||
func_8001CD50(*(s32 *)(v1 + 0x20), (s32)s0);
|
||||
D_801A9D69 = 0;
|
||||
D_801A9D6A = 0;
|
||||
D_801A9D6C = 0;
|
||||
*s0 = 0;
|
||||
D_801A9D69 = 0;
|
||||
D_801A9D6A = 0xFF;
|
||||
func_800233CC(s0, 0x40);
|
||||
*(s16 *)(s1 + 0x10A) = 3;
|
||||
*(s16 *)(s1 + 0xFC) = 0x20;
|
||||
return;
|
||||
case 3:
|
||||
t = *(s16 *)(s1 + 0xFC);
|
||||
v1 = t;
|
||||
if (t != 0) {
|
||||
goto decr;
|
||||
}
|
||||
v1 = (s32)func_8012913C(0x6D);
|
||||
if (v1 == 0) {
|
||||
goto tailjoin;
|
||||
}
|
||||
s0 = &D_801A9D28;
|
||||
*(s32 *)(s1 + 0xD4) = v1;
|
||||
*(u16 *)(v1 + 6) = *(u16 *)(s1 + 6) + 0x9C;
|
||||
*(u16 *)(v1 + 0xA) = *(u16 *)(s1 + 0xA) - 0x20;
|
||||
*(u16 *)(v1 + 0xE) = *(u16 *)(s1 + 0xE) - 0x28;
|
||||
func_8001CD50(*(s32 *)(v1 + 0x20), (s32)s0);
|
||||
D_801A9D29 = 0;
|
||||
D_801A9D2A = 0;
|
||||
D_801A9D2C = 0;
|
||||
*s0 = 0;
|
||||
D_801A9D2A = 0;
|
||||
D_801A9D29 = 0xFF;
|
||||
func_800233CC(s0, 0x40);
|
||||
*(s16 *)(s1 + 0x10A) = 4;
|
||||
*(s16 *)(s1 + 0xFC) = 0x20;
|
||||
return;
|
||||
case 4:
|
||||
t = *(s16 *)(s1 + 0xFC);
|
||||
v1 = t;
|
||||
if (t != 0) {
|
||||
goto decr;
|
||||
}
|
||||
v1 = *(s32 *)(s1 + 0xD0);
|
||||
*(u16 *)(v1 + 2) += 1;
|
||||
v1 = *(s32 *)(s1 + 0xD4);
|
||||
*(u16 *)(v1 + 2) += 1;
|
||||
v1 = *(s32 *)(s1 + 0xD8);
|
||||
*(u16 *)(v1 + 2) += 1;
|
||||
*(s16 *)(s1 + 0x10A) = 5;
|
||||
*(s16 *)(s1 + 0xFC) = 0x20;
|
||||
return;
|
||||
case 5:
|
||||
t = *(s16 *)(s1 + 0xFC);
|
||||
v1 = t;
|
||||
if (t == 0) {
|
||||
goto set6;
|
||||
}
|
||||
decr:
|
||||
t = v1 - 1;
|
||||
*(s16 *)(s1 + 0xFC) = t;
|
||||
return;
|
||||
set6:
|
||||
t = 6;
|
||||
*(s16 *)(s1 + 0x10A) = t;
|
||||
ca0 = 0xC1F;
|
||||
ca1 = 0;
|
||||
goto c6call;
|
||||
case 6:
|
||||
*(u16 *)(s1 + 6) -= 2;
|
||||
{
|
||||
u8 *p = *(u8 **)(s1 + 0xCC);
|
||||
*(u16 *)(s1 + 0xA) ^= 2;
|
||||
*(u16 *)(p + 6) += 2;
|
||||
*(u16 *)(p + 0xA) ^= 2;
|
||||
if (*(s16 *)(s1 + 0x88) - *(s16 *)(s1 + 6) >= 0x81) {
|
||||
*(s16 *)(s1 + 0x10A) = 0;
|
||||
ca0 = 4;
|
||||
ca1 = 0xC1F;
|
||||
} else {
|
||||
goto tailjoin;
|
||||
}
|
||||
}
|
||||
c6call:
|
||||
func_8002D4C8(ca0, ca1);
|
||||
break;
|
||||
}
|
||||
|
||||
tailjoin:
|
||||
if (((s32 (*)(s32))func_80178970)(s1) == 0) {
|
||||
return;
|
||||
}
|
||||
((void (*)(s32))func_80178D18)(s1);
|
||||
u34 = *(u16 *)(s1 + 0x34);
|
||||
*(s16 *)(s1 + 2) = 1;
|
||||
if (u34 == 0) {
|
||||
return;
|
||||
}
|
||||
func_80029514(0x30C);
|
||||
func_8012C218((void *)*(s32 *)(s1 + 0xCC));
|
||||
func_8012C218((void *)*(s32 *)(s1 + 0x6C));
|
||||
func_8012C218((void *)s1);
|
||||
func_800D0F4C(0x60);
|
||||
func_800D0F4C(0x61);
|
||||
func_800D0F4C(0x62);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017BEBC", func_801803BC);
|
||||
|
||||
|
||||
@@ -7219,7 +7219,60 @@ void func_80181C9C(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181D1C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181DAC);
|
||||
extern s32 func_80181E90();
|
||||
|
||||
s32 func_80181DAC(s32 arg0) {
|
||||
extern u8 D_801202A0[];
|
||||
register s32 zr __asm__("$0");
|
||||
u8 *pe;
|
||||
u8 *ps;
|
||||
s16 *ca;
|
||||
s16 *cb;
|
||||
u16 state;
|
||||
u16 t;
|
||||
s32 count;
|
||||
|
||||
pe = D_801202A0;
|
||||
count = 0;
|
||||
ps = pe + 4;
|
||||
do {
|
||||
if ((s32)pe == arg0) {
|
||||
goto next;
|
||||
}
|
||||
state = *(u16 *)pe;
|
||||
ca = (s16 *)((s32)arg0 + zr);
|
||||
if (state == 0x1FC) {
|
||||
goto b1fc;
|
||||
}
|
||||
cb = (s16 *)((s32)ps + zr);
|
||||
if (state == 0x239) {
|
||||
goto b239;
|
||||
}
|
||||
goto next;
|
||||
|
||||
b1fc:
|
||||
cb = (s16 *)((s32)ps + zr);
|
||||
t = (*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x18) * 9u) >> 9;
|
||||
goto call;
|
||||
|
||||
b239:
|
||||
t = (u32)(*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x18) + *(s16 *)(*(s32 *)(ps + 0x1C) + 0x18)) >> 6;
|
||||
/* fall through */
|
||||
call:
|
||||
if (func_80181E90(ca, cb, t) == 0) {
|
||||
goto next;
|
||||
}
|
||||
__asm__ __volatile__("" :: "r"(pe));
|
||||
return (s32)pe;
|
||||
|
||||
next:
|
||||
count++;
|
||||
ps += 0x10C;
|
||||
pe += 0x10C;
|
||||
} while (count < 0x60);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181E90);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6043,7 +6043,60 @@ DEFINE_func_8018178C() /* dedup: shared engine-core @0x8018178C (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801817B8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181804);
|
||||
#include "common.h"
|
||||
|
||||
extern s32 func_80185BE0(s32 a0);
|
||||
extern s32 func_80184FA4(s32);
|
||||
extern void func_80184ED4(s32, s32, s32, s32);
|
||||
extern void func_80184CB8(s32*, s32);
|
||||
extern u8 D_801B66C0[];
|
||||
extern u8 D_801B6670[];
|
||||
extern u8 D_801B662C[];
|
||||
extern short D_80191B34;
|
||||
|
||||
void func_80181804(void *a0)
|
||||
{
|
||||
switch (*(u16 *)((s32)a0 + 0x34)) {
|
||||
case 0:
|
||||
if (func_80185BE0(0xD) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 1;
|
||||
func_80184ED4((s32)a0, (s32)D_801B66C0, 1, 0x80);
|
||||
return;
|
||||
case 1:
|
||||
func_80185BE0(0xD);
|
||||
if (func_80184FA4((s32)a0) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 2;
|
||||
func_80184ED4((s32)a0, (s32)D_801B6670, 1, 0x80);
|
||||
return;
|
||||
case 2:
|
||||
if (func_80184FA4((s32)a0) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 3;
|
||||
*(s32 *)((s32)a0 + 0x1C) = 0x20;
|
||||
return;
|
||||
case 3:
|
||||
if (func_80185BE0(3) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x34) = 4;
|
||||
func_80184ED4((s32)a0, (s32)D_801B662C, 1, 0x80);
|
||||
return;
|
||||
case 4:
|
||||
func_80185BE0(3);
|
||||
if (func_80184FA4((s32)a0) == 0) {
|
||||
return;
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x2) = 1;
|
||||
func_80184CB8((s32 *)a0, (s32)&D_80191B34);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80191BDC[])(void);
|
||||
|
||||
@@ -5634,7 +5634,46 @@ void func_80180B28(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_80180B70);
|
||||
extern void func_80019064(void *a0);
|
||||
extern void func_80149020(s32 *a0);
|
||||
extern void func_80147324(s32 a0);
|
||||
extern int func_801511E0(int a0);
|
||||
extern s32 func_80012A60(s32 a0, s32 a1);
|
||||
extern void func_80154274(s32 *a0, s32 a1);
|
||||
extern void func_80154A74(s32 a0, s32 a1);
|
||||
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
extern void func_80146CA0(void *a0);
|
||||
extern u8 D_80062BF4[];
|
||||
extern M2C_UNK D_800D5880;
|
||||
extern s32 D_800D58AC;
|
||||
|
||||
void func_80180B70(s32 a0)
|
||||
{
|
||||
s32 s1;
|
||||
s32 s0;
|
||||
|
||||
s1 = a0;
|
||||
func_80019064(D_80062BF4);
|
||||
func_80149020((s32 *)s1);
|
||||
func_80147324(0x451);
|
||||
func_801511E0(s1);
|
||||
if ((s16)func_80012A60(*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12), *(s16 *)(s1 + 0xF4)) >= 0x401) {
|
||||
func_80154274((s32 *)s1, (s32)&D_800D5880);
|
||||
} else {
|
||||
func_80154274((s32 *)s1, (s32)&D_800D58AC);
|
||||
}
|
||||
s0 = 1;
|
||||
func_80154A74(s1, 0x16);
|
||||
func_80149020((s32 *)s1);
|
||||
func_80146994(0x42, s1, 0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, 0x20, 0, 0, s0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, 0, 0, 0x20, s0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, -0x20, 0, 0, s0, 0);
|
||||
func_80146A6C(0x42, (void *)s1, 0, 0, -0x20, s0, 0);
|
||||
func_80146CA0((void *)s1);
|
||||
}
|
||||
|
||||
|
||||
void func_80180CC4(s32 arg0)
|
||||
{
|
||||
|
||||
@@ -4574,7 +4574,21 @@ void func_8017EF48(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8017BEBC", func_8017F020);
|
||||
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern u8 D_8019292C[];
|
||||
|
||||
s32 aF8017F020(s32 arg0) __asm__("func_8017F020");
|
||||
s32 aF8017F020(s32 arg0) {
|
||||
if (*(s32 *)(arg0 + 0xDC) & 1) {
|
||||
return 0;
|
||||
}
|
||||
if (func_8012D5E4(arg0, (s32)&D_8019292C, (s32)&D_8019292C + 8, 0x13) != 1) {
|
||||
return 0;
|
||||
}
|
||||
*(s32 *)(arg0 + 0xDC) |= 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
typedef struct {
|
||||
s32 a;
|
||||
|
||||
@@ -4539,7 +4539,22 @@ s32 aF8018353C(s32 a0, s16 a1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80180B04", func_801835BC);
|
||||
s32 func_801835BC(s32 param_1, s32 a1, s32 a2)
|
||||
{
|
||||
s32 e;
|
||||
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
e = func_80132EF4(param_1, 0x22);
|
||||
if (e != 0) {
|
||||
*(u16 *)(e + 0x34) = 0x7FFF;
|
||||
*(u16 *)(*(s32 *)(e + 0x20) + 0x2C) = 0xC006;
|
||||
*(s32 *)(e + 0x14) = 0xFFFE0000;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8019EDB0[])(void);
|
||||
|
||||
@@ -3220,7 +3220,51 @@ void func_801815CC(s32 param_1) {
|
||||
void func_8018165C(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181664);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern void func_80180CB0(s32 a0);
|
||||
|
||||
void func_80181664(s32 param_1)
|
||||
{
|
||||
s32 v1;
|
||||
|
||||
v1 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(param_1 + 0x20) = v1;
|
||||
if (v1 == 0) {
|
||||
((void (*)(s32))func_8012CAE4)(param_1);
|
||||
return;
|
||||
}
|
||||
|
||||
*(u16 *)v1 = 1;
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 2) = 9;
|
||||
|
||||
switch (*(s16 *)(param_1 + 0x70)) {
|
||||
case 0:
|
||||
*(s32 *)(param_1 + 0x6C) = func_8012C658(0x2F9, 2, *(s32 *)(param_1 + 0x64));
|
||||
break;
|
||||
|
||||
case 1:
|
||||
*(s32 *)(param_1 + 0x6C) = func_8012C658(0x2F9, 3, *(s32 *)(param_1 + 0x64));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 3:
|
||||
*(s32 *)(param_1 + 0x6C) =
|
||||
func_8012C658(0x2F9, *(s16 *)(param_1 + 0x70) + 2, param_1);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case 5:
|
||||
*(s32 *)(param_1 + 0xD0) = func_8012C658(0x2F9, 6, param_1);
|
||||
/* fall through */
|
||||
case 6:
|
||||
default:
|
||||
func_80180CB0(param_1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181744);
|
||||
|
||||
|
||||
@@ -3046,7 +3046,16 @@ void func_80186D6C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801867DC", func_80186DBC);
|
||||
extern void func_80186E94();
|
||||
|
||||
void func_80186DBC(s32 a0) {
|
||||
*(u16 *)(a0 + 0x52) = 0;
|
||||
*(u32 *)(a0 + 0xE0) |= 0x28;
|
||||
*(u16 *)(a0 + 0xAE) |= 1;
|
||||
*(u32 *)(a0 + 0xC4) |= 4;
|
||||
func_80186E94(a0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012E8A8(u8 *a0);
|
||||
extern void func_8018956C(s32 a0, s32 a1);
|
||||
|
||||
@@ -5360,7 +5360,166 @@ void func_80182DB0(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80182ED8);
|
||||
extern void func_80183478();
|
||||
extern void func_8002D4C8();
|
||||
extern void func_8012F214();
|
||||
extern void func_80183534();
|
||||
extern s32 func_80013478(s32 a0, s32 a1);
|
||||
extern s32 D_801DDB28;
|
||||
extern s32 D_801DDB3C;
|
||||
extern u16 D_800B99DA;
|
||||
extern u8 D_80126B5C;
|
||||
extern u8 D_80190858[];
|
||||
extern u8 D_801908D8[];
|
||||
extern s32 D_801DFE54[];
|
||||
extern s32 D_801DFDD4[];
|
||||
|
||||
void func_80182ED8(s32 arg0) {
|
||||
s32 val;
|
||||
s16 top[4];
|
||||
s16 bot[4];
|
||||
s32 *q;
|
||||
s32 ctr;
|
||||
s32 *p;
|
||||
u8 *p8;
|
||||
s32 r;
|
||||
s32 *w;
|
||||
s32 t;
|
||||
s32 dd4;
|
||||
s32 pbase;
|
||||
u16 vol;
|
||||
|
||||
switch (*(u16 *)(arg0 + 0x34)) {
|
||||
case 0:
|
||||
*(u16 *)(arg0 + 0x100) += 0x20;
|
||||
if (*(s16 *)(arg0 + 0x100) >= 0x121) {
|
||||
*(u16 *)(arg0 + 0x100) = 0x120;
|
||||
*(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1;
|
||||
func_80183478(arg0, 1);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (*(s32 *)(arg0 + 0xE0) != 0) {
|
||||
func_801834D8(arg0, 0);
|
||||
*(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1;
|
||||
}
|
||||
if ((*(s16 *)(D_801DDB28 + 0x100) == 2) && ((D_800B99DA & 0x7F) == 0)) {
|
||||
func_801834D8(arg0, 0);
|
||||
*(u16 *)(arg0 + 0x34) = 4;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
*(u16 *)(arg0 + 0xFE) += 0x20;
|
||||
if (*(s16 *)(arg0 + 0xFE) >= 0x121) {
|
||||
*(u16 *)(arg0 + 0xFE) = 0x120;
|
||||
*(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1;
|
||||
func_801834D8(arg0, 0);
|
||||
func_801834D8(arg0, 1);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
*(u16 *)(arg0 + 2) = 2;
|
||||
if (*(s16 *)(arg0 + 0x70) == 3) {
|
||||
func_8002D4C8(4, 0x9CF);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
*(u16 *)(arg0 + 0xFE) += 0x20;
|
||||
if (*(s16 *)(arg0 + 0xFE) >= 0x121) {
|
||||
*(u16 *)(arg0 + 0xFE) = 0;
|
||||
*(u16 *)(arg0 + 0x100) = 0;
|
||||
*(u16 *)(arg0 + 0x34) = 0;
|
||||
if (*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x64) == D_801DDB3C) {
|
||||
if (*(s32 *)(arg0 + 8) == 0) {
|
||||
*(s16 *)(arg0 + 0xA) = 0x200;
|
||||
} else {
|
||||
*(s16 *)(arg0 + 0xA) = 0;
|
||||
}
|
||||
} else {
|
||||
if (*(s32 *)(arg0 + 8) == 0) {
|
||||
*(s16 *)(arg0 + 0xA) = -0x200;
|
||||
} else {
|
||||
*(s16 *)(arg0 + 0xA) = 0;
|
||||
}
|
||||
}
|
||||
func_80183478(arg0, 0);
|
||||
func_801834D8(arg0, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
w = (s32 *)(arg0 + 0xE4);
|
||||
ctr = 0;
|
||||
t = *(s16 *)(arg0 + 0x70);
|
||||
p8 = D_80190858 + (t << 5);
|
||||
r = (s32)&D_801DFE54[t * 4];
|
||||
dd4 = (s32)D_801DFDD4;
|
||||
pbase = dd4 + 4;
|
||||
p = (s32 *)(pbase + (t << 5));
|
||||
q = (s32 *)(dd4 + (t << 5));
|
||||
|
||||
while (ctr < 4) {
|
||||
func_8012F214(*(s32 *)(arg0 + 0x64), (s32)p8, (s32)top);
|
||||
bot[0] = top[0];
|
||||
bot[1] = top[1];
|
||||
bot[2] = top[2];
|
||||
top[1] += *(u16 *)(arg0 + 0xFE) + *(u16 *)(arg0 + 0xA);
|
||||
bot[1] += *(u16 *)(arg0 + 0x100) + *(u16 *)(arg0 + 0xA);
|
||||
if (*q != 0) {
|
||||
*(s16 *)(*q + 8) = top[0];
|
||||
*(s16 *)(*q + 10) = top[1];
|
||||
*(s16 *)(*q + 12) = top[2];
|
||||
}
|
||||
if (*p != 0) {
|
||||
*(s16 *)(*p + 8) = bot[0];
|
||||
*(s16 *)(*p + 10) = bot[1];
|
||||
*(s16 *)(*p + 12) = bot[2];
|
||||
}
|
||||
func_80183534(arg0, (s32)top, (s32)bot, (s32)w);
|
||||
func_80183848(arg0, (s32)top, (s32)bot);
|
||||
top[0] = (top[0] + bot[0]) >> 1;
|
||||
top[1] = (top[1] + bot[1]) >> 1;
|
||||
top[2] = (top[2] + bot[2]) >> 1;
|
||||
*(s32 *)r = func_80013478((s32)&D_80126B5C, (s32)top);
|
||||
r += 4;
|
||||
ctr++;
|
||||
p8 += 8;
|
||||
p += 2;
|
||||
q += 2;
|
||||
w++;
|
||||
}
|
||||
|
||||
func_8012F214(*(s32 *)(arg0 + 0x64),
|
||||
(s32)(D_801908D8 + (*(s16 *)(arg0 + 0x70) << 3)), (s32)top);
|
||||
bot[0] = top[0];
|
||||
bot[1] = top[1];
|
||||
bot[2] = top[2];
|
||||
top[1] += *(u16 *)(arg0 + 0xFE) + *(u16 *)(arg0 + 0xA);
|
||||
bot[1] += *(u16 *)(arg0 + 0x100) + *(u16 *)(arg0 + 0xA);
|
||||
func_80183848(arg0, (s32)top, (s32)bot);
|
||||
|
||||
if ((*(u16 *)(arg0 + 0x34) != 3) && (*(s16 *)(arg0 + 0x70) == 3)) {
|
||||
val = D_801DFE54[0];
|
||||
for (ctr = 1; ctr < 0x10; ctr++) {
|
||||
if (D_801DFE54[ctr] < val) {
|
||||
val = D_801DFE54[ctr];
|
||||
}
|
||||
}
|
||||
val -= 0x4000;
|
||||
if (val <= 0) {
|
||||
func_8002D4C8(0x9CF, 0x107F);
|
||||
} else {
|
||||
vol = 0x7F;
|
||||
if (val <= 0xFFFFF) {
|
||||
vol -= (val * 111) / 1048576;
|
||||
} else {
|
||||
vol = 0x10;
|
||||
}
|
||||
func_8002D4C8(0x9CF, vol | 0x1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_801833FC);
|
||||
|
||||
|
||||
@@ -4859,7 +4859,71 @@ void func_80181938(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80181A80);
|
||||
extern u8 D_801202A0[];
|
||||
extern void *D_80126CC8;
|
||||
extern u8 D_801B72B4[];
|
||||
extern u8 D_801B6914[];
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_80180D68(void);
|
||||
|
||||
void func_80181A80(void *a0) {
|
||||
u16 state = *(u16 *)((s32)a0 + 0x34);
|
||||
|
||||
switch (state) {
|
||||
case 4:
|
||||
{
|
||||
u8 *p = D_801202A0;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0x60; i++, p += 0x10C) {
|
||||
if (*(u16 *)(p + 0) == 0x2E7 && *(u16 *)(p + 2) == 4) {
|
||||
func_8001C214(*(s32 *)((s32)a0 + 0x20), (s32)D_801B72B4);
|
||||
*(u16 *)((s32)a0 + 0x5C) = 0x8800;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x400;
|
||||
*(s16 *)((s32)a0 + 0x34) = 3;
|
||||
}
|
||||
}
|
||||
/* fall through */
|
||||
}
|
||||
case 0:
|
||||
if (D_80126CC8 == a0) {
|
||||
u16 t0 = *(u16 *)((s32)a0 + 0x88);
|
||||
u16 t1 = *(u16 *)((s32)a0 + 0x8A);
|
||||
u16 t2 = *(u16 *)((s32)a0 + 0x8C);
|
||||
|
||||
*(s16 *)((s32)a0 + 0x34) = 1;
|
||||
*(s16 *)((s32)a0 + 0x5C) = 0;
|
||||
*(u16 *)((s32)a0 + 0x6) = t0;
|
||||
*(u16 *)((s32)a0 + 0xA) = t1;
|
||||
*(u16 *)((s32)a0 + 0xE) = t2;
|
||||
func_80180D68();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
u8 *p = D_801202A0;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0x60; i++, p += 0x10C) {
|
||||
if (*(u16 *)(p + 0) == 0x2E7 && *(u16 *)(p + 2) == 4) {
|
||||
func_8001C214(*(s32 *)((s32)a0 + 0x20), (s32)D_801B6914);
|
||||
*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040;
|
||||
*(u16 *)((s32)a0 + 0x5C) = 0x9000;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x400;
|
||||
*(s16 *)((s32)a0 + 0x34) = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801B4DA8[])(void);
|
||||
|
||||
@@ -9326,7 +9326,36 @@ void func_8018CD54(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018CDB4);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(s32 a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_8018CDB4(s32 param_1) {
|
||||
|
||||
extern s32 D_801CC5A8;
|
||||
extern u8 D_80193650[];
|
||||
|
||||
s32 v0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(param_1 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(param_1);
|
||||
} else {
|
||||
func_8001C214(v0, (s32)&D_801CC5A8);
|
||||
func_8012A828(param_1, D_80193650);
|
||||
*(s16 *)(param_1 + 2) = 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[];
|
||||
|
||||
@@ -5063,7 +5063,32 @@ void func_80180B54(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_80180B90);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_80180C2C);
|
||||
void func_80180C2C(s32 param_1)
|
||||
{
|
||||
extern u16 D_801AAD8C;
|
||||
extern u16 D_80126B5E;
|
||||
extern u16 D_80126B62;
|
||||
extern u16 D_80126B66;
|
||||
extern u16 D_80126BE2;
|
||||
extern u16 D_80126BE4;
|
||||
extern u8 D_80126BE0[];
|
||||
extern void func_8012E014(s32 a0);
|
||||
|
||||
u16 t;
|
||||
|
||||
if (D_801AAD8C == 3) {
|
||||
t = D_801AAD8C + 1;
|
||||
*(u16 *)((s32)param_1 + 0x34) = 0;
|
||||
D_801AAD8C = t;
|
||||
}
|
||||
if (*(u8 *)((s32)param_1 + 0x74) != 0) {
|
||||
func_8012E014(param_1);
|
||||
*(u16 *)&D_80126BE0[0] = D_80126B5E;
|
||||
D_80126BE2 = D_80126B62;
|
||||
D_80126BE4 = D_80126B66;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
|
||||
@@ -5463,7 +5463,24 @@ void func_8018247C(void)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182538);
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
extern s32 rand(void);
|
||||
|
||||
void func_80182538(s32 param_1)
|
||||
{
|
||||
s32 p;
|
||||
s32 t;
|
||||
|
||||
p = func_80132EF4(param_1, 0x72);
|
||||
if (p != 0) {
|
||||
t = *(u16 *)(p + 6) - 0x30 + rand() % 96;
|
||||
*(u16 *)(p + 6) = t;
|
||||
*(u16 *)(p + 0xA) = *(u16 *)(param_1 + 0x52) + (*(u16 *)(p + 0xA) + 0x80);
|
||||
t = *(u16 *)(p + 0xE) - 0x30 + rand() % 96;
|
||||
*(u16 *)(p + 0xE) = t;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern u16 D_8018A464[];
|
||||
|
||||
@@ -2247,7 +2247,50 @@ DEFINE_func_801498C0() /* dedup: shared engine-core @0x801498c0 (src/shared) */
|
||||
} /* dedup: shared engine-core @0x801498e0 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801457A4", func_80149954);
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_80147364();
|
||||
extern s32 func_800CCF28(s32 a0);
|
||||
extern u16 *func_80146750(u16 *param_1);
|
||||
extern s16 currentLocationId;
|
||||
s32 func_80149954(s32 s0) {
|
||||
|
||||
extern u8 D_80126B5C;
|
||||
extern void *D_8012707C;
|
||||
s32 sp10[2];
|
||||
s16 buf[10];
|
||||
if (*(s32 *)(s0 + 0x44) & 0x404) {
|
||||
return 0;
|
||||
}
|
||||
if ((*(u16 *)(s0 + 0xAA) & 0x90) == 0) {
|
||||
if (currentLocationId == 0x308D) {
|
||||
func_80015978((s32)&D_80126B5C, sp10);
|
||||
((s32 (*)(s32, s32, s32))func_8012E5CC)((s32)sp10, 0x4, 0x8E0);
|
||||
return 0;
|
||||
}
|
||||
func_8002D4C8(0x4, 0x8E0);
|
||||
return 0;
|
||||
}
|
||||
if (*(u16 *)(s0 + 0xAC) & 0x90) {
|
||||
if ((s32)D_8012707C == 0x8E0) {
|
||||
D_8012707C = 0;
|
||||
} else {
|
||||
func_80147364(0x8E0, 0);
|
||||
}
|
||||
}
|
||||
func_800CCF28(s0);
|
||||
*(s16 *)((s32)buf + 0x0) = 0x12;
|
||||
*(s32 *)((s32)buf + 0x8) = s0;
|
||||
*(s16 *)((s32)buf + 0x2) = 0;
|
||||
*(s16 *)((s32)buf + 0x4) = -0x1E;
|
||||
*(s16 *)((s32)buf + 0x6) = 0;
|
||||
*(s32 *)((s32)buf + 0xC) = 0;
|
||||
*(s32 *)((s32)buf + 0x10) = 0;
|
||||
func_80146750(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_80149A64() /* dedup: shared engine-core @0x80149a64 (src/shared) */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user