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:
Drew T
2026-08-25 13:24:01 -06:00
parent 9f4aecd7c8
commit a5eecbbec7
36 changed files with 8639 additions and 39 deletions
+4 -1
View File
@@ -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.
+1 -2
View File
@@ -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
+1 -1
View File
@@ -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
+33 -1
View File
@@ -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"
+35 -1
View File
@@ -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);
+26 -1
View File
@@ -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);
+53 -1
View File
@@ -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
+20 -1
View File
@@ -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);
+22 -2
View File
@@ -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);
+150 -1
View File
@@ -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);
+10 -1
View File
@@ -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;
+17 -1
View File
@@ -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;
+11 -1
View File
@@ -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);
+27 -1
View File
@@ -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);
+24 -1
View File
@@ -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;
}
+120 -1
View File
@@ -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();
+8 -1
View File
@@ -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);
+115 -1
View File
@@ -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);
+8 -1
View File
@@ -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) {
}
+180 -1
View File
@@ -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);
+54 -1
View File
@@ -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
+54 -1
View File
@@ -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);
+40 -1
View File
@@ -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)
{
+15 -1
View File
@@ -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;
+16 -1
View File
@@ -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);
+45 -1
View File
@@ -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);
+10 -1
View File
@@ -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);
+160 -1
View File
@@ -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);
+65 -1
View File
@@ -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);
+30 -1
View File
@@ -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[];
+26 -1
View File
@@ -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);
+18 -1
View File
@@ -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[];
+44 -1
View File
@@ -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) */