Files
BFM-decomp/docs/progress.fleet.md
T
Drew T f459f53083 feat(phase-29): func_8015B950 banked — ONE cast unlocked the 925-site axis that broke 138 binaries
The same axis that broke 138 of 140 binaries an hour ago now lands clean, because conform_decls'
NEW arity guard located the actual obstruction instead of leaving me to absorb it by hand.

THE OBSTRUCTION WAS ONE LINE. Conforming `extern s32 func_8015B950(void)` -> `(s32 arg0)` turns
every 0-arg CALL SITE into `too few arguments`. My hand attempt assumed those were spread across the
926 TUs and would need 926 casts (the func_8012AAAC precedent, where it really was 137 separate
sites). They are not: there is exactly ONE call, in `src/shared/engine_core.h`'s
`DEFINE_func_8015BEE4()` macro body — expanded into all 926 TUs by the preprocessor.

func_8015BEE4 is a THUNK: `return func_8015B950();` with $a0 passing straight through from its own
caller. So the 0-arg call shape is byte-CORRECT and must be preserved, not fixed —
`return ((s32 (*)(void))func_8015B950)();` keeps it exactly (§17a-1; gcc folds the cast of a known
symbol to a direct jal, and the s32 return is unchanged so the thunk's value still flows).

Sequence: 1 cast -> conform_decls --apply (925 sites, R32 completion assertion: 0 remaining) ->
gate BANKED byte-identical -> R22 clean-fleet extract-all 139/139, check-all 140 passed / 0 failed.
The draft's 2 callee-decl conflicts (func_801725A4, func_80147078) dissolved with the axis.

Worth 37,398 templatable ins; the ×137 family sweep is next.
2026-07-27 11:56:23 -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: 317076 / 353720 = 89.64% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 10777034 / 13141652 = 82.0% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 3919258 / 5634875 = 69.6% (65335/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: 10776598 / 13081451 = 82.4%)

FLEET REAL substantive : 315221 (of which dedup-shared 239530 via 1886 groups / 239604 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 36637 FLEET matchable : 353720

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 2258 1742 0 2258 2403 94.0%
ov_SC01_001 2263 1743 0 2265 2466 91.8%
ov_SC01_004 2253 1734 0 2254 2414 93.4%
ov_SC01_005 2283 1757 0 2283 2503 91.2%
ov_SC01_006 2283 1757 0 2283 2503 91.2%
ov_SC01_008 2253 1734 0 2255 2426 93.0%
ov_SC01_009 2279 1735 0 2280 2507 90.9%
ov_SC01_074 2257 1735 0 2259 2425 93.2%
ov_SC01_077 2439 1702 0 2441 2585 94.4%
ov_SC01_080 2295 1738 0 2295 2512 91.4%
ov_SC01_084 2302 1738 0 2307 2579 89.5%
ov_SC02_000 2355 1773 0 2355 2683 87.8%
ov_SC02_003 2355 1773 0 2355 2683 87.8%
ov_SC02_004 2261 1738 0 2261 2401 94.2%
ov_SC02_005 2369 1734 0 2379 2927 81.3%
ov_SC02_011 2382 1741 0 2393 2893 82.7%
ov_SC02_015 2263 1740 0 2263 2414 93.7%
ov_SC02_016 2297 1740 0 2300 2545 90.4%
ov_SC02_017 2340 1740 0 2348 2732 85.9%
ov_SC02_021 2269 1740 0 2269 2437 93.1%
ov_SC02_026 2284 1738 0 2290 2572 89.0%
ov_SC02_027 2307 1738 0 2316 2692 86.0%
ov_SC02_028 2309 1738 0 2319 2701 85.9%
ov_SC02_031 2295 1739 0 2300 2562 89.8%
ov_SC02_035 2270 1738 0 2273 2520 90.2%
ov_SC02_039 2254 1738 0 2254 2416 93.3%
ov_SC02_041 2292 1738 0 2295 2561 89.6%
ov_SC03_001 2389 1739 0 2406 2869 83.9%
ov_SC03_002 2315 1743 0 2330 2631 88.6%
ov_SC03_003 2264 1738 0 2265 2423 93.5%
ov_SC03_006 2331 1744 0 2340 2767 84.6%
ov_SC03_007 2309 1738 0 2313 2623 88.2%
ov_SC03_010 2272 1738 0 2272 2471 91.9%
ov_SC03_011 2278 1738 0 2284 2527 90.4%
ov_SC03_012 2256 1738 0 2257 2406 93.8%
ov_SC03_013 2277 1738 0 2277 2493 91.3%
ov_SC03_014 2335 1763 0 2335 2685 87.0%
ov_SC03_015 2335 1763 0 2335 2685 87.0%
ov_SC03_023 2263 1738 0 2264 2435 93.0%
ov_SC03_024 2323 1743 0 2330 2641 88.2%
ov_SC03_028 2303 1738 0 2307 2664 86.6%
ov_SC03_029 2305 1740 0 2315 2644 87.6%
ov_SC03_030 2278 1743 0 2280 2495 91.4%
ov_SC03_031 2274 1738 0 2277 2514 90.6%
ov_SC03_089 2291 1738 0 2298 2581 89.0%
ov_SC03_090 2292 1738 0 2300 2625 87.6%
ov_SC03_091 2295 1738 0 2303 2640 87.2%
ov_SC03_092 2305 1738 0 2317 2587 89.6%
ov_SC03_093 2281 1738 0 2285 2563 89.2%
ov_SC03_094 2276 1738 0 2282 2577 88.6%
ov_SC03_095 2266 1738 0 2269 2474 91.7%
ov_SC03_096 2266 1738 0 2269 2465 92.0%
ov_SC03_097 2296 1738 0 2303 2603 88.5%
ov_SC03_098 2274 1738 0 2277 2541 89.6%
ov_SC03_099 2267 1738 0 2270 2504 90.7%
ov_SC03_100 2277 1738 0 2281 2539 89.8%
ov_SC03_101 2277 1738 0 2281 2528 90.2%
ov_SC03_102 2270 1738 0 2273 2492 91.2%
ov_SC03_103 2273 1740 0 2276 2510 90.7%
ov_SC03_104 2299 1738 0 2306 2616 88.1%
ov_SC03_105 2290 1738 0 2297 2597 88.4%
ov_SC03_108 2258 1738 0 2258 2443 92.4%
ov_SC03_109 2261 1738 0 2263 2424 93.4%
ov_SC03_110 2265 1738 0 2265 2468 91.8%
ov_SC03_111 2276 1738 0 2279 2510 90.8%
ov_SC03_112 2272 1740 0 2274 2526 90.0%
ov_SC03_113 2265 1740 0 2268 2468 91.9%
ov_SC03_114 2254 1738 0 2256 2415 93.4%
ov_SC03_115 2271 1738 0 2273 2472 91.9%
ov_SC03_116 2262 1738 0 2265 2438 92.9%
ov_SC03_117 2289 1738 0 2295 2557 89.8%
ov_SC03_118 2335 1762 0 2336 2685 87.0%
ov_SC03_119 2334 1762 0 2335 2685 87.0%
ov_SC03_121 2269 1738 0 2272 2459 92.4%
ov_SC03_124 2347 1734 0 2367 2741 86.4%
ov_SC03_125 2303 1738 0 2315 2588 89.5%
ov_SC03_126 2266 1740 0 2266 2423 93.5%
ov_SC04_000 2282 1742 0 2291 2546 90.0%
ov_SC04_002 2301 1738 0 2305 2636 87.4%
ov_SC04_003 2277 1738 0 2281 2502 91.2%
ov_SC04_004 2286 1738 0 2288 2558 89.4%
ov_SC04_005 2296 1738 0 2302 2612 88.1%
ov_SC04_006 2266 1738 0 2268 2454 92.4%
ov_SC04_007 2290 1738 0 2294 2569 89.3%
ov_SC04_008 2258 1738 0 2258 2415 93.5%
ov_SC04_009 2273 1738 0 2276 2441 93.2%
ov_SC04_010 2263 1738 0 2264 2419 93.6%
ov_SC04_011 2321 1738 0 2327 2803 83.0%
ov_SC04_012 2260 1738 0 2261 2420 93.4%
ov_SC04_015 2325 1739 0 2336 2611 89.5%
ov_SC04_016 2263 1738 0 2265 2440 92.8%
ov_SC04_018 2373 1773 0 2373 2857 83.1%
ov_SC04_019 2379 1773 0 2379 2857 83.3%
ov_SC04_020 2290 1738 0 2302 2567 89.7%
ov_SC04_021 2267 1740 0 2267 2423 93.6%
ov_SC05_000 2264 1742 0 2267 2422 93.6%
ov_SC05_001 2286 1738 0 2291 2574 89.0%
ov_SC05_002 2269 1738 0 2272 2442 93.0%
ov_SC05_003 2266 1738 0 2267 2481 91.4%
ov_SC05_004 2262 1738 0 2264 2464 91.9%
ov_SC05_005 2267 1738 0 2268 2491 91.0%
ov_SC05_006 2260 1738 0 2260 2430 93.0%
ov_SC05_007 2270 1738 0 2275 2482 91.7%
ov_SC05_008 2287 1738 0 2289 2543 90.0%
ov_SC05_009 2266 1738 0 2270 2438 93.1%
ov_SC05_010 2293 1738 0 2297 2588 88.8%
ov_SC05_011 2262 1738 0 2263 2409 93.9%
ov_SC05_017 2369 1735 0 2380 2842 83.7%
ov_SC05_018 2316 1738 0 2329 2673 87.1%
ov_SC05_019 2267 1740 0 2267 2423 93.6%
ov_SC06_000 2331 1747 0 2334 2691 86.7%
ov_SC06_006 2283 1738 0 2284 2511 91.0%
ov_SC06_008 2303 1740 0 2309 2542 90.8%
ov_SC06_010 2283 1738 0 2288 2517 90.9%
ov_SC06_011 2271 1738 0 2275 2468 92.2%
ov_SC06_013 2265 1738 0 2266 2425 93.4%
ov_SC06_014 2271 1738 0 2273 2453 92.7%
ov_SC06_015 2268 1738 0 2268 2421 93.7%
ov_SC06_016 2286 1738 0 2288 2549 89.8%
ov_SC06_018 2297 1740 0 2304 2665 86.5%
ov_SC06_020 2275 1740 0 2276 2518 90.4%
ov_SC06_022 2294 1738 0 2302 2642 87.1%
ov_SC06_024 2304 1738 0 2310 2667 86.6%
ov_SC06_025 2288 1738 0 2293 2572 89.2%
ov_SC06_027 2253 1738 0 2254 2408 93.6%
ov_SC06_029 2314 1738 0 2326 2662 87.4%
ov_SC06_030 2267 1738 0 2267 2456 92.3%
ov_SC06_032 2289 1739 0 2296 2658 86.4%
ov_SC06_033 2291 1739 0 2298 2631 87.3%
ov_SC07_000 2282 1742 0 2284 2521 90.6%
ov_SC07_001 2266 1738 0 2268 2454 92.4%
ov_SC07_002 2294 1738 0 2298 2579 89.1%
ov_SC07_006 2067 1555 0 2147 2456 87.4%
ov_SC07_007 2061 1586 0 2145 2613 82.1%
ov_SC07_008 2251 1738 0 2251 2386 94.3%
ov_SC07_009 2260 1738 0 2262 2430 93.1%
ov_SC07_010 2093 1608 0 2176 2524 86.2%
ov_SC07_011 2061 1585 0 2141 2449 87.4%