mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-02 07:59:52 -04:00
feat(decomp): main lane m74 — 3 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked BYTE-IDENTICAL against config/check.us.sha before anything was credited. DisableEvent func_80011EB4 func_8002F80C
This commit is contained in:
@@ -16258,7 +16258,115 @@ void func_8002F714(s32 a0, s32 a1) {
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_8002F80C);
|
||||
extern u8 D_8006A96E;
|
||||
extern s16 D_8006A96C;
|
||||
extern u8 D_800760D0;
|
||||
extern u8 D_800760D4;
|
||||
extern u8 D_800760D8;
|
||||
extern u8 D_800760DC;
|
||||
extern s8 D_800A4F17;
|
||||
extern u8 D_800A4F18;
|
||||
extern s16 D_800A4EFC;
|
||||
extern void (*D_800A4F24)(void);
|
||||
|
||||
extern void func_8002DC68(s32 a0, s32 a1);
|
||||
extern void func_8002E138(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_80030F80(void);
|
||||
extern void func_8002D320(void);
|
||||
extern void func_80031BE0(void);
|
||||
|
||||
void func_8002F80C(void) {
|
||||
u8 flag;
|
||||
s16 max;
|
||||
u8 a0;
|
||||
u8 v0;
|
||||
|
||||
flag = 0;
|
||||
max = 0;
|
||||
if ((D_8006A96E & 1) != 0) {
|
||||
flag = 1;
|
||||
max = D_800760D0;
|
||||
}
|
||||
if ((D_8006A96E & 2) != 0) {
|
||||
flag = 1;
|
||||
if (max < D_800760D4) {
|
||||
max = D_800760D4;
|
||||
}
|
||||
}
|
||||
if ((D_8006A96E & 4) != 0) {
|
||||
flag = 1;
|
||||
if (max < D_800760D8) {
|
||||
max = D_800760D8;
|
||||
}
|
||||
}
|
||||
if ((D_8006A96E & 8) != 0) {
|
||||
flag = 1;
|
||||
if (max < D_800760DC) {
|
||||
max = D_800760DC;
|
||||
}
|
||||
}
|
||||
|
||||
a0 = D_8006A96E;
|
||||
D_8006A96E = a0 & 0xF0;
|
||||
|
||||
if (flag != 0) {
|
||||
D_8006A96C = 0x10;
|
||||
if (max != 0) {
|
||||
func_8002DC68(0xBEB, max | 0x1000);
|
||||
D_8006A96E |= 0x10;
|
||||
return;
|
||||
}
|
||||
if ((a0 & 0x10) == 0) {
|
||||
return;
|
||||
}
|
||||
D_800A4F17 = 1;
|
||||
func_8002E138(4, 0xBEB, 0);
|
||||
v0 = D_800A4F18;
|
||||
D_800A4F17 = v0;
|
||||
if (v0 != 0) {
|
||||
s16 c = D_800A4EFC;
|
||||
if (c != 0) {
|
||||
D_800A4EFC = c - 1;
|
||||
}
|
||||
func_80030F80();
|
||||
func_8002D320();
|
||||
func_80031BE0();
|
||||
D_800A4F18 = 0;
|
||||
D_800A4F17 = 0;
|
||||
}
|
||||
} else {
|
||||
s16 t = D_8006A96C;
|
||||
if (t == 0) {
|
||||
return;
|
||||
}
|
||||
t = t - 1;
|
||||
D_8006A96C = t;
|
||||
if (t != 0) {
|
||||
return;
|
||||
}
|
||||
if ((a0 & 0x10) == 0) {
|
||||
return;
|
||||
}
|
||||
D_800A4F17 = 1;
|
||||
func_8002E138(4, 0xBEB, 0);
|
||||
v0 = D_800A4F18;
|
||||
D_800A4F17 = v0;
|
||||
if (v0 != 0) {
|
||||
s16 c = D_800A4EFC;
|
||||
if (c != 0) {
|
||||
D_800A4EFC = c - 1;
|
||||
}
|
||||
func_80030F80();
|
||||
func_8002D320();
|
||||
func_80031BE0();
|
||||
D_800A4F18 = 0;
|
||||
D_800A4F17 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
D_800A4F24 = 0;
|
||||
D_8006A96E = D_8006A96E & 0xEF;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_8002FA3C);
|
||||
|
||||
|
||||
+15
-1
@@ -72,7 +72,21 @@ __asm__(".text\n.align 2\n.globl EnableEvent\n.ent\tEnableEvent\n"
|
||||
"nop\n"
|
||||
".set\treorder\n.end\tEnableEvent\n");
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", DisableEvent);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align 2\n"
|
||||
".globl DisableEvent\n"
|
||||
".ent\tDisableEvent\n"
|
||||
"DisableEvent:\n"
|
||||
".frame $sp,0,$31\n"
|
||||
".set\tnoreorder\n"
|
||||
"addiu $10, $0, 176\n"
|
||||
"jr $10\n"
|
||||
"addiu $9, $0, 13\n"
|
||||
"nop\n"
|
||||
".set\treorder\n"
|
||||
".end\tDisableEvent\n"
|
||||
);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", ReturnFromException);
|
||||
|
||||
|
||||
+34
-1
@@ -589,7 +589,40 @@ void func_80011E84(s32 a0) {
|
||||
D_80074790 = a0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011EB4);
|
||||
void func_80011EB4(void) {
|
||||
extern s32 D_800629D0;
|
||||
extern s32 D_80074788;
|
||||
extern s32 D_80074790;
|
||||
extern u16 D_80074794;
|
||||
extern u16 D_80074798;
|
||||
extern s32 func_80014B10(s32 a0);
|
||||
extern s32 func_800149E0(s32 a0);
|
||||
u16 local;
|
||||
|
||||
switch (D_800629D0) {
|
||||
case 0:
|
||||
local = func_80014B10(0);
|
||||
*(u16 *)(0x80700000 + D_80074788 * 2) = local;
|
||||
D_80074788++;
|
||||
local = func_800149E0(0);
|
||||
*(u16 *)(0x80700000 + D_80074788 * 2) = local;
|
||||
D_80074788++;
|
||||
break;
|
||||
case 1:
|
||||
if (D_80074790 != 0) {
|
||||
D_80074794 = *(u16 *)(D_80074790 + D_80074788++ * 2);
|
||||
D_80074798 = *(u16 *)(D_80074790 + D_80074788++ * 2);
|
||||
} else {
|
||||
D_80074794 = 0;
|
||||
D_80074798 = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
D_80074794 = *(u16 *)(0x80700000 + D_80074788++ * 2);
|
||||
D_80074798 = *(u16 *)(0x80700000 + D_80074788++ * 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_800120DC);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user