mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 22:45:39 -04:00
feat(decomp): main lane m74a — 9 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. CloseEvent WaitEvent func_80010ED4 func_80011778 func_80011A3C func_80011ADC func_80012D0C func_80013028 func_80041448
This commit is contained in:
@@ -604,7 +604,22 @@ INCLUDE_ASM("asm/nonmatchings/800", func_80012C6C);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80012CB8);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80012D0C);
|
||||
s16 func_80012D0C(s32 x0, s32 x1, s32 d, s16 *ctr)
|
||||
{
|
||||
s32 diff;
|
||||
s32 q;
|
||||
|
||||
diff = x1 - x0;
|
||||
if (*ctr == 0 || (s16)d == 0)
|
||||
return (s16)diff;
|
||||
q = (s16)((s16)diff / (s16)d);
|
||||
if (q != 0)
|
||||
return q;
|
||||
*ctr = *ctr - 1;
|
||||
return func_80012D0C((s16)x0, (s16)x1,
|
||||
((s16)d + (s32)(((u32)d << 16) >> 31)) >> 1,
|
||||
ctr);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80012DBC);
|
||||
|
||||
@@ -616,7 +631,23 @@ INCLUDE_ASM("asm/nonmatchings/800", func_80012F74);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80012FC8);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80013028);
|
||||
s32 func_80013028(s32 x, s32 y, s16 n, s16 d, s16 *p) {
|
||||
s32 r;
|
||||
|
||||
y -= x;
|
||||
if (*p == 0 || n == 0) {
|
||||
r = (s16)y;
|
||||
} else {
|
||||
r = (s16)((s16)y * d / n);
|
||||
if (r == 0) {
|
||||
r = -1;
|
||||
if ((s16)y > 0) {
|
||||
r = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_800130D0);
|
||||
|
||||
|
||||
+25
-2
@@ -27,9 +27,32 @@ INCLUDE_ASM("asm/nonmatchings/800c3", DeliverEvent);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", OpenEvent);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", CloseEvent);
|
||||
__asm__(".text\n.align 2\n.globl CloseEvent\n.ent\tCloseEvent\n"
|
||||
"CloseEvent:\n.frame $sp,0,$31\n"
|
||||
".set\tnoreorder\n"
|
||||
"addiu $t2, $zero, 0xB0\n"
|
||||
"jr $t2\n"
|
||||
"addiu $t1, $zero, 0x9\n"
|
||||
"nop\n"
|
||||
".set\treorder\n.end\tCloseEvent\n");
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", WaitEvent);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align 2\n"
|
||||
".globl WaitEvent\n"
|
||||
".ent\tWaitEvent\n"
|
||||
"WaitEvent:\n"
|
||||
".frame $sp, 0, $31\n"
|
||||
".mask 0x00000000, 0\n"
|
||||
".fmask 0x00000000, 0\n"
|
||||
".set\tnoreorder\n"
|
||||
"addiu $t2, $0, 176\n"
|
||||
"jr $t2\n"
|
||||
"addiu $t1, $0, 10\n"
|
||||
".set\treorder\n"
|
||||
".end\tWaitEvent\n"
|
||||
"nop\n"
|
||||
);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", TestEvent);
|
||||
|
||||
|
||||
+70
-4
@@ -303,7 +303,31 @@ void func_80010E7C(void) {
|
||||
*(u16 *)(p + 0xA3D4) = 1;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80010ED4);
|
||||
extern s32 D_800C7C60;
|
||||
extern void *D_800C7C64;
|
||||
extern u8 D_800A2E20[];
|
||||
extern u8 D_800AE848[];
|
||||
extern void *loadDestPtrTable;
|
||||
extern int CdReadRequest(void *dst, void *src, int arg2, int arg3);
|
||||
extern void func_8002D4C8(s32, s32);
|
||||
extern void func_80010AE0(int);
|
||||
extern void func_80014338(void);
|
||||
extern void func_800116E0(void);
|
||||
extern void func_80011778(void);
|
||||
extern s16 D_800B99DA;
|
||||
|
||||
void func_80010ED4(void) {
|
||||
D_800C7C60 = 0x57;
|
||||
D_800C7C64 = D_800A2E20;
|
||||
if (CdReadRequest(D_800AE848, loadDestPtrTable, 0, &D_800C7C60) != 0) {
|
||||
func_8002D4C8(2, 0);
|
||||
func_80010AE0(0x3E0);
|
||||
func_80014338();
|
||||
func_800116E0();
|
||||
D_800B99DA = 0;
|
||||
func_80011778();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_800CEEC8(void);
|
||||
@@ -433,7 +457,20 @@ void func_80011680(void) {
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_800116E0);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011778);
|
||||
extern u8 D_800AF630[];
|
||||
|
||||
void func_80011778(void) {
|
||||
register u8 *p = D_800AF630;
|
||||
|
||||
(*(u16 *)(p + 0xA3AE))++;
|
||||
*(u16 *)(p + 0xA3B4) = 0;
|
||||
*(u16 *)(p + 0xA3BA) = 0;
|
||||
*(u16 *)(p + 0xA3B8) = 0;
|
||||
*(u16 *)(p + 0xA3BE) = 0;
|
||||
*(u16 *)(p + 0xA3B0) = 0;
|
||||
*(u16 *)(p + 0xA3B6) = 0;
|
||||
*(u16 *)(p + 0xA3BC) = 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011818);
|
||||
|
||||
@@ -465,9 +502,38 @@ INCLUDE_ASM("asm/nonmatchings/boot", func_80011998);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_800119F0);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011A3C);
|
||||
extern u8 D_800AF630[];
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011ADC);
|
||||
void func_80011A3C(void) {
|
||||
register u8 *p = D_800AF630;
|
||||
register u16 x;
|
||||
|
||||
x = *(u16 *)(p + 0xA3C0);
|
||||
x = x + 1;
|
||||
*(u16 *)(p + 0xA3C0) = x;
|
||||
*(u16 *)(p + 0xA3C6) = 0;
|
||||
*(u16 *)(p + 0xA3CC) = 0;
|
||||
*(u16 *)(p + 0xA3CA) = 0;
|
||||
*(u16 *)(p + 0xA3D0) = 0;
|
||||
*(u16 *)(p + 0xA3C2) = 0;
|
||||
*(u16 *)(p + 0xA3C8) = 0;
|
||||
*(u16 *)(p + 0xA3CE) = 0;
|
||||
}
|
||||
|
||||
extern u8 D_800AF630[];
|
||||
|
||||
void func_80011ADC(void) {
|
||||
register u8 *p = D_800AF630;
|
||||
|
||||
--*(u16 *)(p + 0xA3C0);
|
||||
*(u16 *)(p + 0xA3C6) = 0;
|
||||
*(u16 *)(p + 0xA3CC) = 0;
|
||||
*(u16 *)(p + 0xA3CA) = 0;
|
||||
*(u16 *)(p + 0xA3D0) = 0;
|
||||
*(u16 *)(p + 0xA3C2) = 0;
|
||||
*(u16 *)(p + 0xA3C8) = 0;
|
||||
*(u16 *)(p + 0xA3CE) = 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011B7C);
|
||||
|
||||
|
||||
+17
-1
@@ -349,4 +349,20 @@ s32 func_80041400(s32 param_1)
|
||||
return *(s16 *)(base + 0x5A);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/sgap_8", func_80041448);
|
||||
|
||||
extern u8 D_800AE614;
|
||||
extern s16 D_80079596[][26];
|
||||
extern u16 D_800B9B3A;
|
||||
extern void func_80040868(s32);
|
||||
|
||||
void func_80041448(s16 param_1)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < D_800AE614; i++) {
|
||||
if (D_80079596[i][0] == param_1) {
|
||||
D_800B9B3A = i;
|
||||
func_80040868(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user