mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 23:00:29 -04:00
feat(phase-23): T10.9 — 2 fresh hard-band GLM banks; fresh hand-solve confirms idiom well is DRY
- GLM deep-solved 15 fresh 25-118-ins hard fns: 4/15 match_one, 2 whole-binary banks (func_8017DE28, func_8015EEE0), $2.00. def-side wall caps the other 2 correct bodies. - IDIOM VERDICT (Drew's fair test): GLM's correct bodies reason about KNOWN gcc mechanics (delay slots, callee-saved $s0, reload-after-call aliasing, switch jump tables) — cookbook §10/§17/jump-table. NO new idiom. The quirk space is largely mapped (22 phases of Opus-Max mining). Well DRY confirmed from BOTH angles: failed-residual (T10.8) AND fresh-hand-solve (T10.9).
This commit is contained in:
@@ -2924,7 +2924,33 @@ DEFINE_func_8015EE44() /* dedup: shared engine-core @0x8015EE44 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8015EE7C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8015EEE0);
|
||||
extern void func_80148038(s32 a0, s32 a1);
|
||||
extern void func_80147460(s32 a0);
|
||||
extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_801473EC(s32 *a0);
|
||||
extern void func_80147078(s32 *a0, s16 a1);
|
||||
extern void func_80159B70(void*);
|
||||
extern void func_80161418(void *a0);
|
||||
extern s32 func_801725A4(u8 *a0);
|
||||
extern void (*D_80192F7C[])(void*);
|
||||
|
||||
void func_8015EEE0(void* arg0) {
|
||||
((void (*)(void*, u32))func_80148038)(arg0, 0x10000);
|
||||
((void (*)(void*))func_80147460)(arg0);
|
||||
((void (*)(void*, s32, s32, s32))func_80147AD4)(arg0, 0, 0, 0x1000);
|
||||
((void (*)(void*))func_801473EC)(arg0);
|
||||
|
||||
if (*(u16*)((u8*)arg0 + 0xB8) & 0x8000) {
|
||||
D_80192F7C[*(u16*)arg0](arg0);
|
||||
((void (*)(void*, s32))func_80147078)(arg0, 0);
|
||||
func_80159B70(arg0);
|
||||
} else {
|
||||
if (!((s32 (*)(void*))func_80161418)(arg0)) {
|
||||
((void (*)(void*))func_801725A4)(arg0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8015EF9C() /* dedup: shared engine-core @0x8015EF9C (src/shared) */
|
||||
|
||||
|
||||
@@ -4808,7 +4808,25 @@ INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_8017DCE4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_8017DDEC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_8017DE28);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32, s32);
|
||||
extern u32 D_8019105C;
|
||||
|
||||
void func_8017DE28(s32 arg0) {
|
||||
s32 v0 = ((s32 (*)(s32))func_8012C1B8)(arg0);
|
||||
*(s32*)((u8*)arg0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
((void (*)(s32))func_8012CAE4)(arg0);
|
||||
} else {
|
||||
func_8001C214(v0, 0);
|
||||
*(s16*)((u8*)arg0 + 0x2) = 1;
|
||||
*(s16*)((u8*)arg0 + 0x5C) = 0x20;
|
||||
*(s32*)((u8*)arg0 + 0x58) = (u32)&D_8019105C | 0x40000000;
|
||||
*(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8017DEA4() /* dedup: shared engine-core @0x8017DEA4 (src/shared) */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user