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

5.4 KiB

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