Files
BFM-decomp/docs/difficulty.md
T
Drew T 4cf531beea docs(cookbook): §399 — four levers from the final S69 round, harvested late
Caught by Drew asking whether the last waves were harvested. They were not: I
banked 1 of 5 (§398b) and left four lever sets in the notifications. Also found
two paid-for MATCHes that were never staged or gated.

(a) a fence BETWEEN two prologue loads, where source reorder does nothing —
    the order is fixed before statement order matters (md_MAIN_013/func_800CB56C)
(b) SINK a call into BOTH arms and let cross_jump keep only the jal suffix;
    88ins/close86 -> 92/13, then §3-T2 field order let each sh $zero fill an lhu
    load-delay. Duplicate in source so the compiler merges, rather than writing
    the merged form yourself (ov_SC07_001/func_8017EDC0)
(c) a $v0->$a0->$s3 DOUBLE COPY is a two-pseudo tell: SImode temp for the compare
    + separate HImode var for the tail (70->37); plus §195-N precondition 5 —
    nesting `return 1` with ONE trailing `return 0` blocks jump.c's store-flag
    transform so reorg fills both delay slots (18->0) (ov_SC02_017/func_8018347C)
(d) the re-tie as a BIV KILLER: a second set makes n_times_set>1 so loop.c
    refuses the pseudo as a biv, killing the combined address giv. volatile was
    worse, a dead read did nothing (ov_SC07_001/func_8017E4DC)

(d) makes THREE distinct uses of the zero-byte re-tie in one session — §380
un-hoists a move_movables invariant, §393 kills the scheduler's birthing boost,
§399d denies a biv. One line, three passes: when a single-set pseudo is being
treated specially, give it a second set.
2026-09-01 15:18:40 -06:00

131 lines
5.4 KiB
Markdown

