mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 22:45:39 -04:00
feat(decomp): serial idiom lane — func_8017FA84 (115 ins, extend-tell, group worth 563)
This commit is contained in:
@@ -3713,7 +3713,46 @@ void func_8017FA2C(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_8017FA84);
|
||||
extern s32 func_80012C6C(s32, s32, s32);
|
||||
extern s16 func_80012ABC(s16 a0, s16 a1, s32 a2);
|
||||
extern void func_80187478(u16*, s16*);
|
||||
extern void ApplyMatrixSV(void *m, void *vin, void *vout);
|
||||
|
||||
void func_8017FA84(s32 a0, s16* a1, u32 a2)
|
||||
{
|
||||
s32 sp10[8];
|
||||
s16 sp30[3];
|
||||
u16 sp38[3];
|
||||
u16 sp40[3];
|
||||
|
||||
*(s32 *)((s32)a0 + 0x08) = ((s16 (*)(s16, s16, s32))func_80012C6C)(*(s16 *)((s32)a0 + 0x08), *(s16 *)((s32)a0 + 0x0C), 4);
|
||||
*(s32 *)((s32)a0 + 0x10) = ((s16 (*)(s16, s16, s32))func_80012C6C)(*(s16 *)((s32)a0 + 0x10), *(s16 *)((s32)a0 + 0x14), 4);
|
||||
*(s16 *)((s32)a0 + 0x18) = func_80012ABC(*(s16 *)((s32)a0 + 0x18), *(s16 *)((s32)a0 + 0x20), 4);
|
||||
*(s16 *)((s32)a0 + 0x1A) = func_80012ABC(*(s16 *)((s32)a0 + 0x1A), *(s16 *)((s32)a0 + 0x22), 4);
|
||||
*(s16 *)((s32)a0 + 0x1C) = func_80012ABC(*(s16 *)((s32)a0 + 0x1C), *(s16 *)((s32)a0 + 0x24), 4);
|
||||
*(s16 *)((s32)a0 + 0x28) = ((s16 (*)(s16, s16, s32))func_80012C6C)(*(s16 *)((s32)a0 + 0x28), *(s16 *)((s32)a0 + 0x2E), 0x10);
|
||||
*(s16 *)((s32)a0 + 0x2A) = ((s16 (*)(s16, s16, s32))func_80012C6C)(*(s16 *)((s32)a0 + 0x2A), *(s16 *)((s32)a0 + 0x30), 0x10);
|
||||
*(s16 *)((s32)a0 + 0x2C) = ((s16 (*)(s16, s16, s32))func_80012C6C)(*(s16 *)((s32)a0 + 0x2C), *(s16 *)((s32)a0 + 0x32), 0x10);
|
||||
|
||||
*(s32 *)((s32)a0 + 0x48) = *(s16 *)((s32)a0 + 0x28) + *(s16 *)((s32)a1 + 0);
|
||||
*(s32 *)((s32)a0 + 0x4C) = *(s16 *)((s32)a0 + 0x2A) + *(s16 *)((s32)a1 + 2);
|
||||
*(s32 *)((s32)a0 + 0x50) = *(s16 *)((s32)a0 + 0x2C) + *(s16 *)((s32)a1 + 4);
|
||||
|
||||
sp40[0] = *(u16 *)((s32)a0 + 0x18);
|
||||
sp40[1] = *(u16 *)((s32)a0 + 0x1A) + a2;
|
||||
sp40[2] = *(u16 *)((s32)a0 + 0x1C);
|
||||
((void (*)(u16 *, void *))func_80187478)(sp40, sp10);
|
||||
|
||||
sp30[0] = 0;
|
||||
sp30[1] = 0;
|
||||
sp30[2] = *(s32 *)((s32)a0 + 0x10);
|
||||
ApplyMatrixSV(sp10, sp30, sp38);
|
||||
|
||||
*(s32 *)((s32)a0 + 0x3C) = ((s16)sp38[0] >> 3) + *(s16 *)((s32)a0 + 0x28) + *(s16 *)((s32)a1 + 0);
|
||||
*(s32 *)((s32)a0 + 0x40) = ((s16)sp38[1] >> 3) + *(s16 *)((s32)a0 + 0x2A) + *(s16 *)((s32)a1 + 2);
|
||||
*(s32 *)((s32)a0 + 0x44) = ((s16)sp38[2] >> 3) + *(s16 *)((s32)a0 + 0x2C) + *(s16 *)((s32)a1 + 4);
|
||||
}
|
||||
|
||||
|
||||
extern void (*D_8018B754[])(void *);
|
||||
extern void (*D_8018B768[])(void *);
|
||||
|
||||
Reference in New Issue
Block a user