feat(decomp): ox wave ag — 161 banked\n\nCard-fuelled ox drafts, reloc_identity pre-filtered, gated via sweep_parallel.\nfunc_8017EF88 func_8017F1A4 func_8017F590 func_8017FA2C func_8017FC50 func_8017FDB4 func_80180250 func_80180904 func_80180B44 func_80180E94 func_80181598 func_801817D8 func_801818EC func_80182360 func_80182580 func_80182958 func_80183154 func_801831B4 func_80183214 func_80183600 func_80183878 func_80183928 func_80183968 func_801844B0 func_80184B18 func_80184D34 func_80185378 func_80185D08 func_80185F38 func_80186CE4 func_80186D90 func_80186F9C func_801870B8 func_8018723C func_8017DE5C func_8017E454 func_8017E4F8 func_8017F118 func_8017F244 func_8017F748 …

This commit is contained in:
Drew T
2026-08-23 10:20:17 -06:00
parent c3d074253d
commit 28d1160ef9
7 changed files with 2863 additions and 168 deletions
+311 -14
View File
@@ -3188,7 +3188,39 @@ void func_8017CF90(s32 arg0)
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017DE5C);
extern void func_8012A018(s32 a, s32 b);
extern void func_8012A094(s32 a0);
extern void func_8017E97C(void *a0);
void func_8017DE5C(void) {
/* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every
LATER function in this TU, which blocks a byte-true decl of a different type.
Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */
extern u8 D_80126948[];
extern s32 D_80126954;
extern s32 D_80126950;
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;
D_80126954 = 0x12C;
D_80126950 = 0x12C;
D_8012695C = 0x28A;
D_80126968 = 0x238;
D_8012696A = 0x600;
D_8012696C = 0;
D_80126976 = -0x80;
D_80126978 = 0;
D_8012697A = -0x80;
((void (*)(void *, s32))func_8012A018)((void *)func_8017E97C, 0);
func_8012A094((s32)D_80126948);
func_8017E97C((void *)D_80126948);
}
extern void func_8012A018(s32 a, s32 b);
extern void func_8017E97C();
@@ -3423,9 +3455,78 @@ void func_8017E348(void)
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017E424);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017E454);
#include "common.h"
extern void func_8012A018(s32 a, s32 b);
extern void func_8012A094(s32 a0);
extern void func_8012A0E0(void);
extern void func_8017E97C(void *a0);
void func_8017E454(void) {
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;
D_80126954 = 0x224;
D_8012695C = 0x3A0;
D_80126968 = 0x75;
D_8012696A = 0x800;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0x35;
D_8012697A = 0;
func_8012A018((s32)func_8017E97C, 1);
func_8012A094((s32)D_80126948);
func_8017E97C(D_80126948);
func_8012A0E0();
}
extern s32 D_80126E60[];
extern void func_8012A048(void *a0, s32 a1, u8 a2);
extern void func_8012A094(s32 a0);
extern void func_8017E97C(void *a0);
extern void func_8012A100(s8 a0);
s32 func_8017E4F8(void)
{
extern s32 D_80126E6C;
extern s32 D_80126E74;
extern s16 D_80126E80;
extern s16 D_80126E82;
extern s16 D_80126E84;
extern s16 D_80126E8E;
extern s16 D_80126E90;
extern s16 D_80126E92;
extern s16 D_80126F00;
s32 *s0 = (s32 *)D_80126E60;
D_80126E6C = 0x12C;
D_80126E74 = 0x21C;
D_80126E80 = -0x71;
D_80126E82 = 0xA00;
{
s32 temp_func = (s32)func_8017E97C;
s32 temp_v0 = -0xA0;
D_80126E84 = 0;
D_80126E8E = 0;
D_80126E90 = temp_v0;
D_80126E92 = 0;
func_8012A048(s0, temp_func, 0x7);
D_80126F00 = -0x5;
func_8012A094((s32)s0);
func_8017E97C((void *)s0);
func_8012A100(0x1);
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017E4F8);
extern void func_8012A0E0(void);
void func_8017E5AC(void) {
@@ -3609,7 +3710,28 @@ s32 func_8017F0FC(u8 *a0) {
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F118);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8001BFD0(void);
extern void func_800D0C48(s32 a0);
extern void func_800167B8(s32 a0);
s32 func_8017F118(void *a0) {
s32 v0;
s32 v1 = -1;
v0 = *(s32 *)(a0 + 0x28);
v0 += -1;
*(s32 *)(a0 + 0x28) = v0;
if (v0 == v1) {
func_8002D4C8(0x1C, 0);
func_8001BFD0();
func_8002D4C8(0x1D, 0);
func_800D0C48(2);
func_800167B8(4);
*(u8 *)(a0 + 0x15) = *(u8 *)(a0 + 0x15) + 1;
}
return 0;
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F194);
@@ -3628,7 +3750,26 @@ extern void func_80171B44(s32 *a0);
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F244);
extern s32 func_80171B4C(s32 a0, s32 a1);
extern s32 func_800CF854(void);
extern void func_80154274(s32 *a0, s32 a1);
extern s32 func_8013767C(s32 a0);
extern u8 D_800D5A34[];
void func_8017F244(int param_1)
{
if (func_80171B4C(param_1, 0x1E) != 0) {
if (func_800CF854() != 0) {
*(unsigned char *)(param_1 + 0x214) = 3;
} else {
func_80154274((s32 *)param_1, (s32)&D_800D5A34);
*(unsigned char *)(param_1 + 0x4D) += 1;
*(s32 *)(param_1 + 0x198) = func_8013767C(*(s32 *)(param_1 + 0x198));
*(unsigned char *)(param_1 + 0x214) += 1;
}
}
}
extern s32 func_801399F0(s32);
extern void func_80139914(s32 a0);
@@ -3727,13 +3868,47 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F6A
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F6E8);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F748);
#include "common.h"
void func_8017F748(void *a0) {
typedef struct { u8 b[8]; } Blk8x;
extern Blk8x D_801E2DD0;
extern s32 func_80171D78(s32 a0, s32 a1);
extern void func_80142454(s32 a0);
extern s32 D_801270C8;
Blk8x buffer;
buffer = D_801E2DD0;
if (func_80171D78((s32)a0, (s32)&buffer)) {
D_801270C8 = 8;
func_80142454(-0x80);
*(s32 *)((s32)a0 + 0x204) = 0x20;
*(u8 *)((s32)a0 + 0x214) += 1;
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F7CC);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F898);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F924);
extern s32 func_801399F0(s32 a0);
extern void func_80139914(s32 a0);
extern void func_80154274(s32 *a0, s32 a1);
extern s32 func_8013767C(s32 a0);
extern u16 D_801943B0[];
extern s32 D_8019727C;
void func_8017F924(s32 arg0) {
s32 s0 = arg0;
if (func_801399F0(*(s32 *)(s0 + 0x198)) != 0) {
func_80139914(*(s32 *)(s0 + 0x198));
func_80154274((s32 *)s0, (s32)D_801943B0);
*(s32 *)(s0 + 0x198) = func_8013767C((s32)&D_8019727C);
*(u8 *)(s0 + 0x214) = *(u8 *)(s0 + 0x214) + 1;
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017F998);
@@ -3755,7 +3930,24 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FB1
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FB80);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FC64);
extern void func_80175454(void);
void func_8017FC64(u8 *a0) {
u16 var;
if ((*(u16 *)((s32)a0 + 0xB8) & 0x8000) != 0) {
if (*(s16 *)((s32)a0 + 0x20E) < 0x1000) {
var = *(u16 *)((s32)a0 + 0x210) + 0xA;
*(u16 *)((s32)a0 + 0x210) = var;
*(u16 *)((s32)a0 + 0x20E) += var;
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = *(u16 *)((s32)a0 + 0x20C) + *(u16 *)((s32)a0 + 0x20E);
} else {
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = *(u16 *)((s32)a0 + 0x20C);
func_80175454();
*(u8 *)((s32)a0 + 0x214) += 1;
}
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FCFC);
@@ -3772,11 +3964,46 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FF8
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FFF0);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80180060);
#include "common.h"
extern void func_80154274(s32 *a0, s32 a1);
extern void func_8014706C(void *arg0);
extern u8 D_800D5A34[];
extern s32 D_801270C8;
void func_80180060(void *arg0) {
extern s16 D_80126968;
if (D_801270C8 == 0x15) {
func_80154274((s32 *)arg0, (s32)D_800D5A34);
func_8014706C(arg0);
D_80126968 = -0x71;
*(s32 *)((s32)arg0 + 0x204) = 0x12;
(*(u8 *)((s32)arg0 + 0x214))++;
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_801800CC);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8018016C);
extern s32 func_801399F0(s32);
extern void func_80139914(s32);
extern void func_80147060(u8 * a0);
extern void func_801903DC(void *arg0);
extern s32 func_8017E4F8();
void func_8018016C(s32 a0) {
s32 s0 = a0;
if (func_801399F0(*(s32 *)(s0 + 0x198)) != 0) {
func_80139914(*(s32 *)(s0 + 0x198));
func_80147060((u8 *)s0);
func_801903DC(0);
func_8017E4F8();
*(s32 *)(s0 + 0x204) = 0xA0;
*(u8 *)(s0 + 0x214) = *(u8 *)(s0 + 0x214) + 1;
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_801801DC);
@@ -3851,7 +4078,20 @@ void func_80180AE0(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80180B18);
void func_80180B18(u32 arg0) {
extern Blk8 D_801E2E00;
extern s16 D_8012696A;
Blk8 buffer;
buffer = D_801E2E00;
if (func_80171D78(arg0, &buffer)) {
D_8012696A = 0x400;
*(u8 *)((s32)arg0 + 0x214) += 1;
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80180B90);
@@ -3899,7 +4139,29 @@ void func_80181028(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80181060);
extern void func_8017E898();
extern void func_80181270(s32 a0);
void func_80181060(s32 param_1)
{
extern s32 D_80126958;
extern s32 D_8012695C;
extern u16 D_80126970;
extern s16 D_80126976;
if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) {
func_80139914(*(s32 *)(param_1 + 0x198));
func_8017E898();
*(s32 *)(param_1 + 0x204) = 0x30;
func_80181270(param_1);
D_80126970 = 0;
D_80126976 = 0;
D_80126958 = 0x190;
D_8012695C = 0x190;
*(unsigned char *)(param_1 + 0x214) += 1;
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_801810F0);
@@ -3942,7 +4204,25 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8018141
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_801814B4);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80181570);
void func_80181570(s32 a0) {
extern s32 D_800D5C00[];
extern s32 D_800D6004[];
extern s32 D_80194370;
s32 v1;
s32 v0;
func_801816CC(a0, 0xC000);
v1 = *(s32 *)((s32)a0 + 0x20);
v0 = *(s16 *)(v1 + 0x10);
if (v0 < 0xC00) {
*(s16 *)(v1 + 0x10) = 0xC00;
func_80154274((s32 *)a0, (s32)D_800D5C00);
func_80154B4C((u8 *)a0, (s32)D_800D6004);
func_800D1724((s32)&D_80194370);
*(u8 *)((s32)a0 + 0x214) += 1;
}
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_801815FC);
@@ -3974,7 +4254,24 @@ s32 func_801816CC(s32 a0, s32 a1) {
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_801816FC);
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80181900);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_80186304(u8 *a0, s32 a1, s32 a2);
extern void func_801844D4(s32 a0);
void func_80181900(s32 a0) {
func_8012AD44((s32 *)a0, 3);
func_80186304((u8 *)a0, 7, 2);
if (*(s16 *)((s32)a0 + 0xE0) >= 0) {
*(s32 *)((s32)a0 + 0x1C) = 0x1F;
} else {
*(s32 *)((s32)a0 + 0x1C) = 0x2F;
}
if (*(s32 *)((s32)a0 + 0xE8) & 0x2000) {
*(s32 *)((s32)a0 + 0x1C) -= 0x10;
}
func_801844D4(*(s32 *)((s32)a0 + 0xD0));
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80181984);
+265 -25
View File
@@ -5325,7 +5325,10 @@ void func_8017E72C(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d,
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017EAC0);
void func_8017EAC0(void *a0, s32 a1, s32 a2) {
func_80146A6C(0x2C, a0, 0, (s16)a1, 0, a2, 0);
}
extern void (*D_80194C98[])(void);
@@ -5810,7 +5813,17 @@ void func_8017F578(void *a0) {
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F5B4);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F630);
extern void func_80146E90(s32 *a0, s32 a1);
extern s32 func_80146E98(s32 a0);
void func_8017F630(void *a0) {
if (func_80146E98((s32)a0) != 0) {
func_80146E90((s32 *)a0, 8);
*(s16 *)((u8 *)a0 + 0x28) = 0x20;
*(u16 *)((u8 *)a0 + 2) = *(u16 *)((u8 *)a0 + 2) + 1;
}
}
typedef struct { s16 vx; u16 vy; s16 vz, pad; } SVec_8017F67C;
typedef struct {
@@ -7147,9 +7160,29 @@ void func_801820B8(void *a0) {
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801820F4);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182148);
void func_80182148(s32 a0) {
s16 buf[3];
buf[0] = -0xE0;
buf[2] = 0x3D2;
buf[1] = *(s16 *)(a0 + 0xA);
if (func_80171D78(a0, (s32)buf) != 0) {
func_801722CC((s32 *)a0);
func_80171990((u8 *)a0);
}
func_80182344(a0);
}
void func_801821AC(s32 param_1) {
func_80172304((s32 *)param_1);
func_80171EC8(param_1);
if (func_80172664((s32 *)param_1) == 0) {
func_80171990((u8 *)param_1);
}
func_80182344((u8 *)param_1);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801821AC);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801821FC);
@@ -7157,7 +7190,12 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018226
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801822F4);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182344);
extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3);
void func_80182344(s32 param_1) {
*(s16 *)(param_1 + 6) = func_80012F74(*(s16 *)(param_1 + 6), -0xE0, 10, 1);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182380);
@@ -7324,11 +7362,24 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182AF
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182B88);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182D60);
void func_80182D60(void *a0) {
extern void (*D_801955B0[])(void *);
if (func_80182DB8(a0) == 1) {
D_801955B0[*(u16 *)((s32)a0 + 0x2)](a0);
}
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182DB8);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182E68);
void func_80182E68(void *a0) {
if ((func_800291B4(0xCD) & 0xFF) == 0 || (func_80029178(0x9E) & 0xFF) != 0) {
func_8012CAE4(a0);
} else {
*(u16 *)((s32)a0 + 2) = 1;
}
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182EC8);
@@ -7347,7 +7398,15 @@ extern void func_8012A828(s32, void*);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183080);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018312C);
void func_8018312C(s32 a0) {
extern s16 D_80195198;
*(s16 *)(a0 + 2) = 7;
func_80178CBC(a0, (s32)&D_80195198);
func_8012B23C(a0);
*(s16 *)(a0 + 0x34) = 9;
func_80184A54();
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183178);
@@ -7444,15 +7503,44 @@ void func_8018446C(s32 param_1) {
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018452C);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184590);
void func_80184590(s32 param_1) {
extern u8 D_80126B5C;
extern s32 func_8012C588(s32 a0, s32 a1);
*(s32 *)(param_1 + 4) = *(s32 *)&D_80126B5C;
func_8012C588(0xBA, param_1);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801845C0);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801845F4);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184738);
void func_80184738(s32 a0) {
extern u8 D_801202A0[];
u8 *p;
s32 i;
p = D_801202A0;
for (i = 0; i < 0x60; i++, p += 0x10C) {
if (*(u16 *)p == 0xB0) {
if ((*(u16 *)(p + 0x70) & 0xF) == 0) {
*(s16 *)(p + 0xFC) = a0;
*(u16 *)(p + 0x70) |= 0x800;
}
}
}
}
void func_8018479C(void) {
extern u16 D_80126B66;
extern u16 D_80126B5E;
extern s32 D_80195414;
D_80195414 = ((u32)D_80126B5E | (((s32)(s16)D_80126B66 - 0x180) << 16));
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018479C);
extern void func_8012A568(void (*a0)(void));
extern s32 func_8018263C();
@@ -7494,7 +7582,15 @@ void func_8018490C(s32 *a0, s32 a1, s16 a2) {
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184918);
extern void func_800D0C48(s32 a0);
void func_80184918(s32 arg0, s32 arg1) {
func_800D0C48(1);
*(s16 *)((s32)arg0 + 0x104) = 1;
*(s32 *)((s32)arg0 + 0xE4) = 0x1E;
*(s32 *)((s32)arg0 + 0xE0) = arg1;
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184964);
@@ -7523,7 +7619,21 @@ void func_80184ACC(void *a0) {
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184B08);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184C0C);
extern void func_8012A828(s32 a0, void *a1);
extern s32 D_801F432C;
extern s32 D_80195744;
void func_80184C0C(s32 param_1) {
*(u16 *)(param_1 + 6) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 6);
*(u16 *)(param_1 + 0xE) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xE);
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x12);
if (*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x90) == (s32)&D_801F432C) {
*(s16 *)(param_1 + 2) = 3;
func_8012A828(param_1, &D_80195744);
*(s32 *)(param_1 + 0x1c) = 0xe;
}
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184C98);
@@ -8079,7 +8189,16 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018618
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801861FC);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186250);
void func_80186250(s32 arg0) {
extern void func_80186548(s32 *a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern s8 D_801959A8[];
*(s32 *)((s32)arg0 + 0x58) = (s32)&D_801959A8;
func_80186548((s32 *)arg0);
func_8012AD44((s32 *)arg0, 6);
}
s32 func_80186290(s32 arg0) {
return *(u16*)(arg0 + 0x2) == 0x6;
@@ -8221,7 +8340,18 @@ void func_80186548(s32 *a0) {
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186558);
void func_80186558(s32 a0) {
s32 v;
func_8012AD80(a0);
v = *(s32 *)(a0 + 0x14);
if (v > 0x14000) {
*(s32 *)(a0 + 0x48) = -0x1400;
} else if (v < -0x14000) {
*(s32 *)(a0 + 0x48) = 0x1400;
}
}
void func_801865B0(s32 arg0) {
s32 *p = *(s32 **)((s32)arg0 + 0xcc);
@@ -8489,7 +8619,20 @@ void func_80186F74(s32 a0) {
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187018);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018707C);
extern int func_80178970(void);
extern void func_80178D18(void);
extern void func_8012C218(void *a0);
void func_8018707C(s32 a0)
{
extern s16 D_801EBA08;
if (func_80178970() == 0) return;
if (D_801EBA08 != 0) return;
((void (*)(s32))func_80178D18)(a0);
((void (*)(s32))func_8012C218)(a0);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801870D0);
@@ -8997,7 +9140,19 @@ extern void func_8002D4C8(s32 arg0, s32 arg1);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801883EC);
#include "common.h"
extern void func_8002A04C(void);
extern void func_8012C098(void);
void func_801883EC(s32 a0) {
if (*(s16 *)(a0 + 0x102) == 0) {
func_8002A04C();
}
((void (*)(s32))func_8012C098)(a0);
}
#include "common.h"
#include "/home/musashi/bfm-decomp/src/shared/engine_core.h"
@@ -9180,7 +9335,19 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188A1
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188D54);
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188D80);
extern void func_80188DC8(void*);
extern void func_80188DF4();
extern short D_801D4494;
void func_80188D80(s32 a0) {
s32 a1 = 4;
if (*(s16 *)((s32)a0 + 0x100) == 0) {
((void (*)(s32))func_80188DC8)(a0);
} else {
((void (*)(s32, s32, s32, s32))func_80188DF4)(a0, a1, 0x1E, (s32)&D_801D4494);
}
}
extern void func_8012A828(s32, void*);
@@ -9191,7 +9358,15 @@ extern void func_8012A828(s32, void*);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188DF4);
extern void func_8012A828(s32 a0, void *a1);
void func_80188DF4(s32 arg0, s32 arg1, s32 arg2, void *arg3) {
*(short *)((char *)arg0 + 0x34) = arg1;
*(short *)((char *)arg0 + 0x2) = 4;
func_8012A828(arg0, arg3);
*(s32 *)((char *)arg0 + 0x1C) = arg2;
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188E3C);
@@ -9377,7 +9552,19 @@ extern void func_8012A828(s32, void*);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801895CC);
void func_801895CC(s32 a0) {
s32 v0;
if (*(s16 *)(a0 + 0x100) == 0) {
v0 = 0xB;
} else {
if (func_8012BD3C(a0, 0x400, 0x40000) == 0) {
return;
}
v0 = 0xD;
}
*(s16 *)(a0 + 0x2) = v0;
}
extern void func_8012A828(s32, void*);
@@ -9388,7 +9575,13 @@ extern void func_8012A828(s32, void*);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018964C);
void func_8018964C(void *arg0) {
if (*(u16 *)((s32)arg0 + 0x72) & 0x4000) {
*(u16 *)((s32)arg0 + 0x2) = 9;
*(u16 *)((s32)arg0 + 0x100) = 3;
}
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189674);
@@ -9431,7 +9624,18 @@ void func_801896B4(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018974C);
extern void func_8012A828(s32 a0, void *a1);
extern void func_8012B23C(s32 a0);
extern u8 D_801D3ACC[];
void func_8018974C(s32 a0) {
s32 s0 = a0;
func_8012A828(a0, D_801D3ACC);
*(u16 *)(s0 + 2) = 0x10;
func_8012B23C(s0);
*(s32 *)(*(s32 *)(s0 + 0x20) + 4) |= 0x80000000;
}
#include "common.h"
@@ -9778,7 +9982,20 @@ extern s32 func_8012AD50(void *a0);
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A640);
extern s32 D_80126B58;
extern s32 func_80172688(s32 *a0);
extern void func_8012BF4C(s32 *a0, s32 a1);
extern s32 func_8012AD50(void *a0);
void func_8018A1A4(void *a0);
void func_8018A640(s32 *a0) {
if (func_80172688(&D_80126B58)) {
func_8018A1A4(a0);
func_8012BF4C(a0, 0x20);
func_8012AD50(a0);
}
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A698);
@@ -11097,7 +11314,18 @@ void func_8018BD70(s32 arg0)
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BDB8);
extern void func_8002AC00(s32 arg0);
extern void func_8002D4C8(s32 a0, s32 a1);
void func_8018BDB8(s32 *arg0) {
func_8002AC00(8);
if (*(u16 *)((u8 *)arg0 + 0x5E) == 0x1D) {
func_8002D4C8(0x440, 0);
} else {
func_8002D4C8(0x43F, 0);
}
}
extern void func_8012A828(s32 a0, void *a1);
@@ -11256,7 +11484,19 @@ void func_8018C388(int param_1)
}
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C3C0);
extern s32 func_8012BEE8(s32 a0);
void func_8018C3C0(s32 param_1)
{
if (func_8012BEE8(param_1) == 1) {
if (*(s16 *)(param_1 + 0x70) & 0x8000) {
func_8018BE40(param_1, 0x40000, 0xC4000);
} else {
func_8018BE40(param_1, 0x9000, 0x24000);
}
}
}
// @class: plumbing
+578 -33
View File
@@ -3273,7 +3273,22 @@ void func_8017E8C4(void)
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8017E904);
extern int func_8017FAB0(int param_1);
void func_8017E904(void)
{
extern u16 D_8018FCEC[];
extern u8 D_8018FD8C;
extern u8 *D_801274C8;
extern void *D_801274CC;
extern s32 D_8012704C;
D_801274C8 = (u8 *)D_8018FCEC;
D_801274CC = (void *)&D_8018FD8C;
func_8017FAB0(6);
D_8012704C = 1;
}
extern void (*D_8018F044[])(void);
@@ -3831,7 +3846,32 @@ extern void func_801806FC(void * arg0);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80180088);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80180538);
extern void func_8012931C(struct vec *a0);
extern void func_80143BDC(u16 *a0);
void func_80180538(void *a0) {
u16 sp10[3];
u16 sp18[3];
sp10[0] = *(u16 *)((s32)a0 + 0x6);
sp10[1] = *(u16 *)((s32)a0 + 0xA);
sp10[2] = *(u16 *)((s32)a0 + 0xE);
*(s32 *)((s32)a0 + 0x14) += 0x18000;
func_8012931C((struct vec *)a0);
sp18[0] = *(u16 *)((s32)a0 + 0x6);
sp18[1] = *(u16 *)((s32)a0 + 0xA);
sp18[2] = *(u16 *)((s32)a0 + 0xE);
if (func_80133784(1, &sp10, (s32)&sp18) != 0) {
sp18[1] -= 8;
func_80143BDC(&sp18[0]);
func_801292C8((u8 *)a0);
}
}
#include "common.h"
@@ -3982,7 +4022,20 @@ void func_801808CC(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80180908);
typedef struct { s32 w[8]; } Blk32_80180908;
void func_80180908(s32 *a0) {
extern u8 D_801DA130[];
extern Blk32_80180908 D_800AE620;
extern Blk32_80180908 D_801DA730;
extern u16 D_801DA740;
func_80016714(D_801DA130, 0x600);
D_801DA730 = D_800AE620;
D_801DA740 = 0x1000;
*(u16 *)((u8 *)a0 + 0x2) += 1;
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801809A8);
@@ -4182,7 +4235,7 @@ tail:
extern code_fn D_801AB590[];
extern s32 func_80182204(s32 a0);
extern s32 func_80182204();
void func_801820BC(int param_1)
{
@@ -4192,11 +4245,41 @@ void func_801820BC(int param_1)
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8018210C);
extern u16 D_801AB580[];
extern void func_8001C924(void *a0, s32 *a1);
extern void func_8018218C(void *a0);
void func_8018210C(void *a0) {
*(u8 *)((s32)a0 + 0xC1) = 0;
*(s16 *)((s32)a0 + 0x5E) = 0;
*(s16 *)((s32)a0 + 0x5C) = 0;
func_80029124(D_801AB580[*(s16 *)((s32)a0 + 0x70)], 1);
if (*(s32 *)((s32)a0 + 0xDC) != 0) {
s32 t = *(s32 *)(*(s32 *)((s32)a0 + 0xDC) + 4);
if (t != 0) {
func_8001C924((void *)*(s32 *)((s32)a0 + 0x20), (s32 *)t);
}
}
func_8018218C(a0);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8018218C);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182204);
s32 func_80182204(u8 *a0)
{
s32 *p;
void (*fp)(u8 *, u8 *);
p = *(s32 **)(a0 + 0xDC);
if (p != 0) {
fp = (void (*)(u8 *, u8 *))p[3];
if (fp != 0) {
fp(a0, a0 + 0x24);
}
}
}
/* 8-byte, align-4 pair record: the per-index slot pair at D_801DA750/D_801DA754 */
@@ -4357,7 +4440,20 @@ extern void func_8012AD44(s32 *a0, s16 a1);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801825D8);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182610);
extern void (*D_8018B99C)(void *);
void func_80182610(s32 a0)
{
s32 s0 = a0;
func_80153C30();
func_8012DB84();
func_8013C9C4(&D_8018B99C);
func_8012AD44((s32 *)s0, 3);
func_8002D4C8(4, 0x675);
func_8002D4C8(0xAAE, 0);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182674);
@@ -4370,13 +4466,32 @@ void func_801826FC(s32 *a0) {
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182724);
void func_80182724(void *arg0)
{
*(s32 *)((char *)arg0 + 0x44) = 0x4000;
func_8012AD44((s32 *)arg0, 2);
func_8002D4C8(0x684, 0);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182758);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801827C8);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182828);
extern u16 D_80126B5E;
void func_80182828(void) {
extern u16 D_80126B62;
s32 tmp;
if (*(s16 *)&D_80126B5E < 0x281) {
if (*(s16 *)&D_80126B62 < -0x658) {
tmp = -0x658;
*(u16 *)&D_80126B62 = (u16)tmp;
}
}
}
#include "common.h"
@@ -4467,9 +4582,37 @@ void func_80182868(void *a0)
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182A44);
extern s32 func_80029178(s32 arg0);
extern void func_8012AD44(s32 *a0, s16 a1);
void func_80182A44(void *arg0) {
if (((func_80029178(0xAE) & 0xFF) != 0) || (*(s16 *)((s32)arg0 + 0x70) == 0)) {
func_8012AD44((s32 *)arg0, 3);
} else {
func_8012AD44((s32 *)arg0, 1);
}
}
void func_80182AA4(void *a0) {
extern Stride8_s16_80182868 D_801AB676[];
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8002D4C8(s32 a0, s32 a1);
s32 v0;
v0 = D_801AB676[*(s16 *)((s32)a0 + 0x70)].v;
if (v0 == 0) {
v0 = 0x8000;
} else {
v0 = -0x8000;
}
*(s32 *)((s32)a0 + 0x44) = v0;
func_8012AD44((s32 *)a0, 2);
func_8002D4C8(0x686, 0);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182AA4);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80182AFC);
@@ -4684,7 +4827,16 @@ void func_80182FC8(void *a0)
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8018309C);
extern void func_80182724(void*);
void func_8018309C(void *a0) {
if ((func_80029178(0xAE) & 0xFF) == 0) {
if (func_8012BEE8((s32)a0)) {
((void (*)(s32))func_80182724)((s32)a0);
}
}
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801830EC);
@@ -4692,7 +4844,13 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8018315
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801831F4);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801832B0);
void func_801832B0(u8 *a0)
{
extern void func_80182D4C(u8 *a0, u8 *a1, s32 a2);
extern s32 D_801AB660[];
func_80182D4C(a0, (u8 *)D_801AB660, -1);
}
extern void func_8012AD44(s32 *a0, s16 a1);
void func_801832D8(s32 a0) {
@@ -4701,11 +4859,49 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801832FC);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern void func_8012AD44(s32 *a0, s16 a1);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80183344);
void func_801832FC(s32 a0) {
*(s16 *)((s32)a0 + 0xFE) = 1;
func_8012C658(0x156, *(s16 *)((s32)a0 + 0x70), (s32)a0);
((void (*)(void *, s32))func_8012AD44)((void *)a0, 2);
}
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern void func_8012AD44(s32 *a0, s16 a1);
void func_80183344(s32 a0) {
*(s16 *)((s32)a0 + 0x100) = 1;
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) = 0x100;
*(s16 *)((s32)a0 + 0xFE) = 1;
func_8012C658(0x156, *(s16 *)((s32)a0 + 0x70), (s32)a0);
func_8012AD44((s32 *)a0, 2);
}
void func_8018339C(s32 s0) {
typedef void (*FuncPtr)(void);
extern s32 D_801AB72C[];
extern u16 D_80126B96;
extern s16 D_80126B98;
extern s32 func_80183418(s32 a0);
FuncPtr fn;
s16 v0;
fn = (FuncPtr)D_801AB72C[*(u16 *)(s0 + 2)];
fn();
v0 = *(s16 *)(s0 + 0x100);
if (v0 == 0) {
if (func_80183418(s0) != 0) {
D_80126B96 = 0xC00B;
D_80126B98 = 0x18;
}
}
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8018339C);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80183418);
@@ -4785,7 +4981,24 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801836B0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_80178D18(void);
void func_801836B0(void *arg0)
{
if (*(s16 *)((s32)arg0 + 0xFE) != 0) {
func_80178D18();
*(s16 *)((s32)arg0 + 0xFE) = 0;
*(s16 *)((s32)arg0 + 0x102) = 0;
}
__asm__ __volatile__("");
((void (*)(void *, s32))func_8012AD44)(arg0, 3);
if (*(s16 *)((s32)arg0 + 0xFC) == 0) {
*(u16 *)((s32)arg0 + 0x34) = 2;
*(s32 *)((s32)arg0 + 0x1C) = 0x40;
}
}
#include "common.h"
@@ -4926,9 +5139,36 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80183938);
extern void (*D_801AB778[])(void);
extern void func_8012C218(void *a0);
extern void func_8012E014(s32 arg0);
void func_80183938(void *a0)
{
D_801AB778[*(u16 *)((s32)a0 + 2)]();
if (*(s32 *)((s32)a0 + 0x64) != 0 &&
*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0xFE) == 0) {
func_8012C218(a0);
} else if (*(u8 *)((s32)a0 + 0x74) != 0) {
func_8012E014((s32)a0);
}
}
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
void func_801839C8(s32 a0) {
s32 i;
*(u16 *)(a0 + 0xFC) = 0;
for (i = 0; i < 10; i++) {
if (func_8012C658(0x16F, i, a0) != 0) {
(*(u16 *)(a0 + 0xFC))++;
}
}
*(u16 *)(a0 + 0x106) = *(u16 *)(a0 + 0xFC);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801839C8);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80183A40);
@@ -5941,7 +6181,22 @@ extern void func_8012A828(s32 a0, s32 a1);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80185960);
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
extern s32 func_8012E778(s32 param_1, s32 param_2);
extern void func_8002D4C8(s32 a0, s32 a1);
void func_80185960(s32 a0) {
if (func_8012BD3C(a0, 0x400, *(s32 *)(a0 + 0xDC)) != 0) {
*(s16 *)(a0 + 0x2) = 3;
}
if ((*(u16 *)(a0 + 0x72) & 0x4000) != 0) {
if (func_8012E778(a0, 0x8C00B4) == 1) {
func_8002D4C8(0x64A, 0);
}
}
}
void func_801859D0(void *a0) {
M2C_FIELD(a0, s16 *, 0x2) = 4;
@@ -5950,7 +6205,33 @@ void func_801859D0(void *a0) {
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801859DC);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80185BC0);
void func_80185BC0(s32 a0)
{
s32 v0;
register s32 v1 __asm__("$3");
if (func_8012BEE8(a0)) {
if (func_8012BD14(a0) > 0x18FFF) {
v1 = *(s32 *)(a0 + 0x20);
*(u16 *)(a0 + 0x2) = 6;
*(s32 *)(a0 + 0x1C) = 0x20;
*(s32 *)(v1 + 4) &= 0x7FFFFFFF;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10;
v1 = *(s32 *)(a0 + 0x20);
*(u16 *)(v1 + 0x1C) = 1;
*(u16 *)(v1 + 0x1A) = 1;
*(u16 *)(v1 + 0x18) = 1;
v0 = *(s32 *)(a0 + 0x20);
*(u16 *)(v0 + 0x14) = 0;
*(u16 *)(v0 + 0x10) = 0;
v0 = *(s32 *)(a0 + 0x68);
v1 = *(s32 *)(a0 + 0x20);
*(u16 *)(v1 + 0x12) = *(u16 *)(v0 + 0xC);
func_8012B2CC(a0);
}
}
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80185C84);
@@ -6070,7 +6351,35 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80185F0
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80185FB0);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80186018);
extern u8 D_801AF758;
extern s32 func_8012BEE8(s32 a0);
extern void func_8018633C();
void func_80186018(s32 self) {
s32 p;
s32 q;
s32 e;
p = *(s32 *)(self + 0xCC);
q = *(s32 *)(self + 0x20);
*(u16 *)(q + 0x10) = *(u16 *)(p + 0);
*(u16 *)(q + 0x14) = *(u16 *)(p + 4);
p += 8;
if (*(s16 *)(p + 6) == 0x7FFF) {
*(s32 *)(self + 0xCC) = (s32)&D_801AF758;
} else {
*(s32 *)(self + 0xCC) = p;
}
if (func_8012BEE8(self) != 0) {
*(u8 *)(self + 0xC1) = 0;
*(u16 *)(self + 0x5E) = 0;
e = *(s32 *)(self + 0x20);
*(u16 *)(e + 0x14) = 0;
*(u16 *)(e + 0x10) = 0;
func_8018633C(self);
}
}
void func_801860A8(void *a0) {
*(short *)((char *)a0 + 0x5c) = 0;
@@ -6147,13 +6456,126 @@ void func_801860B8(s32 arg0_)
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801861E8);
void func_801861E8(s32 a0) {
s32 var_s0;
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80186248);
var_s0 = 0x10000;
*(s16 *)(a0 + 0x5C) = 0;
*(s32 *)(a0 + 0x1C) = 0x1E;
if ((*(u16 *)(a0 + 0x70) & 1) == 0) {
var_s0 = 0x6400;
}
if (func_8012BD14(a0) < var_s0) {
func_8002D4C8(0x64B, 0);
} else {
func_8002D4C8(0x652, 0);
}
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801862A8);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8018633C);
extern void func_8002AC00(s32 arg0);
extern void func_80130D48(s32 a0);
extern s32 func_801862A8();
extern s32 func_8012BEE8(s32 a0);
void func_80186248(void *a0) {
s32 *ent = *(s32 **)((s32)a0 + 0x20);
ent[1] ^= 0x80000000;
if (func_8012BEE8((s32)a0)) {
func_8002AC00(0xF);
func_80130D48((s32)a0);
func_801862A8(a0);
}
}
extern void func_8012C098(void *param_1);
s32 func_801862A8(s32 arg0)
{
s32 temp;
func_8002A04C(arg0);
if ((*(s16 *)(arg0 + 0x70) & 0xC000) != 0) {
func_8012C098((void *)arg0);
} else {
temp = *(s32 *)(arg0 + 0x20);
*(s16 *)(arg0 + 0x2) = 5;
*(s8 *)(arg0 + 0xC1) = 0;
*(s32 *)(arg0 + 0x1C) = 0x78;
*(s16 *)(arg0 + 0x5E) = 0;
*(s16 *)(arg0 + 0x5C) = 0;
*(s32 *)(temp + 0x4) |= 0x80000000;
*(u16 *)(arg0 + 0xAA) = 0;
*(s16 *)(arg0 + 0x6) = *(u16 *)(arg0 + 0x88);
*(s16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0x8A);
*(s16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0x8C);
}
}
typedef struct {
u8 pad00[0x02];
u16 f02;
u8 pad04[0x02];
u16 f06;
u8 pad08[0x02];
u16 f0A;
u8 pad0C[0x02];
u16 f0E;
u8 pad10[0x08];
u16 f18;
u16 f1A;
u16 f1C;
u8 pad1E[0x02];
void *f20;
u8 pad24[0x08];
u16 f2C;
u8 pad2E[0x2E];
u16 f5C;
u8 pad5E[0x12];
u16 f70;
u8 pad72[0x06];
void *f78;
u8 pad7C[0x0C];
u16 f88;
u16 f8A;
u16 f8C;
u8 pad8E[0x72];
u16 f100;
} Str_8018633C;
void func_8018633C(Str_8018633C *arg0) {
u16 a;
u16 b;
u16 c;
u16 d;
u16 e;
void *t;
void *p;
arg0->f02 = 1;
t = arg0->f78;
a = *(u16 *)((u8 *)t + 2);
b = arg0->f88;
c = arg0->f8A;
d = arg0->f8C;
e = arg0->f70;
arg0->f06 = b;
arg0->f0A = c;
arg0->f0E = d;
arg0->f5C = a;
if (e & 1) {
p = arg0->f20;
*(u16 *)((u8 *)p + 0x2C) |= 0x10;
p = arg0->f20;
*(u16 *)((u8 *)p + 0x1C) = 0x1666;
*(u16 *)((u8 *)p + 0x1A) = 0x1666;
*(u16 *)((u8 *)p + 0x18) = 0x1666;
arg0->f100 = 0x1666;
}
}
extern void (*D_801AF89C[])(void);
@@ -6163,7 +6585,34 @@ void func_801863B0(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801863EC);
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32 a0, s32 a1);
extern u8 D_801B30B0;
typedef struct {
u16 a, b, c, d;
} Rec8_801863EC;
void func_801863EC(s32 a0)
{
s32 v0;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)(a0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4((void *)a0);
} else {
func_8001C214(v0, (s32)&D_801B30B0);
*(s16 *)(a0 + 0xFC) = *(u16 *)(*(s32 *)(a0 + 0x64) + 0x36);
*(Rec8_801863EC *)(*(s32 *)(a0 + 0x20) + 0x18) =
*(Rec8_801863EC *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x18);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) =
*(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x2C);
*(s16 *)(a0 + 0x2) = 1;
}
}
extern void func_8012C218(void *a0);
void func_801864A4(s32 arg0) {
@@ -6181,11 +6630,39 @@ void func_801864E0(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_8018651C);
extern s32 func_8012C354(s32 a0, s32 a1);
extern void func_8012E8A8(u8 *a0);
void func_8018651C(void *a0) {
extern u8 D_801AF8B4[];
s32 ptr;
unsigned short v1;
unsigned short v0;
if (func_8012C354((s32)a0, (s32)D_801AF8B4) == 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);
}
ptr = *(s32 *)((s32)a0 + 0x64);
v1 = *(unsigned short *)(ptr + 0xFC);
*(unsigned short *)((s32)a0 + 0x2) = 1;
*(unsigned short *)((s32)a0 + 0x104) = v1;
}
#include "common.h"
extern s32 func_80186A30(s32 a0);
extern s32 func_80186A30();
extern u8 D_801B4380;
void func_80186594(s32 a0) {
@@ -6244,7 +6721,7 @@ typedef struct {
extern void func_8012F14C(s32 a0, s32 a1, s32 a2); /* TU:329 file scope, verbatim */
extern s32 func_8012BEE8(s32 a0); /* TU:4993/5216/7272, verbatim */
extern void func_8012CC1C(s32 arg0, s32 arg1); /* fleet-canonical void; $v0 used -> cast */
extern s32 func_80186A30(s32 a0);
extern s32 func_80186A30();
extern void func_80186B68(s32 a0, s32 a1);
extern void func_80186AAC(s32 a0);
extern void func_801869C0(s32 a0);
@@ -6325,11 +6802,53 @@ void func_801867AC(s32 a0) {
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801869C0);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80186A30);
extern void func_80186A70(void);
s32 func_80186A30(void *a0) {
u8 *a0_byte = (u8 *)a0;
s32 *v0 = *(s32 **)(a0_byte + 0x64);
s16 v1 = *(s16 *)((u8 *)v0 + 0x36);
s16 v2 = *(s16 *)(a0_byte + 0xFC);
if (v1 == v2) {
return 0;
}
func_80186A70();
return 1;
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80186A70);
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80186AAC);
void func_80186AAC(s32 a0) {
s32 *s1;
s32 *s0;
s16 *v1;
s1 = (s32 *)a0;
s0 = *(s32 **)((u8 *)s1 + 0x64);
func_8002D59C(4, 0x64E, *(u16 *)((u8 *)s1 + 0x104));
*(s32 *)((u8 *)s1 + 0x4) = *(s32 *)((u8 *)s0 + 0x4);
*(s32 *)((u8 *)s1 + 0x8) = *(s32 *)((u8 *)s0 + 0x8) - 0x260000;
*(s32 *)((u8 *)s1 + 0xC) = *(s32 *)((u8 *)s0 + 0xC);
*(u16 *)((u8 *)s1 + 0x70) = 1;
v1 = *(s16 **)((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 + 0x14) = 0;
*(u16 *)((u8 *)v1 + 0x12) = 0;
*(u16 *)((u8 *)v1 + 0x10) = 0;
*(u16 *)((u8 *)v1 + 0x2C) = *(u16 *)((u8 *)v1 + 0x2C) & 0xFFEF;
}
*(u16 *)((u8 *)s1 + 0x2) = 1;
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80186B68);
@@ -8749,7 +9268,33 @@ void func_80189E74(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80189EB0);
extern void func_8018A090(void *a0);
extern s32 rand(void);
extern s32 func_8012AD50(void *a0);
extern u8 D_801DA8CC[];
void func_80189EB0(void *a0)
{
u8 *p;
s32 i;
i = 4;
if (*(s16 *)((s32)a0 + 0xDE) != 0) {
func_8018A090((void *)a0);
return;
}
p = D_801DA8CC;
do {
*p = 0;
p--;
i--;
} while (i >= 0);
*(s32 *)((s32)a0 + 0x1C) = (rand() & 0x7F) + 0x40;
func_8012AD50((void *)a0);
}
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_80189F28);
+1 -1
View File
@@ -2739,7 +2739,7 @@ extern s32 func_8012BEE8(s32 a0);
extern void func_8012C218(void*);
extern void func_80181E50(s32 a0);
extern code_fn D_801AB590[];
extern s32 func_80182204(s32 a0);
extern s32 func_80182204();
extern void func_801820BC(int param_1);
extern void (*D_801AB5EC[])(void);
extern void func_80182460(void *a0);
+506 -31
View File
@@ -3197,7 +3197,19 @@ void func_8017D690(void *a0) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017D6CC);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017D718);
extern void func_800167B8(s32 a0);
s32 func_8017D718(s32 a0) {
s32 temp_v0;
func_800167B8(0);
temp_v0 = *(s32 *)(a0 + 0x28) - 1;
*(s32 *)(a0 + 0x28) = temp_v0;
if (temp_v0 == -1) {
*(u8 *)(a0 + 0x15) += 1;
}
return 0;
}
extern s32 func_800167F0(s32 a0);
@@ -3263,7 +3275,33 @@ void func_8017D930(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017D96C);
extern s32 func_80029178(s32 a0);
extern void func_80029124(s32 a0, s32 a1);
extern void func_800D0C48(s32 a0);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8001BFD0(void);
extern void func_800D1E28(void);
extern s32 D_801A23FC;
s32 func_8017D96C(s32 a0) {
s32 t;
t = *(s32 *)(a0 + 0x28) - 1;
*(s32 *)(a0 + 0x28) = t;
if (t == -1) {
if ((func_80029178(0x90) & 0xFF) == 0 || D_801A23FC != 0) {
func_80029124(0x90, 0x1);
func_800D0C48(0x1);
func_8002D4C8(0x1C, 0);
func_8001BFD0();
func_8002D4C8(0x1D, 0);
}
func_800D1E28();
*(u8 *)(a0 + 0x15) += 1;
}
return 0;
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DA1C);
@@ -3277,7 +3315,26 @@ void func_8017DA54(void *a0) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DA90);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DAC8);
extern void func_8016F2A8(void);
extern void func_8016F2EC(void);
extern s32 func_8012DB84(void);
extern s32 func_80171990(u8 *a0);
void func_8017DAC8(s32 *a0) {
s32 v0;
s32 v1;
v0 = a0[0x80];
v1 = v0 - 1;
a0[0x80] = v1;
if (v1 != -1) {
return;
}
func_8016F2A8();
func_8016F2EC();
func_8012DB84();
func_80171990((u8 *)a0);
}
void func_8017DB20(void) {
}
@@ -3317,7 +3374,17 @@ void func_8017DCA0(void) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DCC8);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DD30);
extern void func_8016EE40(s32 a0, s32 a1, s32 a2);
void func_8017DD30(void) {
extern s32 D_801A2238;
extern s32 D_801A23FC;
extern s32 D_801850B0(void *a0);
D_801A2238 = 0;
D_801A23FC = 0;
((void (*)(void *, s32))func_8016EE40)((void *)D_801850B0, 0x1000000);
}
extern void func_8017FB78(s32);
extern void func_80171928(void *a0);
@@ -3355,9 +3422,35 @@ void func_8017DE98(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DED4);
extern s32 D_80185EC8;
extern s32 func_8013767C(s32 a0);
extern s32 func_80171990(u8 *a0);
void func_8017DED4(u8 *a0) {
*(s32 *)(a0 + 0x198) = func_8013767C((s32)&D_80185EC8);
func_80171990(a0);
}
extern s32 D_80185F04;
extern s32 func_801399F0(s32 a0);
extern void func_80139914(s32 a0);
extern void func_80029124(s32 a0, s32 a1);
extern s32 func_8013767C(s32 a0);
extern s32 func_80171990(u8 *a0);
void func_8017DF14(s32 param_1)
{
if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) {
func_80139914(*(s32 *)(param_1 + 0x198));
*(s32 *)(param_1 + 0x198) = 0;
func_80029124(0xBD, 1);
*(s32 *)(param_1 + 0x198) = func_8013767C((s32)&D_80185F04);
func_80171990((u8 *)param_1);
}
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DF14);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DF84);
@@ -3397,9 +3490,44 @@ void func_8017E214(void) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017E248);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017E2F0);
extern Vec8_8017E0B4 D_801A0E34;
extern Vec8_8017E0B4 D_801A0E3C;
extern s32 D_80126984;
extern s32 D_80126988;
extern s32 D_8012698C;
extern s32 D_80126990;
extern s32 D_80126994;
extern s32 D_80126998;
void func_8017E248(void)
{
Vec8_8017E0B4 a;
Vec8_8017E0B4 b;
a = D_801A0E34;
b = D_801A0E3C;
D_80126984 = a.vx;
D_80126988 = a.vy;
D_8012698C = a.vz;
D_80126990 = b.vx;
D_80126994 = b.vy;
D_80126998 = b.vz;
}
extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2);
extern void func_80129FF4(void);
extern u8 D_80126948[];
extern s32 D_80197608;
void func_8017E2F0(void) {
func_80175014(D_80126948, &D_80197608, 0);
func_80129FF4();
}
extern s32 D_80197608;
extern s32 D_80126950;
@@ -3411,7 +3539,13 @@ void func_8017E328(void) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017E35C);
extern u8 D_80126948[];
extern s32 D_80197608;
void func_8017E35C(void) {
func_80175014(D_80126948, (u8 *)&D_80197608, 0xC7);
func_80129FF4();
}
extern void (*D_801851FC[])(void);
@@ -3611,11 +3745,76 @@ void func_8017E65C(s32 a0) {
void func_8017E7C8(void) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017E7D0);
extern u16 D_800B99DC;
extern u8 D_801819E8[];
extern u8 D_80185200[];
extern void func_8013C9C4(void *a0);
extern void func_8017E92C(void *a0);
extern void func_8017E884(s32, s32);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017E884);
void func_8017E7D0(void *a0)
{
s16 t;
u16 y;
u32 i;
u8 *p;
t = *(s16 *)((u8 *)a0 + 0xE4);
if (t != 0) {
y = *(u16 *)((u8 *)a0 + 0xE2);
*(s16 *)((u8 *)a0 + 0xE4) = t - 1;
y = y - 1;
*(u16 *)((u8 *)a0 + 0xE2) = y;
if ((y << 0x10) == 0) {
*(u16 *)((u8 *)a0 + 0xE2) = (D_800B99DC & 0x3) + 7;
func_8013C9C4((void *)D_801819E8);
}
}
func_8017E92C(a0);
i = 0;
p = D_80185200;
do {
((void (*)(void *, void *))func_8017E884)(a0, p);
i = i + 1;
p = p + 0x10;
} while (i < 8);
}
extern s32 func_80132EF4(s32 a0, s32 a1);
void func_8017E884(s32 a0, s32 a1) {
s32 s0;
s32 v0;
s32 v1;
s0 = a1;
*(s32 *)(s0 + 8) -= 1;
if (*(s32 *)(s0 + 8) != 0) {
return;
}
*(s32 *)(s0 + 8) = 4;
a0 = func_80132EF4(a0, 0x26);
if (a0 == 0) {
return;
}
v0 = *(s32 *)(s0 + 0xC);
v1 = *(s32 *)(a0 + 0x20);
v0 = v0 << 12;
*(s16 *)(v1 + 0x18) = v0;
*(s16 *)(v1 + 0x1A) = v0;
*(s16 *)(v1 + 0x18) = v0;
*(u16 *)(a0 + 6) = *(u16 *)(s0 + 0);
*(u16 *)(a0 + 0xA) = *(u16 *)(s0 + 2);
*(u16 *)(a0 + 0xE) = *(u16 *)(s0 + 4);
*(s32 *)(a0 + 0x14) = 0xFFE40000;
}
void func_8017E918(s32 a0) {
*(u16 *)(a0 + 0x6) = *(u16 *)(*(s32 *)(a0 + 0x64) + 0xDE);
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017E918);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017E92C);
@@ -3627,7 +3826,26 @@ void func_8017EA24(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017EA60);
extern u8 D_800D387C[];
extern u8 D_800D3888[];
extern void func_80128EA8(s32 a0, s32 a1, s32 a2);
void func_8017EA60(s32 param_1)
{
*(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_800D387C;
*(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000;
*(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x9C;
func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, (s32)&D_800D3888);
*(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1;
*(u32 *)(param_1 + 0x10) = 0;
*(u32 *)(param_1 + 0x18) = 0;
}
extern s32 func_80128ED8(s32 param_1, s32 *param_2);
extern void func_801292C8(u8 *a0);
@@ -3793,7 +4011,13 @@ void func_8017ECD4(s32 a0) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017EF28);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017F0D0);
void func_8017F0D0(s32 a0) {
if (*(s16 *)(a0 + 0xFC) != 0) {
func_8002D4C8(4, 0x645);
*(s16 *)(a0 + 0xFC) = 0;
}
}
extern void (*D_80185458[])(void);
@@ -3859,7 +4083,7 @@ void func_8017F240(void *a0) {
#include "common.h"
extern u8 *func_8012913C(s32 a0);
extern void func_8017F370(void);
extern void func_8017F370();
extern void func_801292C8(u8 *a0);
extern void func_8012931C(void *);
extern s32 D_801269B4;
@@ -3897,7 +4121,33 @@ void func_8017F27C(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017F370);
#include "common.h"
extern s32 ratan2(s32 a0, s32 a1);
extern void func_80049CAC(s32 a0, s32 a1);
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
/* Local stack-frame shapes declared under this function's own address (law 1b).
* sp+0x10: 0x20-byte matrix block, filled by func_80049CAC, consumed by func_800484EC.
* sp+0x30: 12-byte vector block -- the target emits word stores only, so s32 members. */
typedef struct { s32 w[8]; } Mtx_8017F370; /* 0x20 */
typedef struct { s32 f0, f4, f8; } Vec12_8017F370; /* 0x0C */
void func_8017F370(s32 arg0) {
Mtx_8017F370 m; /* sp+0x10 */
Vec12_8017F370 v; /* sp+0x30 */
v.f0 = 0;
v.f4 = *(s32 *)(arg0 + 0x2C);
v.f8 = *(s32 *)(arg0 + 0x30);
*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) =
(ratan2(-(s32)*(s16 *)(arg0 + 0xE), (s32)*(s16 *)(arg0 + 6)) + 0x400) & 0xFFF;
func_80049CAC(*(s32 *)(arg0 + 0x20) + 0x10, (s32)&m);
func_800484EC((s32)&m, (s32)&v, arg0 + 0x10);
}
#include "common.h"
@@ -3952,9 +4202,57 @@ INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017F71
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017F790);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017F84C);
#include "common.h"
extern s32 ratan2(s32 a0, s32 a1);
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C2C4(s32 a0);
extern void func_8012B2CC(s32 a0);
extern void func_8012B14C(s32 a0, s32 a1);
extern s32 func_8012AD50(void *a0);
extern s32 func_80132EF4(s32 a0, s32 a1);
void func_8017F84C(void *a0)
{
register void *s0 __asm__("$16") = a0;
s32 r;
s32 v0;
s32 buf[4];
r = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((u8 *)s0 + 0x20) = r;
if (r == 0) {
func_8012CAE4(s0);
} else {
func_8001C2C4(r);
v0 = ratan2( -*(s16 *)((u8 *)s0 + 0xE), *(s16 *)((u8 *)s0 + 0x6) );
*(s16 *)(*(s32 *)((u8 *)s0 + 0x20) + 0x12) = (v0 + 0x400) & 0xFFF;
*(s16 *)(*(s32 *)((u8 *)s0 + 0x20) + 0x10) = *(u16 *)((u8 *)s0 + 0x70);
func_8012B2CC((s32)s0);
buf[1] = 0;
buf[0] = 0;
buf[2] = 0x180000;
func_8012B14C((s32)s0, (s32)buf);
((void (*)(void *))func_8012AD50)(s0);
v0 = func_80132EF4((s32)s0, 0x23);
if (v0 != 0) {
*(s16 *)(v0 + 0x34) = 0x4000;
*(s32 *)((u8 *)s0 + 0x1C) = 8;
}
}
}
extern s32 func_8012BEE8(s32 arg0);
void func_8017F910(s32 arg0) {
if (func_8012BEE8(arg0) != 0) {
func_8012AD50((void *)arg0);
*(s32 *)(arg0 + 0x1C) = 0x40;
}
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017F910);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017F950);
@@ -4036,7 +4334,31 @@ void func_8017FD28(void) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017FD30);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017FE30);
void func_8017FE30(s32 a0) {
u8 *p;
s16 val;
p = *(u8 **)(a0 + 0x20);
*(u16 *)(p + 0x10) &= 0xFFF;
val = *(s16 *)(*(u8 **)(a0 + 0x20) + 0x10);
if (val == 0 || val < 0x101) {
*(s16 *)(a0 + 0x2) = 1;
*(u16 *)(*(u8 **)(a0 + 0x20) + 0x10) = 0;
*(s16 *)(a0 + 0x84) = 0;
return;
}
if (val < 0xF81) {
*(u16 *)(*(u8 **)(a0 + 0x20) + 0x10) = val + 0x10;
return;
}
if (*(s16 *)(a0 + 0x84) == 0 && val >= 0xF88) {
func_8002D4C8(0x550, 0);
*(s16 *)(a0 + 0x84) = 1;
}
*(u16 *)(*(u8 **)(a0 + 0x20) + 0x10) += 4;
}
// @class: struct
@@ -4044,7 +4366,7 @@ INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017FE3
extern code_fn D_8018550C[];
extern s32 func_801800F8(s32 a0);
extern s32 func_801800F8();
void func_8017FEF8(int param_1)
{
@@ -4059,9 +4381,38 @@ INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017FF4
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017FFF0);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8018009C);
extern s32 func_8012BEE8(s32 a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern s32 D_80127058;
void func_8018009C(u8 *a0) {
u8 *p = *(u8 **)(a0 + 0x20);
*(u16 *)(p + 0x14) = (*(u16 *)(p + 0x14) - 0x71) & 0xFFF;
if (func_8012BEE8(a0) == 0) {
return;
}
*(u8 *)&D_80127058 = 0;
func_8012AD44((s32 *)a0, 1);
}
typedef struct { u32 w0; u32 w1; } __attribute__((packed, aligned(1))) Blk8_801800F8;
extern Blk8_801800F8 D_801A0E64;
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
extern void func_80015954(s32 a0, s32 a1);
s32 func_801800F8(s32 *a0)
{
Blk8_801800F8 buf;
void *out;
buf = D_801A0E64;
func_8012F214(a0[0x19], (s32)&buf, (s32)&out);
func_80015954((s32)&out, (s32)(a0 + 1));
*(u16 *)((u8 *)*(u32 **)((u8 *)a0 + 0x20) + 0x10) = *(u16 *)((u8 *)*(u32 **)((u8 *)(*(u32 **)((u8 *)a0 + 0x64)) + 0x20) + 0x10);
*(u16 *)((u8 *)*(u32 **)((u8 *)a0 + 0x20) + 0x12) = *(u16 *)((u8 *)*(u32 **)((u8 *)(*(u32 **)((u8 *)a0 + 0x64)) + 0x20) + 0x12);
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_801800F8);
extern void (*D_80185568[])(void);
@@ -4121,14 +4472,35 @@ void func_801803A0(void) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_801803B0);
extern s32 D_801A2278;
extern void func_8002D4C8(s32 a0, s32 a1);
void func_801803B0(void) {
D_801A2278++;
if (D_801A2278 == D_801A2278 / 10 * 10) {
func_8002D4C8(0xB3D, 0);
}
}
void func_80180414(void) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8018041C);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180470);
extern int func_80178970(void);
extern void func_80029124(s32, s32);
extern void func_80178D18(void);
void func_80180358(void *a0);
void func_80180470(void *a0) {
if (func_80178970() != 0) {
func_80029124(0xF2, 1);
((void (*)(s32))func_80178D18)(a0);
func_80180358(a0);
}
}
void func_801804B8(void) {
}
@@ -4142,7 +4514,21 @@ s32 func_80180598(void) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_801805A0);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180604);
extern void func_8012E88C(u8 *a0);
extern void func_8012A828(s32 a0, void *a1);
extern void func_8012E8E0(s32 a0, s32 a1);
extern s32 D_80185818;
extern s32 D_8019EC70;
void func_80180604(void *a0) {
void *s0 = a0;
*(u16 *)((s32)a0 + 2) = 4;
*(u16 *)((s32)a0 + 0x34) = 0;
func_8012E88C((u8 *)s0);
func_8012A828((s32)s0, &D_8019EC70);
func_8012E8E0((s32)s0, (s32)&D_80185818);
}
extern void (*D_801859A8[])(void);
@@ -4166,9 +4552,48 @@ extern void func_80162120(void);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_801806D4);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180734);
extern void func_80178D18(void);
extern void func_80180604(void *a0);
void func_80180734(void *arg0) {
if (func_80178970()) {
((void (*)(void *))func_80178D18)(arg0);
func_80180604(arg0);
}
}
extern int func_80178970(void);
extern void func_80178D18(void);
extern void func_80178CBC(int arg0, int arg1);
extern void func_8012E88C(unsigned char *a0);
extern void func_8012A828(int a0, void *a1);
extern void func_8012E8E0(int a0, int a1);
extern int D_80185818;
extern int D_8019EC70;
extern void (*D_80185948)(void);
void func_80180774(void *a0) {
switch (*(u16 *)((s32)a0 + 0x34)) {
case 0:
break;
case 1:
func_80178CBC((s32)a0, (s32)&D_80185948);
*(s16 *)((s32)a0 + 0x34) = (s16)(*(u16 *)((s32)a0 + 0x34) + 1);
break;
case 2:
if (((s32 (*)(s32))func_80178970)((s32)a0) != 0) {
((void (*)(s32))func_80178D18)((s32)a0);
*(s16 *)((s32)a0 + 0x2) = 4;
*(s16 *)((s32)a0 + 0x34) = 0;
func_8012E88C((u8 *)a0);
func_8012A828((s32)a0, &D_8019EC70);
func_8012E8E0((s32)a0, (s32)&D_80185818);
}
break;
}
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180774);
#include "common.h"
@@ -4235,7 +4660,17 @@ void func_80180830(void *a0) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8018094C);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_801809CC);
extern void func_8012E88C(u8 *a0);
extern s32 func_80178B18(s32 param_1, s32 param_2);
extern void (*D_80185BDC[])(void);
void func_801809CC(void *a0) {
*(s16 *)((u8 *)a0 + 0x2) = 3;
*(s16 *)((u8 *)a0 + 0x34) = 0;
func_8012E88C((u8 *)a0);
func_80178B18((s32)a0, (s32)&D_80185BDC);
}
#include "common.h"
@@ -4340,7 +4775,17 @@ void func_80180D38(void *a0) {
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180D74);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180DBC);
extern void func_8012A828(s32, void *);
extern s32 D_801A2284;
extern void *D_801A2280;
extern u8 D_801859BC;
extern u8 D_80185ABC;
void func_80180DBC(void) {
func_8012A828(D_801A2284, &D_801859BC);
func_8012A828((s32)D_801A2280, &D_80185ABC);
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180E04);
@@ -4359,7 +4804,18 @@ INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180EF
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180F08);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180F18);
extern s32 D_801A2288;
extern s16 D_80185BD8;
extern s16 D_80185BDA;
extern void func_8002D4C8(s32 a0, s32 a1);
void func_80180F18(void) {
D_801A2288 += 1;
if (D_801A2288 % D_80185BD8 == D_80185BDA) {
func_8002D4C8(0xB3D, 0);
}
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180F90);
@@ -4367,7 +4823,26 @@ INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8018107
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_801810EC);
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80181194);
extern u8 D_80078EAF;
extern void func_800D06CC(void);
s32 func_80181194(void) {
if ((func_80029178(0x95) & 0xFF) != 0) {
return 0x25;
}
if ((func_800291B4(0xCE) & 0xFF) == 9) {
func_800D06CC();
return 0x23;
}
if ((func_80029178(0x90) & 0xFF) != 0) {
if (D_80078EAF == 4) {
return 0x3C;
}
return 0xA;
}
return 0x20;
}
+614 -34
View File
@@ -3360,7 +3360,24 @@ void func_8017EF4C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017EF88);
s32 func_8017EF88(s32 a0) {
s32 v = func_80029504();
s32 t = *(s32 *)(a0 + 0x28) - 1;
*(s32 *)(a0 + 0x28) = t;
if (t == -1) {
if (v < 200 && (u32)(v - 150) < 50) {
func_800D0C48(1);
}
func_8002D4C8(0x1C, 0);
func_8001BFD0();
func_8002D4C8(0x1D, 0);
func_800D1E28();
*(u8 *)(a0 + 0x15) += 1;
}
return 0;
}
extern void (*D_8018B5A8[])(void);
@@ -3431,7 +3448,19 @@ void func_8017F168(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017F1A4);
extern u8 D_801C8570[];
extern u8 D_801C8610[];
extern s32 func_80171990(u8 *a0);
void func_8017F1A4(u8 *a0) {
*(u32 *)(a0 + 0xB0) = (u32)D_801C8570;
*(u32 *)(a0 + 0xCC) = (u32)D_801C8610;
*(u16 *)(a0 + 0x20C) = 0;
*(u16 *)(a0 + 0x20E) = 0;
*(u16 *)(a0 + 0x210) = 0;
func_80171990(a0);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017F1E4);
@@ -3509,7 +3538,40 @@ void func_8017F49C(void) {
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017F4C4);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017F590);
extern u8 D_80126948[];
extern void func_8012A018(s32 a, s32 b);
extern void func_8012A094(s32 a0);
extern void func_8017F724(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 s16 D_80126940;
extern s16 D_801274E8;
typedef struct {
s16 x0, x1, x2, x3;
} UnalignedShortBlock;
void func_8017F590(void) {
D_80126954 = 0x190;
D_8012695C = 0x384;
D_80126968 = 0x38E;
D_8012696A = 0;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0x80;
D_8012697A = 0;
func_8012A018((s32)func_8017F724, 1);
func_8012A094((s32)D_80126948);
*(UnalignedShortBlock *)&D_801274E8 = *(UnalignedShortBlock *)&D_80126940;
func_8017F724((void *)D_80126948);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017F658);
@@ -3523,17 +3585,56 @@ void func_8017F724(void *a0) {
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017F760);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FA2C);
extern void func_8017FA84(s32 a0, s16 *a1, u32 a2);
void func_8017FA2C(s32 a0)
{
extern s16 D_80126940;
extern s16 D_80126944;
s16 *p = &D_80126940;
func_8017FA84(a0, p, ratan2(*p, D_80126944) & 0xFFF);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FA84);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FC50);
extern void (*D_8018B754[])(void *);
extern void (*D_8018B768[])(void *);
void func_8017FC50(void *param_1) {
extern void func_8017FF7C(void);
extern void func_801800D0();
if (*(u16 *)((s32)param_1 + 0x5C) & 1) {
func_8017FF7C();
}
func_801800D0(param_1);
if (*(u16 *)((s32)param_1 + 0x34) == 0) {
D_8018B754[*(u16 *)((s32)param_1 + 2)](param_1);
} else {
D_8018B768[*(u16 *)((s32)param_1 + 0x34)](param_1);
}
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FCE0);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FD74);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FDB4);
extern s32 func_8012BCCC(s32 a0);
extern void func_8013240C(s32 a0);
extern s32 D_801D9740;
void func_8017FDB4(s32 a0) {
s32 v0 = func_8012BCCC(a0);
if (v0 <= 0x11000) {
*(s16 *)(a0 + 0x2) = 3;
} else {
func_8013240C((s32)&D_801D9740);
}
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FE08);
@@ -3557,7 +3658,22 @@ void func_80180234(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80180250);
void func_80180250(void *arg0) {
s32 *ptr;
if ((*(s16 *)((s32)arg0 + 0x70) & 0x8000) == 0) {
ptr = *(s32 **)((s32)arg0 + 0x68);
if (ptr != NULL) {
if ((*(s16 *)((s32)arg0 + 0x72) & 0x8000) != 0) {
*(u16 *)((s32)ptr + 0xA) &= 0x7FFF;
}
}
}
func_8012C218(arg0);
func_80029124(0x9D, 1);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801802C4);
@@ -3569,7 +3685,40 @@ INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8018044
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801804A0);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80180904);
void func_80180904(s32 arg0) {
register s32 base __asm__("$2");
register s32 cst __asm__("$3");
register s32 b2 __asm__("$3");
register s32 c2 __asm__("$2");
register s32 r6 __asm__("$2");
register s32 rA __asm__("$3");
register s32 rE __asm__("$6");
base = *(s32 *)(arg0 + 0x20);
cst = 0x1800;
*(s16 *)(arg0 + 0xAA) = 0;
*(s16 *)(arg0 + 0x5C) = 0;
*(s16 *)(base + 0x18) = cst;
base = *(s32 *)(arg0 + 0x20);
*(s16 *)(base + 0x1C) = cst;
b2 = *(s32 *)(arg0 + 0x20);
c2 = 0x100;
*(s16 *)(b2 + 0x1A) = c2;
b2 = *(s32 *)(arg0 + 0x20);
*(u16 *)(b2 + 0x2C) |= 0x10;
*(s16 *)(arg0 + 0x34) = 0;
*(s32 *)(arg0 + 0x1C) = 0x1E;
*(s16 *)(arg0 + 0x98) = 0;
func_8002D4C8(0x526, 0);
r6 = *(u16 *)(arg0 + 0x6);
rA = *(u16 *)(arg0 + 0xA);
rE = *(u16 *)(arg0 + 0xE);
*(s16 *)(arg0 + 0x7C) = r6;
*(s16 *)(arg0 + 0x7E) = rA;
*(s16 *)(arg0 + 0x80) = rE;
func_8016AA50(arg0, 0xA);
}
#include "common.h"
@@ -3626,13 +3775,31 @@ void func_801809A4(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80180B44);
void func_80180B44(void *a0) {
s32 v1 = *(s32 *)((s32)a0 + 0x20);
*(s32 *)(v1 + 0x4) = *(s32 *)(v1 + 0x4) & 0x7FFFFFFF;
*(u16 *)((s32)a0 + 0xFC) = 0;
func_800291C8(0xA, 0x3065);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80180B84);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80180D3C);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80180E94);
extern void (*D_8018B8FC[])(void *);
void func_80180E94(void *a0) {
s16 count = *(s16 *)((s32)a0 + 0xFC);
if (count != 0) {
s32 ptr = *(s32 *)((s32)a0 + 0x20);
*(s16 *)((s32)a0 + 0xFC) = count - 1;
*(s32 *)(ptr + 4) = *(s32 *)(ptr + 4) ^ 0x80000000;
}
D_8018B8FC[*(u16 *)((s32)a0 + 0x2)](a0);
}
extern void (*D_8018B92C[])(void);
@@ -3826,7 +3993,28 @@ void func_8018155C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80181598);
extern s32 func_8012C1B8(void);
extern void func_8001C214(s32 a0, s32 a1);
extern void func_80181708(void *a0);
extern s32 func_8012AD50(void *a0);
extern s32 D_801D2038[];
extern s32 D_8118B93C[];
void func_80181598(void *a0)
{
s32 s0;
s0 = func_8012C1B8();
*(s32 *)((s32)a0 + 0x20) = s0;
if (s0 != 0) {
func_8001C214(s0, (s32)D_801D2038);
*(s32 *)((s32)s0 + 0x20) = (s32)D_8118B93C;
func_80181708(a0);
func_8012AD50(a0);
}
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80181600);
@@ -3843,7 +4031,18 @@ void func_801816C8(s32 a0) {
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80181708);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801817D8);
void func_801817D8(u8 *a0, u8 *a1) {
u16 sp0[3];
sp0[0] = *(u16 *)(a0 + 6);
sp0[1] = *(u16 *)(a0 + 0xA);
sp0[2] = *(u16 *)(a0 + 0xE);
sp0[0] += *(u16 *)(a1 + 0);
sp0[1] += *(u16 *)(a1 + 2);
sp0[2] += *(u16 *)(a1 + 4);
}
extern void (*D_8018B9B8[])(void);
@@ -3875,7 +4074,21 @@ extern s32 func_800D0CE0(s32 arg);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801818EC);
extern s32 func_8012E544(s32);
extern void func_800D0C48(s32 a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8012BF4C(s32 *a0, s32 a1);
void func_801818EC(void) {
s32 *s0;
s0 = (s32 *)func_8012E544(0x116);
if (s0 != 0) {
func_800D0C48(1);
func_8012AD44(s0, 1);
func_8012BF4C(s0, 0x30);
}
}
extern void (*D_8018BB08[])(void);
@@ -4152,7 +4365,27 @@ void func_80182324(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80182360);
extern s32 func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32 a0, s32 a1);
extern u8 D_8018BC0C[];
void func_80182360(void *a0) {
s32 ret;
ret = func_8012C1B8();
*(s32 *)((u8 *)a0 + 0x20) = ret;
if (ret == 0) {
func_8012CAE4(a0);
return;
}
func_8001C214(ret, 0);
*(u16 *)((u8 *)a0 + 0x2) = 1;
*(u16 *)((u8 *)a0 + 0x5C) = 0x40;
*(s32 *)((u8 *)a0 + 0x58) = (u32)D_8018BC0C;
}
void func_801823C8(void) {
}
@@ -4195,7 +4428,40 @@ void func_80182544(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80182580);
extern s32 func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32 a0, s32 a1);
extern s32 func_800291B4(s32 arg);
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2);
extern void func_8012A828(s32, void*);
extern u8 D_801C0B48[];
extern s32 D_8018BCB4[];
extern u8 D_80187B3C[];
void func_80182580(void *a0) {
register void *s0 __asm__("$16");
register s32 v0 __asm__("$2");
s32 r;
s0 = a0;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((s32)s0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4(s0);
return;
}
func_8001C214(v0, (s32)D_801C0B48);
r = func_800291B4(D_8018BCB4[*(u16 *)((s32)s0 + 0x70) & 0xF]) & 0xFF;
if (r != 3) {
func_8012C658(0x15A, *(s16 *)((s32)s0 + 0x70), (s32)s0);
}
*(u16 *)((s32)s0 + 2) = 1;
((void (*)(s32 *, s32))func_8012A828)((s32 *)s0, (s32)D_80187B3C);
}
void func_80182628(void) {
}
@@ -4305,7 +4571,25 @@ void func_801828C8(void) {
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801828F8);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80182958);
void func_80182958(void *a0) {
extern s32 D_801D5BC8;
extern s32 D_8018BD04;
extern s32 D_801D3318;
s32 v0;
v0 = func_80029504();
if ((u32)(v0 - 0xD2) >= 0x14 ||
(v0 = func_8012C1B8(), (*(s32 *)((s32)a0 + 0x20) = v0), v0 == 0)) {
func_8012CAE4(a0);
} else {
func_8001C214(v0, (s32)&D_801D5BC8);
*(u16 *)((s32)a0 + 0x2) = 1;
func_8012E8E0((s32)a0, (s32)&D_8018BD04);
func_8012A828((s32)a0, (s32)&D_801D3318);
*(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF;
}
}
@@ -4531,11 +4815,53 @@ void func_801830B8(s32 s0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183154);
extern void func_8012A828(s32 a0, void *a1);
extern u8 D_801C7AA4[];
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801831B4);
void func_80183154(s32 param_1) {
*(s16 *)(param_1 + 2) = 4;
*(u16 *)(param_1 + 0x5C) = 0xAA10;
func_8012A828(param_1, D_801C7AA4);
*(s32 *)(param_1 + 0x1C) = 0x20;
if (*(s32 *)(param_1 + 0xE0) != 0) {
*(s32 *)(param_1 + 0xE0) = 0;
*(s16 *)(param_1 + 0xA) = *(s16 *)(param_1 + 0xA) + 0x30;
}
}
extern s32 func_8012BEE8(s32 a0);
extern s32 func_801844B0(s32 a0);
void func_801831B4(s32 a0) {
u8 *p = *(u8 **)(a0 + 0x20);
*(u16 *)(p + 0x12) = *(u16 *)(p + 0x12) + 0x40;
if (func_801844B0(a0) == 1) {
return;
}
if (func_8012BEE8(a0) != 0) {
*(s16 *)(a0 + 2) = 5;
}
}
#include "common.h"
extern void func_8012A828(s32 a0, void *a1);
extern void func_8012B178(s32 a0, s32 a1);
extern void func_8012B23C(s32 a0);
extern u8 D_801C7AA4[];
void func_80183214(void *a0) {
s32 s0 = (s32)a0;
*(u16 *)((s32)a0 + 2) = 6;
func_8012B23C(s0);
func_8012B178(s0, 0xFFFE8000);
func_8012A828(s0, (void *)&D_801C7AA4);
*(s32 *)((s32)a0 + 0x1C) = 0x96;
*(u16 *)((s32)a0 + 0xE6) = 0;
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183214);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183270);
@@ -4654,7 +4980,20 @@ void func_801833EC(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183600);
extern s32 D_801C7C74;
extern void func_8012A828(s32 a0, void *a1);
extern void func_8012B23C(s32 a0);
void func_80183600(void *a0) {
s32 s0 = (s32)a0;
*(u16 *)((s32)a0 + 2) = 0xC;
func_8012B23C(s0);
func_8012A828(s0, (void *)&D_801C7C74);
*(s32 *)((s32)a0 + 0x1C) = 0x1A;
*(u16 *)((s32)a0 + 0xE6) = 0;
func_8012B23C(s0);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183654);
@@ -4721,13 +5060,57 @@ void func_80183818(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183878);
#include "common.h"
extern u8 D_800D3918[];
extern s32 func_8012BEE8(s32 a0);
extern void func_8012A828(s32 a0, void *a1);
extern s32 D_801C7B9C;
extern s32 func_801841F8(s32 a0, s32 a1);
void func_80183878(void *a0) {
if (*(s16 *)((s32)a0 + 0xAA) <= 0) {
*(s16 *)((s32)a0 + 2) = 3;
} else {
if (func_8012BEE8((s32)a0) != 0) {
func_8012A828((s32)a0, (void *)&D_801C7B9C);
*(s32 *)((s32)a0 + 0x1C) = 0x1A;
}
func_801841F8((s32)a0, (s32)D_800D3918);
}
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801838EC);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183928);
void func_80183928(s32 a0) {
s32 s0 = a0;
*(s16 *)(s0 + 0x2) = 0xF;
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x12) = (func_8012B864(s0) + 0x800) & 0xFFF;
}
extern void func_80131B14();
extern void func_8012A828(s32 a0, void *a1);
extern u8 D_801C81BC[];
void func_80183968(void *a0) {
s32 s0;
s32 v1;
__asm__ __volatile__("" : "=r"(s0) : "0"(a0));
if (*(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) & 0x10) {
*(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) &= ~0x10;
v1 = *(s32 *)(s0 + 0x20);
*(u16 *)(v1 + 0x1C) = 0x1000;
*(u16 *)(v1 + 0x1A) = 0x1000;
*(u16 *)(v1 + 0x18) = 0x1000;
}
func_80131B14(s0);
func_8012A828(s0, D_801C81BC);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80183968);
extern u8 D_801C4934[];
extern u8 D_801C4940[];
@@ -5190,7 +5573,20 @@ LD44:
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801844B0);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
s32 func_801844B0(s32 obj) {
s32 dist;
dist = func_8012BCCC(obj);
if (dist < 0x2001 || (dist <= 0x24000 && func_8012BDBC(obj, 0x400))) {
*(s16 *)(obj + 0x2) = 7;
return 1;
}
return 0;
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80184520);
@@ -5370,7 +5766,20 @@ void func_80184AE4(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80184B18);
extern s32 func_8012BEE8(s32 a0);
extern void func_80184B70(s32 a0, u8 *a1);
void func_80184B18(void *a0) {
s32 s0 = (s32)a0;
if (func_8012BEE8(s0) != 0) {
func_80184B70(0, (u8 *)(s0 + 0xFD));
func_80184B70(1, (u8 *)(s0 + 0xFE));
func_80184B70(2, (u8 *)(s0 + 0xFF));
*(s32 *)(s0 + 0x1C) = 2;
}
}
extern u32 D_801C4770[];
extern u32 D_801C499C[];
@@ -5450,7 +5859,30 @@ void func_80184C48(void *a0)
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80184D34);
extern s32 rand(void);
extern s32 func_8012BEE8(s32 a0);
extern s32 D_801C49DC[];
void func_80184D34(s32 a0) {
s32 *p;
s32 s0;
s32 r;
u16 h;
if (func_8012BEE8(a0) == 0) {
return;
}
s0 = a0;
*(u16 *)(s0 + 0x2) += 1;
r = rand();
h = *(u16 *)(s0 + 0x70);
p = D_801C49DC;
*(s32 *)(s0 + 0x48) = p[h & 0xF] + r % 1024;
*(s32 *)(s0 + 0x1C) = 0x100;
*(s32 *)(s0 + 0xE0) = rand();
}
#include "common.h"
@@ -5691,7 +6123,32 @@ void func_8018533C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80185378);
#include "common.h"
extern s32 func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32 a0, s32 a1);
extern void func_8012B2CC(s32 a0);
void func_80185378(void *a0)
{
s32 ret;
ret = func_8012C1B8();
*(s32 *)((s32)a0 + 0x20) = ret;
if (ret == 0) {
func_8012CAE4(a0);
return;
}
func_8001C214(ret, 0);
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) =
*(u16 *)(*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x20) + 0x12);
func_8012B2CC((s32)a0);
*(u16 *)((s32)a0 + 0x108) = 1;
*(u16 *)((s32)a0 + 0x2) += 1;
}
extern void (*D_801C89CC[])(void);
@@ -6130,7 +6587,23 @@ INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80185BD
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80185C4C);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80185D08);
#include "common.h"
extern s32 rand(void);
extern void func_80132288(s32 *param_1, s32 *param_2, s32 param_3);
extern void func_80186ECC(s32 a0, s32 a1);
extern s32 D_801D98C8;
extern s32 D_801C9124[];
extern s32 D_801CA0A0;
void func_80185D08(s32 a0) {
*(s16 *)(a0 + 2) = 2;
func_80132288(&D_801D98C8, D_801C9124, D_801CA0A0);
*(s32 *)(a0 + 0x1C) = (rand() % 31) + 30;
func_80186ECC(a0, 1);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80185D9C);
@@ -6171,7 +6644,38 @@ void func_80185DFC(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80185F38);
extern s32 D_801D98C8;
extern void func_8012B178(s32 a0, s32 a1);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BEE8(s32 a0);
extern void func_8013240C(s32 a0);
extern s32 func_80186DD4(s32 a0);
void func_80185F38(s32 arg0) {
s32 v0;
s32 v1;
v0 = *(s16 *)(arg0 + 0xE0);
v1 = *(s32 *)(arg0 + 0x20);
*(u16 *)(v1 + 0x12) += v0 * 34;
if (*(s16 *)(arg0 + 0xEA) == 0) {
func_8012B178(arg0, 0xFFFE0000);
if (func_80186DD4(arg0) == -1) {
return;
}
}
if (func_8012BCCC(arg0) < 0x4001) {
*(s16 *)(arg0 + 2) = 7;
return;
}
if (func_8012BEE8(arg0) != 0) {
*(s16 *)(arg0 + 2) = 5;
}
func_8013240C((s32)&D_801D98C8);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80185FE8);
@@ -6611,7 +7115,17 @@ merge2:
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80186CE4);
extern void func_80132288(s32 *param_1, s32 *param_2, s32 param_3);
extern void func_80186ECC(s32 a0, s32 a1);
extern s32 D_801D98C8;
extern s32 D_801C920C[];
extern s32 D_801CA0A0;
void func_80186CE4(s32 a0) {
func_80132288(&D_801D98C8, &D_801C920C, D_801CA0A0);
func_80186ECC(a0, 1);
}
extern void func_8013240C(s32 a0);
extern s32 D_801D98C8;
@@ -6653,7 +7167,14 @@ void func_80186D5C(void)
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80186D90);
void func_80186D90(s32 a0) {
extern u8 D_80187B3C[];
*(s16 *)(a0 + 0x2) = 1;
func_8012A828(a0, D_80187B3C);
*(u16 *)(a0 + 0x5C) = 0xAA10;
*(s16 *)(a0 + 0xEA) = 0;
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80186DD4);
@@ -6670,15 +7191,74 @@ extern s32 rand(void);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80186F9C);
#include "common.h"
extern void func_8012B23C(s32 a0);
extern void func_80132288(s32 *param_1, s32 *param_2, s32 param_3);
extern void func_800183E0(s32 a0);
extern s32 D_801D98C8;
extern s32 D_801CA0A0;
extern s32 D_801CA248;
void func_80186F9C(s32 a0, s32 a1, s32 a2) {
register s32 s1 __asm__("$17") = a0;
register s32 s0 __asm__("$16");
register s32 s2 __asm__("$18") = a2;
s32 p;
__asm__("" :: "r"(s1));
s0 = a1;
func_8012B23C(s1);
func_80132288(&D_801D98C8, (s32 *)s0, D_801CA0A0);
s0 = 1;
if (*(u16 *)(s1 + 0xDC) & 2) {
func_800183E0((s32)&D_801CA248);
*(u16 *)(s1 + 0xDC) = s0;
}
*(u16 *)(s1 + 0x5C) &= 0xFFFE;
*(s32 *)(s1 + 0x1C) = s2;
*(u16 *)(*(s32 *)(s1 + 0x20) + 0x12) = (*(u16 *)(s1 + 0x62) + 0x800) & 0xFFF;
p = *(s32 *)(s1 + 0x20);
*(s16 *)(p + 0x14) = 0;
*(s16 *)(p + 0x10) = 0;
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80187050);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801870B8);
extern void Square0(s32 *a0, s32 *a1);
s32 func_801870B8(s32 a0) {
s32 sp10[4];
sp10[0] = *(s16 *)((s32)a0 + 6) - *(s16 *)((s32)a0 + 0x88);
sp10[1] = 0;
sp10[2] = *(s16 *)((s32)a0 + 0xE) - *(s16 *)((s32)a0 + 0x8C);
Square0(&sp10[0], &sp10[0]);
return 0x18FFFF >= (sp10[0] + sp10[2]);
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80187118);
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8018723C);
s32 func_8018723C(void *a0) {
short a[4];
short b[4];
s32 pa, pb;
s32 r;
a[0] = *(u16 *)((s32)a0 + 0x6);
a[1] = *(u16 *)((s32)a0 + 0xA);
a[2] = *(u16 *)((s32)a0 + 0xE);
pa = (s32)a;
pb = (s32)b;
__builtin_memcpy((void *)pb, (void *)pa, 8);
b[1] += 8;
r = func_80133784(1, pa, pb) & 0x2000;
return r != 0;
}
/* func_801872B4 — tiny matrix wrapper.
+588 -30
View File
@@ -5400,7 +5400,23 @@ void func_8017EFF4(s32 a0)
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F07C);
void func_8017F07C(s32 a0)
{
register s32 s0 asm("$16") = a0;
u8 v1;
func_80149020((s32 *)s0);
v1 = *(u8 *)(s0 + 0xDE);
*(u8 *)(s0 + 0xDE) = v1 + 0xFF;
if (v1 == 0) {
func_8017F0E0(s0);
func_80159B3C((void *)s0);
func_80165718(s0);
} else {
func_80172630((u8 *)s0);
}
}
extern u8 D_80062C04[];
extern void func_80019064(void *a0);
@@ -5503,7 +5519,23 @@ void func_8017F5C4(s32 *a0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F5E0);
void func_8017F5E0(s32 *a0)
{
register s32 t1 asm("$6");
register s32 t2 asm("$2");
register s32 t3 asm("$3");
s32 x;
t1 = a0[4];
x = a0[13];
t2 = a0[5];
t3 = a0[6];
a0[1] = t1;
a0[2] = t2;
a0[3] = t3;
func_80149374(x, (s32)(a0 + 1));
}
extern void (*D_801883E8[])(void);
@@ -5627,7 +5659,23 @@ void func_8017F65C(s32 param_1) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F930);
extern void func_8017F9F4(void);
extern void func_8017FB78(s32*);
extern s32 func_80146E98(s32 a0);
extern void func_80146E90(s32 *a0, s32 a1);
void func_8017F930(s32 *a0) {
func_8017F9F4();
((void (*)(void *))func_8017FB78)(a0);
if (func_80146E98((s32)a0) != 0) {
*(s32 *)(a0 + 4) >>= 2;
*(s32 *)(a0 + 5) >>= 2;
*(s32 *)(a0 + 6) >>= 2;
func_80146E90(a0, 0x40);
*(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1;
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F9AC);
@@ -5635,7 +5683,18 @@ INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F9F
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FA1C);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FB78);
void func_8017FB78(s32 *a0) {
s16 *p;
a0[1] += a0[4];
a0[2] += a0[5];
a0[3] += a0[6];
p = (s16 *)a0[8];
p[8] += a0[19];
p[9] += a0[20];
p[10] += a0[21];
}
void func_8017FBEC(s32 *a0) {
*(s32 *)((s32)a0 + 0x0) = 0x80404080;
@@ -5962,15 +6021,51 @@ void func_801800C0(int param_1)
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801801AC);
void func_801801AC(s32 a0) {
extern M2C_UNK D_8019972C;
extern s32 D_801997A4;
s32 *v1;
func_8012A8B0((u8 *)a0, (s32)&D_8019972C);
v1 = *(s32 **)(a0 + 0x20);
*(s32 *)(a0 + 0x94) = 0xF;
*(s32 *)((s32)v1 + 0x20) = D_801997A4;
func_8012B23C(a0);
func_8012AD44((s32 *)a0, 2);
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180208);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180274);
extern s32 D_8019979C;
extern void func_8012B23C(s32 a0);
extern void func_8012AD44(s32 *a0, s16 a1);
void func_80180274(s32 param_1, u16 param_2)
{
*(s32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = D_8019979C;
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = param_2;
func_8012B23C(param_1);
*(s32 *)(param_1 + 0x1C) = 8;
*(s16 *)(param_1 + 0x98) = 0;
func_8012AD44((s32 *)param_1, 4);
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801802D0);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801804CC);
void func_801804CC(void *arg0) {
s32 *s0 = (s32 *)arg0;
extern M2C_UNK D_80199904;
func_8012A8B0((u8 *)arg0, (s32)&D_80199904);
*(u16 *)((u8 *)s0 + 0x102) = 8;
*(u16 *)((u8 *)s0 + 0x104) = 3;
*(u16 *)((u8 *)s0 + 0x106) = (rand() & 0x20) - 0x10;
s0[7] = 0x60;
func_8012AD44(s0, 5);
}
@@ -5985,7 +6080,29 @@ void func_80180530(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018056C);
typedef struct {
u8 pad0[0x2];
u16 unk2;
u8 pad2[0x1C];
s32 *unk20;
u8 pad3[0xDA];
u16 unkFE;
u16 unk100;
} S_8018056C;
extern void func_8012A8B0(u8 *a0, s32 a1);
extern void func_8012AD44(s32 *a0, s16 a1);
extern s32 D_80199644;
void func_8018056C(S_8018056C *s0) {
s0->unk100 = 0;
s0->unkFE = ((u16 *)s0->unk20)[9] + 0x200;
if (s0->unk2 != 1) {
func_8012A8B0((u8 *)s0, (s32)&D_80199644);
}
func_8012AD44((s32 *)s0, 0x8);
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801805D0);
@@ -6014,15 +6131,74 @@ void func_80180878(s32 arg0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801808B4);
extern void (*D_80192E38[])(void);
void func_801808B4(s32 arg0) {
s32 *s0 = (s32 *)arg0;
s32 v1;
D_80192E38[*(u16 *)((u8 *)s0 + 2)]();
if ((*(u16 *)s0 == 0x1FC) && (*(s16 *)((u8 *)s0 + 0xAA) == 0)) {
v1 = *(s32 *)((u8 *)s0 + 0x20);
*(u16 *)(v1 + 0x2C) |= 0x10;
v1 = *(s32 *)((u8 *)s0 + 0x20);
*(u16 *)(v1 + 0x18) = *(u16 *)(v1 + 0x1A) = *(u16 *)(v1 + 0x1C) = 0x1800;
}
}
void func_80180948(s32 arg0) {
extern void func_80181248(s32 a0, s32 a1);
s32 pe;
if (*(u8 *)(arg0 + 0xC2) == 0x2) {
*(s16 *)(arg0 + 0x52) = -0x18;
}
pe = func_80180C74(arg0);
if (pe != 0) {
*(s32 *)(arg0 + 0x10) = 0;
*(s32 *)(arg0 + 0x18) = 0;
*(s32 *)(arg0 + 0x04) = *(s32 *)(arg0 + 0x38);
*(s32 *)(arg0 + 0x0C) = *(s32 *)(arg0 + 0x40);
func_80181248(arg0, pe);
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180948);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801809B0);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180A30);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180AF0);
extern void func_8012B2CC(s32 a0);
extern void func_8012B178(s32 a0, s32 a1);
extern void func_8012CBA4(s32);
extern s32 func_80180C74(s32 arg0);
extern void func_8012ADE4(u8 *a0);
extern void func_8012A8B0(u8 *a0, s32 a1);
extern void func_8012B23C(s32 a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern s32 D_80199644;
s32 func_80180AF0(s32 a0, s32 a1, s32 *a2) {
s32 cba4;
func_8012B2CC(a0);
func_8012B178(a0, a1);
cba4 = ((s32 (*)(s32))func_8012CBA4)(a0);
if ((*a2 = func_80180C74(a0)) != 0) goto fail;
if (cba4 == 0x2000) goto zeroret;
fail:
func_8012ADE4((u8 *)a0);
*(s32 *)(a0 + 0x1C) = 8;
func_8012A8B0((u8 *)a0, (s32)&D_80199644);
func_8012B23C(a0);
func_8012AD44((s32 *)a0, 1);
return 1;
zeroret:
return 0;
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180BA4);
@@ -6095,7 +6271,31 @@ s32 func_80180C74(s32 arg0) {
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180D94);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180E30);
extern u8 D_80195254[0x20];
extern s32 D_801B3A80[8];
extern s32 D_801B3A90;
extern void func_8002D4C8(s32 arg0, s32 arg1);
extern s32 func_8012C588(s32 a0, s32 a1);
void func_80180E30(s32 param_1) {
s32 i;
if ((*(u16 *)(param_1 + 0x86) & 1) == 0) {
if (*(s16 *)(param_1 + 0x76) < 0xB5) {
if (((s32 (*)(s32, s32))func_8012C588)(0x22D, param_1) != 0) {
*(u16 *)(param_1 + 0x86) |= 1;
for (i = 0; i < 0x20; i += 4) {
*(s32 *)((s32)D_801B3A80 + i) = *(s32 *)((s32)D_80195254 + i);
}
*(s32 *)D_801B3A80 = 0x1000000;
D_801B3A90 = 0x1000000;
*(s32 *)(*(s32 *)(param_1 + 0x20) + 0x24) = (s32)D_801B3A80;
((void (*)(s32, s32))func_8002D4C8)(0x83B, 0);
}
}
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180EEC);
@@ -6131,7 +6331,26 @@ void func_80180F74(s32 target, u16 *cur, s32 step)
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180FF8);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181130);
extern u8 D_80192E6C[];
extern u8 D_80192E6E[];
extern u8 D_80192E70[];
extern s16 D_80126B98;
s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
void func_80181130(s32 a0, s32 a1) {
u16 buf[4];
if ((*(u16 *)(a0 + 0x86) & 1) == 0) {
s32 off = a1 << 3;
buf[0] = *(u16 *)(D_80192E6C + off);
buf[1] = *(u16 *)(D_80192E6E + off);
buf[2] = *(u16 *)(D_80192E70 + off) - 0x14;
if (func_8012DEB8(a0, (s32)(D_80192E6C + off), (s32)buf) != 0) {
D_80126B98 = 0x14;
}
}
}
extern void func_8002D4C8(s32 arg0, s32 arg1);
extern void func_8002AC00(int arg0);
@@ -6142,7 +6361,23 @@ void func_801811BC(void) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801811E8);
extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3);
extern u8 D_80192E84;
void func_801811E8(u8 *a0)
{
u16 buf[4];
if (*(u16 *)a0 != 0x1FC) {
return;
}
buf[0] = *(u16 *)(a0 + 6);
buf[1] = *(u16 *)(a0 + 0xA) - 0x20;
buf[2] = *(u16 *)(a0 + 0xE);
buf[3] = 0x1800;
func_801437D8((s32)(a0 + 0x102), (s32)buf, (s32)&D_80192E84, 0);
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181248);
@@ -6224,7 +6459,7 @@ INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018167
extern M2C_UNK D_80199644;
extern s32 func_8012BEE8(s32 arg);
extern s32 func_80180AF0(s32 a0, s32 a1, s32 *a2);
extern s32 func_80180AF0();
extern void func_8012A8B0(u8 *a0, s32 a1);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8012ADE4(u8 *a0);
@@ -6280,11 +6515,55 @@ void func_80181744(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181850);
extern M2C_UNK D_80199644;
extern void func_8012A8B0(u8 *a0, s32 a1);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8012B23C(s32 a0);
void func_80181850(s32 arg0) {
if (*(s16 *)(arg0 + 0x98) == 0) {
*(s32 *)(arg0 + 0x1C) = 8;
func_8012A8B0((u8 *)arg0, (s32)&D_80199644);
func_8012B23C(arg0);
func_8012AD44((s32 *)arg0, 1);
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801818A8);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181968);
#include "common.h"
extern s32 func_8012BEE8(s32 a0);
extern s32 func_80180750(s32 a0);
extern void func_80180878(s32 a0);
extern void func_80181130(s32, s32);
void func_80181968(s32 arg0) {
s32 state;
if (*(s16 *)(arg0 + 0xAA) == 0) {
switch (*(u16 *)(arg0 + 0x34)) {
case 0:
if (func_8012BEE8(arg0) != 0) {
if (func_80180750(arg0) != 0) {
*(s32 *)(arg0 + 0x1C) = 0x30;
*(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1;
} else {
*(s32 *)(arg0 + 0x1C) = 0x10;
}
}
break;
case 1:
if (func_8012BEE8(arg0) != 0) {
func_80180878(arg0);
}
break;
}
((s32 (*)(s32, s32))func_80181130)(arg0, 0);
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181A20);
@@ -6334,7 +6613,20 @@ INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181EE
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182014);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182170);
void func_80182170(s32 a0, s32 a1)
{
s16 *s0 = (s16 *)a1;
u16 flags;
flags = *(u16 *)(s0 + 0x2E);
if ((flags & 0x8000) != 0 && *(u16 *)(s0 + 0x2F) != 0x1D) {
*(u16 *)(s0 + 0x2E) = flags | 1;
*(u16 *)(s0 + 0x30) = 0x14;
*(u16 *)(s0 + 0x31) = func_8012B6D4(s0 + 2, (s16 *)a0 + 2);
*(u16 *)(s0 + 0x2F) = 0x1D;
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801821E0);
@@ -6345,7 +6637,46 @@ INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801823F
void func_801824A8(void) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801824B0);
extern void func_8012CBF4(s32);
extern s32 func_80181D1C(s32);
extern s32 func_80181DAC(s32);
extern void func_80181EE8(void *);
extern void func_80182170(s32, s32);
extern void func_801439C0(void *);
extern void func_8012C218(void *);
void func_801824B0(s32 a0) {
s32 result;
s16 field_a;
void *d0;
void *t;
result = ((s32 (*)(s32))func_8012CBF4)(a0);
field_a = *(s16 *)(a0 + 0xA);
if (field_a >= 0x81) {
d0 = *(void **)(a0 + 0xD0);
if (d0 != NULL) {
((void (*)(void *))func_801439C0)(d0);
}
((void (*)(void *))func_8012C218)((void *)a0);
return;
}
if ((result & 0x2000) != 0) {
if ((result & 0xC000) == 0) {
if (((s32 (*)(s32))func_80181D1C)(a0) != 0) {
((void (*)(void *))func_80181EE8)(a0);
} else {
t = (void *)((s32 (*)(s32))func_80181DAC)(a0);
if (t != NULL) {
if (*(u16 *)t == 0x1FC) {
((void (*)(void *, void *))func_80182170)((void *)a0, t);
}
}
}
}
}
}
// @class: struct
@@ -6669,9 +7000,34 @@ void func_80182CAC(s32 a0) {
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182DC4);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182E34);
extern void func_8012A828(s32 a0, void *a1);
void func_80182E34(void *a0) {
extern u8 D_801A8898;
extern u8 D_801A8A58;
if (*(s32 *)((char *)a0 + 0x90) == (s32)&D_801A8898) {
func_8012A828((s32)a0, &D_801A8A58);
*(u16 *)((char *)a0 + 0x5C) = 0xAA10;
} else {
*(u16 *)((char *)a0 + 0x98) = 0;
*(u16 *)((char *)a0 + 0x5C) = 0xAA10;
}
*(u16 *)((char *)a0 + 0x2) = 1;
*(u16 *)((char *)a0 + 0xFC) = 0xF;
}
void func_80182E9C(s32 a0) {
*(s16 *)(a0 + 0x52) = 0;
if (*(u8 *)(a0 + 0x5E) == 0x1D) {
if (*(s16 *)(a0 + 0x10A) == 0) {
*(s32 *)(a0 + 0xC4) |= 1;
*(s16 *)(a0 + 0x10A) = 0x3C;
}
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182E9C);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182ED4);
@@ -6699,15 +7055,101 @@ void func_80182FA8(s32 arg0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182FF0);
void func_80182FF0(s32 a0) {
extern u8 D_8019DB0C[];
extern s32 D_8019DBA8;
extern s32 D_8019DB40;
extern u8 D_801A82F8[];
extern s32 func_80143970(s32 a0);
extern s32 func_8012C354(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, void *a1);
extern void func_8012B23C(s32 a0);
if (func_8012C354(a0, (s32)D_8019DB0C) == 0) {
return;
}
*(u8 *)(a0 + 0xC0) = 1;
*(s32 *)(a0 + 0xB4) = -1;
func_80143970(a0);
func_8012A828(a0, (void *)&D_801A82F8);
*(u16 *)(a0 + 2) = *(u16 *)(a0 + 2) + 1;
func_8012B23C(a0);
if (*(s16 *)(a0 + 0x70) == 3) {
*(s32 *)(a0 + 0xBC) = (s32)&D_8019DBA8;
} else {
*(s32 *)(a0 + 0xBC) = (s32)&D_8019DB40;
}
}
extern s32 func_8012BCCC(s32 a0);
extern void func_8012A828(s32, void*);
extern u8 D_801A82F8[];
extern u8 D_801A8380[];
void func_8018308C(s32 a0) {
if (*(s16 *)(a0 + 0x98) == 0) {
func_8012A828(a0, D_801A82F8);
}
if (*(s16 *)(a0 + 0xFE) != 0) {
*(s16 *)(a0 + 0xFE) = 0;
} else if (*(s16 *)(a0 + 0xFC) != 0) {
*(s16 *)(a0 + 0xFC) -= 1;
} else if (func_8012BCCC(a0) <= 0x40000) {
*(s16 *)(a0 + 0x2) = 2;
func_8012A828(a0, D_801A8380);
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018308C);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183130);
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801831FC);
void func_801831FC(s32 a0) {
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_8012CBCC(s32 a0);
extern void func_8012A828(s32 a0, void *a1);
extern u16 D_80126B96;
extern u8 D_8019DC24[];
extern u8 D_8019DC2C[];
extern u8 D_801A8428[];
extern u8 D_8019DAEC[];
if (*(s32 *)(a0 + 0x94) < 0x3D) {
if (func_8012D5E4(a0, (s32)D_8019DC24, (s32)D_8019DC2C, 0x20) == 1) {
D_80126B96 = 4;
}
}
if (func_8012CBCC(a0) & 0x6000) {
*(s16 *)(a0 + 0x2) = 5;
func_8012A828(a0, D_801A8428);
*(s16 *)(a0 + 0xFC) = 0;
*(s32 *)(a0 + 0x58) = ((s32)D_8019DAEC | 0x40000000) | 0x20000000;
}
}
extern void func_8002A04C(s32 a0);
extern void func_8012C098(void);
extern void func_8012E8A8(u8 *a0);
void func_801832A8(s32 arg0) {
register s32 s0 __asm__("$16") = arg0;
*(s16 *)(s0 + 0x76) = 0;
if (*(s16 *)(s0 + 0x100) == 0) {
func_8002A04C(s0);
}
if (*(s16 *)(s0 + 0xFE) == 0) {
((void (*)(void *))func_8012C098)(s0);
} else {
*(s16 *)(s0 + 0x2) = 6;
func_8012E8A8((u8 *)s0);
*(s16 *)(s0 + 0x5C) = 0;
*(u8 *)(s0 + 0xC1) = 0;
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801832A8);
// @class: plumbing
@@ -6726,7 +7168,36 @@ void func_80183318(s32 arg0)
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183360);
extern void func_8012EFB8(s32 a0);
extern void func_8002D4C8(s32 a0, s32 a1);
void func_80183360(void *a0) {
u16 in[3];
s16 out[2];
in[0] = *(u16 *)((char *)a0 + 0x6);
in[1] = *(u16 *)((char *)a0 + 0xA);
in[2] = *(u16 *)((char *)a0 + 0xE);
((void (*)(u16 *, s16 *))func_8012EFB8)(in, out);
{
s32 v = out[0];
if (v < 0) {
v = -v;
}
if (v < 0xB5) {
v = out[1];
if (v < 0) {
v = -v;
}
if (v < 0xA1) {
func_8002D4C8(0x98A, 0);
}
}
}
}
extern void func_8012A828(s32 a0, void *a1);
@@ -6901,7 +7372,19 @@ void func_8018359C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183750);
extern void func_80184614(s32 a0, u16 *a1, s16 a2);
void func_80183750(u8 *a0) {
s16 sp10[3];
if (*(u16 *)(a0 + 0x5E) == 0x24) {
sp10[0] = 2;
sp10[1] = 0xF;
sp10[2] = -2;
func_80184614((s32)a0, (u16 *)sp10, 0xD);
}
}
/* Fresh mass-lane crack (Phase-31 wave T). No banked twin was found for this
@@ -6972,7 +7455,20 @@ void func_801838E4(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183920);
extern void (*D_801A8CA4[])(void);
void func_80183920(void *a0) {
D_801A8CA4[*(u16 *)((s32)a0 + 0x2)]();
if (*(u16 *)((s32)a0 + 0x0) != 0) {
void *ptr = *(void **)((s32)a0 + 0xCC);
*(u16 *)((s32)ptr + 0x8) = *(u16 *)((s32)a0 + 0x6);
ptr = *(void **)((s32)a0 + 0xCC);
*(u16 *)((s32)ptr + 0xA) = *(u16 *)((s32)a0 + 0xA);
ptr = *(void **)((s32)a0 + 0xCC);
*(u16 *)((s32)ptr + 0xC) = *(u16 *)((s32)a0 + 0xE);
}
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801839A8);
@@ -6993,7 +7489,29 @@ void func_80183A80(u8 *a0) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183AD8);
extern void func_8012CBF4(s32 a0);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_80183B64(s32 param_1);
extern u16 D_80126B96;
extern s32 D_801A8CB0;
void func_80183AD8(s32 param_1)
{
s32 p;
p = *(s32 *)(param_1 + 0xCC);
*(u16 *)(p + 0x14) = *(u16 *)(p + 0x14) + 0x80;
if (((s32 (*)(s32))func_8012CBF4)(param_1) == 0) {
if (func_8012D5E4(param_1, (s32)&D_801A8CB0, (s32)((u8 *)&D_801A8CB0 + 8), 0x10) == 0 &&
--*(s32 *)(param_1 + 0x1C) != 0) {
return;
}
D_80126B96 = 0x13;
}
func_80183B64(param_1);
}
extern void func_80016714(void *a0, s32 a1);
@@ -7044,7 +7562,47 @@ void func_80183CA4(int param_1)
void func_80183CFC(void) {
}
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183D04);
extern void func_8012CAE4(void *a0);
extern s32 func_8012C354(s32 a0, s32 a1);
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2);
extern s32 func_8012E504(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, void *a1);
void func_80183D04(s32 s0) {
s32 v0;
s32 a1v;
extern s32 D_801A8B80;
extern s32 D_801A8BB4;
extern u8 D_801B0B30;
v0 = func_8012C354(s0, (s32)&D_801A8B80);
if (v0 == 0) {
return;
}
*(u8 *)(s0 + 0xC0) = 1;
*(s32 *)(s0 + 0xB4) = -1;
*(s32 *)(s0 + 0xBC) = (s32)&D_801A8BB4;
*(s32 *)(s0 + 0xC4) = 1;
a1v = *(s16 *)(s0 + 0x70);
*(u16 *)(s0 + 0xAE) = 8;
v0 = func_8012C658(0x23F, a1v, s0);
*(s32 *)(s0 + 0x6C) = v0;
if (v0 == 0) {
func_8012CAE4((void *)s0);
} else {
if (func_8012E504(s0, 0x23D) == 0) {
*(u16 *)(s0 + 0xFE) = 1;
}
*(u16 *)(s0 + 0x2) = 1;
func_8012A828(s0, (void *)&D_801B0B30);
}
}
extern s32 D_801AA6D0;
extern void func_8001C214(s32 a0, s32 a1);