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:
Drew T
2026-07-02 02:02:25 -06:00
parent ecd8741b94
commit 00d9d9d491
2 changed files with 46 additions and 2 deletions
+27 -1
View File
@@ -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) */
+19 -1
View File
@@ -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) */