mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-30 23:37:39 -04:00
feat(decomp): ox wave cl overlays — 3 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -3531,7 +3531,287 @@ extern s32 D_801A6B40;
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017DF8C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E26C);
|
||||
void func_8017E26C() {
|
||||
__asm__ __volatile__(".set\tnoreorder\n"
|
||||
"addiu $sp, $sp, -88\n"
|
||||
"lui $a0, %hi(D_801AC280)\n"
|
||||
"addiu $a0, $a0, %lo(D_801AC280)\n"
|
||||
"sw $ra, 80($sp)\n"
|
||||
"jal func_800547D8\n"
|
||||
" addiu $a1, $sp, 16\n"
|
||||
"jal func_80052E38\n"
|
||||
" addiu $a0, $sp, 16\n"
|
||||
"addiu $t9, $sp, 48\n"
|
||||
"addiu $t3, $sp, 56\n"
|
||||
"addiu $t8, $sp, 68\n"
|
||||
"addiu $t6, $zero, 32\n"
|
||||
"lui $t2, 255\n"
|
||||
"ori $t2, $t2, 65535\n"
|
||||
"lui $t5, 65280\n"
|
||||
"lui $t1, %hi(D_801A6B40)\n"
|
||||
"addiu $t1, $t1, %lo(D_801A6B40)\n"
|
||||
"addu $a2, $zero, $zero\n"
|
||||
"lui $v1, %hi(D_800A6610)\n"
|
||||
"addiu $v1, $v1, %lo(D_800A6610)\n"
|
||||
"lui $v0, %hi(D_800B9A02)\n"
|
||||
"lhu $v0, %lo(D_800B9A02)($v0)\n"
|
||||
"lui $t0, %hi(D_800A5E60)\n"
|
||||
"lw $t0, %lo(D_800A5E60)($t0)\n"
|
||||
"sll $v0, $v0, 14\n"
|
||||
"addu $t7, $v0, $v1\n"
|
||||
"addiu $a3, $t0, 18\n"
|
||||
".L8017E2D8:\n"
|
||||
"lw $v0, 0($t1)\n"
|
||||
"nop\n"
|
||||
"beqz $v0, .L8017E670\n"
|
||||
" nop\n"
|
||||
"lui $at, %hi(D_801A6B4A)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lhu $v0, %lo(D_801A6B4A)($at)\n"
|
||||
"nop\n"
|
||||
"sh $v0, 48($sp)\n"
|
||||
"lui $at, %hi(D_801A6B4E)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lhu $v0, %lo(D_801A6B4E)($at)\n"
|
||||
"nop\n"
|
||||
"sh $v0, 50($sp)\n"
|
||||
"lui $at, %hi(D_801A6B52)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lhu $v0, %lo(D_801A6B52)($at)\n"
|
||||
"nop\n"
|
||||
"sh $v0, 52($sp)\n"
|
||||
"lui $at, %hi(D_801A6B6E)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lhu $v0, %lo(D_801A6B6E)($at)\n"
|
||||
"nop\n"
|
||||
"sh $v0, 56($sp)\n"
|
||||
"lui $at, %hi(D_801A6B72)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lhu $v0, %lo(D_801A6B72)($at)\n"
|
||||
"nop\n"
|
||||
"sh $v0, 58($sp)\n"
|
||||
"lui $at, %hi(D_801A6B76)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lhu $v0, %lo(D_801A6B76)($at)\n"
|
||||
"nop\n"
|
||||
"sh $v0, 60($sp)\n"
|
||||
"lui $at, %hi(D_801A6B48)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B48)($at)\n"
|
||||
"lui $at, %hi(D_801A6B78)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a0, %lo(D_801A6B78)($at)\n"
|
||||
"lui $at, %hi(D_801A6B4C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B4C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B7C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a1, %lo(D_801A6B7C)($at)\n"
|
||||
"addu $v0, $v0, $a0\n"
|
||||
"lui $at, %hi(D_801A6B48)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v0, %lo(D_801A6B48)($at)\n"
|
||||
"lui $at, %hi(D_801A6B50)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B50)($at)\n"
|
||||
"addu $v1, $v1, $a1\n"
|
||||
"lui $at, %hi(D_801A6B4C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v1, %lo(D_801A6B4C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B80)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B80)($at)\n"
|
||||
"lui $at, %hi(D_801A6B44)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a0, %lo(D_801A6B44)($at)\n"
|
||||
"addu $v0, $v0, $v1\n"
|
||||
"lui $at, %hi(D_801A6B50)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v0, %lo(D_801A6B50)($at)\n"
|
||||
"bnez $a0, .L8017E46C\n"
|
||||
" addiu $v0, $a0, -1\n"
|
||||
"lui $at, %hi(D_801A6B6C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B6C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B78)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B78)($at)\n"
|
||||
"lui $at, %hi(D_801A6B7C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a0, %lo(D_801A6B7C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B80)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a1, %lo(D_801A6B80)($at)\n"
|
||||
"addu $v0, $v0, $v1\n"
|
||||
"lui $at, %hi(D_801A6B6C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v0, %lo(D_801A6B6C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B70)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B70)($at)\n"
|
||||
"lui $at, %hi(D_801A6B74)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B74)($at)\n"
|
||||
"addu $v0, $v0, $a0\n"
|
||||
"addu $v1, $v1, $a1\n"
|
||||
"lui $at, %hi(D_801A6B70)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v0, %lo(D_801A6B70)($at)\n"
|
||||
"lui $at, %hi(D_801A6B74)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v1, %lo(D_801A6B74)($at)\n"
|
||||
"j .L8017E478\n"
|
||||
" nop\n"
|
||||
".L8017E46C:\n"
|
||||
"lui $at, %hi(D_801A6B44)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v0, %lo(D_801A6B44)($at)\n"
|
||||
".L8017E478:\n"
|
||||
"lui $at, %hi(D_801A6B78)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B78)($at)\n"
|
||||
"lui $at, %hi(D_801A6B84)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a0, %lo(D_801A6B84)($at)\n"
|
||||
"lui $at, %hi(D_801A6B7C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B7C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B88)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a1, %lo(D_801A6B88)($at)\n"
|
||||
"addu $v0, $v0, $a0\n"
|
||||
"lui $at, %hi(D_801A6B78)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v0, %lo(D_801A6B78)($at)\n"
|
||||
"lui $at, %hi(D_801A6B80)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B80)($at)\n"
|
||||
"addu $v1, $v1, $a1\n"
|
||||
"lui $at, %hi(D_801A6B7C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v1, %lo(D_801A6B7C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B8C)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B8C)($at)\n"
|
||||
"lui $at, %hi(D_801A6B78)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $a0, %lo(D_801A6B78)($at)\n"
|
||||
"addu $v0, $v0, $v1\n"
|
||||
"lui $at, %hi(D_801A6B80)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $v0, %lo(D_801A6B80)($at)\n"
|
||||
"blez $a0, .L8017E524\n"
|
||||
" nop\n"
|
||||
"lui $at, %hi(D_801A6B48)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B48)($at)\n"
|
||||
"lui $at, %hi(D_801A6B54)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B54)($at)\n"
|
||||
"j .L8017E544\n"
|
||||
" slt $v0, $v0, $v1\n"
|
||||
".L8017E524:\n"
|
||||
"lui $at, %hi(D_801A6B48)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v0, %lo(D_801A6B48)($at)\n"
|
||||
"lui $at, %hi(D_801A6B54)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"lw $v1, %lo(D_801A6B54)($at)\n"
|
||||
"nop\n"
|
||||
"slt $v0, $v0, $v1\n"
|
||||
".L8017E544:\n"
|
||||
"beqz $v0, .L8017E558\n"
|
||||
" nop\n"
|
||||
"lui $at, %hi(D_801A6B40)\n"
|
||||
"addu $at, $at, $a2\n"
|
||||
"sw $zero, %lo(D_801A6B40)($at)\n"
|
||||
".L8017E558:\n"
|
||||
"lw $v0, 0($t1)\n"
|
||||
"nop\n"
|
||||
"beqz $v0, .L8017E670\n"
|
||||
" nop\n"
|
||||
"lwc2 $0, 0($t9)\n"
|
||||
"lwc2 $1, 4($t9)\n"
|
||||
"lwc2 $2, 0($t3)\n"
|
||||
"lwc2 $3, 4($t3)\n"
|
||||
"lwc2 $4, 0($t3)\n"
|
||||
"lwc2 $5, 4($t3)\n"
|
||||
"nop\n"
|
||||
"nop\n"
|
||||
"rtpt\n"
|
||||
"addiu $v0, $sp, 64\n"
|
||||
"cfc2 $t4, $31\n"
|
||||
"nop\n"
|
||||
"sw $t4, 0($v0)\n"
|
||||
"lui $v1, 32645\n"
|
||||
"lw $v0, 64($sp)\n"
|
||||
"ori $v1, $v1, 57344\n"
|
||||
"and $v0, $v0, $v1\n"
|
||||
"bnez $v0, .L8017E670\n"
|
||||
" addiu $v1, $t0, 12\n"
|
||||
"addiu $v0, $t0, 20\n"
|
||||
"swc2 $12, 0($v1)\n"
|
||||
"swc2 $13, 0($v0)\n"
|
||||
"addiu $v1, $sp, 72\n"
|
||||
"addiu $v0, $sp, 76\n"
|
||||
"swc2 $17, 0($t8)\n"
|
||||
"swc2 $18, 0($v1)\n"
|
||||
"swc2 $19, 0($v0)\n"
|
||||
"lw $v1, 68($sp)\n"
|
||||
"lw $v0, 72($sp)\n"
|
||||
"nop\n"
|
||||
"addu $a1, $v1, $v0\n"
|
||||
"bgez $a1, .L8017E5F0\n"
|
||||
" lui $v1, 57600\n"
|
||||
"addiu $a1, $a1, 7\n"
|
||||
".L8017E5F0:\n"
|
||||
"ori $v1, $v1, 32\n"
|
||||
"addiu $v0, $zero, 5\n"
|
||||
"sb $v0, -15($a3)\n"
|
||||
"addiu $v0, $zero, 82\n"
|
||||
"sb $v0, -7($a3)\n"
|
||||
"addiu $v0, $zero, 224\n"
|
||||
"sb $v0, -9($a3)\n"
|
||||
"addiu $v0, $zero, 128\n"
|
||||
"sb $v0, -8($a3)\n"
|
||||
"addiu $v0, $zero, 8\n"
|
||||
"sb $v0, -2($a3)\n"
|
||||
"addiu $v0, $zero, 64\n"
|
||||
"sw $v1, -14($a3)\n"
|
||||
"sb $t6, -10($a3)\n"
|
||||
"sb $v0, -1($a3)\n"
|
||||
"sb $t6, 0($a3)\n"
|
||||
"addiu $a3, $a3, 24\n"
|
||||
"sra $v1, $a1, 3\n"
|
||||
"sll $v1, $v1, 2\n"
|
||||
"addu $v1, $v1, $t7\n"
|
||||
"lw $a0, 0($t0)\n"
|
||||
"lw $v0, 0($v1)\n"
|
||||
"and $a0, $a0, $t5\n"
|
||||
"and $v0, $v0, $t2\n"
|
||||
"or $a0, $a0, $v0\n"
|
||||
"sw $a0, 0($t0)\n"
|
||||
"and $a0, $t0, $t2\n"
|
||||
"lw $v0, 0($v1)\n"
|
||||
"addiu $t0, $t0, 24\n"
|
||||
"and $v0, $v0, $t5\n"
|
||||
"or $v0, $v0, $a0\n"
|
||||
"sw $v0, 0($v1)\n"
|
||||
".L8017E670:\n"
|
||||
"addiu $t1, $t1, 80\n"
|
||||
"lui $v0, %hi(D_801ABB40)\n"
|
||||
"addiu $v0, $v0, %lo(D_801ABB40)\n"
|
||||
"slt $v0, $t1, $v0\n"
|
||||
"bnez $v0, .L8017E2D8\n"
|
||||
" addiu $a2, $a2, 80\n"
|
||||
"lui $at, %hi(D_800A5E60)\n"
|
||||
"sw $t0, %lo(D_800A5E60)($at)\n"
|
||||
"lw $ra, 80($sp)\n"
|
||||
"addiu $sp, $sp, 88\n"
|
||||
".set\treorder\n"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E6A0);
|
||||
|
||||
|
||||
@@ -4346,7 +4346,71 @@ void func_801805E0(void)
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80180644);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_8018069C);
|
||||
typedef struct {
|
||||
u8 pad0[0x18];
|
||||
u16 f18;
|
||||
u16 f1A;
|
||||
u16 f1C;
|
||||
u8 pad1[0xE];
|
||||
u16 f2C;
|
||||
} Act_8018069C;
|
||||
|
||||
void func_8018069C(s32 a0) {
|
||||
extern s32 D_801E6748;
|
||||
extern s32 D_801AA594;
|
||||
extern u16 D_8018A960[];
|
||||
extern s32 D_801B3DC4;
|
||||
extern s32 D_801BBAB8[];
|
||||
extern s32 D_801C29C4[];
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32, s32);
|
||||
extern void func_8001D0E8(s32, s32, s32);
|
||||
extern void func_801812FC(void);
|
||||
|
||||
s32 s1;
|
||||
s32 t;
|
||||
u16 v;
|
||||
|
||||
s1 = func_80029504();
|
||||
if ((u32)(s1 - 0x44C) >= 0x46) {
|
||||
goto FAIL;
|
||||
}
|
||||
t = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(a0 + 0x20) = t;
|
||||
if (t == 0) {
|
||||
FAIL:
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
func_8001C214(*(s32 *)(a0 + 0x20), (s32)&D_801AA594);
|
||||
func_8001D0E8(*(s32 *)(a0 + 0x20), 0x7FFF, 0x7FFF);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) =
|
||||
(v = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C), D_801E6748 = 0, v | 0x10);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) =
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) =
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C) = 0x3000;
|
||||
*(u16 *)(*(s32 *)(a0 + 0x68) + 0xC) = 0x7FFF;
|
||||
if (s1 == 0x488) {
|
||||
*(u16 *)(a0 + 2) = 2;
|
||||
func_8012E8E0(a0, (s32)D_8018A960);
|
||||
((void (*)(s32, s32))func_801812FC)(a0, (s32)&D_801B3DC4);
|
||||
*(s32 *)(a0 + 0x1C) = 0;
|
||||
*(u16 *)(a0 + 0x34) = 0;
|
||||
return;
|
||||
}
|
||||
*(u16 *)(a0 + 2) = 1;
|
||||
func_8012E8E0(a0, (s32)D_8018A960);
|
||||
v = *(u16 *)(a0 + 0xFC) ^ 1;
|
||||
*(u16 *)(a0 + 0xFC) = v;
|
||||
if (v != 0) {
|
||||
((void (*)(s32, s32))func_801812FC)(a0, (s32)D_801BBAB8);
|
||||
} else {
|
||||
((void (*)(s32, s32))func_801812FC)(a0, (s32)D_801C29C4);
|
||||
}
|
||||
*(s32 *)(a0 + 0x1C) = 0;
|
||||
}
|
||||
|
||||
|
||||
void func_801807E8(void *arg0) {
|
||||
extern void (*D_8018A97C[])(void);
|
||||
|
||||
Reference in New Issue
Block a user