Files
BFM-decomp/docs/duplicates.md
T
Drew T 379185a799 feat(phase-7): matching reports + 24 matches (38 real) — session A checkpoint
Mid-phase checkpoint (Drew-directed; phase NOT closed — R8 exception).

- reports (Task 3): tools/{progress,difficulty,dup_report}.py + `make report`
  (deterministic) + `make sig-refresh`; authoritative baseline 38 real / 2050
  matchable; empties audit 42/42 genuine jr;nop; docs/{progress,difficulty,
  duplicates}.md digests
- matches (Tasks 4-5): +24 byte-identical (22 accessor leaves via the harvest
  pattern + ResourceGetCdLoc + LoaderResetReadState); make check BYTE-IDENTICAL
  throughout (143dbb89...)
- config/symbols.us.txt: declare func_80047CAC (R15) — fixes a latent
  non-reproducibility (spimdisasm 1.41.0 auto-detect of an 8B inter-fn blob was
  unstable across clean extracts; the committed Phase-6 baseline did not
  deterministically rebuild)
- Task 1 rodata-island foundation: investigated (migration co-locates jump
  tables + resolves refs, but byte-identity blocked by splat global-migration +
  contiguous linker placement vs BFM's monolithic segment) -> DEFERRED to Task 2'
  with a candidate fix; full findings in phase-ends/CURRENT_PHASE.md
- phase-ends/CURRENT_PHASE.md: reordered plan, loader-cluster triage, per-session
  green-check log (1 of >=3 needed for the Gen1-exit milestone)
2026-06-14 17:36:12 -06:00

3.1 KiB

EXE-wide duplicate function groups (generated by tools/dup_report.py)

sig: .run/sig.SLUS_007.26.jsonl sha1=fb76354f3443387f31501a6b2986abc0fae770d6 (1729 funcs, 949 with nins>=8)

Match the representative once -> share the body to the duplicates (h_exact = guaranteed

byte-match; h_norm = same source, re-point any single address constant).

h_exact (byte-identical) — nins>=8: 7 groups, 8 redundant (collapsible)

score nins count representative duplicates
33 11 3 SYS_OBJ_538 (0x80043948) 0x80060904 0x80060bc0
20 10 2 TOC_OBJ_220 (0x800432d8) 0x80045918
20 10 2 def_cbready (0x800433c0) 0x800433e8
18 9 2 FUN_80037004 (0x80037004) 0x80037334
18 9 2 VS_VTBP_OBJ_13C (0x80042290) 0x800459c4
18 9 2 ISO9660_OBJ_2A8 (0x8004561c) 0x8005b660
16 8 2 S_M_M_OBJ_2A8 (0x80042134) 0x8005ba70

h_norm (structural) — nins>=8: 34 groups, 44 redundant (collapsible)

score nins count representative duplicates
375 125 3 GS_133_OBJ_30 (0x80054544) 0x80054808 0x80054ae4
154 77 2 _card_read_data (0x800604c4) 0x800606d4
74 37 2 FUN_80011818 (0x80011818) 0x80011b7c
70 35 2 LIBMCRD_OBJ_DD0 (0x80060a38) 0x80060cf4
64 8 8 FUN_80027bf0 (0x80027bf0) 0x8002eeb8 0x8002fdc8 0x80046610 0x80053308 0x8005d0f8 0x8005fc98 0x80061a80
64 32 2 FUN_80031e94 (0x80031e94) 0x80031fc8
56 28 2 VM_NOWON_OBJ_1C0 (0x80040af8) 0x80040b68
54 27 2 FUN_8002eff8 (0x8002eff8) 0x8002f064
50 25 2 RotMatrixX (0x80049f3c) 0x8004a27c
40 20 2 OBJT2_OBJ_69C (0x80057730) 0x800577d4
38 19 2 S_M_UTIL_OBJ_2C (0x8003b37c) 0x8003b408
36 18 2 PRESET2_OBJ_550 (0x80056290) 0x80056324
33 11 3 SYS_OBJ_538 (0x80043948) 0x80060904 0x80060bc0
32 16 2 SYS_OBJ_1964 (0x8005ab98) 0x8005ac64
32 16 2 _card_read_file (0x80060930) 0x80060bec
32 16 2 LIBMCRD_OBJ_D2C (0x80060994) 0x80060c50
30 10 3 FUN_8002ee90 (0x8002ee90) 0x8002efd0 0x80062360
28 14 2 PRESET2_OBJ_AF0 (0x80056830) 0x800568a8
28 14 2 SYS_OBJ_1FF4 (0x8005b228) 0x8005b460
26 13 2 SYS_OBJ_19A4 (0x8005abd8) 0x8005aca4
26 13 2 LIBMCRD_OBJ_D9C (0x80060a04) 0x80060cc0
24 8 3 SsUtReverbOff (0x800285ac) 0x8003a424 0x8003d96c
24 12 2 LIBMCRD_OBJ_D6C (0x800609d4) 0x80060c90
22 11 2 PRESET2_OBJ_4FC (0x8005623c) 0x8005636c
22 11 2 PRESET2_OBJ_AA8 (0x800567e8) 0x800568e0
22 11 2 OBJT2_OBJ_640 (0x800576d4) 0x80057824
20 10 2 VM_NO1_OBJ_264 (0x80040608) 0x80040bd8
20 10 2 TOC_OBJ_220 (0x800432d8) 0x80045918
20 10 2 def_cbready (0x800433c0) 0x800433e8
18 9 2 FUN_80037004 (0x80037004) 0x80037334
18 9 2 VS_VTBP_OBJ_13C (0x80042290) 0x800459c4
18 9 2 ISO9660_OBJ_2A8 (0x8004561c) 0x8005b660
18 9 2 LIBMCRD_OBJ_D08 (0x80060970) 0x80060c2c
16 8 2 S_M_M_OBJ_2A8 (0x80042134) 0x8005ba70