Files
BFM-decomp/docs/difficulty.resident.md
T
Drew T a480d83bee feat(phase-12): T3a — extern-conflict recovery, +20 (REAL 102->123, 85.6%)
The pass-4 functions that match_one matched standalone but the single-TU build rejected
on conflicting shared-symbol extern types are recovered by UNIFYING those types in
resident.c (widening definitions' return types where byte-identical — u16 f(){return
u16g} ≡ s32 f(){...} both lhu;jr; choosing asm-correct widths for globals; per-site
*(u16*)&g tricks where a neighbor pins the type). ~20 symbols reconciled
(func_800291B4/CFD68/D1714/D1078/801465C0/... + D_800AE6A8/80078E50/...).

20 of 21 recovered; func_800D00E4 stays an honest INCLUDE_ASM stub (its switch needs the
external jtbl_80113ED8 relocation, not a C-source fix — analysis preserved under #if 0).
REAL 102 -> 123 (85.62% byte-identical); resident 8e17e02f, main 143dbb89 (R22 clean).
22 stubs remain: ~20 documented compiler-internal residuals (permuter/§3a) + D00E4 + dedup.
2026-06-16 14:05:20 -06:00

32 lines
1.3 KiB
Markdown

# Unmatched difficulty inventory (generated by tools/difficulty.py — harvest queue)
unmatched functions : 21
trivial (<=5 ins) : 0
non-jtbl leaves : 7 (best harvest targets)
jump-table funcs : 5 (deferred — need the rodata-island workflow, Task 2')
## Easiest 21 unmatched (score asc) — the work queue
| score | name | nins | br | calls | jtbl | leaf |
|---|---|---|---|---|---|---|
| 30 | func_800D1984 | 22 | 2 | 1 | - | - |
| 30 | func_800D1B80 | 22 | 2 | 1 | - | - |
| 43 | func_800D0E30 | 37 | 2 | 0 | - | Y |
| 54 | func_800D0214 | 43 | 3 | 1 | - | - |
| 57 | func_800D0D7C | 45 | 4 | 0 | - | Y |
| 57 | func_800D2D10 | 39 | 6 | 0 | - | Y |
| 59 | func_800CFAD0 | 59 | 0 | 0 | - | Y |
| 68 | func_800D1E28 | 37 | 7 | 5 | - | - |
| 73 | func_800D1658 | 47 | 6 | 4 | - | - |
| 73 | func_800D1FC8 | 62 | 3 | 1 | - | - |
| 99 | func_800D24A0 | 87 | 2 | 3 | - | - |
| 109 | func_800CEFD0 | 77 | 6 | 7 | - | - |
| 123 | func_800D0488 | 64 | 10 | 2 | Y | - |
| 141 | func_800D2650 | 99 | 14 | 0 | - | Y |
| 148 | func_800D00E4 | 76 | 15 | 1 | Y | - |
| 162 | func_800D27DC | 135 | 9 | 0 | - | Y |
| 193 | func_800D29F8 | 172 | 7 | 0 | - | Y |
| 234 | func_800CFE60 | 161 | 19 | 8 | - | - |
| 238 | func_800D02D0 | 110 | 33 | 2 | Y | - |
| 446 | func_800D128C | 243 | 40 | 29 | Y | - |
| 637 | func_800D06E8 | 344 | 82 | 11 | Y | - |