mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-07 17:31:49 -04:00
feat(decomp): main lane m49aab — 1 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. func_8001C320
This commit is contained in:
@@ -7422,7 +7422,56 @@ void func_8001C2C4(s32 a0) {
|
||||
*(s32 *)(a0 + 0x24) = 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_8001C320);
|
||||
void func_8001C320(s32 a0, s32 a1)
|
||||
{
|
||||
extern void func_8001C9D0(void);
|
||||
extern void func_80052D90(s32 a0, void *a1);
|
||||
extern void func_80054514(s32 a0, s32 a1);
|
||||
extern void GsMapModelingData(u32 *p);
|
||||
extern void GsLinkObject5();
|
||||
extern void *GsPresetObject();
|
||||
extern u8 D_800AF630[];
|
||||
extern u8 D_80063548[];
|
||||
extern u16 D_800AF7CC;
|
||||
extern s32 *D_800AF7C8;
|
||||
extern u8 D_800A5BD0[];
|
||||
|
||||
s32 sp10[8];
|
||||
register s32 obj __asm__("$17");
|
||||
register s32 next __asm__("$19");
|
||||
register s32 work __asm__("$20");
|
||||
s32 entry;
|
||||
u16 c2;
|
||||
|
||||
obj = a0;
|
||||
func_8001C9D0();
|
||||
*(u16 *)obj = 1;
|
||||
*(u16 *)(obj + 2) = 1;
|
||||
func_80052D90(0, (void *)(obj + 0x30));
|
||||
func_80054514(obj + 0x30, (s32)&sp10[0]);
|
||||
work = (s32)D_800AF630;
|
||||
*(s32 *)(obj + 0x24) = a1;
|
||||
if (a1 != 0) {
|
||||
*(s32 *)(obj + 0x20) = (s32)D_80063548;
|
||||
next = (s32)D_800AF7C8;
|
||||
*(u16 *)(obj + 0x2E) = D_800AF7CC;
|
||||
if (*(s32 *)a1 != 0) {
|
||||
do {
|
||||
entry = (*(s32 *)a1 & 0x80FFFFFF) + 4;
|
||||
a1 += 4;
|
||||
__asm__ __volatile__("" : "=r"(entry) : "0"(entry));
|
||||
GsMapModelingData((u32 *)entry);
|
||||
c2 = *(u16 *)(work + 0x19C);
|
||||
*(u16 *)(work + 0x19C) = c2 + 1;
|
||||
GsLinkObject5((u32 *)(entry + 8),
|
||||
(void *)&D_800A5BD0[(c2 << 2) + c2 << 2], 0);
|
||||
next = (s32)GsPresetObject(
|
||||
(void *)&D_800A5BD0[(c2 << 2) + c2 << 2], (void *)next);
|
||||
} while (*(s32 *)a1 != 0);
|
||||
}
|
||||
*(s32 *)(work + 0x198) = next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8001C9D0(void);
|
||||
|
||||
Reference in New Issue
Block a user