Files
BFM-decomp/docs/progress.fleet.md
T
Drew T 3bbfe21596 feat(phase-29): func_80165CA0 ×3 -> ×135 via ENGINE_SHB; +22 fns ×1; §75b (the carried-#define gap)
- dedup_extend banked 157 / 478 planned across 135 binaries: func_80165CA0 (99 ins) ×135
  (~+0.10pp) + 22 other functions ×1 picked up in the 3 overlays the first sweep excluded.
- FLEET: instr-weighted 80.1% -> 80.2% (10,525,534 -> 10,539,723, +14,189 ins); fn-count
  89.09% -> 89.14%; distinct-code 67.7% (unchanged — propagation moves coverage, not distinct-RE).
  dedup 1886 validated / 0 failed, C1 coverage 239,472/239,472. 0 NON_MATCHING (G4).
- R22 clean-fleet: make clean && extract-all && check-all -> 140 passed, 0 failed of 140.
- §75b — extraction lifts `extern`s but NOT file-scope `#define`s, so a body matched with a macro
  in its preamble compiles only where that overlay's define is in scope ABOVE the splice point.
  Signature is a LINK error (`undefined reference`), never `conflicting types`: an unexpanded
  SHB(x) parses as a call to an undeclared function. The diagnosis PREDICTED the membership —
  the 3 stuck members are exactly the 3 files carrying the __volatile__ spelling of SHB, i.e. the
  function's own preamble still sitting above its own instantiation.
- R14/R35 IN ACTION: the full-sweep census REVERSED the ranking I had just committed. I put the
  class-A normalization first at "~+0.13pp if it reaches ×138"; measured across all 134 it is
  worth 3 overlays (func_80012ABC 3, func_8012F14C 131). The cheap win was the one I ranked
  third. §75a's "collect across the whole sweep before scoping" earned itself immediately.
- NEXT (specified, not guessed): func_80174CB0 is class B on func_8012F14C (1944 `(s32)` vs 968
  `(s32,s32,s32)`). The macro carries the 3-param prototype; the failing TU declares the 1-param
  one FIRST (ov_SC01_001: TU@328 vs instantiation@2616) -> two prototypes, different arity ->
  reject. Per cdecl.compatible's MEASURED rule a K&R `extern void func_8012F14C();` is accepted
  BOTH ways round here (prototype-first + `()`-second always; `()`-first + prototype-second when
  no param default-promotes, and s32 does not) -> it should satisfy both populations in either
  order. One-line probe on the carried decl, byte-gate the 3 members, then extend.
2026-07-25 13:18:36 -06:00

9.1 KiB
Raw Blame History

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

140 binaries: main + resident + 138 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: 315299 / 353717 = 89.14% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 10539723 / 13141652 = 80.2% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 3813512 / 5634875 = 67.7% (64879/87459 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 436 / 60201 = 0.7% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-06-14; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift) (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 10539287 / 13081451 = 80.6%)

FLEET REAL substantive : 313444 (of which dedup-shared 239398 via 1886 groups / 239472 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 38411 FLEET matchable : 353717

binary REAL shared LINKED byte-ident matchable byte-ident %
main 54 2 959 1055 2096 50.3%
resident 129 0 0 131 145 90.3%
ov_SC01_000 2248 1742 0 2248 2403 93.5%
ov_SC01_001 2250 1742 0 2252 2466 91.3%
ov_SC01_004 2241 1733 0 2242 2414 92.9%
ov_SC01_005 2271 1756 0 2271 2503 90.7%
ov_SC01_006 2271 1756 0 2271 2503 90.7%
ov_SC01_008 2241 1733 0 2243 2426 92.5%
ov_SC01_009 2267 1734 0 2268 2507 90.5%
ov_SC01_074 2245 1734 0 2247 2425 92.7%
ov_SC01_077 2428 1702 0 2430 2585 94.0%
ov_SC01_080 2283 1737 0 2283 2512 90.9%
ov_SC01_084 2290 1737 0 2295 2579 89.0%
ov_SC02_000 2343 1772 0 2343 2683 87.3%
ov_SC02_003 2343 1772 0 2343 2683 87.3%
ov_SC02_004 2249 1737 0 2249 2401 93.7%
ov_SC02_005 2357 1733 0 2367 2927 80.9%
ov_SC02_011 2369 1740 0 2380 2893 82.3%
ov_SC02_015 2250 1739 0 2250 2414 93.2%
ov_SC02_016 2283 1739 0 2286 2545 89.8%
ov_SC02_017 2327 1739 0 2335 2732 85.5%
ov_SC02_021 2256 1739 0 2256 2437 92.6%
ov_SC02_026 2272 1737 0 2278 2572 88.6%
ov_SC02_027 2295 1737 0 2304 2692 85.6%
ov_SC02_028 2297 1737 0 2307 2701 85.4%
ov_SC02_031 2282 1738 0 2287 2562 89.3%
ov_SC02_035 2258 1737 0 2261 2520 89.7%
ov_SC02_039 2242 1737 0 2242 2416 92.8%
ov_SC02_041 2279 1737 0 2282 2561 89.1%
ov_SC03_001 2378 1738 0 2395 2869 83.5%
ov_SC03_002 2304 1742 0 2319 2631 88.1%
ov_SC03_003 2252 1737 0 2253 2423 93.0%
ov_SC03_006 2317 1743 0 2326 2767 84.1%
ov_SC03_007 2297 1737 0 2301 2623 87.7%
ov_SC03_010 2258 1737 0 2258 2470 91.4%
ov_SC03_011 2266 1737 0 2272 2527 89.9%
ov_SC03_012 2244 1737 0 2245 2406 93.3%
ov_SC03_013 2263 1737 0 2263 2492 90.8%
ov_SC03_014 2323 1762 0 2323 2685 86.5%
ov_SC03_015 2323 1762 0 2323 2685 86.5%
ov_SC03_023 2251 1737 0 2252 2435 92.5%
ov_SC03_024 2311 1742 0 2318 2641 87.8%
ov_SC03_028 2291 1737 0 2295 2664 86.1%
ov_SC03_029 2292 1739 0 2302 2644 87.1%
ov_SC03_030 2265 1742 0 2267 2495 90.9%
ov_SC03_031 2262 1737 0 2265 2514 90.1%
ov_SC03_089 2278 1737 0 2285 2581 88.5%
ov_SC03_090 2279 1737 0 2287 2625 87.1%
ov_SC03_091 2282 1737 0 2290 2640 86.7%
ov_SC03_092 2293 1737 0 2305 2587 89.1%
ov_SC03_093 2269 1737 0 2273 2563 88.7%
ov_SC03_094 2264 1737 0 2270 2577 88.1%
ov_SC03_095 2254 1737 0 2257 2474 91.2%
ov_SC03_096 2254 1737 0 2257 2465 91.6%
ov_SC03_097 2284 1737 0 2291 2603 88.0%
ov_SC03_098 2262 1737 0 2265 2541 89.1%
ov_SC03_099 2255 1737 0 2258 2504 90.2%
ov_SC03_100 2265 1737 0 2269 2539 89.4%
ov_SC03_101 2265 1737 0 2269 2528 89.8%
ov_SC03_102 2257 1737 0 2260 2492 90.7%
ov_SC03_103 2260 1739 0 2263 2510 90.2%
ov_SC03_104 2286 1737 0 2293 2616 87.7%
ov_SC03_105 2279 1737 0 2286 2597 88.0%
ov_SC03_108 2246 1737 0 2246 2443 91.9%
ov_SC03_109 2249 1737 0 2251 2424 92.9%
ov_SC03_110 2253 1737 0 2253 2468 91.3%
ov_SC03_111 2264 1737 0 2267 2510 90.3%
ov_SC03_112 2258 1739 0 2260 2526 89.5%
ov_SC03_113 2251 1739 0 2254 2468 91.3%
ov_SC03_114 2241 1737 0 2243 2415 92.9%
ov_SC03_115 2258 1737 0 2260 2472 91.4%
ov_SC03_116 2248 1737 0 2251 2438 92.3%
ov_SC03_117 2276 1737 0 2282 2557 89.2%
ov_SC03_118 2322 1761 0 2323 2685 86.5%
ov_SC03_119 2321 1761 0 2322 2685 86.5%
ov_SC03_121 2256 1737 0 2259 2459 91.9%
ov_SC03_124 2335 1733 0 2355 2741 85.9%
ov_SC03_125 2291 1737 0 2303 2588 89.0%
ov_SC03_126 2253 1739 0 2253 2423 93.0%
ov_SC04_000 2269 1741 0 2278 2546 89.5%
ov_SC04_002 2287 1737 0 2291 2636 86.9%
ov_SC04_003 2264 1737 0 2268 2502 90.6%
ov_SC04_004 2273 1737 0 2275 2558 88.9%
ov_SC04_005 2282 1737 0 2288 2612 87.6%
ov_SC04_006 2253 1737 0 2255 2454 91.9%
ov_SC04_007 2276 1737 0 2280 2569 88.8%
ov_SC04_008 2245 1737 0 2245 2415 93.0%
ov_SC04_009 2260 1737 0 2263 2441 92.7%
ov_SC04_010 2250 1737 0 2251 2419 93.1%
ov_SC04_011 2308 1737 0 2314 2803 82.6%
ov_SC04_012 2247 1737 0 2248 2420 92.9%
ov_SC04_015 2313 1738 0 2324 2611 89.0%
ov_SC04_016 2250 1737 0 2252 2440 92.3%
ov_SC04_018 2361 1772 0 2361 2857 82.6%
ov_SC04_019 2367 1772 0 2367 2857 82.8%
ov_SC04_020 2278 1737 0 2290 2567 89.2%
ov_SC04_021 2254 1739 0 2254 2423 93.0%
ov_SC05_000 2251 1741 0 2254 2422 93.1%
ov_SC05_001 2273 1737 0 2278 2574 88.5%
ov_SC05_002 2256 1737 0 2259 2442 92.5%
ov_SC05_003 2253 1737 0 2254 2481 90.9%
ov_SC05_004 2249 1737 0 2251 2464 91.4%
ov_SC05_005 2254 1737 0 2255 2491 90.5%
ov_SC05_006 2247 1737 0 2247 2430 92.5%
ov_SC05_007 2257 1737 0 2262 2482 91.1%
ov_SC05_008 2274 1737 0 2276 2543 89.5%
ov_SC05_009 2253 1737 0 2257 2438 92.6%
ov_SC05_010 2280 1737 0 2284 2588 88.3%
ov_SC05_011 2249 1737 0 2250 2409 93.4%
ov_SC05_017 2357 1734 0 2368 2842 83.3%
ov_SC05_018 2304 1737 0 2317 2673 86.7%
ov_SC05_019 2254 1739 0 2254 2423 93.0%
ov_SC06_000 2318 1746 0 2321 2691 86.3%
ov_SC06_006 2270 1737 0 2271 2511 90.4%
ov_SC06_008 2287 1739 0 2293 2542 90.2%
ov_SC06_010 2269 1737 0 2274 2517 90.3%
ov_SC06_011 2259 1737 0 2263 2468 91.7%
ov_SC06_013 2252 1737 0 2253 2425 92.9%
ov_SC06_014 2258 1737 0 2260 2453 92.1%
ov_SC06_015 2255 1737 0 2255 2421 93.1%
ov_SC06_016 2273 1737 0 2275 2549 89.3%
ov_SC06_018 2286 1740 0 2293 2665 86.0%
ov_SC06_020 2262 1739 0 2263 2518 89.9%
ov_SC06_022 2281 1737 0 2289 2642 86.6%
ov_SC06_024 2290 1737 0 2296 2667 86.1%
ov_SC06_025 2274 1737 0 2279 2572 88.6%
ov_SC06_027 2240 1737 0 2241 2408 93.1%
ov_SC06_029 2299 1737 0 2311 2662 86.8%
ov_SC06_030 2254 1737 0 2254 2456 91.8%
ov_SC06_032 2274 1738 0 2281 2658 85.8%
ov_SC06_033 2276 1738 0 2283 2631 86.8%
ov_SC07_000 2270 1741 0 2272 2521 90.1%
ov_SC07_001 2253 1737 0 2255 2454 91.9%
ov_SC07_002 2281 1737 0 2285 2579 88.6%
ov_SC07_006 2050 1555 0 2130 2455 86.8%
ov_SC07_007 2042 1586 0 2126 2613 81.4%
ov_SC07_008 2238 1737 0 2238 2386 93.8%
ov_SC07_009 2247 1737 0 2249 2430 92.6%
ov_SC07_010 2072 1607 0 2155 2524 85.4%
ov_SC07_011 2041 1585 0 2121 2449 86.6%