Files
BFM-decomp/docs/progress.fleet.md
T
Drew T 095a611e75 feat(phase-26): §8 jtbl-rodata tooling — overlay PoC proven (func_8012ACE0, R22 136/136)
- overlay jr-functions can now bank as C: gcc switch jump tables form a .rodata island at
  the overlay TAIL; carve a matched fn's jtbl into a dotted [.rodata, <code-subseg>] subseg
  + ld_interleave (data->rodata->data sandwich) places it byte-exact. cookbook §8a + SETUP.
- tools/ld_interleave.py: --section .<binary> param (derives the <binary>_TEXT/DATA/RODATA/
  DATA2/BSS symbol prefix); default .main = the EXE, byte-identical (backward-compat proven)
- Makefile + config/overlays.mk: <bin>_JTBL_INTERLEAVE hook + a $(strip)-guarded extract
  branch (gotcha caught: a trailing #comment on the := left whitespace -> non-empty -> the
  branch misfired on resident with the EXE defaults)
- PoC: func_8012ACE0 (25-ins jr-fn in ov_SC01_077) reconciled (canon_sig_reconcile) + banked
  BYTE-IDENTICAL d19c9580 -- the first overlay jr-function matched through the C pipeline
- R22 FULL-FLEET clean rebuild: 136 passed, 0 failed (main 143dbb89 unaffected by the
  ld_interleave change); 0 NON_MATCHING in any default build (G4)
- P9 findings: func_80159C84/func_8015444C (the 2 carried Fable5 jr bodies) are rtu_match
  FALSE-matches (incomplete jtbls: 52B vs 56B -> never bank); the maspsx "hang" scare was a
  truncated experimental-file artifact (real pipeline builds in ~1s)
- metrics: distinct-code 39.1% (50,572 unique fns), instr-weighted 62.9%
- NEXT: the ×134 automation (generate the per-overlay carve + template the reconciled body)
2026-07-12 16:37:37 -06:00

8.6 KiB
Raw Blame History

BFM FLEET matching progress (generated by tools/progress.py --fleet — authoritative)

136 binaries: main + resident + 134 location overlays. DETERMINISTIC,

