feat(decomp): ox wave eb overlays — 5 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 16:00:57 -06:00
parent b604fc1e4e
commit 2c3201b2fd
4 changed files with 186 additions and 5 deletions
+91 -1
View File
@@ -211,6 +211,96 @@ void func_800CF180(void)
}
INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CF290);
extern s32 D_800D3C10;
void func_800CF290(void) {
extern u16 D_800B9A02;
extern u8 D_800D3AEC[];
extern u8 D_800D3B1C[];
extern u8 D_800D3C10_b __asm__("D_800D3C10");
extern u8 D_800AA60C[];
register s32 n __asm__("$7") = D_800B9A02;
register u8 *p0 __asm__("$4");
register u8 *p1 __asm__("$3");
register u32 c5 __asm__("$6");
register u32 c64 __asm__("$13");
register u32 c7840 __asm__("$14");
register u32 cm28 __asm__("$12");
register u32 c38 __asm__("$11");
register u32 c256 __asm__("$10");
register u32 c60 __asm__("$9");
u32 *q0;
u32 *q1;
u32 *ot;
u8 c;
s32 w;
u32 t;
{
u32 e1a = 0xE100008A;
w = n * 24;
p0 = D_800D3AEC + w;
q0 = (u32 *)(D_800D3AEC + w + 4);
c5 = 5;
p0[3] = c5;
*q0 = e1a;
}
c64 = 0x64;
p0[0xB] = c64;
*(s16 *)(p0 + 0xC) = -0x100;
c = D_800D3C10_b;
n <<= 14;
c7840 = 0x7840;
cm28 = -28;
*(s16 *)(p0 + 0x12) = c7840;
*(s16 *)(p0 + 0xE) = cm28;
c38 = 0x38;
c256 = 0x100;
p0[0x10] = 0;
p0[0x11] = c38;
*(s16 *)(p0 + 0x14) = c256;
c60 = 0x60;
*(s16 *)(p0 + 0x16) = c60;
p0[0xA] = c;
p0[9] = c;
p0[8] = c;
p1 = D_800D3B1C + w;
q1 = (u32 *)(D_800D3B1C + w + 4);
{
register u32 e1b __asm__("$8") = 0xE100008C;
p1[3] = c5;
*q1 = e1b;
}
t = *(u32 *)p1;
p1[0xB] = c64;
c = D_800D3C10_b;
*(s16 *)(p1 + 0x12) = c7840;
*(s16 *)(p1 + 0xC) = 0;
*(s16 *)(p1 + 0xE) = cm28;
p1[0x10] = 0;
p1[0x11] = c38;
*(s16 *)(p1 + 0x14) = c256;
*(s16 *)(p1 + 0x16) = c60;
p1[0xA] = c;
p1[9] = c;
p1[8] = c;
ot = (u32 *)(D_800AA60C + n);
{
register u32 m24 __asm__("$8");
register u32 mFF __asm__("$5");
m24 = 0xFFFFFF;
mFF = 0xFF000000;
*(u32 *)p1 = (t & mFF) | (*ot & m24);
*ot = (*ot & mFF) | ((u32)p1 & m24);
*(u32 *)p0 = (*(u32 *)p0 & mFF) | (*ot & m24);
*ot = (*ot & mFF) | ((u32)p0 & m24);
}
}
INCLUDE_RODATA("asm/md_MAIN_001/nonmatchings/md_MAIN_001", D_800CEDF8);
+32 -1
View File
@@ -122,7 +122,38 @@ void func_800CB180(void) {
}
INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CB1A0);
#include "common.h"
extern u8 D_80078EC1;
extern void (*D_800CBEBC[])(void);
extern s32 func_800CB7B0(s32 a0);
extern void func_80147364(u16 a0, s32 a1);
extern void func_800CB6CC(void*);
void func_800CB1A0(s32 a0) {
s32 pad[2];
u16 index;
s16 value;
s32 self = a0;
if (D_80078EC1 != 0xF) {
((void (*)(s32))func_800CB6CC)(a0);
return;
}
index = *(u16 *)(self + 2);
((void (*)(s32))D_800CBEBC[index])(self);
if (*(u16 *)self != 0 && func_800CB7B0(self) != 0) {
func_80147364(4, 0x649);
}
value = *(s16 *)(self + 0xA);
if (value < 0x401) {
return;
}
((void (*)(s32))func_800CB6CC)(self);
}
void func_800CB23C(void *a0) {
extern u8 D_800CBE98[];
+52 -2
View File
@@ -133,7 +133,14 @@ void func_800CCF28(s32 a0) {
}
INCLUDE_ASM("asm/md_MAIN_045/nonmatchings/md_MAIN_045", func_800CCF58);
void func_800CCF58(void *arg0) {
void *s0;
s0 = arg0;
func_800CCF84();
*(s16 *)((u8 *)s0 + 0x1C8) = 0;
}
extern void func_80147364(s32 a, s32 b);
void func_800CCF84(void) {
@@ -253,7 +260,50 @@ void func_800CD328(s32 param_1)
}
INCLUDE_ASM("asm/md_MAIN_045/nonmatchings/md_MAIN_045", func_800CD390);
extern void func_80146578(void);
extern s32 func_8001CC3C(s32, s32, s32, s32);
extern void func_80149374(s32 a0, s32 a1);
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3);
extern void func_80146E90(s32 *a0, s32 a1);
extern void func_80146CA0(void *a0);
extern void func_8014ACC0(s32 a0, s32 a1);
extern void func_800CD5BC(void);
extern u8 D_800CD66C;
extern s16 D_800CE050;
void func_800CD390(s32 param_1) {
s32 s0;
s32 s2;
u16 temp;
s2 = *(s32 *)(param_1 + 0x4C);
s0 = ((s32 (*)(void))func_80146578)();
*(s32 *)(param_1 + 0x20) = s0;
if (s0 != 0) {
((s32 (*)(s32, void *, s32, s32))func_8001CC3C)(s0, ((u8 *)&D_800CD66C), 0x220, 0x168);
*(u8 *)(s0 + 0x27) = 0x24;
*(u8 *)(s0 + 0x24) = 0xFF;
*(u8 *)(s0 + 0x25) = 0x40;
*(u8 *)(s0 + 0x26) = 0x40;
*(u32 *)(s0 + 4) |= 0x50000000;
func_80149374(s2, param_1 + 4);
temp = *(u16 *)(*(s32 *)(s2 + 0x20) + 0x10);
*(s16 *)(s0 + 0x12) = D_800CE050;
*(u16 *)(s0 + 0x10) = temp;
*(u16 *)(s0 + 0x14) = *(u16 *)(*(s32 *)(s2 + 0x20) + 0x14);
*(u16 *)(param_1 + 0x60) = *(u16 *)(s2 + 0x100);
*(u16 *)(param_1 + 0x62) = *(u16 *)(s2 + 0x102);
*(u16 *)(param_1 + 0x64) = *(u16 *)(s2 + 0x104);
*(u16 *)(s0 + 0x1A) = 0x1000;
*(u16 *)(s0 + 0x18) = 0x1000;
func_80146DE8((s32 *)param_1, 0, 0, 0xFFE80000);
func_80146E90((s32 *)param_1, 8);
func_80146CA0((void *)param_1);
func_8014ACC0(s2, 1);
} else {
((void (*)(s32))func_800CD5BC)(param_1);
}
}
extern s32 func_80146E98(s32 a0);
extern void func_80146CA0(void *a0);
+11 -1
View File
@@ -4007,7 +4007,17 @@ void func_8017D2AC(s32 param_1) {
}
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D378);
void func_8017D378(s32 param_1) {
extern void func_800291A0(s32 a0, s32 a1);
extern void func_8016F288(void);
extern s32 func_80171990(u8 *a0);
extern s32 D_801A12E4;
func_800291A0(0xE1, 0);
func_8016F288();
D_801A12E4 = 0;
func_80171990((u8 *)param_1);
}
void func_8017D3C0(void *a0) {
extern s32 D_801151D4;