feat(decomp): ox wave aj overlays — 61 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-23 13:45:26 -06:00
parent e7ebb1cd45
commit 8fe3918682
8 changed files with 1019 additions and 65 deletions
+60 -5
View File
@@ -105,7 +105,13 @@ INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D298C);
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2A24);
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2AA0);
void func_800D2AA0(u8 *a0) {
if (a0 == 0) {
ResetCallback();
}
func_800D2D68(a0);
}
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2AD8);
@@ -116,7 +122,22 @@ u16 func_800D2C00(s32 *a0) {
}
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2C0C);
extern void func_800D2E64();
void func_800D2C0C(s32 *a0, s32 a1) {
if (a1 & 1) {
*a0 &= 0xF7FFFFFF;
} else {
*a0 |= 0x8000000;
}
if (a1 & 2) {
*a0 |= 0x2000000;
} else {
*a0 &= 0xFDFFFFFF;
}
func_800D2E64(a0, *(u16 *)a0);
}
extern void func_800D2EF8(void);
void func_800D2C88(void) {
@@ -126,7 +147,17 @@ void func_800D2C88(void) {
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2CA8);
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2CE4);
extern u32 func_800D3020(void);
extern s32 func_800D30B8(void);
s32 func_800D2CE4(s32 *a0) {
if (a0 != 0) {
return (((u32 (*)(void))func_800D30B8)() >> 24) & 1;
} else {
return func_800D3020();
}
}
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2D20);
@@ -136,7 +167,27 @@ INCLUDE_RODATA("asm/md_MAIN_003/nonmatchings/md_MAIN_003", D_800CEDF8);
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2D68);
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2E64);
extern s32 *D_800DB674;
extern s32 *D_800DB63C;
extern s32 *D_800DB640;
extern s32 *D_800DB66C;
extern s32 *D_800DB644;
extern void func_800D2F88(s32 a0, s32 a1);
void func_800D2E64(s32 a0, s32 a1) {
u32 s0;
s32 s1;
s1 = a0;
s0 = (u32)a1;
func_800D2F88(a0, a1);
s0 = (s0 >> 5) << 16;
*D_800DB674 |= 0x88;
*D_800DB63C = s1 + 4;
*D_800DB640 = s0 | 0x20;
*D_800DB66C = *(s32 *)s1;
*D_800DB644 = 0x1000201;
}
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2EF8);
@@ -144,7 +195,11 @@ INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D2F88);
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D3020);
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D30B8);
extern s32 *D_800DB670;
s32 func_800D30B8(void) {
return *D_800DB670;
}
INCLUDE_ASM("asm/md_MAIN_003/nonmatchings/md_MAIN_003", func_800D30D0);
+16 -1
View File
@@ -4355,7 +4355,22 @@ void func_8017E578(void *a0) {
}
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E5B4);
void func_8017E5B4(s32 a0) {
extern u16 D_80126B5E;
extern u16 D_80126B62;
extern u16 D_80126B66;
s16 arr[3];
s32 v0;
s32 s0 = a0;
v0 = ratan2(*(s16 *)&D_80126B5E, *(s16 *)&D_80126B66);
*(s16 *)(s0 + 0x22) = (s16)(v0 & 0xFFF);
arr[0] = D_80126B5E;
arr[1] = D_80126B62;
arr[2] = D_80126B66;
func_8017E8A0(s0, arr);
func_8017EA68(s0);
}
extern s32 D_80189464;
extern s16 D_80126ADA;
+295 -19
View File
@@ -3561,7 +3561,7 @@ tail:
extern code_fn D_801A42AC[];
extern s32 func_8017DD84(s32 a0);
extern s32 func_8017DD84();
void func_8017DC3C(int param_1)
{
@@ -3571,11 +3571,58 @@ void func_8017DC3C(int param_1)
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017DC8C);
extern void func_8001C924(void *a0, s32 *a1);
extern void func_8017DD0C();
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017DD0C);
void func_8017DC8C(void *a0)
{
s32 s0 = (s32)a0;
s32 a1;
extern u16 D_801A429C[];
*(u8 *)(s0 + 0xC1) = 0;
*(u16 *)(s0 + 0x5E) = 0;
*(u16 *)(s0 + 0x5C) = 0;
func_80029124((s32)D_801A429C[*(s16 *)(s0 + 0x70)], 1);
a1 = *(s32 *)(s0 + 0xDC);
if (a1 != 0) {
a1 = *(s32 *)(a1 + 4);
if (a1 != 0) {
func_8001C924((void *)*(s32 *)(s0 + 0x20), (s32 *)a1);
}
}
func_8017DD0C((void *)s0);
}
extern s32 D_801A4264;
void func_8017DD0C(s32 a0) {
s32 saved;
s32 i;
saved = *(s32 *)(*(s32 **)(a0 + 0x20) + 8);
*(s32 *)(*(s32 **)(a0 + 0x20) + 8) = D_801A4264;
for (i = 0; i < 5; i++) {
func_8012C658(0x150, i, a0);
}
*(s32 *)(*(s32 **)(a0 + 0x20) + 8) = saved;
}
s32 func_8017DD84(s32 a0)
{
s32 v0 = *(s32 *)(a0 + 0xDC);
if (v0) {
v0 = *(s32 *)(v0 + 0xC);
if (v0) {
((void (*)(s32, s32))v0)(a0, a0 + 0x24);
}
}
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017DD84);
#include "common.h"
@@ -3921,7 +3968,19 @@ void func_8017E72C(void *a0) {
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017E8D4);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017E980);
extern s32 D_801A4FE0;
void func_8017E980(int param_1)
{
*(s32 *)(param_1 + 0x1C) = 0x78;
*(u16 *)(param_1 + 0x5C) &= 0xFFFE;
func_80143CD4(param_1);
func_8002D4C8(0x47B, 0);
func_8002D4C8(0x478, 0);
func_800CB0E8(param_1);
*(s32 *)(param_1 + 0xCC) = (s32)&D_801A4FE0;
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017E9E8);
@@ -3988,9 +4047,43 @@ void func_8017EA88(s32 arg0_)
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017EBB8);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017EC18);
#include "common.h"
extern s32 func_8012BEE8(s32 a0); /* TU:4993/5216/7272, verbatim */
extern void func_8002AC00(s32 arg0); /* TU fn-scope decl form (line 5085) */
extern void func_80130D48(s32 a0);
extern void func_8017EC78();
void func_8017EC18(void *a0) {
*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 4) ^= 0x80000000;
if (func_8012BEE8((s32)a0) != 0) {
func_8002AC00(0xF);
func_80130D48((s32)a0);
func_8017EC78((s32)a0);
}
}
void func_8017EC78(void *arg0) {
func_8002A04C((s32)arg0);
if ((*(s16 *)((char *)arg0 + 0x70) & 0xC000) != 0) {
func_8012C098(arg0);
} else {
s32 a0 = *(s32 *)((char *)arg0 + 0x20);
*(s16 *)((char *)arg0 + 0x2) = 5;
*(s8 *)((char *)arg0 + 0xC1) = 0;
*(s32 *)((char *)arg0 + 0x1C) = 0x78;
*(s16 *)((char *)arg0 + 0x5E) = 0;
*(s16 *)((char *)arg0 + 0x5C) = 0;
*(s32 *)((char *)a0 + 0x4) |= 0x80000000;
*(s16 *)((char *)arg0 + 0xAA) = 0;
*(s16 *)((char *)arg0 + 0x6) = *(u16 *)((char *)arg0 + 0x88);
*(s16 *)((char *)arg0 + 0xA) = *(u16 *)((char *)arg0 + 0x8A);
*(s16 *)((char *)arg0 + 0xE) = *(u16 *)((char *)arg0 + 0x8C);
}
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017EC78);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017ED0C);
@@ -4022,7 +4115,34 @@ void func_8017EEB0(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017EEEC);
extern s32 func_8012C354(s32 a0, s32 a1);
extern void func_8012E8A8(u8 *a0);
void func_8017EEEC(void *a0) {
extern u8 D_801A513C[];
s32 ptr;
unsigned short v1;
unsigned short v0;
if (func_8012C354((s32)a0, (s32)D_801A513C) == 0) {
return;
}
ptr = *(s32 *)((s32)a0 + 0x64);
v1 = *(unsigned short *)(ptr + 0x36);
v0 = *(unsigned short *)((s32)a0 + 0x70);
*(unsigned short *)((s32)a0 + 0xFC) = v1;
if (!(v0 & 1)) {
func_8012E8A8((u8 *)a0);
}
v1 = *(unsigned short *)(*(s32 *)((s32)a0 + 0x64) + 0xFC);
*(unsigned short *)((s32)a0 + 0x2) = 1;
*(unsigned short *)((s32)a0 + 0x104) = v1;
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017EF64);
@@ -4034,9 +4154,44 @@ extern s32 D_801A5170;
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F098);
void func_8017F098(s32 a0) {
s16 sp10[3];
s32 obj;
s32 p;
obj = *(s32 *)(a0 + 0x64);
p = *(s32 *)(a0 + 0xCC);
func_8012F14C(*(s32 *)(obj + 0x20) + 0x34, p, (s32)sp10);
*(u16 *)(a0 + 6) = sp10[0];
*(u16 *)(a0 + 0xA) = sp10[1];
*(u16 *)(a0 + 0xE) = sp10[2];
p += 8;
if (*(s16 *)(p + 6) == 0x7FFF) {
*(s16 *)(a0 + 2) = 1;
*(u16 *)(a0 + 0x70) |= 1;
} else {
*(s32 *)(a0 + 0xCC) = p;
}
}
extern s32 D_801A52F8;
void func_8017F12C(s32 arg0) {
s32 a1;
s32 v1;
a1 = *(s32 *)(arg0 + 0x64);
v1 = *(s16 *)(arg0 + 0xFC);
*(s16 *)(arg0 + 0x2) = 0x5;
*(s32 *)(arg0 + 0xCC) = &D_801A52F8;
*(s32 *)(arg0 + 0x1C) = 0;
*(s16 *)(arg0 + 0x34) = 0;
*(s16 *)(arg0 + 0x100) = 0;
if (v1 == *(s16 *)(a1 + 0x36)) {
*(s32 *)(a1 + 0xE0) |= 1;
}
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F12C);
#include "common.h"
@@ -4126,11 +4281,59 @@ void func_8017F17C(s32 a0) {
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F390);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F400);
extern void func_8017F440();
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F440);
/* func_8017F400 -- ov_SC02_026, subseg ov_SC02_026_jr_8017C180 (16 ins). */
s32 func_8017F400(s32 a0) {
s32 *v0 = *(s32 **)(a0 + 0x64);
s16 v1 = *(s16 *)((s32)v0 + 0x36);
s16 v2 = *(s16 *)(a0 + 0xFC);
if (v1 == v2) {
return 0;
}
((s32 (*)(void))func_8017F440)();
return 1;
}
void func_8017F440(s32 arg0) {
func_8002D59C(4, 0x64E, *(u16 *)(arg0 + 0x104));
func_8012C218(arg0);
}
void func_8017F47C(s32 a0) {
s32 *s1 = (s32 *)a0;
s32 *s0 = *(s32 **)((u8 *)s1 + 0x64);
s32 *v1;
func_8002D59C(4, 0x64E, *(u16 *)((u8 *)s1 + 0x104));
*(s32 *)((u8 *)s1 + 0x4) = *(s32 *)((u8 *)s0 + 0x4);
*(s32 *)((u8 *)s1 + 0x8) = *(s32 *)((u8 *)s0 + 0x8) + 0xFFDA0000;
*(s32 *)((u8 *)s1 + 0xC) = *(s32 *)((u8 *)s0 + 0xC);
*(u16 *)((u8 *)s1 + 0x70) = 1;
v1 = *(s32 **)((u8 *)s1 + 0x20);
if (*(u16 *)((u8 *)s0 + 0x70) & 1) {
*(u16 *)((u8 *)v1 + 0x14) = 0;
*(u16 *)((u8 *)v1 + 0x12) = 0;
*(u16 *)((u8 *)v1 + 0x10) = 0;
*(u16 *)((u8 *)v1 + 0x1C) = 1;
*(u16 *)((u8 *)v1 + 0x1A) = 1;
*(u16 *)((u8 *)v1 + 0x18) = 1;
} else {
*(u16 *)((u8 *)v1 + 0x2C) = *(u16 *)((u8 *)v1 + 0x2C) & 0xFFEF;
*(u16 *)((u8 *)v1 + 0x14) = 0;
*(u16 *)((u8 *)v1 + 0x12) = 0;
*(u16 *)((u8 *)v1 + 0x10) = 0;
}
*(u16 *)((u8 *)s1 + 0x2) = 1;
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F47C);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F538);
@@ -5331,7 +5534,16 @@ void func_801814D8(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80181644);
void func_80181644(void *a0)
{
func_8012B23C(a0);
*(s32 *)((s32)a0 + 0x1C) = 0x40;
*(u16 *)((s32)a0 + 0x2) = 2;
*(u16 *)((s32)a0 + 0x34) = 0;
*(s32 *)((s32)a0 + 0xE4) = 0;
*(s32 *)((s32)a0 + 0xE8) = 0x40;
}
#include "common.h"
@@ -5551,7 +5763,20 @@ extern s32 func_8012B030(u8 *a0);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80181A4C);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80181AC4);
void func_80181AC4(s32 a0) {
s32 v1;
if (func_8012BEE8(a0) != 0) {
*(s16 *)(a0 + 2) = 6;
v1 = *(s32 *)(a0 + 0x20);
*(u16 *)(a0 + 0x34) = 0;
*(u16 *)(v1 + 0x1C) = 0x400;
*(u16 *)(v1 + 0x18) = 0x400;
v1 = *(s32 *)(a0 + 0x20);
*(u16 *)(v1 + 0x1A) = 0x3000;
}
}
#include "common.h"
@@ -5857,7 +6082,24 @@ void func_801823E8(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80182550);
extern u8 D_801202A0[];
s32 func_80182550(void) {
s32 count = 0;
s32 i = 0;
u8 *p = D_801202A0;
do {
if (*(u16 *)p == 0x17F && (*(u16 *)(p + 0x70) & 0xF) == 0) {
count++;
}
i++;
p += 0x10C;
} while (i < 0x60);
return count < 0xB;
}
extern u8 *func_801290DC(s32 a0, u8 *a1);
extern void func_80049CAC(s32 a0, s32 a1);
@@ -5947,7 +6189,18 @@ void func_801827A8(void *a0) {
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_801827E4);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_801828C8);
extern void func_80182DBC(s32 a0);
void func_801828C8(s32 arg0) {
func_80182DBC(arg0);
if (*(s32 *)(arg0 + 0x30) == 0) {
*(s16 *)(arg0 + 2) = 6;
*(s32 *)(arg0 + 0x1C) = 0;
} else {
*(s32 *)(arg0 + 0x1C) += 1;
}
}
#include "common.h"
#include "/home/musashi/bfm-decomp/src/shared/engine_core.h" /* match_one-only: gives SV3_8012CC88; the real TU (ov_SC02_026_jr_8017C180.c) already includes "../shared/engine_core.h" at file top */
@@ -6009,7 +6262,17 @@ extern void func_801292C8(u8 *a0);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80182A5C);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80182A9C);
extern void func_801292C8(u8 *a0);
extern void func_80182DBC(s32 a0);
void func_80182A9C(s32 arg0) {
func_80182DBC(arg0);
if (*(u16 *)(*(s32 *)(arg0 + 0x2c)) == 0) {
func_801292C8((u8 *)arg0);
}
*(s32 *)(arg0 + 0x1c) += 1;
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80182AF4);
@@ -6061,7 +6324,20 @@ s32 func_80182B90(s32 a0, s32 a1, s32 a2) {
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80182CE4);
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_80182DBC);
extern s32 func_8004787C(s32 a0);
void func_80182DBC(s32 a0) {
s32 t;
s32 w;
s32 sub;
t = func_8004787C((*(s32 *)(a0 + 0x1C) << 7) & 0x780);
w = *(s32 *)(a0 + 0x34) - ((*(s32 *)(a0 + 0x34) >> 2) * t >> 12);
sub = *(s32 *)(a0 + 0x20);
*(s16 *)(sub + 0x1A) = w;
*(s16 *)(sub + 0x18) = w;
}
extern void (*D_801AC394[])(void);
+1 -1
View File
@@ -2688,7 +2688,7 @@ extern void func_8017D6D0(s32 a0);
extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2);
extern void func_8013B7F4(void *a0, int a1);
extern code_fn D_801A42AC[];
extern s32 func_8017DD84(s32 a0);
extern s32 func_8017DD84();
extern void func_8017DC3C(int param_1);
extern void (*D_801A4308[])(void);
extern void func_8017DFE0(void *a0);
+219 -15
View File
@@ -3404,7 +3404,29 @@ s32 func_8017DF00(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017DF40);
extern void func_8001BFD0(void);
extern void func_800D1E28(void);
s32 func_8017DF40(s32 a0) {
s32 t;
s32 r = func_80029504();
t = *(s32 *)(a0 + 0x28) - 1;
*(s32 *)(a0 + 0x28) = t;
if (t == -1) {
if (r == 0x258 && !(func_80029178(0x132) & 0xFF)) {
func_80029124(0x132, 1);
func_800D0C48(1);
}
func_8002D4C8(0x1C, 0);
func_8001BFD0();
func_8002D4C8(0x1D, 0);
func_800D1E28();
*(u8 *)(a0 + 0x15) += 1;
}
return 0;
}
extern void func_800D1EBC(void);
void func_8017DFEC(void) {
@@ -3436,7 +3458,36 @@ void func_8017E05C(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017E08C);
void func_8017E08C(void) {
extern s32 D_80126954;
extern s32 D_80126950;
extern s32 D_8012695C;
extern s16 D_8012696A;
extern s16 D_80126968;
extern s16 D_8012696C;
extern s16 D_80126976;
extern s16 D_80126978;
extern s16 D_8012697A;
extern s32 D_801BA588;
extern u8 D_80126948[];
extern void func_8012A018(s32 a, s32 b);
extern void func_8012A094(s32 a);
extern void func_8017E134(void *a0);
D_80126954 = 0x190;
D_80126950 = 0x190;
D_8012695C = 0x320;
D_8012696A = 0x800;
D_801BA588 = 0;
D_80126968 = 0;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0xB0;
D_8012697A = 0;
func_8012A018((s32)func_8017E134, 0);
func_8012A094((s32)D_80126948);
func_8017E134(D_80126948);
}
extern void (*D_8018DE58[])(void);
@@ -3564,7 +3615,14 @@ void func_8017E758(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017E794);
void func_8017E794(void *a0) {
extern s32 func_8017EBA8(void *a0);
extern void (*D_8018E048[])(void *);
if (func_8017EBA8(a0) == 0) {
D_8018E048[*(u16 *)((s32)a0 + 0x2)](a0);
}
}
#include "common.h"
@@ -3776,7 +3834,29 @@ void func_8017EE34(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017EF94);
extern s32 func_8012BEE8(s32 a0);
extern void func_8012C218(void *a0);
void func_8017EF94(s32 a0)
{
s32 v1;
u16 v0;
if (*(u16 *)(a0 + 0x34) == 0) {
v1 = *(s32 *)(a0 + 0x20);
v0 = *(u16 *)(v1 + 0x1A);
*(u16 *)(v1 + 0x1A) = v0 + 0x300;
if (func_8012BEE8(a0) != 0) {
*(s32 *)(a0 + 0x1C) = 0x10;
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
}
} else {
if (func_8012BEE8(a0) != 0) {
func_8012C218((void *)a0);
}
}
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017F018);
@@ -3802,7 +3882,22 @@ void func_8017F864(void) {
void func_8017F86C(void) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017F874);
extern s32 func_8012BEE8(s32 a0);
extern void func_8002D4C8(s32 a0, s32 a1);
void func_8017F874(s32 a0) {
s32 s0 = a0;
if (*(u16 *)(s0 + 0x34) != 0) {
if (func_8012BEE8(s0) != 0) {
*(u16 *)(s0 + 2) = 5;
*(s32 *)(s0 + 0x48) = 0x2000;
*(s32 *)(s0 + 0x1C) = 0x40;
func_8002D4C8(0x770, 0);
}
}
}
#include "common.h"
@@ -4028,7 +4123,12 @@ void func_80180100(void *a0)
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801801F8);
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801802B0);
extern void func_801824CC(s32, s32, s32, s32, s32);
void func_801802B0(s32 a0) {
func_801824CC(a0, 0x1000, 0, -0x20, 0x800000);
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801802E0);
@@ -4124,7 +4224,16 @@ INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801834A
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018364C);
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018373C);
void func_8018373C(void *a0, s32 a1)
{
s32 arg[3];
arg[2] = a1;
arg[1] = 0;
arg[0] = 0;
func_8018383C(a0, arg);
}
void func_80183768(void *a0, s32 a1, s32 a2)
{
@@ -4142,7 +4251,16 @@ void func_80183768(void *a0, s32 a1, s32 a2)
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018383C);
extern s32 D_801BA5A0;
void func_8018383C(s32 a0, s32 a1)
{
s32 buf[8];
func_80049CAC((s32)&D_801BA5A0, (s32)&buf);
func_800484EC((s32)&buf, a1, a0 + 0x10);
}
#include "common.h"
@@ -4459,7 +4577,23 @@ INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018445
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80184500);
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80184604);
extern u8 D_8018E680[];
extern s32 D_801BA6A8;
extern s32 D_801BA6AC;
void func_80184604(s32 arg0) {
s32 idx;
if (arg0 != -1) {
idx = arg0 * 24;
D_801BA6A8 = (s32)&D_8018E680[idx];
D_801BA6AC = (s32)&D_8018E680[idx + 24];
} else {
D_801BA6A8 = 0;
D_801BA6AC = 0;
}
}
extern void (*D_8018E8DC[])(void);
@@ -4469,7 +4603,21 @@ void func_8018465C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80184698);
extern void func_80016714(void *a0, s32 a1);
extern u8 D_801BA734[];
extern MATRIX_80188114 D_800AE620;
extern MATRIX_80188114 D_801BC9B4;
extern u16 D_801BC9C4;
void func_80184698(s32 *a0) {
func_80016714(&D_801BA734, 0x2280);
D_801BC9B4 = D_800AE620;
D_801BC9C4 = 0x1000;
*(u16 *)((u8 *)a0 + 2) += 1;
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80184738);
@@ -4735,7 +4883,7 @@ void func_80184B50(u8 *param_1)
#include "common.h"
extern s32 rand(void);
extern s32 func_80185628(s32 a0, s32 a1);
extern s32 func_80185628();
extern void func_80185810(s32 a0);
extern s32 func_80185680(void *a0, void *a1);
extern s32 func_8017E5C8(s32 a0);
@@ -4989,7 +5137,16 @@ INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018538
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80185480);
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80185628);
extern s32 ratan2(s32 a0, s32 a1);
s32 func_80185628(s16 *a0, s16 *a1) {
s16 ax = a0[1];
s16 bx = a1[1];
s16 by = a1[0];
s16 ay = a0[0];
return (ratan2(bx - ax, by - ay) + 0x400) & 0xFFF;
}
void func_80185660(s32 *a0, s32 *a1, s32 a2) {
*(s32 *)((s32)a1 + 0x0) = a2;
@@ -5141,7 +5298,17 @@ extern s32 func_8012C588(s32 a0, s32 a1);
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801870B4);
extern u16 D_8018EE0C[];
extern s16 D_8018EDFE;
extern s16 D_8018EDFC;
extern s32 D_801BCBBC;
void func_801870B4(void) {
u16 v = D_8018EE0C[D_801BCBBC];
D_8018EDFE = v;
D_8018EDFC = v;
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801870E8);
@@ -5199,7 +5366,23 @@ INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801873C
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80187434);
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801874D0);
extern void (*D_8018F140)(void *);
void func_801874D0(void *a0)
{
s32 buf[8];
u16 out[4];
s32 v1;
func_8012EC04((s32)a0, 6, buf);
func_8012F14C((s32)buf, (s32)&D_8018F140, (s32)out);
v1 = *(s32 *)((s32)a0 + 0xCC);
*(u16 *)(v1 + 0x6) = out[0];
*(u16 *)(v1 + 0xA) = out[1] + 0x10;
*(u16 *)(v1 + 0xE) = out[2];
}
extern s32 func_80187540(void *a0);
@@ -5270,7 +5453,28 @@ void func_80187788(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801877C4);
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(int, int);
extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2);
extern void func_8012A828(s32 a0, void *a1);
extern s32 D_801B44A0;
extern s32 D_8018EA94;
void func_801877C4(s32 a0) {
s32 v0;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)(a0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4((void *)a0);
return;
}
func_8001C214(v0, (s32)&D_801B44A0);
func_8001D0E8(*(s32 *)(a0 + 0x20), 0x7FFF, 0x7FFF);
func_8012A828(a0, &D_8018EA94);
*(u16 *)(a0 + 0x2) += 1;
}
void func_80187844(void) {
}
+19 -2
View File
@@ -6012,7 +6012,16 @@ void func_80182364(s32 param_1) {
}
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_8018244C);
extern void func_8012A828(s32*, s32);
void func_8018244C(s32 a0) {
extern u8 D_801AC580;
extern u8 D_801AE1E4;
*(s32 *)(a0 + 0x1C) = 0x37;
func_8001C924(*(s32 *)(a0 + 0x20), &D_801AC580);
((void (*)(s32, void *))func_8012A828)(a0, &D_801AE1E4);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = *(u16 *)(a0 + 0x62);
}
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_801824A8);
@@ -6400,7 +6409,15 @@ void func_80182E0C(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_80182F68);
void func_80182F68(s32 param_1)
{
func_8012B23C(param_1);
func_8012B178(param_1, 0xFFFD8000);
*(u16 *)(param_1 + 2) = 2;
*(u16 *)(param_1 + 0x34) = 0;
*(s32 *)(param_1 + 0xE4) = 0x20;
}
extern s32 func_8004787C(s32 a0);
+236 -13
View File
@@ -3137,7 +3137,26 @@ void func_80182E78(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80182FD4);
void func_80182FD4(void *a0) {
extern void (*D_80192AEC[])(void);
extern u16 D_80126B96;
extern s16 D_80126B98;
extern s32 func_8012D624(void *a0, s32 a1, s32 a2);
extern void func_8012C218(void *a0);
D_80192AEC[*(u16 *)((s32)a0 + 0x2)]();
if (*(u16 *)((s32)a0 + 0x0) != 0 && *(s16 *)((s32)a0 + 0x70) < 2) {
*(s16 *)((s32)a0 + 0xa) = *(u16 *)((s32)a0 + 0xa) - 0x40;
if (func_8012D624(a0, 0x30, 0x18) == 1) {
D_80126B96 = 0x4014;
D_80126B98 = 0x18;
func_8012C218(a0);
} else {
*(s16 *)((s32)a0 + 0xa) = *(u16 *)((s32)a0 + 0xa) + 0x40;
}
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80183098);
@@ -3709,11 +3728,45 @@ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80185C8
void func_80185CF8(void) {
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80185D00);
void func_80185D00(s32 a0) {
extern s32 func_8012C354(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, void *a1);
extern M2C_UNK D_80192778;
extern void (*D_80188CCC)(void);
extern u16 D_801927AC[];
s32 s0 = a0;
if (func_8012C354(a0, (s32)&D_80192778)) {
*(u16 *)(s0 + 2) = 1;
((void (*)(s32 *, void *))func_8012A828)((s32 *)s0, (s32)&D_80188CCC);
*(u8 *)(s0 + 0xC0) = 1;
*(u16 *)(s0 + 0xFE) = 0xF;
*(u16 *)((s32)*(void **)(s0 + 0x20) + 0x2C) |= 0x10;
*(u16 *)(s0 + 0xA) += D_801927AC[*(u16 *)(s0 + 0x70) & 0xF];
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80185D98);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80185EA0);
extern void func_8012B200(u8 *a0);
extern void func_8012C218(void *a0);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern s32 rand(void);
void func_80185EA0(s32 a0) {
s32 r;
if ((rand() & 7) == 0) {
r = func_8012C658(0x27B, 0, a0);
if (r != 0) {
func_8012B200((u8 *)r);
*(s16 *)(r + 0xE) = 0;
}
}
((void (*)(s32))func_8012C218)(a0);
}
extern void func_8017ECE4(void);
void func_80185F08(s32 arg0) {
@@ -3735,13 +3788,50 @@ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_8018612
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801861D0);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_8018624C);
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern u16 D_80126B96;
extern s16 D_80126B98;
extern s32 D_80127078;
extern u8 D_80192980[];
extern u8 D_80192988;
void func_8018624C(s32 arg0) {
s16 temp;
if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0x10A) == 3) {
temp = *(s16 *)(arg0 + 0x10A);
if (temp == 1 && func_8012DEB8(arg0, D_80192980, &D_80192988) == temp) {
D_80126B96 = 0x400F;
D_80126B98 = 0;
D_80127078 = arg0;
}
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801862D8);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186384);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801863E0);
void func_801863E0(s32 a0) {
extern s32 func_8012C354(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, void *a1);
extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
extern u8 D_801929F4;
extern u8 D_801AB180[];
s32 s0 = a0;
if (func_8012C354(a0, (s32)&D_801929F4)) {
*(u16 *)(s0 + 2) = 1;
func_8012A828((s32)s0, D_801AB180);
*(u8 *)(s0 + 0x75) = 3;
*(u8 *)(s0 + 0xC0) = 1;
*(s32 *)(s0 + 0xB4) = -1;
*(s16 *)(s0 + 0xAE) = -1;
func_8001D0E8(*(s32 *)(s0 + 0x20), 0x400, 0x400);
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_8018645C);
@@ -3770,7 +3860,27 @@ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186AA
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186AF4);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186BD8);
extern s32 D_801C7E30;
extern s32 D_801C7E34[];
void func_80186BD8(void *a0)
{
s32 v0;
s32 v1;
v0 = *(s32 *)(a0 + 0x1C);
if (v0 != 0) {
*(s32 *)(a0 + 0x1C) = v0 - 1;
*(s16 *)(a0 + 0x6) = *(s16 *)(a0 + 0x6) - 6;
*(s16 *)(a0 + 0xA) = *(s16 *)(a0 + 0xA) + 8;
} else {
v1 = D_801C7E30;
D_801C7E34[0] = 0;
*(u16 *)(v1 + 0x34) = *(u16 *)(v1 + 0x34) + 1;
func_8012C218(a0);
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186C44);
@@ -3811,7 +3921,24 @@ void func_80186D40(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186E1C);
extern u8 D_801C7E80;
void func_80186E1C(void *param_1)
{
s16 v0;
s16 v1;
v0 = *(s16 *)((s32)param_1 + 0x2C);
v1 = v0;
if (v0 < 0x700) {
*(s16 *)((s32)param_1 + 0x2C) = v1 + 0x30;
func_80184100((u8 *)&D_801C7E80, -4);
func_800233CC((void *)((s32)&D_801C7E80 - 4), *(u16 *)((s32)param_1 + 0x2C));
} else {
func_801292C8((u8 *)param_1);
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186E94);
@@ -3857,7 +3984,17 @@ void func_80186F7C(s32 param_1)
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187074);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187144);
void func_80187144(u8 *a0)
{
s32 v = a0[0xFC] - 3;
a0[0xFC] = (u8)v;
if ((u32)(v & 0xFF) >= 9) {
func_80016450(v & 0xFF, 0);
} else {
func_8012C218((void *)a0);
}
}
#include "common.h"
@@ -3922,7 +4059,29 @@ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_8018764
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801876EC);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801877A8);
extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3);
extern s32 rand(void);
extern u8 D_801942C0[];
void func_801877A8(s32 arg0)
{
u8 *work;
s32 q;
s32 r;
func_8001CB6C(*(u8 **)(arg0 + 0x20), D_801942C0, 0x234, 0x1C0);
*(u8 *)(*(u32 *)(arg0 + 0x20) + 0x27) = 0x26;
*(u16 *)(arg0 + 0x30) = rand() & 0x1FF;
*(u16 *)(arg0 + 0x32) = rand() & 0x1F;
*(u16 *)(arg0 + 0x34) = rand() & 0x7F;
q = rand();
work = *(u8 **)(arg0 + 0x20);
r = q % 0x1000 + 0x800;
*(u16 *)(work + 0x1A) = r;
*(u16 *)(work + 0x18) = r;
*(u16 *)(arg0 + 2) = *(u16 *)(arg0 + 2) + 1;
}
extern void func_8013373C(s32 arg0);
void func_80187854(void) {
@@ -4105,7 +4264,28 @@ void func_80187C2C(s32 a0) {
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187C74);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187D00);
extern void func_80149020(s32 *a0);
extern void func_80147A84(s32 arg0);
extern void func_801473EC(s32 *a0);
extern void func_80148038(s32 a0, s32 a1);
extern void func_80147460(s32 a0);
extern void func_801470B4(s32 a0);
extern void func_80146CA0(void *a0);
void func_80187D00(s32 *a0) {
u8 v1;
func_80149020(a0);
func_80147A84((s32)a0);
func_801473EC(a0);
func_80148038((s32)a0, 0x4000);
func_80147460((s32)a0);
v1 = *((u8 *)a0 + 0xDE);
*((u8 *)a0 + 0xDE) = v1 + 0xFF;
if (v1 == 0) {
func_801470B4((s32)a0);
func_80146CA0(a0);
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187D70);
@@ -4134,7 +4314,21 @@ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187F4
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187FCC);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801880FC);
extern s32 func_80146E98(s32 a0);
extern s32 func_80188168();
extern void func_80159B3C(void *a0);
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
extern void func_80165718(s32 a0);
void func_801880FC(s32 arg0) {
if (func_80146E98(arg0) != 0) {
func_80188168(arg0);
func_80159B3C((void *)arg0);
func_80146A6C(2, arg0, 0, 0, 0, 1, 0);
func_80165718(arg0);
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80188168);
@@ -4190,7 +4384,29 @@ void func_801884E4(s32 a0) {
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_8018852C);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80188680);
#include "common.h"
extern void func_801886F4(s32 *a0);
extern void func_80149020(s32 *a0);
extern void func_80159B3C(void *a0);
extern M2C_UNK D_800D5880;
extern void func_801542DC(s32 *a0, s32 a1);
extern u8 D_800D46E4[];
extern void func_80165718(s32 a0);
void func_80188680(s32 *arg0)
{
func_80149020(arg0);
if (*(u16 *)((s32)arg0 + 0xB8) == 0x8000) {
func_801886F4(arg0);
func_80159B3C(arg0);
if (*(s32 *)((s32)arg0 + 0xB4) == (s32)&D_800D5880) {
((void (*)(s32 *, s32, s32))func_801542DC)(arg0, (s32)D_800D46E4, 0xE);
}
func_80165718(arg0);
}
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801886F4);
@@ -4206,7 +4422,14 @@ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_8018877
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80188848);
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_8018890C);
void func_8018890C(s32 a0) {
func_80149374(*(s32 *)((char *)a0 + 0x34), (s32)((char *)a0 + 0x4));
if (*(s32 *)((char *)a0 + 0x2C) != 0) {
return;
}
func_800D1FC8(a0, 5);
}
+173 -9
View File
@@ -3531,7 +3531,35 @@ void func_8017F004(void)
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_8017F048);
extern void func_801817E0(s32 a0);
extern void func_8012A018(s32 a, s32 b);
extern void func_8012A094(s32 a0);
extern void func_8017FB48(void *a0);
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[];
void func_8017F048(void) {
func_801817E0(0);
D_80126954 = 0x190;
D_8012695C = 0x320;
D_80126968 = 0x38;
D_8012696A = 0;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0x80;
D_8012697A = 0;
func_8012A018((s32)func_8017FB48, 0);
func_8012A094((s32)D_80126948);
func_8017FB48(D_80126948);
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_8017F0E8);
@@ -3864,9 +3892,40 @@ void func_80181E9C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80181ED8);
extern void func_80132784(s32 a0, s32 a1, u32 a2);
extern s32 D_81196E5C;
void func_80181ED8(s32 a0) {
s32 s0;
s32 s1;
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x20) = (s32)&D_81196E5C;
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x24) = 0;
for (s1 = 0; s1 < 5; s1++) {
s0 = func_8012C658(0x4B, s1 + 0x100, a0);
if (s0 != 0) {
*(s16 *)(s0 + 6) = 0;
*(s16 *)(s0 + 0xA) = 0;
*(s16 *)(s0 + 0xE) = 0;
func_80132784(s0, a0, (u16)s1);
*(s16 *)(s0 + 6) = *(s32 *)(*(s32 *)(s0 + 0x20) + 0x48);
*(s16 *)(s0 + 0xA) = *(s32 *)(*(s32 *)(s0 + 0x20) + 0x4C);
*(s16 *)(s0 + 0xE) = *(s32 *)(*(s32 *)(s0 + 0x20) + 0x50);
*(s32 *)(s0 + 0x64) = 0;
}
}
}
void func_80181F98(s32 *a0, s32 *a1) {
*(u16 *)((s32)a0 + 0x6) = *(u16 *)((s32)a1 + 0x0);
*(u16 *)((s32)a0 + 0xA) = *(u16 *)((s32)a1 + 0x2);
*(u16 *)((s32)a0 + 0xE) = *(u16 *)((s32)a1 + 0x4);
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) = *(u16 *)((s32)a1 + 0x6);
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = *(u16 *)((s32)a1 + 0x8);
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) = *(u16 *)((s32)a1 + 0xA);
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80181F98);
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80181FE8);
@@ -3951,7 +4010,30 @@ INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182C1
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182C68);
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182D50);
extern void func_8018247C(void);
extern void func_80182270(void *a0);
extern void func_8018241C(void *a0);
extern void func_80182538(void *a0);
extern void func_80181FE8(void *a0);
extern u16 D_800B99DA;
extern u16 D_8019FF8A;
void func_80182D50(void *a0) {
u8 *p = *(u8 **)((s32)a0 + 0x20);
*(u16 *)(p + 0x12) = *(u16 *)(p + 0x12) - 0x20;
func_8018247C();
if (*(s16 *)((s32)a0 + 0x70) == 0) {
func_80182270(a0);
}
func_8018241C(a0);
if ((D_800B99DA & 3) == 0) {
func_80182538(a0);
}
if (D_8019FF8A & 0x4000) {
func_80181FE8(a0);
}
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182DF0);
@@ -3961,7 +4043,29 @@ INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182F2
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182F94);
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182FE4);
void func_80182FE4(s32 param_1) {
extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 rand(void);
extern void (*D_8018A494[])(void);
s32 q;
s32 t;
func_8001CC3C(*(s32 *)(param_1 + 0x20), (s32)D_8018A494, 0x240, 0xE0);
*(u32 *)(*(s32 *)(param_1 + 0x20) + 4) = *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) | 0x58000000;
t = (rand() & 0x3F0) + 0x600;
q = *(s32 *)(param_1 + 0x20);
*(u16 *)(q + 0x1a) = t;
*(u16 *)(q + 0x18) = t;
*(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x79;
*(s32 *)(param_1 + 0x14) = 0x80000;
*(s32 *)(param_1 + 0x1C) = 0xC;
*(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1;
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80183078);
@@ -5583,7 +5687,7 @@ void func_80185B94(void *a0) {
}
extern s32 func_80185C00(s32 arg);
extern s32 func_80185C00();
extern void func_80146CA0(void *a0);
void func_80185BD0(s32 arg0) {
@@ -5592,7 +5696,26 @@ void func_80185BD0(s32 arg0) {
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80185C00);
s32 func_80185C00(s32 a0)
{
extern s32 D_80062C14;
extern s32 D_80198784;
extern s32 D_80198808;
s32 *s0 = (s32 *)a0;
s32 buf[4];
func_80019064(&D_80062C14);
func_801511E0((int)s0);
func_80154274(s0, (s32)&D_80198784);
func_80146E90(s0, 0x20);
func_8001382C(*(s16 *)((s32)s0 + 0x42), (void *)&D_80198808, (void *)buf);
func_80146DB8(s0, buf);
func_801477E8(s0, 0xFFF00000);
func_80149020(s0);
func_80147324(0x451);
func_80146CA0(s0);
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80185C9C);
@@ -5643,7 +5766,20 @@ join:
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80185E48);
extern void func_8014BC44(s32 a0, s32 a1);
extern void func_80151664(void);
void func_80185E48(s32 a0)
{
s32 s0 = a0;
s32 v0;
func_8014BC44(s0, *(s16 *)(s0 + 0xF2));
v0 = *(s32 *)(s0 + 0x20);
*(s16 *)(v0 + 0x10) = 0;
*(u8 *)(s0 + 0xA8) = 0x20;
((void (*)(s32))func_80151664)(s0);
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80185E90);
@@ -5667,7 +5803,35 @@ INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80185FB
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80186090);
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_801861EC);
extern void func_80149020(s32 *a0);
extern void func_80147F50(s32 a0);
extern void func_801473EC(s32 *a0);
extern u16 D_800B99DA;
extern void func_8014C010(s32 a0, s32 a1);
extern s32 func_801535F4(void *arg0);
extern s32 func_80146E98(s32 a0);
extern void func_8018637C();
extern void func_80159B3C(void *a0);
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
extern void func_80165718(s32 a0);
void func_801861EC(s32 param_1) {
func_80149020((s32 *)param_1);
func_80147F50(param_1);
func_801473EC((s32 *)param_1);
if (!(D_800B99DA & 1)) {
func_8014C010(param_1, 2);
}
func_801535F4((void *)param_1);
if (func_80146E98(param_1) == 0) {
return;
}
func_8018637C(param_1);
func_80159B3C((void *)param_1);
func_80146A6C(2, (void *)param_1, 0, 0, 0, 1, 0);
func_80165718(param_1);
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80186298);