# Unmatched difficulty inventory (generated by tools/difficulty.py — harvest queue)
unmatched functions : 1023
trivial (<=5 ins) : 215
non-jtbl leaves : 666 (best harvest targets)
jump-table funcs : 57 (deferred — need the rodata-island workflow, Task 2')
## Easiest 120 unmatched (score asc) — the work queue
| score | name | nins | br | calls | jtbl | leaf |
|---|---|---|---|---|---|---|
| 1 | COR_05_OBJ_130 | 1 | 0 | 0 | - | Y |
| 1 | EXT_OBJ_A8 | 1 | 0 | 0 | - | Y |
| 1 | GS_137_OBJ_488 | 1 | 0 | 0 | - | Y |
| 1 | LIBMCRD_OBJ_1118 | 1 | 0 | 0 | - | Y |
| 1 | LIBMCRD_OBJ_330 | 1 | 0 | 0 | - | Y |
| 1 | LIBMCRD_OBJ_5BC | 1 | 0 | 0 | - | Y |
| 1 | LIBMCRD_OBJ_990 | 1 | 0 | 0 | - | Y |
| 1 | LIBMCRD_OBJ_BA0 | 1 | 0 | 0 | - | Y |
| 1 | LIBMCRD_OBJ_E5C | 1 | 0 | 0 | - | Y |
| 1 | MIDIREAD_OBJ_6BC | 1 | 0 | 0 | - | Y |
| 1 | MIDIREAD_OBJ_E4 | 1 | 0 | 0 | - | Y |
| 1 | OBJT2_OBJ_614 | 1 | 0 | 0 | - | Y |
| 1 | OBJT2_OBJ_838 | 1 | 0 | 0 | - | Y |
| 1 | PRESET2_OBJ_116C | 1 | 0 | 0 | - | Y |
| 1 | PRESET2_OBJ_4D8 | 1 | 0 | 0 | - | Y |
| 1 | PRESET2_OBJ_6C4 | 1 | 0 | 0 | - | Y |
| 1 | PRESET2_OBJ_C20 | 1 | 0 | 0 | - | Y |
| 1 | PRESET_OBJ_744 | 1 | 0 | 0 | - | Y |
| 1 | PRNT_OBJ_21C | 1 | 0 | 0 | - | Y |
| 1 | PRNT_OBJ_2A0 | 1 | 0 | 0 | - | Y |
| 1 | PRNT_OBJ_348 | 1 | 0 | 0 | - | Y |
| 1 | PRNT_OBJ_3D0 | 1 | 0 | 0 | - | Y |
| 1 | S_SR_OBJ_B0 | 1 | 0 | 0 | - | Y |
| 2 | INTR_DMA_OBJ_274 | 2 | 0 | 0 | - | Y |
| 2 | LIBMCRD_OBJ_1A60 | 2 | 0 | 0 | - | Y |
| 2 | LIBMCRD_OBJ_308 | 2 | 0 | 0 | - | Y |
| 2 | PRESET2_OBJ_FD8 | 2 | 0 | 0 | - | Y |
| 2 | PRIM_OBJ_200 | 2 | 0 | 0 | - | Y |
| 2 | PRIM_OBJ_228 | 2 | 0 | 0 | - | Y |
| 2 | SR_SV_OBJ_224 | 2 | 0 | 0 | - | Y |
| 2 | SR_SV_OBJ_2F4 | 2 | 0 | 0 | - | Y |
| 2 | S_ITC_OBJ_88 | 2 | 0 | 0 | - | Y |
| 2 | S_SCA_OBJ_15C | 2 | 0 | 0 | - | Y |
| 2 | S_SCA_OBJ_94 | 2 | 0 | 0 | - | Y |
| 2 | S_SK_OBJ_1EC | 2 | 0 | 0 | - | Y |
| 2 | VM_N2P_OBJ_1B8 | 2 | 0 | 0 | - | Y |
| 2 | VM_N2P_OBJ_BC | 2 | 0 | 0 | - | Y |
| 3 | C_007_OBJ_AC | 3 | 0 | 0 | - | Y |
| 3 | MIDIREAD_OBJ_6C0 | 3 | 0 | 0 | - | Y |
| 3 | PRESET2_OBJ_A88 | 3 | 0 | 0 | - | Y |
| 3 | PRNT_OBJ_380 | 3 | 0 | 0 | - | Y |
| 3 | UT_KEYV_OBJ_174 | 3 | 0 | 0 | - | Y |
| 4 | CD_set_test_parmnum | 4 | 0 | 0 | - | Y |
| 4 | C_011_OBJ_960 | 4 | 0 | 0 | - | Y |
| 4 | CdLastCom | 4 | 0 | 0 | - | Y |
| 4 | GEO_00_OBJ_2C | 4 | 0 | 0 | - | Y |
| 4 | GS_108_OBJ_7C | 4 | 0 | 0 | - | Y |
| 4 | GsGetActiveBuff | 4 | 0 | 0 | - | Y |
| 4 | LIBMCRD_OBJ_15C | 4 | 0 | 0 | - | Y |
| 4 | LIBMCRD_OBJ_1944 | 4 | 0 | 0 | - | Y |
| 4 | LIBMCRD_OBJ_3B8 | 4 | 0 | 0 | - | Y |
| 4 | LIBMCRD_OBJ_84C | 4 | 0 | 0 | - | Y |
| 4 | LIBMCRD_OBJ_A5C | 4 | 0 | 0 | - | Y |
| 4 | MIDIREAD_OBJ_6AC | 4 | 0 | 0 | - | Y |
| 4 | SPU_OBJ_510 | 4 | 0 | 0 | - | Y |
| 4 | SPU_OBJ_AC4 | 4 | 0 | 0 | - | Y |
| 4 | SSSTART_OBJ_240 | 2 | 0 | 1 | - | - |
| 4 | SSSTART_OBJ_248 | 2 | 0 | 1 | - | - |
| 4 | SSSTART_OBJ_328 | 4 | 0 | 0 | - | Y |
| 4 | S_RRWA_OBJ_40 | 4 | 0 | 0 | - | Y |
| 4 | S_SAV_OBJ_1E8 | 4 | 0 | 0 | - | Y |
| 4 | S_SAV_OBJ_1F8 | 4 | 0 | 0 | - | Y |
| 4 | S_SCA_OBJ_384 | 4 | 0 | 0 | - | Y |
| 4 | S_SRMP_OBJ_170 | 4 | 0 | 0 | - | Y |
| 4 | S_STSA_OBJ_48 | 4 | 0 | 0 | - | Y |
| 4 | USERFUNC_OBJ_84 | 4 | 0 | 0 | - | Y |
| 4 | UT_KEYV_OBJ_350 | 4 | 0 | 0 | - | Y |
| 4 | UT_KEYV_OBJ_3FC | 4 | 0 | 0 | - | Y |
| 4 | VSYNC_OBJ_1D4 | 4 | 0 | 0 | - | Y |
| 4 | VS_VH_OBJ_180 | 4 | 0 | 0 | - | Y |
| 4 | func_800426D4 | 4 | 0 | 0 | - | Y |
| 4 | func_80043078 | 4 | 0 | 0 | - | Y |
| 4 | func_80043410 | 4 | 0 | 0 | - | Y |
| 4 | func_80043420 | 4 | 0 | 0 | - | Y |
| 4 | func_80043440 | 4 | 0 | 0 | - | Y |
| 4 | func_800491EC | 4 | 0 | 0 | - | Y |
| 4 | func_8004923C | 4 | 0 | 0 | - | Y |
| 4 | func_80049600 | 4 | 0 | 0 | - | Y |
| 4 | func_8005C4CC | 4 | 0 | 0 | - | Y |
| 4 | func_80062988 | 4 | 0 | 0 | - | Y |
| 4 | gfx2D_COM0_OBJ_30 | 4 | 0 | 0 | - | Y |
| 5 | C_004_OBJ_DC | 5 | 0 | 0 | - | Y |
| 5 | EVENT_OBJ_84 | 5 | 0 | 0 | - | Y |
| 5 | GS_123_OBJ_A8 | 5 | 0 | 0 | - | Y |
| 5 | INTR_OBJ_6D0 | 5 | 0 | 0 | - | Y |
| 5 | ISO9660_OBJ_29C | 3 | 0 | 1 | - | - |
| 5 | LIBMCRD_OBJ_5C0 | 5 | 0 | 0 | - | Y |
| 5 | LIBMCRD_OBJ_840 | 3 | 0 | 1 | - | - |
| 5 | LIBMCRD_OBJ_A50 | 3 | 0 | 1 | - | - |
| 5 | LIBMCRD_OBJ_C90 | 3 | 0 | 1 | - | - |
| 5 | LIBMCRD_OBJ_F4C | 3 | 0 | 1 | - | - |
| 5 | OBJT_OBJ_108 | 2 | 1 | 0 | - | Y |
| 5 | OBJT_OBJ_110 | 2 | 1 | 0 | - | Y |
| 5 | OBJT_OBJ_124 | 2 | 1 | 0 | - | Y |
| 5 | OBJT_OBJ_D0 | 2 | 1 | 0 | - | Y |
| 5 | OBJT_OBJ_E4 | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_188 | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_1E8 | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_1F0 | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_1F8 | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_340 | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_64C | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_C8 | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_EC | 2 | 1 | 0 | - | Y |
| 5 | PRNT_OBJ_F4 | 2 | 1 | 0 | - | Y |
| 5 | RATAN_OBJ_148 | 5 | 0 | 0 | - | Y |
| 5 | SPU_OBJ_848 | 5 | 0 | 0 | - | Y |
| 5 | SR_SV_OBJ_1EC | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_1F4 | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_1FC | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_204 | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_20C | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_214 | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_21C | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_2BC | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_2C4 | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_2CC | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_2D4 | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_2DC | 2 | 1 | 0 | - | Y |
| 5 | SR_SV_OBJ_2E4 | 2 | 1 | 0 | - | Y |