mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
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:
@@ -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);
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user