Files
BFM-decomp/docs/difficulty.md
T
Drew T 49db81d8ae feat(phase-7): Gen1 close-out — matching loop industrialized, PsyQ libs linked, LZSS matched (v1.7.0)
- reports (Task 3): tools/{progress,difficulty,dup_report}.py + make report/sig-refresh
  (deterministic digests); harvest to 43 REAL matches incl. LzssDecodeSector
- per-module -O0 split (Task 5.5): src/boot.c + Makefile per-file CC1FLAGS (cookbook §6)
- PsyQ SDK linking (sessions C-G): split/build/identify/link/integrate pipeline
  (tools/psyq_*.py, make_libgs.sh, ld_interleave.py, split_src_region.py) — libcd (18 obj)
  + FULL libgs (31 obj / 6 blocks) linked BYTE-IDENTICAL from real PsyQ 4.0 libs; byte-
  identical with or without the SDK objects (stub fallback); cookbook §7/§8/§9.1-9.5
- LZSS MATCHED byte-for-byte (session F): §5a cross-jump barrier + §10 regalloc/schedule
  idioms, ground-truthed against pinned gcc-2.7.2 source (the Gen1 LZSS gate)
- file-loader cluster: 6 matched + 5 NON_MATCHING-drafted (CdReadStateMachine,
  CdReadSectorReadyCB, StreamLoadStateMachine new this session, valid under -DNON_MATCHING);
  SaveLoadRoutine DEFERRED to Q#5 (save/memcard, documented stub)
- README Gen1-complete; worklog preserved -> phase-ends/logs/Phase7.md
- rules R17 (web-research compiler quirks), R18 (plain-English session summaries),
  R19 (preserve phase worklog out of load order)
- MILESTONE: Gen1 EXIT confirmed — byte-identical build, 43 matches incl LZSS, 7 zero-
  regression sessions, loader cluster matched/drafted, overlay map emulator-proven
- bumps project version 1.6.0 -> 1.7.0
2026-06-15 13:44:32 -06:00

5.4 KiB

Unmatched difficulty inventory (generated by tools/difficulty.py — harvest queue)

unmatched functions : 2001 trivial (<=5 ins) : 297 non-jtbl leaves : 1123 (best harvest targets) jump-table funcs : 80 (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 SYS_OBJ_1C28 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 SYS_OBJ_191C 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 SYS_OBJ_1B78 3 0 0 - Y
3 SetDQA 3 0 0 - Y
3 SetDQB 3 0 0 - Y
3 SetData32 3 0 0 - Y
3 SetIR0 3 0 0 - Y
3 UT_KEYV_OBJ_174 3 0 0 - Y
3 func_8005E188 3 0 0 - Y
3 func_80062388 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 GetGraphDebug 4 0 0 - Y
4 GetGraphType 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 SYS_OBJ_1AF0 4 0 0 - Y
4 SYS_OBJ_2F7C 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 SetVertex0 4 0 0 - Y
4 SetVertex1 4 0 0 - Y
4 SetVertex2 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_8002AEF8 4 0 0 - Y
4 func_8002AF08 4 0 0 - Y
4 func_8002AF60 4 0 0 - Y
4 func_8002D4B8 4 0 0 - Y
4 func_8002D7FC 4 0 0 - Y
4 func_8002D834 4 0 0 - Y
4 func_8002F648 4 0 0 - Y
4 func_80037358 4 0 0 - Y
4 func_80037CC8 4 0 0 - Y
4 func_8003D424 4 0 0 - Y
4 func_8003FA54 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_8005C4CC 4 0 0 - Y
4 func_8005CF08 4 0 0 - Y
4 func_8005CF18 4 0 0 - Y
4 func_8005E194 4 0 0 - Y
4 func_8005F384 4 0 0 - Y
4 func_80062394 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 DsReadyCallback 5 0 0 - Y
5 DsSyncCallback 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