feat(decomp): ox wave ch overlays — 88 banked

Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
Drew T
2026-08-25 02:36:04 -06:00
parent ec8ade5692
commit 82b4cd5b55
24 changed files with 1638 additions and 349 deletions
+3 -1
View File
@@ -94,7 +94,9 @@ segments:
# 0x801E7B28 ahead of the code, a 1-word analogue of main's rodata-island (no ld_interleave).
# - [0x0, rodata, head]
- [0x0, .rodata, md_SC04_027] # module-id header (+jtbl/ptr table) — §154-A
- [0x27C, c, md_SC04_027]
- [0x268, .rodata, md_SC04_027_jr_801EA8C0] # §154-A island split (jtbl_carve --island-split)
- [0x27c, c, md_SC04_027]
- [0x2d98, c, md_SC04_027_jr_801EA8C0]
- [0x35BC, data, tail] # data tail: pointer tables + packed data (split iterated)
- [0xAB00] # 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
+126 -6
View File
@@ -14,21 +14,141 @@ void func_800CEDFC(void) {
}
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CEE40);
#include "common.h"
extern u8 D_800B9A11;
extern s32 D_800B9A18;
extern u16 D_800B99E8;
extern s32 D_800D3ABC;
extern s32 D_800D3C0C;
extern s32 D_800D3C10;
extern void func_8001C044(void);
extern void func_80015310(void);
extern void func_800146B0(s32 a0);
extern void func_80059658(s32 a0);
extern s32 VSync(s32 a0);
extern void func_800167B8(s32 a0);
extern void func_800183E0(s32 *a0);
extern void func_800116E0(void);
extern s32 func_8001BFE8(void);
extern void func_80011928(s32 a0);
extern void func_8001BFF8(void);
extern void func_800118AC(void);
void func_800CEE40(void) {
D_800B9A11 = 1;
func_8001C044();
func_80015310();
func_800146B0(7);
func_80059658(0);
VSync(0);
func_80059658(1);
D_800B9A18 = 0;
func_800167B8(0);
func_800183E0(&D_800D3ABC);
D_800D3C0C = 0;
D_800D3C10 = 0;
func_800116E0();
D_800B99E8 = 0;
if (func_8001BFE8() != 0) {
func_80011928(3);
} else {
func_8001BFF8();
func_800118AC();
}
}
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CEF04);
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CEF54);
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CEFA8);
extern s32 D_800D3C10;
extern void func_800118AC(void);
extern void func_800CF290(void);
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CEFF4);
void func_800CEFA8(void) {
D_800D3C10 -= 4;
if (D_800D3C10 <= 0) {
D_800D3C10 = 0;
func_800118AC();
}
func_800CF290();
}
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CF038);
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CF0C4);
void func_800CEFF4(void) {
extern void func_800CF180(void);
extern void func_800CF114(void);
extern s32 func_800167F0(s32 arg0);
extern void func_800118AC(void);
func_800CF180();
func_800CF114();
if (func_800167F0(0) & 0xFFFF) {
func_800118AC();
}
}
void func_800CF038(void) {
extern void func_800CF180(void);
extern void func_800CF114(void);
extern u16 D_800B99E8;
extern s32 func_800149E0(s32 a0);
extern s32 D_800D3C0C;
extern void func_800167B8(s32 a0);
extern void func_800118AC(void);
s32 temp;
func_800CF180();
func_800CF114();
D_800B99E8 = D_800B99E8 + 1;
temp = func_800149E0(0);
if (D_800D3C0C != 0) {
if ((s16)D_800B99E8 >= 0x81 || (temp & 0x840)) {
func_800167B8(4);
func_800118AC();
}
}
}
void func_800CF0C4(void) {
extern void func_800CF180(void);
extern s32 func_800167F0(s32 arg);
extern void func_800146B0(s32 arg);
extern u16 D_800B99E6;
extern s32 D_800B9A18;
func_800CF180();
if (func_800167F0(4) & 0xFFFF) {
D_800B99E6 = 1;
func_800146B0(1);
D_800B9A18 = 2;
}
}
extern s32 func_8001ABBC(s32 arg0, s32 arg1, void *arg2, s32 arg3, s32 *arg4);
extern s32 D_800D3C0C;
extern s32 D_800C7C60;
extern s32 *D_800C7C64;
extern s32 D_800A2E20;
extern u8 D_800AE840[];
void func_800CF114(void) {
if (D_800D3C0C == 0) {
s32 *p = &D_800C7C60;
*p = 0;
D_800C7C64 = &D_800A2E20;
if (func_8001ABBC(0, 0, D_800AE840, 0, p) != 0) {
D_800D3C0C = 1;
}
}
}
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CF114);
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CF180);
+102 -6
View File
@@ -21,9 +21,34 @@ void func_800CAE88(void *a0) {
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAEC0);
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAF10);
extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32);
void func_800CAF10(void *arg0) {
func_801466F0(0xB, (s32)arg0, 0, 0, 0, 0, 0, 0);
*(u8 *)((s32)arg0 + 0xBE) = 0;
*(u8 *)((s32)arg0 + 0x197) += 1;
}
void func_800CAF68(void *arg0) {
extern u8 D_80078E78[];
extern s32 func_8014C088(s32 a0, s32 a1);
extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8);
extern void func_80147324(s32 arg0);
extern void func_800CB098(void *a0);
register u8 *p __asm__("$17") = D_80078E78;
if (func_8014C088((s32)arg0, 0xB) == 0 || *(u8 *)((s32)arg0 + 0xBE) != 0) {
func_800CB098(arg0);
}
if (*(s32 *)(p + 0x50) == 0) {
func_801466F0(0xB, (s32)arg0, 0, 0, 0, 1, 0, 0);
func_80147324(0x7DE);
*(u8 *)((s32)arg0 + 0xBE) = 0;
*(u8 *)((s32)arg0 + 0x197) += 1;
}
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAF68);
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB010);
@@ -33,7 +58,26 @@ void func_800CB078(void) {
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB098);
#include "common.h"
extern s32 func_8014C168(s32 *arg0, s32 arg1);
extern s32 func_8014C088(s32 arg0, s32 arg1);
void func_800CB098(s32 a0) {
s32 s0;
s32 v1;
s0 = func_8014C168((s32 *)a0, 0x15C);
if (s0 != 0) {
v1 = func_8014C088(a0, 1);
if (v1 != 0 && *(u16 *)((s32)v1 + 2) != 0) {
*(s32 *)((s32)s0 + 0xCC) = v1;
} else {
*(s32 *)((s32)s0 + 0xCC) = a0;
}
}
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB108);
@@ -173,7 +217,27 @@ void func_800CB62C(void *arg0) {
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB688);
extern void func_80146CA0(void *arg0);
void func_800CB688(void *a0) {
s32 v1 = -0x100;
*(u16 *)((s32)a0 + 0x12) = v1;
*(u16 *)((s32)a0 + 0x16) = v1;
v1 = *(s32 *)((s32)a0 + 0x50);
*(u16 *)((s32)a0 + 0x14) = 8;
*(u16 *)((s32)a0 + 0x10) = 0;
*(u8 *)((s32)a0 + 0x58) = 0xFF;
*(u8 *)((s32)a0 + 0x59) = 0xFF;
*(u8 *)((s32)a0 + 0x5A) = 0xFF;
*(u8 *)((s32)a0 + 0x5B) = 0;
*(u8 *)((s32)a0 + 0x5C) = 0;
*(u8 *)((s32)a0 + 0x5D) = 0;
*(u8 *)((s32)a0 + 0x5E) = 0xFF;
*(u8 *)((s32)a0 + 0x5F) = 0;
*(u16 *)((s32)a0 + 0x18) = v1;
func_80146CA0(a0);
}
extern void func_80146CA0(void *a0);
extern void func_800CB8C4(void *a0, void *a1);
@@ -197,7 +261,32 @@ void func_800CB6E8(void *arg0) {
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB77C);
void func_800CB77C(void *arg0) {
extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_80146CA0(void *a0);
extern void func_800CB8C4(void *a0, void *a1);
extern void func_800CB900(void *a0, void *a1, void *a2, void *a3, void *a4, void *a5, void *a6);
s16 w;
s32 pad[2];
w = *(u16 *)((u8 *)arg0 + 0x14) + 8;
*(u16 *)((u8 *)arg0 + 0x14) = w;
*(u8 *)((u8 *)arg0 + 0x58) = func_80012F74(*(u8 *)((u8 *)arg0 + 0x58), 0, 10, 1);
*(u8 *)((u8 *)arg0 + 0x59) = func_80012F74(*(u8 *)((u8 *)arg0 + 0x59), 0, 10, 1);
*(u8 *)((u8 *)arg0 + 0x5A) = func_80012F74(*(u8 *)((u8 *)arg0 + 0x5A), 0, 10, 1);
*(u8 *)((u8 *)arg0 + 0x5C) = func_80012F74(*(u8 *)((u8 *)arg0 + 0x5C), 0, 10, 1);
*(u8 *)((u8 *)arg0 + 0x5D) = func_80012F74(*(u8 *)((u8 *)arg0 + 0x5D), 0, 10, 1);
*(u8 *)((u8 *)arg0 + 0x5E) = func_80012F74(*(u8 *)((u8 *)arg0 + 0x5E), 0, 10, 1);
if (*(s32 *)((u8 *)arg0 + 0x58) == 0 && *(s32 *)((u8 *)arg0 + 0x5C) == 0) {
func_80146CA0(arg0);
}
w = *(u16 *)((u8 *)arg0 + 0x18) + 0x2D;
*(u16 *)((u8 *)arg0 + 0x18) = w;
func_800CB8C4(arg0, pad);
func_800CB900(arg0, pad, (u8 *)arg0 + 0x10, (u8 *)arg0 + 0x14,
(u8 *)arg0 + 0x58, (u8 *)arg0 + 0x5C, (u8 *)arg0 + 0x18);
}
extern void func_80162CCC(void);
void func_800CB8A4(void) {
@@ -205,6 +294,13 @@ void func_800CB8A4(void) {
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB8C4);
extern void func_80015978(s32 a0, s32 *a1);
extern void func_8012EFB8();
void func_800CB8C4(void *a0, void *a1) {
func_80015978(*(s32 *)((s32)a0 + 0x4C) + 4, (s32 *)a1);
func_8012EFB8(a1, a1);
}
INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB900);
+29 -1
View File
@@ -80,7 +80,35 @@ void func_800CAFC4(s32 a0) {
}
INCLUDE_ASM("asm/md_MAIN_040/nonmatchings/md_MAIN_040", func_800CB038);
void func_800CB038(void *a0) {
extern s32 D_800CBD74;
extern void func_8014659C(void);
extern void func_8001C214(s32 a0, s32 a1);
extern void func_80149374(s32 a0, s32 a1);
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3);
extern void func_80146E90(s32 *a0, s32 a1);
extern void func_80147324(s32 a0);
extern void func_80146CA0(void *a0);
extern void func_800CB3BC(void);
void *s2 = *(void **)((s32)a0 + 0x4C);
s32 s1 = ((s32 (*)(void))func_8014659C)();
*(s32 *)((s32)a0 + 0x20) = s1;
if (s1 != 0) {
func_8001C214(s1, (s32)&D_800CBD74);
*(u16 *)(s1 + 0x12) = *(u16 *)(*(s32 *)(s2 + 0x20) + 0x12);
func_80149374((s32)s2, (s32)a0 + 4);
func_80146DE8((s32 *)a0, 0, -0xC0000, -0x100000);
func_80146E90((s32 *)a0, 100);
memcpy((void *)((s32)a0 + 0x58), (void *)(s1 + 0x10), 8);
*(u16 *)((s32)a0 + 0x60) = 2;
func_80147324(0x8F3);
func_80146CA0(a0);
} else {
((void (*)(s32))func_800CB3BC)(a0);
}
}
INCLUDE_ASM("asm/md_MAIN_040/nonmatchings/md_MAIN_040", func_800CB114);
+30 -282
View File
@@ -411,7 +411,36 @@ s32 func_801E8A80(s32 ot, u8 *s, s16 c) {
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027", func_801E8D70);
extern u8 D_80115158[];
s32 func_801E8D70(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s32 *arg4) {
s32 ret;
s16 var;
u8 thr;
*arg4 = 0x808080;
ret = 0;
thr = D_80115158[arg2 * 2];
if (arg1 < 5) {
if (arg1 > 0) {
var = arg3;
} else if (arg1 == 0) {
goto end;
} else {
var = arg3;
}
} else if (arg1 == 5) {
goto end;
} else {
var = arg3;
}
if (var < thr) {
ret = *(s32 *)(arg0 + var * 4);
}
end:
return ret;
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027", func_801E8DF4);
@@ -836,284 +865,3 @@ void func_801EA88C(void) {
extern u8 D_800AF040[];
func_8001ABBC(0, 0, D_800AF040, 0, 0);
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027", func_801EA8C0);
void func_801EAA0C(void *a0) {
extern void (*D_801EBD48[])(void);
D_801EBD48[*(u16 *)((s32)a0 + 0x2)]();
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027", func_801EAA48);
void func_801EAA58(void) {
extern s32 D_801F24A0;
D_801F24A0 = 1;
}
s32 func_801EAA6C(void) {
extern s32 D_801F24A0;
return D_801F24A0;
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027", func_801EAA7C);
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027", func_801EAB04);
extern s32 func_80029504(void);
extern s32 func_80029178(s32 arg);
extern void func_80029124(s32, s32);
s32 func_801EAB8C(void) {
s32 val = func_80029504();
s32 flag;
if ((u32)(val - 200) >= 100) {
if (val < 300 || !(func_80029178(250) & 0xFF)) {
flag = 1;
} else {
flag = 0;
}
} else {
flag = 0;
}
if (flag == 0) {
return 0;
}
if (func_80029178(276) & 0xFF) {
return 0;
}
func_80029124(276, 1);
return 1;
}
extern s32 func_80029504(void);
extern s32 func_80029178(s32);
extern s32 func_80184D00(void);
extern s32 func_80184DD0(void);
extern s32 func_80184E44(void);
extern void func_80184EA0(void);
extern s32 D_801EBCBC[];
extern s32 D_801EBCD0[];
extern s32 D_801EBCEC[];
extern s32 D_801EC35C;
extern s32 D_801EC3A8;
void func_801EAC10(s32 a0) {
s32 v0, v1 = func_80029504();
if (v1 < 0x258) {
v1 = func_80029504();
if ((u32)(v1 - 0xC8) < 0x64) {
v0 = 0;
} else if (v1 < 0x12C) {
v0 = 1;
} else {
v0 = func_80029178(0xFA) & 0xFF;
if (v0 != 0) {
v0 = 0;
} else {
v0 = 1;
}
}
if (v0 != 0) {
*(s32 *)(a0 + 0xE4) = D_801EBCBC[func_80184D00()];
} else if ((u32)func_80029504() < 0x12C) {
*(s32 *)(a0 + 0xE4) = (s32)&D_801EC35C;
} else {
*(s32 *)(a0 + 0xE4) = (s32)&D_801EC3A8;
}
} else if (v1 < 0x384) {
*(s32 *)(a0 + 0xE4) = D_801EBCD0[func_80184DD0()];
} else {
*(s32 *)(a0 + 0xE4) = D_801EBCEC[func_80184E44()];
func_80184EA0();
}
}
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, s32 a1);
extern void func_8012E8E0(s32 a0, s32 a1);
extern s32 func_80178B18(s32 a0, s32 a1);
void func_801EAD2C(void *a0) {
extern s32 D_801F1D5C;
extern s32 D_801B9A50;
extern s32 D_801EBC04;
extern s32 D_801EBC34;
s32 v0;
s32 ptr;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((s32)a0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4(a0);
} else {
func_8001C214(v0, (s32)&D_801F1D5C);
ptr = *(s32 *)((s32)a0 + 0x68);
*(s16 *)(ptr + 0xC) = 0x7FFF;
*(s16 *)((s32)a0 + 0x2) = 1;
func_8012A828((s32)a0, (s32)&D_801B9A50);
func_8012E8E0((s32)a0, (s32)&D_801EBC04);
*(s16 *)((s32)a0 + 0x34) = 0;
func_80178B18((s32)a0, (s32)&D_801EBC34);
}
}
extern void func_801EAFE4(void);
extern s32 func_80029504(void);
extern s32 func_801EAF84(s32, s32, s32);
extern void func_801EAF9C(s32, s32, s32);
extern void func_80029124(s32, s32);
extern void func_801EB064(void);
extern void func_801EB0A4(void);
extern void func_801EB014(void);
s32 func_801EADC4(void) {
extern u8 D_80078EB1;
extern u8 D_80078E78[];
extern u8 D_801EC1D0[];
extern u8 D_801EC2F4[];
extern s32 D_801F2624;
extern s32 D_801F24A4;
u8 *p;
s32 var;
func_801EAFE4();
p = D_80078E78;
var = func_80029504();
if (var < 200)
goto L;
if (var >= 600)
goto L;
if (func_801EAF84(D_80078EB1, 13, 24) && (u32)(var - 0x136) < 0x46) {
((void (*)(s32, void *, void *))func_801EAF9C)(10, D_801EC1D0, func_801EB064);
func_80029124(0x112, 1);
} else {
((void (*)(s32, void *, void *))func_801EAF9C)(10, 0, 0);
}
if (func_801EAF84(p[0x39], 13, 24) && (u32)(var - 0x136) < 0x46) {
((void (*)(s32, void *, void *))func_801EAF9C)(11, D_801EC2F4, func_801EB0A4);
} else {
((void (*)(s32, void *, void *))func_801EAF9C)(11, 0, 0);
}
goto M;
L:
((void (*)(s32, void *, void *))func_801EAF9C)(10, 0, 0);
((void (*)(s32, void *, void *))func_801EAF9C)(11, 0, 0);
M:
func_801EB014();
if (!D_801F2624) {
return 0;
}
return (s32)((u8 *)&D_801F24A4);
}
extern s32 D_801F24AC[];
extern s32 D_801F24A8[];
extern s32 D_801F2624;
extern s32 func_801EADC4();
s32 func_801EAF00(void *a0) {
s32 n;
s32 i;
s32 end;
func_801EADC4();
n = D_801F2624;
if (n > 0) {
i = 0;
end = n * 16;
do {
if (*(s32 *)((char *)D_801F24AC + i) == (s32)a0) {
return *(s32 *)((char *)D_801F24A8 + i);
}
i += 16;
} while (i < end);
}
return 0;
}
s32 func_801EAF84(s32 arg0, s32 arg1, s32 arg2) {
return (arg1 <= arg0) && (arg0 < arg2);
}
void func_801EAF9C(s32 arg0, s32 arg1, s32 arg2) {
extern s32 D_801F2624;
extern s32 D_801F24AC[];
extern s32 D_801F24A8[];
extern s32 D_801F24B0[];
s32 i;
i = D_801F2624;
D_801F24AC[i * 4] = arg0;
D_801F24A8[i * 4] = arg1;
D_801F24B0[i * 4] = arg2;
D_801F2624 = i + 1;
}
extern s32 D_801F24A4;
extern s32 D_801F2624;
extern void func_80016714(s8*, s32);
void func_801EAFE4(void) {
((void (*)(void *, s32))func_80016714)(&D_801F24A4, 0x180);
D_801F2624 = 0;
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027", func_801EB014);
extern s32 func_80029504(void);
extern void func_80029124(s32 a0, s32 a1);
extern void func_80029514(s32 arg0);
void func_801EB064(void) {
func_80029124(0xFD, 0x1);
if (((s32 (*)(void))func_80029504)() == 0x136) {
((void (*)(s32))func_80029514)(0x140);
}
}
extern s32 func_80029504(void);
extern void func_80029124(s32 a0, s32 a1);
extern void func_80029514(s32 arg0);
void func_801EB0A4(void) {
func_80029124(0xFE, 0x1);
if (((s32 (*)(void))func_80029504)() == 0x136) {
((void (*)(s32))func_80029514)(0x140);
}
}
+469
View File
@@ -0,0 +1,469 @@
#include "common.h"
/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) ===================
* The file-scope decl environment from earlier code regions of this object —
* file-local types, col-0 decls, DEFINE_func macro externs, and each earlier
* definition's implied prototype (types first, then decls in original order).
* Decls emit no code => byte-neutral. See cookbook §8c. */
typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C974_801E8A80;
typedef struct { u32 w[38]; } Blk152_8017DF40_801E9DF8;
typedef struct { u8 b[4]; } Blk4_8017DF40_801E9DF8;
typedef struct { u8 c[8]; } Blk8;
typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801EA664;
typedef struct { short vx, vy, vz, pad; } SVECTOR_801EDED4_801EA664;
extern void func_801E7DA4(void);
extern s32 func_801E7DCC(void);
extern s32 func_80029504(void);
extern void func_801E7E10(void);
extern void func_801E7E9C(void);
extern s16 func_801E7EB0(void);
extern void func_801E7EC0(s32 a0, s32 a1);
extern u16 D_80115116;
extern unsigned short D_80115112;
extern void (*D_801EBB38[])(void);
extern void func_80141C04(void);
extern void func_801E7F38(void);
extern void func_801E7FD8(void);
extern void func_801E8104(void);
extern s32 D_801151D0;
extern u8 D_801151C8[];
extern u8 D_800B9A15;
extern s16 D_80115126;
extern s16 D_800B9A02;
extern s16 D_801F2184;
extern s16 D_801F2188;
extern s32 D_801F2470;
extern s32 D_801F2474;
extern u8 D_801F2478[];
extern s32 D_801F2488;
extern s32 func_8002B0B4(s32, s32, void *);
extern void func_801E8DF4(void);
extern void func_801E915C(void);
extern s32 func_801E8274(void);
extern void func_801E88D0(void);
extern void func_801E8120(void);
extern void func_801E8200(void);
extern void func_800D2624(void);
extern void func_801E821C(void);
extern s32 func_80024054(u8 *, u8 *);
extern s32 func_800D2650(s32, u8 *, s16, s16, s32, s32);
extern s32 func_800D27DC(s32, s32, void *, s16, s32);
extern s32 func_800D29F8(s32, s32, void *, s16, s32);
extern s32 func_801E8D70(s32, s16, s16, s16, s32 *);
extern s32 func_801E8A80(s32 ot, u8 *s, s16 c);
extern u8 D_80115158[];
extern s32 func_801E8D70(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s32 *arg4);
extern u32 func_801E9B00(s32 a0, s32 a1);
extern void func_801E9B68(unsigned int val, short n, unsigned short *dst, short flag);
extern void func_80016714(s8 *a0, s32 a1);
extern s8 D_801F2194;
extern void func_801E9DD0(void);
extern void func_801E9DF8(s32 arg0);
extern void func_8014B00C(void);
extern void func_80029344(void);
extern void func_801EA0E4(void);
extern u8 D_801EBBAC[];
void func_800167B8(int);
void func_80175414(s32 _arg0);
extern int func_801EA10C(u8 *arg);
extern s32 func_800167F0(s32 a0);
extern s32 func_801EA164(void);
extern s32 func_800D1E28(void);
extern s32 func_8002D4C8(s32, s32);
extern s32 func_8001BFD0(void);
extern s32 func_800291B4(s32);
extern s32 func_80029524(void);
extern s32 func_800D0C48(s32);
extern s32 func_801EA1DC(s32 param_1);
extern void func_800D1EBC(void);
extern void func_801EA27C(void);
extern void func_801EA29C(void *a0);
extern s32 func_801EA2D8(void *a0);
extern void func_801EA344(void *a0);
extern void func_80171A1C(void*);
extern void func_80175414(s32 _arg0);
extern void func_801EA380(void);
extern s32 func_80171D78(u32, void *);
extern void func_801EA3A8(u32 arg0);
extern s32 func_80014C54(s32, s32, s32);
extern void func_800D1724(void *);
extern void func_80171A1C(void *);
extern void func_801EA410(void *arg0);
extern void func_801EA468(void);
extern void func_801EA470(void *a0);
extern void func_801EA4AC(void);
extern void func_801EA4CC(u32 arg0);
extern void func_801EA534(void);
extern void func_8012A018(s32 a0, s32 a1);
extern void func_8012A094(s32 a0);
extern void func_801EA600(void *a0);
extern void func_801EA53C(void);
extern void func_801EA63C(s32 arg0);
extern u16 func_80148800(s32 *a0);
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2);
extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2);
extern void func_80049CAC(s32 a0, s32 a1);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
extern void func_801EA664(s32 param_1, s16 *param_2);
extern u8 func_801EA85C(u32 a0);
extern void func_8001ABBC(u32, u32, void *, u32, u32);
extern void func_801EA88C(void);
/* ==== end §8b carried decl layer ==== */
#include "common.h"
extern s32 func_801789AC(s32 a0);
extern void func_80178CBC(s32 a0, s32 a1);
extern void func_80174438(s32 a0);
extern u8 *D_80126B10;
extern s16 func_80186450(void);
extern void func_80186460(s32 a0);
void func_801EA8C0(void *param_1) {
extern s32 D_801EBD00;
extern s32 D_801EBD18;
extern s32 D_801EBC94;
switch (*(u16 *)((s32)param_1 + 0x34)) {
case 0: {
s32 v0 = func_801789AC((s32)param_1);
switch (v0) {
case 1:
*(u16 *)((s32)param_1 + 0x34) = 2;
func_80186460(4);
break;
case 2:
func_80178CBC((s32)param_1, (s32)&D_801EBD00);
*(u16 *)((s32)param_1 + 0x34) = 0;
break;
case 3:
func_80178CBC((s32)param_1, (s32)&D_801EBD18);
*(u16 *)((s32)param_1 + 0x34) = 3;
break;
}
break;
}
case 1:
break;
case 2:
if (func_80186450() != 0) {
func_801E7DA4();
*(u16 *)((s32)param_1 + 0x34) = 4;
} else {
func_80178CBC((s32)param_1, (s32)&D_801EBC94);
*(u16 *)((s32)param_1 + 0x34) = 0;
}
break;
case 3:
if (func_801789AC((s32)param_1) != 0) {
func_80174438((s32)D_80126B10);
*(u16 *)((s32)param_1 + 0x34) = 1;
}
break;
case 4:
if ((func_801E7DCC() << 16) != 0) {
*(u16 *)((s32)param_1 + 0x34) = 2;
func_80186460(4);
}
break;
}
}
void func_801EAA0C(void *a0) {
extern void (*D_801EBD48[])(void);
D_801EBD48[*(u16 *)((s32)a0 + 0x2)]();
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027_jr_801EA8C0", func_801EAA48);
void func_801EAA58(void) {
extern s32 D_801F24A0;
D_801F24A0 = 1;
}
s32 func_801EAA6C(void) {
extern s32 D_801F24A0;
return D_801F24A0;
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027_jr_801EA8C0", func_801EAA7C);
void func_801EAB04(void) {
extern s32 D_801E7AAC;
extern s32 D_801EBE24;
extern s32 D_801EBE58;
s32 r;
s32 v;
r = func_80029504();
v = ((u32)(r - 0xC8) < 0x64) ? 0 :
((r < 0x12C) ? 1 :
(((func_80029178(0xFA) & 0xFF) == 0) ? ({ __asm__ __volatile__("" ::: "memory"); 1; }) : 0));
if (v) {
*(s32 *)(D_801E7AAC + 4) = (s32)&D_801EBE24;
} else {
*(s32 *)(D_801E7AAC + 4) = (s32)&D_801EBE58;
}
}
extern s32 func_80029504(void);
extern s32 func_80029178(s32 arg);
extern void func_80029124(s32, s32);
s32 func_801EAB8C(void) {
s32 val = func_80029504();
s32 flag;
if ((u32)(val - 200) >= 100) {
if (val < 300 || !(func_80029178(250) & 0xFF)) {
flag = 1;
} else {
flag = 0;
}
} else {
flag = 0;
}
if (flag == 0) {
return 0;
}
if (func_80029178(276) & 0xFF) {
return 0;
}
func_80029124(276, 1);
return 1;
}
extern s32 func_80029504(void);
extern s32 func_80029178(s32);
extern s32 func_80184D00(void);
extern s32 func_80184DD0(void);
extern s32 func_80184E44(void);
extern void func_80184EA0(void);
extern s32 D_801EBCBC[];
extern s32 D_801EBCD0[];
extern s32 D_801EBCEC[];
extern s32 D_801EC35C;
extern s32 D_801EC3A8;
void func_801EAC10(s32 a0) {
s32 v0, v1 = func_80029504();
if (v1 < 0x258) {
v1 = func_80029504();
if ((u32)(v1 - 0xC8) < 0x64) {
v0 = 0;
} else if (v1 < 0x12C) {
v0 = 1;
} else {
v0 = func_80029178(0xFA) & 0xFF;
if (v0 != 0) {
v0 = 0;
} else {
v0 = 1;
}
}
if (v0 != 0) {
*(s32 *)(a0 + 0xE4) = D_801EBCBC[func_80184D00()];
} else if ((u32)func_80029504() < 0x12C) {
*(s32 *)(a0 + 0xE4) = (s32)&D_801EC35C;
} else {
*(s32 *)(a0 + 0xE4) = (s32)&D_801EC3A8;
}
} else if (v1 < 0x384) {
*(s32 *)(a0 + 0xE4) = D_801EBCD0[func_80184DD0()];
} else {
*(s32 *)(a0 + 0xE4) = D_801EBCEC[func_80184E44()];
func_80184EA0();
}
}
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, s32 a1);
extern void func_8012E8E0(s32 a0, s32 a1);
extern s32 func_80178B18(s32 a0, s32 a1);
void func_801EAD2C(void *a0) {
extern s32 D_801F1D5C;
extern s32 D_801B9A50;
extern s32 D_801EBC04;
extern s32 D_801EBC34;
s32 v0;
s32 ptr;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((s32)a0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4(a0);
} else {
func_8001C214(v0, (s32)&D_801F1D5C);
ptr = *(s32 *)((s32)a0 + 0x68);
*(s16 *)(ptr + 0xC) = 0x7FFF;
*(s16 *)((s32)a0 + 0x2) = 1;
func_8012A828((s32)a0, (s32)&D_801B9A50);
func_8012E8E0((s32)a0, (s32)&D_801EBC04);
*(s16 *)((s32)a0 + 0x34) = 0;
func_80178B18((s32)a0, (s32)&D_801EBC34);
}
}
extern void func_801EAFE4(void);
extern s32 func_80029504(void);
extern s32 func_801EAF84(s32, s32, s32);
extern void func_801EAF9C(s32, s32, s32);
extern void func_80029124(s32, s32);
extern void func_801EB064(void);
extern void func_801EB0A4(void);
extern void func_801EB014(void);
s32 func_801EADC4(void) {
extern u8 D_80078EB1;
extern u8 D_80078E78[];
extern u8 D_801EC1D0[];
extern u8 D_801EC2F4[];
extern s32 D_801F2624;
extern s32 D_801F24A4;
u8 *p;
s32 var;
func_801EAFE4();
p = D_80078E78;
var = func_80029504();
if (var < 200)
goto L;
if (var >= 600)
goto L;
if (func_801EAF84(D_80078EB1, 13, 24) && (u32)(var - 0x136) < 0x46) {
((void (*)(s32, void *, void *))func_801EAF9C)(10, D_801EC1D0, func_801EB064);
func_80029124(0x112, 1);
} else {
((void (*)(s32, void *, void *))func_801EAF9C)(10, 0, 0);
}
if (func_801EAF84(p[0x39], 13, 24) && (u32)(var - 0x136) < 0x46) {
((void (*)(s32, void *, void *))func_801EAF9C)(11, D_801EC2F4, func_801EB0A4);
} else {
((void (*)(s32, void *, void *))func_801EAF9C)(11, 0, 0);
}
goto M;
L:
((void (*)(s32, void *, void *))func_801EAF9C)(10, 0, 0);
((void (*)(s32, void *, void *))func_801EAF9C)(11, 0, 0);
M:
func_801EB014();
if (!D_801F2624) {
return 0;
}
return (s32)((u8 *)&D_801F24A4);
}
extern s32 D_801F24AC[];
extern s32 D_801F24A8[];
extern s32 D_801F2624;
extern s32 func_801EADC4();
s32 func_801EAF00(void *a0) {
s32 n;
s32 i;
s32 end;
func_801EADC4();
n = D_801F2624;
if (n > 0) {
i = 0;
end = n * 16;
do {
if (*(s32 *)((char *)D_801F24AC + i) == (s32)a0) {
return *(s32 *)((char *)D_801F24A8 + i);
}
i += 16;
} while (i < end);
}
return 0;
}
s32 func_801EAF84(s32 arg0, s32 arg1, s32 arg2) {
return (arg1 <= arg0) && (arg0 < arg2);
}
void func_801EAF9C(s32 arg0, s32 arg1, s32 arg2) {
extern s32 D_801F2624;
extern s32 D_801F24AC[];
extern s32 D_801F24A8[];
extern s32 D_801F24B0[];
s32 i;
i = D_801F2624;
D_801F24AC[i * 4] = arg0;
D_801F24A8[i * 4] = arg1;
D_801F24B0[i * 4] = arg2;
D_801F2624 = i + 1;
}
extern s32 D_801F24A4;
extern s32 D_801F2624;
extern void func_80016714(s8*, s32);
void func_801EAFE4(void) {
((void (*)(void *, s32))func_80016714)(&D_801F24A4, 0x180);
D_801F2624 = 0;
}
INCLUDE_ASM("asm/md_SC04_027/nonmatchings/md_SC04_027_jr_801EA8C0", func_801EB014);
extern s32 func_80029504(void);
extern void func_80029124(s32 a0, s32 a1);
extern void func_80029514(s32 arg0);
void func_801EB064(void) {
func_80029124(0xFD, 0x1);
if (((s32 (*)(void))func_80029504)() == 0x136) {
((void (*)(s32))func_80029514)(0x140);
}
}
extern s32 func_80029504(void);
extern void func_80029124(s32 a0, s32 a1);
extern void func_80029514(s32 arg0);
void func_801EB0A4(void) {
func_80029124(0xFE, 0x1);
if (((s32 (*)(void))func_80029504)() == 0x136) {
((void (*)(s32))func_80029514)(0x140);
}
}
+285 -1
View File
@@ -4705,7 +4705,291 @@ extern s32 D_801EDA44;
INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017D2DC", func_80181A4C);
INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017D2DC", func_80181E04);
__asm__(".text\n.align 2\n.globl func_80181E04\n.ent\tfunc_80181E04\n"
"func_80181E04:\n.frame $sp,88,$31\n.mask 0x80000000,-8\n.fmask 0,0\n"
".set\tnoreorder\n"
".set noat\n"
"addiu $sp, $sp, -88\n"
"lui $a0, %hi(D_801F3168)\n"
"addiu $a0, $a0, %lo(D_801F3168)\n"
"sw $ra, 80($sp)\n"
"jal func_800547D8\n"
"addiu $a1, $sp, 16\n"
"jal func_80052E38\n"
"addiu $a0, $sp, 16\n"
"addiu $t8, $sp, 48\n"
"addiu $t3, $sp, 56\n"
"addiu $t7, $sp, 68\n"
"lui $t2, 255\n"
"ori $t2, $t2, 65535\n"
"lui $t5, 65280\n"
"lui $t1, %hi(D_801EDA44)\n"
"addiu $t1, $t1, %lo(D_801EDA44)\n"
"addu $a2, $zero, $zero\n"
"lui $v1, %hi(D_800A6610)\n"
"addiu $v1, $v1, %lo(D_800A6610)\n"
"lui $v0, %hi(D_800B9A02)\n"
"lhu $v0, %lo(D_800B9A02)($v0)\n"
"lui $t0, %hi(D_800A5E60)\n"
"lw $t0, %lo(D_800A5E60)($t0)\n"
"sll $v0, $v0, 14\n"
"addu $t6, $v0, $v1\n"
"addiu $a3, $t0, 18\n"
".L80181E6C:\n"
"lw $v0, 0($t1)\n"
"nop\n"
"beqz $v0, .L80182208\n"
"nop\n"
"lui $at, %hi(D_801EDA4E)\n"
"addu $at, $at, $a2\n"
"lhu $v0, %lo(D_801EDA4E)($at)\n"
"nop\n"
"sh $v0, 48($sp)\n"
"lui $at, %hi(D_801EDA52)\n"
"addu $at, $at, $a2\n"
"lhu $v0, %lo(D_801EDA52)($at)\n"
"nop\n"
"sh $v0, 50($sp)\n"
"lui $at, %hi(D_801EDA56)\n"
"addu $at, $at, $a2\n"
"lhu $v0, %lo(D_801EDA56)($at)\n"
"nop\n"
"sh $v0, 52($sp)\n"
"lui $at, %hi(D_801EDA72)\n"
"addu $at, $at, $a2\n"
"lhu $v0, %lo(D_801EDA72)($at)\n"
"nop\n"
"sh $v0, 56($sp)\n"
"lui $at, %hi(D_801EDA76)\n"
"addu $at, $at, $a2\n"
"lhu $v0, %lo(D_801EDA76)($at)\n"
"nop\n"
"sh $v0, 58($sp)\n"
"lui $at, %hi(D_801EDA7A)\n"
"addu $at, $at, $a2\n"
"lhu $v0, %lo(D_801EDA7A)($at)\n"
"nop\n"
"sh $v0, 60($sp)\n"
"lui $at, %hi(D_801EDA4C)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA4C)($at)\n"
"lui $at, %hi(D_801EDA7C)\n"
"addu $at, $at, $a2\n"
"lw $a0, %lo(D_801EDA7C)($at)\n"
"lui $at, %hi(D_801EDA50)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA50)($at)\n"
"lui $at, %hi(D_801EDA80)\n"
"addu $at, $at, $a2\n"
"lw $a1, %lo(D_801EDA80)($at)\n"
"addu $v0, $v0, $a0\n"
"lui $at, %hi(D_801EDA4C)\n"
"addu $at, $at, $a2\n"
"sw $v0, %lo(D_801EDA4C)($at)\n"
"lui $at, %hi(D_801EDA54)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA54)($at)\n"
"addu $v1, $v1, $a1\n"
"lui $at, %hi(D_801EDA50)\n"
"addu $at, $at, $a2\n"
"sw $v1, %lo(D_801EDA50)($at)\n"
"lui $at, %hi(D_801EDA84)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA84)($at)\n"
"lui $at, %hi(D_801EDA48)\n"
"addu $at, $at, $a2\n"
"lw $a0, %lo(D_801EDA48)($at)\n"
"addu $v0, $v0, $v1\n"
"lui $at, %hi(D_801EDA54)\n"
"addu $at, $at, $a2\n"
"sw $v0, %lo(D_801EDA54)($at)\n"
"bnez $a0, .L80182000\n"
"addiu $v0, $a0, -1\n"
"lui $at, %hi(D_801EDA70)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA70)($at)\n"
"lui $at, %hi(D_801EDA7C)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA7C)($at)\n"
"lui $at, %hi(D_801EDA80)\n"
"addu $at, $at, $a2\n"
"lw $a0, %lo(D_801EDA80)($at)\n"
"lui $at, %hi(D_801EDA84)\n"
"addu $at, $at, $a2\n"
"lw $a1, %lo(D_801EDA84)($at)\n"
"addu $v0, $v0, $v1\n"
"lui $at, %hi(D_801EDA70)\n"
"addu $at, $at, $a2\n"
"sw $v0, %lo(D_801EDA70)($at)\n"
"lui $at, %hi(D_801EDA74)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA74)($at)\n"
"lui $at, %hi(D_801EDA78)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA78)($at)\n"
"addu $v0, $v0, $a0\n"
"addu $v1, $v1, $a1\n"
"lui $at, %hi(D_801EDA74)\n"
"addu $at, $at, $a2\n"
"sw $v0, %lo(D_801EDA74)($at)\n"
"lui $at, %hi(D_801EDA78)\n"
"addu $at, $at, $a2\n"
"sw $v1, %lo(D_801EDA78)($at)\n"
"j .L8018200C\n"
"nop\n"
".L80182000:\n"
"lui $at, %hi(D_801EDA48)\n"
"addu $at, $at, $a2\n"
"sw $v0, %lo(D_801EDA48)($at)\n"
".L8018200C:\n"
"lui $at, %hi(D_801EDA7C)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA7C)($at)\n"
"lui $at, %hi(D_801EDA88)\n"
"addu $at, $at, $a2\n"
"lw $a0, %lo(D_801EDA88)($at)\n"
"lui $at, %hi(D_801EDA80)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA80)($at)\n"
"lui $at, %hi(D_801EDA8C)\n"
"addu $at, $at, $a2\n"
"lw $a1, %lo(D_801EDA8C)($at)\n"
"addu $v0, $v0, $a0\n"
"lui $at, %hi(D_801EDA7C)\n"
"addu $at, $at, $a2\n"
"sw $v0, %lo(D_801EDA7C)($at)\n"
"lui $at, %hi(D_801EDA84)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA84)($at)\n"
"addu $v1, $v1, $a1\n"
"lui $at, %hi(D_801EDA80)\n"
"addu $at, $at, $a2\n"
"sw $v1, %lo(D_801EDA80)($at)\n"
"lui $at, %hi(D_801EDA90)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA90)($at)\n"
"lui $at, %hi(D_801EDA7C)\n"
"addu $at, $at, $a2\n"
"lw $a0, %lo(D_801EDA7C)($at)\n"
"addu $v0, $v0, $v1\n"
"lui $at, %hi(D_801EDA84)\n"
"addu $at, $at, $a2\n"
"sw $v0, %lo(D_801EDA84)($at)\n"
"blez $a0, .L801820B8\n"
"nop\n"
"lui $at, %hi(D_801EDA4C)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA4C)($at)\n"
"lui $at, %hi(D_801EDA58)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA58)($at)\n"
"j .L801820D8\n"
"slt $v0, $v0, $v1\n"
".L801820B8:\n"
"lui $at, %hi(D_801EDA4C)\n"
"addu $at, $at, $a2\n"
"lw $v0, %lo(D_801EDA4C)($at)\n"
"lui $at, %hi(D_801EDA58)\n"
"addu $at, $at, $a2\n"
"lw $v1, %lo(D_801EDA58)($at)\n"
"nop\n"
"slt $v0, $v0, $v1\n"
".L801820D8:\n"
"beqz $v0, .L801820EC\n"
"nop\n"
"lui $at, %hi(D_801EDA44)\n"
"addu $at, $at, $a2\n"
"sw $zero, %lo(D_801EDA44)($at)\n"
".L801820EC:\n"
"lw $v0, 0($t1)\n"
"nop\n"
"beqz $v0, .L80182208\n"
"nop\n"
"lwc2 $0, 0($t8)\n"
"lwc2 $1, 4($t8)\n"
"lwc2 $2, 0($t3)\n"
"lwc2 $3, 4($t3)\n"
"lwc2 $4, 0($t3)\n"
"lwc2 $5, 4($t3)\n"
"nop\n"
"nop\n"
"rtpt\n"
"addiu $v0, $sp, 64\n"
".word 0x484cf800\n"
"nop\n"
"sw $t4, 0($v0)\n"
"lui $v1, 32645\n"
"lw $v0, 64($sp)\n"
"ori $v1, $v1, 57344\n"
"and $v0, $v0, $v1\n"
"bnez $v0, .L80182208\n"
"addiu $v1, $t0, 12\n"
"addiu $v0, $t0, 20\n"
"swc2 $12, 0($v1)\n"
"swc2 $13, 0($v0)\n"
"addiu $v1, $sp, 72\n"
"addiu $v0, $sp, 76\n"
"swc2 $17, 0($t7)\n"
"swc2 $18, 0($v1)\n"
"swc2 $19, 0($v0)\n"
"lw $v1, 68($sp)\n"
"lw $v0, 72($sp)\n"
"nop\n"
"addu $a1, $v1, $v0\n"
"bgez $a1, .L80182184\n"
"lui $v1, 57600\n"
"addiu $a1, $a1, 7\n"
".L80182184:\n"
"ori $v1, $v1, 32\n"
"addiu $v0, $zero, 5\n"
"sb $v0, -15($a3)\n"
"addiu $v0, $zero, 82\n"
"sb $v0, -7($a3)\n"
"addiu $v0, $zero, 224\n"
"sb $v0, -9($a3)\n"
"addiu $v0, $zero, 136\n"
"sb $v0, -8($a3)\n"
"addiu $v0, $zero, 64\n"
"sb $v0, -2($a3)\n"
"addiu $v0, $zero, 96\n"
"sb $v0, -1($a3)\n"
"addiu $v0, $zero, 16\n"
"sw $v1, -14($a3)\n"
"sb $zero, -10($a3)\n"
"sb $v0, 0($a3)\n"
"addiu $a3, $a3, 24\n"
"sra $v1, $a1, 3\n"
"sll $v1, $v1, 2\n"
"addu $v1, $v1, $t6\n"
"lw $a0, 0($t0)\n"
"lw $v0, 0($v1)\n"
"and $a0, $a0, $t5\n"
"and $v0, $v0, $t2\n"
"or $a0, $a0, $v0\n"
"sw $a0, 0($t0)\n"
"and $a0, $t0, $t2\n"
"lw $v0, 0($v1)\n"
"addiu $t0, $t0, 24\n"
"and $v0, $v0, $t5\n"
"or $v0, $v0, $a0\n"
"sw $v0, 0($v1)\n"
".L80182208:\n"
"addiu $t1, $t1, 80\n"
"lui $v0, %hi(D_801F2A44)\n"
"addiu $v0, $v0, %lo(D_801F2A44)\n"
"slt $v0, $t1, $v0\n"
"bnez $v0, .L80181E6C\n"
"addiu $a2, $a2, 80\n"
"lui $at, %hi(D_800A5E60)\n"
"sw $t0, %lo(D_800A5E60)($at)\n"
"lw $ra, 80($sp)\n"
"addiu $sp, $sp, 88\n"
"jr $ra\n"
"nop\n"
".set at\n"
".set reorder\n"
".end\tfunc_80181E04\n");
extern u8 D_801F2A44[];
extern u8 D_801F2A48[];
+26 -1
View File
@@ -3357,7 +3357,32 @@ DEFINE_func_8017D808() /* dedup: shared engine-core @0x8017D808 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017D9A0);
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017C340", func_8017D9F4);
s32 func_8017D9F4(s32 arg0) {
extern struct { s32 word0; s32 word4; } cdFileLocTable[];
extern s32 D_800C7C60;
extern s32 *D_800C7C64;
extern s32 D_800A2E20;
extern s32 D_801CAE4C;
extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4);
extern u16 D_80185EFC[];
extern s16 D_80185EFE[];
s32 *p;
u16 t;
s32 w;
s32 x;
t = *(u16 *)((s8 *)D_80185EFC + arg0 * 4);
w = *(s16 *)((s8 *)D_80185EFE + arg0 * 4);
D_800C7C64 = &D_800A2E20;
p = &D_800C7C60;
*p = w;
x = (s16)t;
if (x <= 0) {
return 1;
}
return func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[x], D_801CAE4C, p);
}
DEFINE_func_8017DA84() /* dedup: shared engine-core @0x8017DA84 (src/shared) */
+11 -1
View File
@@ -3256,7 +3256,17 @@ void func_80181600(void)
}
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8018057C", func_80181688);
extern void func_80029514(s32);
extern s16 func_801816FC(s32);
void func_80181688(void)
{
if (func_801816FC(0xC) >= 3 && func_801816FC(0x18) >= 3 && func_801816FC(0x1F) >= 3) {
func_80029514(0x2EE);
}
return;
}
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8018057C", func_801816FC);
+20 -1
View File
@@ -5733,7 +5733,26 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8018185
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181918);
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801819D0);
extern void func_800D20C0(void *a0, void *a1, s32 a2);
extern void func_800D23D0(void *a0);
typedef struct { u8 b[8]; } Copy8;
void func_801819D0(s32 a0) {
u16 sp10[3];
u16 sp18[4];
sp10[0] = *(u16 *)(a0 + 6);
sp10[1] = *(u16 *)(a0 + 0xA);
sp10[2] = *(u16 *)(a0 + 0xE);
func_800D20C0(sp10, sp18, 1);
func_800D23D0(sp18);
sp18[2] = sp18[1] << 2;
if (*(s32 *)(a0 + 0x34) != 0) {
*(Copy8 *)(*(s32 *)(a0 + 0x34) + 0x10) = *(Copy8 *)sp18;
}
}
void func_80181A70(void *a0)
{
+1 -1
View File
@@ -8497,7 +8497,7 @@ extern void func_80187994(s32, s32, s32, s32);
extern void func_80187778(s32 *a0, s32 a1);
extern s32 func_801788B8(s32 arg0, s32 arg1);
extern void func_80184350(void *a0);
extern void func_801843DC(void *a0);
extern s32 func_801843DC();
void func_801840E4(void *a0) {
+45 -3
View File
@@ -4160,7 +4160,14 @@ void func_80181340(s32 a0) {
void func_80181388(void) {
}
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_80181390);
extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
extern s32 func_80171990(u8 *a0);
void func_80181390(s32 arg0) {
func_80146994(0x1A, arg0, 0x6E706E8, 0);
func_80171990((u8 *)arg0);
}
extern s32 func_8014C050(s32 arg0, s32 arg1);
@@ -4274,7 +4281,33 @@ void func_801815D4(void) {
}
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_8018166C);
extern void func_8012A018(s32 a0, s32 a1);
extern void func_8012A094(s32 a0);
extern void func_801817A4(void *a0);
extern u8 D_80126948[];
extern s32 D_80126954;
extern s32 D_8012695C;
extern s16 D_80126968;
extern s16 D_8012696A;
extern s16 D_8012696C;
extern s16 D_80126976;
extern s16 D_80126978;
extern s16 D_8012697A;
void func_8018166C(void) {
D_80126954 = 0x190;
D_8012695C = 0x3E8;
D_80126968 = 0xA6;
D_8012696A = 0x800;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0x41;
D_8012697A = 0;
func_8012A018(func_801817A4, 2);
func_8012A094(D_80126948);
func_801817A4(D_80126948);
}
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_80181708);
@@ -5833,7 +5866,16 @@ void func_80184330(s32 arg0) {
}
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_80184384);
extern void func_8012BE54(s32 a0);
extern s16 D_80126CBA;
extern s32 func_80184D28();
void func_80184384(s32 param_1) {
if (((s32 (*)(s32))func_8012BE54)(param_1) <= 0x40000 && D_80126CBA == 0 && func_80184D28(param_1) == 0) {
*(s16 *)(param_1 + 2) = 5;
}
}
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_801843E4);
+14 -1
View File
@@ -4047,7 +4047,20 @@ void func_8017E9D4(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_8017EA74);
extern void func_8002D4C8(s32 a0, s32 a1);
void func_8017EA74(void *a0) {
if (*(s16 *)((s32)a0 + 0xFC) == 0) {
*(u16 *)((s32)a0 + 0xA) -= 4;
*(u16 *)((s32)a0 + 0xFE) += 4;
if (*(s16 *)((s32)a0 + 0xFE) >= 0xC0) {
*(s16 *)((s32)a0 + 0x2) = 2;
func_8002D4C8(0x746, 0);
func_8002D4C8(4, 0x745);
}
}
}
void func_8017EAE4(void) {
}
+101 -6
View File
@@ -3882,7 +3882,19 @@ void func_80180D88(void) {
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80180DC8);
void func_80180DC8(void) {
extern u8 D_8018EB90[];
extern u8 D_8018EC1C;
extern u8 *D_801274C8;
extern void *D_801274CC;
extern s32 D_8012704C;
D_801274C8 = D_8018EB90;
D_801274CC = (void *)&D_8018EC1C;
func_80181774(1);
D_8012704C = 1;
}
extern void (*D_8018E7A4[])(void);
@@ -4072,9 +4084,30 @@ void func_801811D8(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181214);
extern void func_8018125C();
void func_80181214(int param_1)
{
s32 s0;
s0 = param_1;
func_80171990((u8 *)param_1);
func_80146994(0x19, s0, 0x6920693, 0);
func_8018125C(s0);
}
extern s32 func_8014C050(s32 a0, s32 a1);
extern void func_80171928(void *a0);
extern u8 D_800AE6BD;
void func_8018125C(void *a0) {
if (func_8014C050((s32)a0, 0x19) == 0) {
D_800AE6BD = D_800AE6BD + 1;
func_80171928(a0);
}
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_8018125C);
extern void func_8016EE40(s32 a0, s32 a1, s32 a2);
extern s32 D_8018E7DC;
@@ -4123,7 +4156,33 @@ void func_801812D8(void) {
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_8018136C);
void func_8018136C(void) {
extern s32 D_80126954;
extern s32 D_8012695C;
extern s16 D_80126968;
extern s16 D_8012696A;
extern s16 D_8012696C;
extern s16 D_80126976;
extern s16 D_80126978;
extern s16 D_8012697A;
extern u8 D_80126948[];
extern void func_80181404(void *);
extern void func_8012A018(s32, s32);
extern void func_8012A094(s32);
D_80126954 = 0x190;
D_8012695C = 0x3E8;
D_80126968 = 0x35;
D_8012696A = 0;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0x73;
D_8012697A = 0;
func_8012A018((s32)func_80181404, 1);
func_8012A094((s32)D_80126948);
func_80181404((void *)D_80126948);
}
extern void (*D_8018E7EC[])(void);
@@ -4350,7 +4409,18 @@ L_E78:
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181A2C);
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181A84);
extern void func_80181AD0(s32 a0, s32 a1);
extern void func_80181B14(void);
void func_80181A84(s32 a0, s32 a1) {
u16 v = *(u16 *)a0;
if (v != 0x178 && v != 0x1E8) {
func_80181AD0(a0 + 4, a1);
} else {
((void (*)(s32, s32, s32))func_80181B14)(a0 + 4, a1, 0xC0);
}
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181AD0);
@@ -4375,7 +4445,32 @@ void func_80181B60(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181BDC);
void func_80181BDC(void *arg0)
{
extern void func_8012C354(s32 a0, void *a1);
extern void func_8012A828(s32 a0, void *a1);
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2);
extern s32 D_80199DD8;
extern s32 D_80199E1C;
extern u8 D_8019C84C[];
if (((s32 (*)(s32, void *))func_8012C354)((s32)arg0, &D_80199DD8)) {
*(u8 *)((char *)arg0 + 0xC0) = 1;
*(s32 *)((char *)arg0 + 0xB4) = -1;
*(u32 *)((char *)arg0 + 0xC4) |= 1;
*(s32 **)((char *)arg0 + 0xBC) = &D_80199E1C;
*(s32 *)((char *)arg0 + 0xE0) = -((rand() % 8 + 8) << 16);
func_8012A828((s32)arg0, D_8019C84C);
*(s32 *)((char *)arg0 + 0xCC) =
func_8012C658(0x178, *(s16 *)((char *)arg0 + 0x70), (s32)arg0);
if (*(u16 *)((char *)arg0 + 0x70) & 1) {
*(s16 *)((char *)arg0 + 0x2) = 1;
} else {
*(s16 *)((char *)arg0 + 0x2) = 4;
}
}
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181CA8);
+35 -1
View File
@@ -6554,7 +6554,41 @@ void func_80187928(void *a0) {
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80187A30);
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80187F7C);
extern u16 D_800B99DA;
extern u16 D_8018F154[];
extern s16 D_801BC9E8[];
extern s32 D_8018F174;
extern void func_800183E0(s32 a0);
void func_80187F7C(void) {
u16 *src;
s16 *dst;
s32 i;
s32 m;
s32 w;
s32 v;
s32 pad[2];
src = D_8018F154;
i = 0;
m = D_800B99DA & 0xF;
dst = &D_801BC9E8[0xF - m];
for (; i <= m; i++) {
w = *src++;
*dst++ = w | -0x8000;
}
dst = D_801BC9E8;
if (15 - m > 0) {
i = 0;
do {
v = *src++;
*dst++ = v | -0x8000;
i++;
} while (i < 15 - m);
}
func_800183E0(&D_8018F174);
}
extern void (*D_8018F19C[])(void);
+1 -1
View File
@@ -3584,7 +3584,7 @@ s32 func_8017F434(void) {
extern s32 func_8012C044(void *);
extern void (*D_8019C0AC[])(void);
extern void func_80180CF4(void *);
extern void func_80180D2C(void *);
extern void func_80180D2C();
void func_8017F43C(void *a0)
{
+162 -9
View File
@@ -2894,7 +2894,21 @@ INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_8017FF6
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_8017FFC8);
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180094);
extern void func_8012BE54(s32 a0);
extern void func_8012B21C(void *a0);
extern void func_8012E88C(s32 a0);
extern void func_80143994(s32 *a0, s32 a1);
void func_80180094(void *arg0) {
if (((s32 (*)(s32))func_8012BE54)((s32)arg0) <= 0x40000) {
*(s16 *)((char *)arg0 + 0x2) = 9;
func_8012B21C(arg0);
func_8012E88C((s32)arg0);
*(s32 *)((char *)arg0 + 0xCC) =
((s32 (*)(s32 *, s32))func_80143994)(arg0, 0x1000);
}
}
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_801800F0);
@@ -2903,7 +2917,7 @@ INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_8018027
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_8018035C);
extern s32 D_8019BFAC;
extern void func_80180D2C(void);
extern void func_80180D2C();
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8012A828(s32*, s32);
extern void func_80180AF0(void);
@@ -2917,19 +2931,41 @@ void func_8018066C(s32 *a0) {
extern void func_80180AF0(void);
extern void func_80180D2C(void);
extern void func_80180D2C();
void func_801806B8(s32 a0) {
func_80180AF0();
((void (*)(s32))func_80180D2C)(a0);
}
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_801806E8);
extern void func_8012B14C(s32 a0, s32 a1);
extern s32 D_8019C104;
extern s32 D_8019C114;
extern s32 D_8019BFAC;
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80180D2C();
extern void func_80180AF0(void);
void func_801806E8(s32 param_1) {
*(u8 *)(param_1 + 0xC2) = 0;
*(u8 *)(param_1 + 0xC3) = 0;
func_80180AF0();
if (*(u16 *)(param_1 + 0x5E) == 9 || *(u16 *)(param_1 + 0x5E) == 0x1C) {
func_8012B14C(param_1, (s32)&D_8019C104);
} else {
func_8012B14C(param_1, (s32)&D_8019C114);
}
((void (*)(s32, void *))func_8012A828)((s32)param_1, &D_8019BFAC);
((void (*)(s32))func_80180D2C)(param_1);
}
void func_8018076C(s32 param_1) {
extern void func_80180C40(s32);
extern void func_80180D2C(void);
extern void func_80180D2C();
extern void func_8012DBD0(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_8012CC64(s32 a0, void *a1);
extern s32 func_8012CC1C(s32 a0, void *a1);
@@ -3088,7 +3124,17 @@ LAB_80180740:
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180AF0);
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180B54);
extern void func_8012A828(s32 *a0, s32 a1);
extern s32 func_8012B030(u8 *a0);
extern void (*D_80182098[])(void);
void func_80180B54(void *arg0) {
*(s16 *)((char *)arg0 + 0x2) = 1;
*(s16 *)((char *)arg0 + 0x5c) = *(u16 *)(*(s32 *)((char *)arg0 + 0x78) + 0x2);
func_8012A828(arg0, D_80182098);
func_8012B030(arg0);
}
void func_80180BA0(void *a0) {
@@ -3126,7 +3172,39 @@ extern void func_80180E10(s32 arg0);
}
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180C40);
void func_80180C40(s32 a0)
{
extern void func_8012E8A8(u8 *a0);
extern void func_80180CF4(s32);
extern void func_801439C0(u8 *a0);
u16 flags = *(u16 *)(a0 + 0x70);
if ((flags & 2) != 0) {
if ((flags & 0x10) != 0) {
*(s16 *)(a0 + 0x2) = 8;
*(s8 *)(a0 + 0xC1) = 0;
*(s16 *)(a0 + 0x5E) = 0;
*(s16 *)(a0 + 0x5C) = *(u16 *)(*(s32 *)(a0 + 0x78) + 0x2);
func_8012E8A8((u8 *)a0);
*(s16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x88);
*(s16 *)(a0 + 0xA) = *(u16 *)(a0 + 0x8A);
*(s16 *)(a0 + 0xE) = *(u16 *)(a0 + 0x8C);
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0;
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = 0;
func_8012B2CC(a0);
{
s32 temp = *(s32 *)(a0 + 0xCC);
if (temp != 0) {
func_801439C0((u8 *)temp);
}
}
return;
}
}
func_80180CF4(a0);
}
extern void func_80016714(void *a0, s32 a1);
extern void func_8012C098(void);
@@ -3138,9 +3216,84 @@ extern void func_80016714(void *a0, s32 a1);
}
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180D2C);
typedef struct { s16 a, b, c, d; } V8x_80180D2C;
extern u8 D_800AF630[];
extern s32 D_8019BFFC;
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
extern s32 func_8004787C(s32 a0);
void func_80180D2C(void *arg0) {
register s32 v0 __asm__("$2");
register s32 s0 __asm__("$16");
register s32 s1 __asm__("$17") = (s32)arg0;
register u8 *s2 __asm__("$18") = (u8 *)D_800AF630;
s32 sp10[4];
v0 = *(s32 *)(s1 + 0xD0);
if (v0 != 0) {
s0 = v0;
func_8012F214((s32)arg0, (s32)&D_8019BFFC, (s32)sp10);
*(V8x_80180D2C *)(s0 + 8) = *(V8x_80180D2C *)sp10;
if (*(s32 *)(*(s32 *)(s1 + 0x20) + 4) < 0) {
*(s32 *)(s0 + 4) |= (s32)0x80000000;
} else {
__asm__ __volatile__("");
*(s32 *)(s0 + 4) &= 0x7FFFFFFF;
}
{
u16 x = *(u16 *)(s2 + 0xA3AA);
s16 r = (func_8004787C(((x * 7) << 3) & 0x7F8) >> 4) + 0x455;
*(s16 *)(s0 + 0x1A) = r;
*(s16 *)(s0 + 0x18) = r;
}
}
}
typedef struct {
s16 f00;
s16 f02;
s16 f04;
s16 f06;
s16 f08;
s16 f0A;
s16 f0C;
s16 f0E;
s32 f10;
} Loc_80180E10;
extern s32 rand(void);
extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3);
extern s32 func_8012C51C(void *a0, s32 a1);
void func_80180E10(s32 arg0) {
Loc_80180E10 loc;
u32 buf[2];
s32 i;
register u32 *bp __asm__("$19");
i = 0;
bp = buf;
loc.f06 = 0x33;
loc.f0A = 0;
loc.f08 = 0;
loc.f10 = 0;
loc.f0E = 0;
loc.f0C = 0x7FFF;
while (i < 5) {
func_8012B0B4(bp, rand() % 4096, rand() % 64);
loc.f00 = *(u16 *)(arg0 + 6) + *(s32 *)buf;
loc.f02 = *(u16 *)(arg0 + 0xA) - 0x60;
loc.f04 = *(u16 *)(arg0 + 0xE) + (*(s32 *)buf >> 16);
func_8012C51C(&loc, arg0);
i++;
}
}
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180E10);
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180F08);
+31 -2
View File
@@ -7467,7 +7467,26 @@ void func_80185C5C(u16 id)
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80185D04);
extern s32 D_801EFC64[];
void func_80185D9C(void *a0);
void func_80185D04(s32 a0)
{
s32 i = 6;
s32 h = 0x1000;
s32 *p = D_801EFC64;
for (; i < 0x15; i++, p++) {
s32 rec = *p;
*(u16 *)(*(s32 *)(rec + 0x20) + 0x18) = h;
*(u16 *)(*(s32 *)(rec + 0x20) + 0x1A) = h;
*(u16 *)(rec + 0x86) &= ~1;
if (a0 != 0) {
func_80185D9C((void *)rec);
}
}
}
void func_80185D9C(void *a0)
{
@@ -10034,7 +10053,17 @@ void func_80189EAC(s32 arg0) {
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80189EFC);
extern void func_80189F6C();
void func_80189EFC(s32 arg0) {
u16 arr[3];
arr[0] = *(u16 *)(arg0 + 6) + (rand() & 0x3F) - 0x20;
arr[1] = *(u16 *)(arg0 + 0xA) - 0x40;
arr[2] = *(u16 *)(arg0 + 0xE) + (rand() & 0xFF) - 0x80;
func_80189F6C(arg0, arr);
}
#include "common.h"
+13 -1
View File
@@ -4805,7 +4805,19 @@ extern s32 func_8012AD50(void *a0);
}
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FBCC);
extern void func_8012C1B8(void);
extern s32 func_8012AD50(void *a0);
extern s32 D_80199608;
void func_8017FBCC(void *a0) {
s32 v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((s32)a0 + 0x20) = v0;
if (v0 != 0) {
func_8018227C(a0, &D_80199608);
func_8012AD50(a0);
}
}
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FC14);
+38 -1
View File
@@ -3118,7 +3118,44 @@ INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_80182FA
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_80183004);
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_8018305C);
extern s32 func_801844BC(void *a0, void *a1);
extern void func_80183100();
extern short D_80191C54;
extern short D_80191C44;
extern s32 func_801848AC(s32 arg0, s32 arg1);
extern void func_801849B8(s32 *a0, s32 a1);
extern s32 func_801788B8(s32 arg0, s32 arg1);
void func_8018305C(void *arg0) {
s32 v;
void *v1;
if (func_801844BC(arg0, &D_80191C54) != 0) {
v = func_801848AC(6, 7);
if (v == 0) {
v = func_801848AC(7, 0x10);
if (v == 0) {
v = func_801848AC(0x10, 0x14);
if (v == 0) {
v = 1;
} else {
v = 0xC;
}
} else {
v = 6;
}
} else {
v = 5;
}
*(s16 *)((char *)arg0 + 0x2) = v;
__asm__ __volatile__("");
func_801849B8((s32 *)arg0, (s32)&D_80191C44);
v1 = *(void **)((char *)arg0 + 0x68);
*(s16 *)((char *)v1 + 0xC) = 0x7FFF;
func_801788B8((s32)arg0, (s32)&func_80183100);
}
}
INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_80183100);
+41 -1
View File
@@ -4736,7 +4736,47 @@ next:
}
INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC", func_8017FD74);
extern u8 D_801202A0[];
extern s32 D_801A14A8;
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_80015978(s32 a0, s32 *a1);
extern s32 func_80013328(s32 a0, s32 a1);
extern void func_8012F2E8(s32 a0, s32 a1, s32 a2);
void func_8017FD74(s32 arg0)
{
s16 v;
s32 i;
s32 best;
unsigned short *p;
s32 buf[2];
best = 0x7FFFFFFF;
i = 0;
p = (unsigned short *)D_801202A0;
D_801A14A8 = 0;
loop:
if (*p == 0x26E) {
v = (s16)func_80013328(arg0 + 4, (s32)(p + 2));
if (v < best) {
best = v;
D_801A14A8 = (s32)p;
}
}
__asm__("" ::
"r"(best));
i++;
p += 0x86;
if (i < 0x60) {
goto loop;
}
*(s16 *)(arg0 + 0x208) = 0;
func_80015978(arg0 + 4, buf);
func_8012F2E8(D_801A14A8, (s32)buf, arg0 + 0x20C);
*(s32 *)(arg0 + 0x204) = D_801A14A8;
func_8002D4C8(0x8B0, 0);
}
extern void func_80015954(s32 a0, s32 a1);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
+23 -3
View File
@@ -4038,7 +4038,7 @@ void func_8017E57C(u8 *a0) {
INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC", func_8017E5B8);
extern s32 func_8017E9A8(void);
extern s32 func_8017E9A8();
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_80171928(void *a0);
@@ -4072,7 +4072,7 @@ void func_8017E668(void *a0) {
INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC", func_8017E6A4);
extern s32 func_8017E9A8(void);
extern s32 func_8017E9A8();
extern void func_8002D4C8(s32 a0, s32 a1);
extern s32 func_80171990(u8*);
@@ -4121,7 +4121,27 @@ void func_8017E7EC(void *arg0) {
INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC", func_8017E8CC);
INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC", func_8017E9A8);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
extern void func_80015954(s32 a0, s32 a1);
s32 func_8017E9A8(s32 param_1) {
s32 sp10[2];
u16 w;
s32 t;
s32 e;
t = *(s32 *)(param_1 + 0x204);
e = *(s32 *)(t + 0x20);
if (t != 0) {
*(u16 *)(e + 0x12) += 0x80;
func_8012F14C(e + 0x34, (s32)param_1 + 0x20C, (s32)sp10);
func_80015954((s32)sp10, (s32)param_1 + 4);
}
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x80;
*(u16 *)(param_1 + 0x208) = w = *(u16 *)(param_1 + 0x208) + 0x80;
return (s16)w == 0x800;
}
+14 -1
View File
@@ -4792,7 +4792,20 @@ void func_80181C04(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80181D40);
extern void func_8012C218(void *a0);
void func_80181D40(s32 param_1)
{
s32 iVar1;
func_80181964(param_1);
iVar1 = *(s32 *)(param_1 + 8) + *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x14);
*(s32 *)(param_1 + 8) = iVar1;
if (0xFFFFFF < iVar1) {
func_8012C218((void *)param_1);
}
}
extern void (*D_80190238[])(void);
extern void *func_80185C6C();
+18 -18
View File
@@ -3532,7 +3532,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void *arg0); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -4357,7 +4357,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -7320,7 +7320,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -13343,7 +13343,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -21163,7 +21163,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -22397,7 +22397,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -32726,7 +32726,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -40056,7 +40056,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -40983,7 +40983,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -98930,7 +98930,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void *arg0); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -99755,7 +99755,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -102718,7 +102718,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -108741,7 +108741,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -116561,7 +116561,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -117795,7 +117795,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -128124,7 +128124,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -135454,7 +135454,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \
@@ -136381,7 +136381,7 @@
extern void func_8012956C(void); \
extern void func_8016E95C(void); \
extern void func_801754A8(void); \
extern void func_8013BC7C(void); \
extern void func_8013BC7C(); \
extern void func_8013BCDC(void); \
extern void func_801379FC(void); \
extern void func_8001212C(void); \