feat(decomp): ox wave cp overlays — 4 banked

Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
Drew T
2026-08-25 05:54:17 -06:00
parent 8ab6c1082f
commit 0cfc942cc8
4 changed files with 96 additions and 4 deletions
+14 -1
View File
@@ -5782,7 +5782,20 @@ void func_801AC150(void *a0) {
}
INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AC234);
extern s32 func_80128ED8(s32 a0, s32 *a1);
void func_801AC234(void *a0)
{
extern void func_801292C8(u8 *a0);
extern void func_8012931C(struct vec *a0);
func_8012931C((struct vec *)a0);
if (func_80128ED8(*(s32 *)((char *)a0 + 0x20), (s32 *)((char *)a0 + 0x24)) != 0 ||
(*(s16 *)((char *)a0 + 0x2C) != 2 && *(s16 *)((char *)a0 + 0xA) >= -0x200)) {
func_801292C8((u8 *)a0);
}
}
#include "common.h"
+30 -1
View File
@@ -4682,7 +4682,36 @@ void func_80180C68(void *a0)
}
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180D54);
extern void Square0(s32 *a0, s32 *a1);
extern u16 D_80126B5E;
extern u16 D_80126B66;
extern u16 D_80126B62;
s32 func_80180D54(void *a0, s32 a1) {
s32 in[3];
s32 out[3];
s32 d;
s16 e;
register s32 ret __asm__("$2");
in[0] = *(s16 *)((s32)a0 + 6) - *(s16 *)&D_80126B5E;
in[1] = 0;
in[2] = *(s16 *)((s32)a0 + 0xE) - *(s16 *)&D_80126B66;
Square0(in, out);
d = D_80126B62 - *(u16 *)((s32)a0 + 0xA);
e = d;
if ((s16)d < 0) {
e = -d;
}
ret = 0;
if (out[0] + out[2] < (u16)a1 * (u16)a1) {
ret = (s16)e < 4;
}
return ret;
}
void func_80180E14(void) {
+15 -1
View File
@@ -7978,7 +7978,21 @@ s32 func_80186710(void) {
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80186798);
#include "common.h"
void func_80186798(s32 a0, void *a1) {
extern u8 D_80194724[];
extern s32 aFC4C[] __asm__("D_801EFC4C");
extern void func_801868A0();
u32 i;
for (i = 0; i < (u32)a0; i++) {
if (D_80194724[i] == 0) {
func_801868A0((void *)aFC4C[i], a1);
}
}
}
extern s32 aFC4C[] __asm__("D_801EFC4C");
extern u8 D_80194724[];
+37 -1
View File
@@ -6238,7 +6238,43 @@ extern s32 func_8012BEE8(s32 arg);
}
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_80181A1C);
extern void func_8012A828(s32*, s32);
extern void func_8012B23C(s32 a0);
extern u8 D_80078E78[];
extern s32 rand(void);
/* func_80181A1C — entity state-kick #0xA (head-crack entry). */
void func_80181A1C(void *a0) {
extern u8 D_801ADDEC[];
volatile s32 pad[4];
u8 *p;
s32 t;
s32 r;
s32 h;
s32 v;
t = rand();
p = D_80078E78;
r = t % 1024;
h = *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12);
if (rand() & 1) {
v = h + r;
} else {
v = h - r;
}
*(s32 *)((s32)a0 + 0xE0) = v;
func_8012B23C((s32)a0);
((void (*)(s32, void *))func_8012A828)((s32)a0, D_801ADDEC);
*(s32 *)((s32)a0 + 0x1C) = 150;
*(s32 *)((s32)a0 + 0xE4) = 0;
if (p[0x36] != 0) {
*(s16 *)((s32)a0 + 2) = 6;
} else {
*(s16 *)((s32)a0 + 2) = 7;
}
}
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
extern s32 func_8012B8E4(s32 a0, s32 a1);