source-derived (committed src/*.c + config/dedup.us.yaml). Live byte gate: make check-all;

cross-binary collapsible-byte leverage: docs/duplicates.cross.md.

THREE progress metrics (all matter — see the labels):

FLEET fn-count byte-ident: 282792 / 344038 = 82.20% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 7996118 / 12707182 = 62.9% (shipped .text across resident+134 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 2113000 / 5410077 = 39.1% (50572/84996 unique fns; the DISTINCT-RE number; main EXE not sig'd)

FLEET REAL substantive : 281263 (of which dedup-shared 223275 via 1813 groups / 223725 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 61239 FLEET matchable : 344038

binary REAL shared LINKED byte-ident matchable byte-ident %
main 54 2 959 1055 2096 50.3%
resident 123 0 0 125 146 85.6%
ov_SC01_000 2071 1669 0 2071 2405 86.1%
ov_SC01_001 2076 1669 0 2078 2469 84.2%
ov_SC01_004 2068 1660 0 2069 2416 85.6%
ov_SC01_005 2094 1682 0 2094 2506 83.6%
ov_SC01_006 2094 1682 0 2094 2506 83.6%
ov_SC01_008 2067 1660 0 2069 2428 85.2%
ov_SC01_009 2088 1661 0 2089 2510 83.2%
ov_SC01_074 2072 1661 0 2074 2427 85.5%
ov_SC01_077 2309 1624 0 2311 2584 89.4%
ov_SC01_080 2104 1664 0 2104 2515 83.7%
ov_SC01_084 2111 1664 0 2116 2581 82.0%
ov_SC02_000 2156 1699 0 2156 2686 80.3%
ov_SC02_003 2156 1699 0 2156 2686 80.3%
ov_SC02_004 2073 1664 0 2073 2403 86.3%
ov_SC02_005 2174 1660 0 2184 2930 74.5%
ov_SC02_011 2179 1667 0 2190 2896 75.6%
ov_SC02_015 2078 1666 0 2078 2416 86.0%
ov_SC02_016 2103 1666 0 2106 2548 82.7%
ov_SC02_017 2146 1666 0 2154 2735 78.8%
ov_SC02_021 2084 1666 0 2084 2439 85.4%
ov_SC02_026 2093 1664 0 2099 2575 81.5%
ov_SC02_027 2118 1664 0 2127 2695 78.9%
ov_SC02_028 2119 1664 0 2129 2704 78.7%
ov_SC02_031 2107 1665 0 2112 2565 82.3%
ov_SC02_035 2084 1664 0 2087 2523 82.7%
ov_SC02_039 2068 1664 0 2068 2418 85.5%
ov_SC02_041 2095 1664 0 2098 2563 81.9%
ov_SC03_001 2200 1665 0 2217 2872 77.2%
ov_SC03_002 2130 1669 0 2145 2634 81.4%
ov_SC03_003 2073 1664 0 2074 2425 85.5%
ov_SC03_006 2140 1670 0 2149 2770 77.6%
ov_SC03_007 2120 1664 0 2124 2626 80.9%
ov_SC03_010 2083 1664 0 2083 2472 84.3%
ov_SC03_011 2088 1664 0 2094 2530 82.8%
ov_SC03_012 2067 1664 0 2068 2408 85.9%
ov_SC03_013 2084 1664 0 2084 2495 83.5%
ov_SC03_014 2132 1689 0 2132 2688 79.3%
ov_SC03_015 2135 1689 0 2135 2688 79.4%
ov_SC03_023 2073 1664 0 2074 2437 85.1%
ov_SC03_024 2127 1669 0 2134 2644 80.7%
ov_SC03_028 2110 1664 0 2114 2667 79.3%
ov_SC03_029 2111 1666 0 2121 2647 80.1%
ov_SC03_030 2090 1668 0 2092 2498 83.7%
ov_SC03_031 2084 1664 0 2088 2517 83.0%
ov_SC03_089 2101 1664 0 2108 2584 81.6%
ov_SC03_090 2103 1664 0 2111 2628 80.3%
ov_SC03_091 2104 1664 0 2112 2643 79.9%
ov_SC03_092 2110 1664 0 2122 2590 81.9%
ov_SC03_093 2091 1664 0 2095 2566 81.6%
ov_SC03_094 2086 1664 0 2092 2579 81.1%
ov_SC03_095 2077 1664 0 2080 2477 84.0%
ov_SC03_096 2077 1664 0 2080 2468 84.3%
ov_SC03_097 2100 1664 0 2107 2606 80.9%
ov_SC03_098 2084 1664 0 2087 2544 82.0%
ov_SC03_099 2078 1664 0 2081 2507 83.0%
ov_SC03_100 2085 1664 0 2089 2542 82.2%
ov_SC03_101 2086 1664 0 2090 2531 82.6%
ov_SC03_102 2081 1664 0 2084 2495 83.5%
ov_SC03_103 2085 1666 0 2088 2513 83.1%
ov_SC03_104 2104 1664 0 2111 2619 80.6%
ov_SC03_105 2098 1664 0 2105 2600 81.0%
ov_SC03_108 2070 1664 0 2070 2446 84.6%
ov_SC03_109 2071 1664 0 2073 2426 85.4%
ov_SC03_110 2076 1664 0 2076 2471 84.0%
ov_SC03_111 2084 1664 0 2087 2513 83.0%
ov_SC03_112 2082 1666 0 2084 2529 82.4%
ov_SC03_113 2076 1666 0 2079 2471 84.1%
ov_SC03_114 2066 1664 0 2068 2417 85.6%
ov_SC03_115 2080 1664 0 2082 2475 84.1%
ov_SC03_116 2074 1664 0 2077 2441 85.1%
ov_SC03_117 2092 1664 0 2098 2560 82.0%
ov_SC03_118 2135 1688 0 2136 2688 79.5%
ov_SC03_119 2132 1688 0 2133 2688 79.4%
ov_SC03_121 2077 1664 0 2080 2462 84.5%
ov_SC03_124 2149 1660 0 2169 2744 79.0%
ov_SC03_125 2112 1664 0 2124 2591 82.0%
ov_SC03_126 2074 1666 0 2074 2425 85.5%
ov_SC04_000 2091 1668 0 2100 2549 82.4%
ov_SC04_002 2105 1664 0 2109 2639 79.9%
ov_SC04_003 2083 1664 0 2087 2505 83.3%
ov_SC04_004 2097 1664 0 2099 2561 82.0%
ov_SC04_005 2098 1664 0 2104 2615 80.5%
ov_SC04_006 2074 1664 0 2076 2456 84.5%
ov_SC04_007 2093 1664 0 2097 2572 81.5%
ov_SC04_008 2070 1664 0 2070 2417 85.6%
ov_SC04_009 2078 1664 0 2081 2443 85.2%
ov_SC04_010 2074 1664 0 2075 2421 85.7%
ov_SC04_011 2124 1664 0 2130 2806 75.9%
ov_SC04_012 2072 1664 0 2073 2422 85.6%
ov_SC04_015 2132 1665 0 2143 2614 82.0%
ov_SC04_016 2071 1664 0 2073 2442 84.9%
ov_SC04_018 2178 1699 0 2178 2860 76.2%
ov_SC04_019 2184 1699 0 2184 2860 76.4%
ov_SC04_020 2101 1664 0 2113 2570 82.2%
ov_SC04_021 2073 1666 0 2073 2425 85.5%
ov_SC05_000 2077 1668 0 2080 2424 85.8%
ov_SC05_001 2093 1664 0 2098 2577 81.4%
ov_SC05_002 2076 1664 0 2079 2445 85.0%
ov_SC05_003 2076 1664 0 2077 2484 83.6%
ov_SC05_004 2074 1664 0 2076 2467 84.2%
ov_SC05_005 2078 1664 0 2079 2494 83.4%
ov_SC05_006 2072 1664 0 2072 2432 85.2%
ov_SC05_007 2079 1664 0 2084 2485 83.9%
ov_SC05_008 2098 1664 0 2100 2546 82.5%
ov_SC05_009 2074 1664 0 2078 2440 85.2%
ov_SC05_010 2098 1664 0 2102 2591 81.1%
ov_SC05_011 2075 1664 0 2076 2411 86.1%
ov_SC05_017 2174 1661 0 2185 2845 76.8%
ov_SC05_018 2124 1664 0 2137 2676 79.9%
ov_SC05_019 2073 1666 0 2073 2425 85.5%
ov_SC06_000 2134 1673 0 2137 2694 79.3%
ov_SC06_006 2082 1664 0 2083 2514 82.9%
ov_SC06_008 2098 1666 0 2104 2544 82.7%
ov_SC06_010 2085 1664 0 2090 2520 82.9%
ov_SC06_011 2082 1664 0 2086 2471 84.4%
ov_SC06_013 2075 1664 0 2076 2427 85.5%
ov_SC06_014 2079 1664 0 2081 2455 84.8%
ov_SC06_015 2076 1664 0 2076 2423 85.7%
ov_SC06_016 2094 1664 0 2096 2552 82.1%
ov_SC06_018 2092 1667 0 2099 2668 78.7%
ov_SC06_020 2082 1666 0 2083 2521 82.6%
ov_SC06_022 2098 1664 0 2106 2645 79.6%
ov_SC06_024 2104 1664 0 2110 2670 79.0%
ov_SC06_025 2091 1664 0 2096 2575 81.4%
ov_SC06_027 2066 1664 0 2067 2410 85.8%
ov_SC06_029 2119 1664 0 2131 2665 80.0%
ov_SC06_030 2077 1664 0 2077 2459 84.5%
ov_SC06_032 2088 1665 0 2095 2661 78.7%
ov_SC06_033 2092 1665 0 2099 2634 79.7%
ov_SC07_000 2091 1668 0 2093 2524 82.9%
ov_SC07_001 2078 1664 0 2080 2457 84.7%
ov_SC07_002 2095 1664 0 2099 2582 81.3%
ov_SC07_008 2062 1664 0 2062 2388 86.3%
ov_SC07_009 2073 1664 0 2075 2432 85.3%