mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
e6e05d727a
main's sig was dated 2026-06-14 and covered only 1,525 of its 2,002 INCLUDE_ASM stubs: 477 stubs were INVISIBLE to the weighted metrics, so main was being graded against two-thirds of itself and the fleet denominator was understated. tools/ghidra_mcp_stop.sh (R23 - clean stop, "Save succeeded", releases the .rep lock) make sig-refresh BINARY=main -> DumpFunctionSignatures.java, read-only, -noanalysis signatures 1,729 -> 2,205 (+476) stubs covered 1,525 -> 2,001 of 2,002 (1 still uncovered, named below) main .text ins 60,201 -> 79,510 (+19,309) METRICS RE-BASELINED (a DENOMINATOR CORRECTION, not a regression -- the Phase-27 precedent, where onboarding 4 hidden overlays honestly moved 68.9% -> 67.0%): instr-weighted 94.5% -> 94.4% (12,419,169 / 13,160,961; numerator UNCHANGED) distinct-code 89.3% -> 89.0% (5,029,454 / 5,654,184; numerator UNCHANGED) fn-count 96.51% (unchanged -- it never read the sig) MAIN game-code 0.72% -> 0.55% (436 / 79,510) Both numerators are identical across the change; only the denominator grew. audit-digest OK. CAVEAT UNCHANGED (R34): main still has no INDEPENDENT boundary oracle -- sig_image cannot sign a PS-X EXE (header offset, interleaved islands), so main's function list rests on Ghidra alone and audit-corpus cannot cross-check it. That is the open item in docs/second-oracle.md and part of task #9's denominator work. NOTE the sig itself is gitignored/regenerable, so this commit lands only the digests; a fresh clone reproduces it with `make sig-refresh BINARY=main` (Ghidra required, MCP stopped). MCP IS NOW DOWN (I stopped it for the project lock). The SessionStart hook restarts it next session; run /mcp before any Ghidra work (R29).
5.2 KiB
5.2 KiB
EXE-wide duplicate function groups (generated by tools/dup_report.py)
sig: .run/sig.SLUS_007.26.jsonl sha1=46c735b8d1f514a95f8a2ba061cccf291f45a631 (2205 funcs, 1393 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: 14 groups, 15 redundant (collapsible)
| score | nins | count | representative | duplicates |
|---|---|---|---|---|
| 66 | 33 | 2 | FUN_8001c044 (0x8001c044) | 0x8001c0c8 |
| 33 | 11 | 3 | SYS_OBJ_538 (0x80043948) | 0x80060904 0x80060bc0 |
| 28 | 14 | 2 | FUN_80014cf8 (0x80014cf8) | 0x80014dec |
| 22 | 11 | 2 | FUN_80013f3c (0x80013f3c) | 0x80017d98 |
| 22 | 11 | 2 | FUN_80014c28 (0x80014c28) | 0x80014dc0 |
| 20 | 10 | 2 | TOC_OBJ_220 (0x800432d8) | 0x80045918 |
| 20 | 10 | 2 | def_cbready (0x800433c0) | 0x800433e8 |
| 18 | 9 | 2 | FUN_80014070 (0x80014070) | 0x80015a2c |
| 18 | 9 | 2 | FUN_80014094 (0x80014094) | 0x80015a50 |
| 18 | 9 | 2 | FUN_8001599c (0x8001599c) | 0x800159c0 |
| 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: 61 groups, 91 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 |
| 116 | 58 | 2 | FUN_8001382c (0x8001382c) | 0x800139c8 |
| 114 | 57 | 2 | FUN_800134fc (0x800134fc) | 0x80013694 |
| 114 | 57 | 2 | FUN_80013b64 (0x80013b64) | 0x80013cfc |
| 98 | 49 | 2 | FUN_800167f0 (0x800167f0) | 0x80016978 |
| 80 | 8 | 10 | FUN_80014128 (0x80014128) | 0x80014148 0x80016a5c 0x80017274 0x800173bc 0x800174fc 0x8001a9d8 0x8003d630 0x8005d0d8 0x8005d118 |
| 76 | 19 | 4 | FUN_8002a1b4 (0x8002a1b4) | 0x8002a400 0x8002a670 0x8002a8e0 |
| 74 | 37 | 2 | FUN_80011818 (0x80011818) | 0x80011b7c |
| 72 | 36 | 2 | FUN_800623a4 (0x800623a4) | 0x80062434 |
| 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 |
| 62 | 31 | 2 | FUN_80029b4c (0x80029b4c) | 0x80029bc8 |
| 56 | 28 | 2 | VM_NOWON_OBJ_1C0 (0x80040af8) | 0x80040b68 |
| 54 | 27 | 2 | FUN_8002eff8 (0x8002eff8) | 0x8002f064 |
| 52 | 13 | 4 | FUN_8002a200 (0x8002a200) | 0x8002a44c 0x8002a6bc 0x8002a92c |
| 50 | 10 | 5 | FUN_80013200 (0x80013200) | 0x80013294 0x80013328 0x800133bc 0x80013450 |
| 50 | 25 | 2 | RotMatrixX (0x80049f3c) | 0x8004a27c |
| 48 | 24 | 2 | FUN_80012e0c (0x80012e0c) | 0x80012fc8 |
| 44 | 22 | 2 | FUN_8001534c (0x8001534c) | 0x800153cc |
| 42 | 21 | 2 | FUN_80012b04 (0x80012b04) | 0x80012cb8 |
| 40 | 20 | 2 | OBJT2_OBJ_69C (0x80057730) | 0x800577d4 |
| 38 | 19 | 2 | FUN_80012c6c (0x80012c6c) | 0x800130d0 |
| 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 | 8 | 4 | FUN_80016a3c (0x80016a3c) | 0x80017254 0x8001739c 0x800174dc |
| 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 | FUN_80014cf8 (0x80014cf8) | 0x80014dec |
| 28 | 14 | 2 | FUN_800167b8 (0x800167b8) | 0x80016940 |
| 28 | 14 | 2 | FUN_80017df8 (0x80017df8) | 0x80017e30 |
| 28 | 14 | 2 | PRESET2_OBJ_AF0 (0x80056830) | 0x800568a8 |
| 28 | 14 | 2 | SYS_OBJ_1FF4 (0x8005b228) | 0x8005b460 |
| 27 | 9 | 3 | FUN_80016eb0 (0x80016eb0) | 0x800176f0 0x800178c8 |
| 27 | 9 | 3 | FUN_80016ed4 (0x80016ed4) | 0x80017714 0x800178ec |
| 26 | 13 | 2 | SYS_OBJ_19A4 (0x8005abd8) | 0x8005aca4 |
| 26 | 13 | 2 | LIBMCRD_OBJ_D9C (0x80060a04) | 0x80060cc0 |
| 24 | 12 | 2 | FUN_8001096c (0x8001096c) | 0x80011320 |
| 24 | 8 | 3 | FUN_80016ef8 (0x80016ef8) | 0x80017758 0x80017910 |
| 24 | 8 | 3 | SsUtReverbOff (0x800285ac) | 0x8003a424 0x8003d96c |
| 24 | 12 | 2 | LIBMCRD_OBJ_D6C (0x800609d4) | 0x80060c90 |
| 22 | 11 | 2 | FUN_80013f3c (0x80013f3c) | 0x80017d98 |
| 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_80014070 (0x80014070) | 0x80015a2c |
| 18 | 9 | 2 | FUN_80014094 (0x80014094) | 0x80015a50 |
| 18 | 9 | 2 | FUN_8001599c (0x8001599c) | 0x800159c0 |
| 18 | 9 | 2 | FUN_8001cfb8 (0x8001cfb8) | 0x8001d050 |
| 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 |