Files
BFM-decomp/docs/progress.fleet.md
T
Drew T efec1b9b71 fix(phase-30 S47-A1): asm-label aliases must never be dropped by §8d; +148 members
scope_data_externs §8d drops the draft's decl of any symbol the TU already declares at file scope.
It keys on the SYMBOL, but a §37 asm-label ALIAS binds a DIFFERENT C identifier to that symbol:
the TU declares `D_801851BC`, it does NOT declare `tbl_D_80187044`. Dropping the alias left the
body referencing an undeclared name, which cc1 reports with no `error:` prefix — so the sweep
classified all 132 siblings as CC1-FAIL(no-diagnostic), i.e. as a codegen wall.

The bitter part: the alias exists PRECISELY BECAUSE the TU declares that symbol with a conflicting
type (a `void (*[])(void)` dispatch table vs this function's 20-byte-stride view). The drop rule
fired on exactly the declarations written to survive it. Why 1 of 2 died was fully determined:
tbl_D_80187048's symbol is not in the TU, so it demoted normally.

Fix: is_asm_alias() — an alias is demoted into the body, never dropped (the identifiers differ, so
it cannot collide with the TU's decl). Control-tested 6 ways incl. self-labels and plain externs.

Measured: func_80132018 3/135 -> 135/135; full re-sweep +16 more. Total +148 members.
R22 clean-fleet 213 passed / 0 failed of 213. tools-health OK, dedup-check 1949/0.
Fleet 96.11 -> 96.15% fn-count, 87.8 -> 87.9% distinct; stubs 14,120 -> 13,972 = -148 (2nd oracle).

CORRECTION TO MY OWN CLAIM (R14): after the probe I said the 58% aggregate was concealing a broad
problem. The re-sweep refuted it — only 16 more banks fleet-wide. The alias class really was one
family; the first read ("outlier") was right and the correction was wrong.

875 sweep failures classified: 231 PLUMBING-other, 141 DIFF (real divergence, only 16%),
136 `conflicting types for cdFileLocTable` (ONE symbol — biggest single class left),
77 CC1-FAIL(no-diagnostic), 26 memcpy, 12 D_80114F24, 11 D_800AE620, 9 D_800183E0.

STILL UNFIXED, and the most dangerous instrument left: the sweep's failure classifier greps for
`error:`, which gcc-2.7.2 never emits on hard errors. Every hard error therefore reads
CC1-FAIL(no-diagnostic). That is how a missing declaration looked like a codegen wall across 132
functions. rtu_match was fixed for this at T0(b); this classifier was not.
2026-08-10 18:50:48 -06:00

12 KiB
Raw Blame History

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

213 binaries: main + resident + 211 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: 349400 / 363379 = 96.15% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 12740815 / 13523856 = 94.2% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 5143912 / 5851963 = 87.9% (79883/90928 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 436 / 79510 = 0.5% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; 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: 12740379 / 13444346 = 94.8%)

FLEET REAL substantive : 347218 (of which dedup-shared 249221 via 1949 groups / 249295 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 13972 FLEET matchable : 363379

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%
md_MAIN_001 1 0 0 1 11 9.1%
md_MAIN_003 3 0 0 3 60 5.0%
md_MAIN_008 0 0 0 0 6 0.0%
md_MAIN_011 0 0 0 0 21 0.0%
md_MAIN_013 3 0 0 3 16 18.8%
md_MAIN_014 3 0 0 4 13 30.8%
md_MAIN_015 3 0 0 3 20 15.0%
md_MAIN_016 2 0 0 3 13 23.1%
md_MAIN_017 3 0 0 3 10 30.0%
md_MAIN_018 3 0 0 4 11 36.4%
md_MAIN_019 3 0 0 3 22 13.6%
md_MAIN_020 6 0 0 7 14 50.0%
md_MAIN_021 3 0 0 4 11 36.4%
md_MAIN_022 12 0 0 14 33 42.4%
md_MAIN_023 2 0 0 3 6 50.0%
md_MAIN_024 2 0 0 4 6 66.7%
md_MAIN_025 3 0 0 3 30 10.0%
md_MAIN_026 3 0 0 3 24 12.5%
md_MAIN_027 7 0 0 9 29 31.0%
md_MAIN_028 3 0 0 3 22 13.6%
md_MAIN_029 3 0 0 4 11 36.4%
md_MAIN_030 3 0 0 3 10 30.0%
md_MAIN_031 2 0 0 2 18 11.1%
md_MAIN_032 2 0 0 2 10 20.0%
md_MAIN_033 2 0 0 2 19 10.5%
md_MAIN_034 2 0 0 3 28 10.7%
md_MAIN_035 7 0 0 8 16 50.0%
md_MAIN_036 2 0 0 3 28 10.7%
md_MAIN_037 2 0 0 2 17 11.8%
md_MAIN_038 3 0 0 3 20 15.0%
md_MAIN_039 2 0 0 2 26 7.7%
md_MAIN_040 2 0 0 2 19 10.5%
md_MAIN_041 3 0 0 3 15 20.0%
md_MAIN_042 0 0 0 0 4 0.0%
md_MAIN_043 2 0 0 3 23 13.0%
md_MAIN_044 7 0 0 8 44 18.2%
md_MAIN_045 0 0 0 1 21 4.8%
md_MAIN_046 5 0 0 6 39 15.4%
md_MAIN_047 3 0 0 4 12 33.3%
md_SC02_009 4 0 0 4 40 10.0%
md_SC03_073 10 0 0 12 28 42.9%
md_SC03_074 11 0 0 13 29 44.8%
md_SC03_075 13 0 0 15 41 36.6%
md_SC03_076 13 0 0 15 66 22.7%
md_SC03_077 11 0 0 13 35 37.1%
md_SC03_078 9 0 0 11 27 40.7%
md_SC03_079 11 0 0 13 29 44.8%
md_SC03_132 11 0 0 13 28 46.4%
md_SC03_133 12 0 0 14 29 48.3%
md_SC03_134 14 0 0 16 41 39.0%
md_SC03_135 14 0 0 16 66 24.2%
md_SC03_136 12 0 0 14 35 40.0%
md_SC03_137 10 0 0 12 27 44.4%
md_SC03_138 14 0 0 18 37 48.6%
md_SC04_024 10 0 0 12 28 42.9%
md_SC04_025 11 0 0 13 29 44.8%
md_SC04_026 13 0 0 15 41 36.6%
md_SC04_027 13 0 0 15 66 22.7%
md_SC04_028 11 0 0 13 35 37.1%
md_SC04_029 9 0 0 11 27 40.7%
md_SC04_030 11 0 0 15 31 48.4%
md_SC05_023 10 0 0 12 28 42.9%
md_SC05_024 11 0 0 13 29 44.8%
md_SC05_025 13 0 0 15 41 36.6%
md_SC05_026 13 0 0 15 66 22.7%
md_SC05_027 11 0 0 13 35 37.1%
md_SC05_028 9 0 0 11 27 40.7%
md_SC05_029 11 0 0 15 31 48.4%
md_SC07_003 12 0 0 12 100 12.0%
md_SC07_004 40 0 0 40 315 12.7%
ov_MAIN_012 2157 1658 0 2236 2403 93.1%
ov_SC01_000 2389 1775 0 2389 2403 99.4%
ov_SC01_001 2397 1776 0 2399 2466 97.3%
ov_SC01_004 2394 1767 0 2395 2414 99.2%
ov_SC01_005 2426 1790 0 2426 2503 96.9%
ov_SC01_006 2426 1790 0 2426 2503 96.9%
ov_SC01_008 2394 1767 0 2396 2426 98.8%
ov_SC01_009 2421 1768 0 2422 2507 96.6%
ov_SC01_074 2396 1768 0 2398 2425 98.9%
ov_SC01_077 2561 1733 0 2563 2586 99.1%
ov_SC01_080 2425 1771 0 2425 2512 96.5%
ov_SC01_084 2449 1776 0 2454 2579 95.2%
ov_SC02_000 2521 1815 0 2521 2683 94.0%
ov_SC02_003 2521 1815 0 2521 2683 94.0%
ov_SC02_004 2390 1771 0 2390 2401 99.5%
ov_SC02_005 2540 1767 0 2550 2927 87.1%
ov_SC02_011 2627 1774 0 2638 2893 91.2%
ov_SC02_015 2400 1773 0 2400 2414 99.4%
ov_SC02_016 2483 1774 0 2486 2545 97.7%
ov_SC02_017 2552 1774 0 2560 2732 93.7%
ov_SC02_021 2405 1773 0 2405 2437 98.7%
ov_SC02_026 2503 1771 0 2509 2572 97.6%
ov_SC02_027 2559 1776 0 2568 2692 95.4%
ov_SC02_028 2564 1776 0 2574 2701 95.3%
ov_SC02_031 2494 1772 0 2499 2562 97.5%
ov_SC02_035 2489 1771 0 2492 2520 98.9%
ov_SC02_037 2270 1658 0 2352 2516 93.5%
ov_SC02_039 2395 1771 0 2395 2416 99.1%
ov_SC02_041 2476 1771 0 2479 2561 96.8%
ov_SC03_001 2671 1772 0 2688 2869 93.7%
ov_SC03_002 2543 1776 0 2558 2631 97.2%
ov_SC03_003 2399 1771 0 2400 2423 99.1%
ov_SC03_006 2555 1778 0 2564 2767 92.7%
ov_SC03_007 2463 1771 0 2467 2623 94.1%
ov_SC03_010 2416 1771 0 2416 2471 97.8%
ov_SC03_011 2417 1771 0 2423 2527 95.9%
ov_SC03_012 2389 1771 0 2390 2406 99.3%
ov_SC03_013 2422 1771 0 2422 2493 97.2%
ov_SC03_014 2574 1802 0 2574 2685 95.9%
ov_SC03_015 2573 1802 0 2573 2685 95.8%
ov_SC03_023 2401 1771 0 2402 2435 98.6%
ov_SC03_024 2517 1776 0 2524 2641 95.6%
ov_SC03_028 2463 1772 0 2467 2664 92.6%
ov_SC03_029 2500 1774 0 2510 2644 94.9%
ov_SC03_030 2419 1776 0 2421 2495 97.0%
ov_SC03_031 2447 1771 0 2450 2514 97.5%
ov_SC03_089 2513 1776 0 2520 2581 97.6%
ov_SC03_090 2528 1776 0 2536 2625 96.6%
ov_SC03_091 2542 1776 0 2550 2640 96.6%
ov_SC03_092 2508 1776 0 2520 2588 97.4%
ov_SC03_093 2516 1776 0 2520 2563 98.3%
ov_SC03_094 2505 1771 0 2511 2577 97.4%
ov_SC03_095 2432 1771 0 2435 2474 98.4%
ov_SC03_096 2429 1771 0 2432 2465 98.7%
ov_SC03_097 2526 1776 0 2533 2603 97.3%
ov_SC03_098 2510 1776 0 2513 2541 98.9%
ov_SC03_099 2486 1771 0 2489 2504 99.4%
ov_SC03_100 2521 1776 0 2525 2539 99.4%
ov_SC03_101 2484 1776 0 2488 2528 98.4%
ov_SC03_102 2470 1771 0 2473 2492 99.2%
ov_SC03_103 2494 1773 0 2497 2510 99.5%
ov_SC03_104 2542 1776 0 2549 2616 97.4%
ov_SC03_105 2449 1772 0 2456 2597 94.6%
ov_SC03_107 2195 1658 0 2278 2497 91.2%
ov_SC03_108 2400 1771 0 2400 2443 98.2%
ov_SC03_109 2408 1771 0 2410 2424 99.4%
ov_SC03_110 2441 1778 0 2441 2468 98.9%
ov_SC03_111 2472 1771 0 2475 2510 98.6%
ov_SC03_112 2438 1773 0 2440 2526 96.6%
ov_SC03_113 2435 1773 0 2438 2468 98.8%
ov_SC03_114 2390 1771 0 2392 2415 99.0%
ov_SC03_115 2432 1771 0 2434 2472 98.5%
ov_SC03_116 2400 1771 0 2403 2438 98.6%
ov_SC03_117 2468 1771 0 2474 2557 96.8%
ov_SC03_118 2543 1796 0 2544 2685 94.7%
ov_SC03_119 2540 1796 0 2541 2685 94.6%
ov_SC03_121 2403 1771 0 2406 2459 97.8%
ov_SC03_124 2579 1767 0 2599 2741 94.8%
ov_SC03_125 2529 1771 0 2541 2588 98.2%
ov_SC03_126 2400 1773 0 2400 2423 99.1%
ov_SC04_000 2474 1775 0 2483 2546 97.5%
ov_SC04_002 2504 1771 0 2508 2636 95.1%
ov_SC04_003 2439 1771 0 2443 2502 97.6%
ov_SC04_004 2470 1771 0 2472 2558 96.6%
ov_SC04_005 2500 1771 0 2506 2612 95.9%
ov_SC04_006 2430 1771 0 2432 2454 99.1%
ov_SC04_007 2494 1771 0 2498 2569 97.2%
ov_SC04_008 2400 1771 0 2400 2415 99.4%
ov_SC04_009 2427 1771 0 2430 2441 99.5%
ov_SC04_010 2402 1771 0 2403 2419 99.3%
ov_SC04_011 2516 1776 0 2522 2803 90.0%
ov_SC04_012 2397 1771 0 2398 2420 99.1%
ov_SC04_015 2534 1772 0 2545 2611 97.5%
ov_SC04_016 2401 1771 0 2403 2440 98.5%
ov_SC04_018 2675 1808 0 2675 2857 93.6%
ov_SC04_019 2673 1808 0 2673 2857 93.6%
ov_SC04_020 2515 1771 0 2527 2567 98.4%
ov_SC04_021 2400 1773 0 2400 2423 99.1%
ov_SC05_000 2406 1775 0 2409 2422 99.5%
ov_SC05_001 2479 1772 0 2484 2574 96.5%
ov_SC05_002 2430 1771 0 2433 2442 99.6%
ov_SC05_003 2413 1771 0 2414 2481 97.3%
ov_SC05_004 2423 1771 0 2425 2464 98.4%
ov_SC05_005 2438 1777 0 2439 2491 97.9%
ov_SC05_006 2422 1772 0 2422 2430 99.7%
ov_SC05_007 2432 1771 0 2437 2482 98.2%
ov_SC05_008 2442 1771 0 2444 2543 96.1%
ov_SC05_009 2409 1771 0 2413 2438 99.0%
ov_SC05_010 2449 1772 0 2453 2588 94.8%
ov_SC05_011 2396 1771 0 2397 2409 99.5%
ov_SC05_017 2650 1768 0 2661 2842 93.6%
ov_SC05_018 2547 1771 0 2560 2673 95.8%
ov_SC05_019 2400 1773 0 2400 2423 99.1%
ov_SC06_000 2529 1780 0 2532 2691 94.1%
ov_SC06_006 2423 1771 0 2424 2511 96.5%
ov_SC06_008 2488 1773 0 2494 2542 98.1%
ov_SC06_010 2460 1771 0 2465 2517 97.9%
ov_SC06_011 2415 1771 0 2419 2468 98.0%
ov_SC06_013 2405 1771 0 2406 2425 99.2%
ov_SC06_014 2416 1771 0 2418 2453 98.6%
ov_SC06_015 2410 1771 0 2410 2421 99.5%
ov_SC06_016 2452 1772 0 2454 2549 96.3%
ov_SC06_018 2500 1773 0 2507 2665 94.1%
ov_SC06_020 2446 1773 0 2447 2518 97.2%
ov_SC06_022 2481 1771 0 2489 2642 94.2%
ov_SC06_024 2501 1771 0 2507 2667 94.0%
ov_SC06_025 2452 1771 0 2457 2572 95.5%
ov_SC06_027 2391 1771 0 2392 2408 99.3%
ov_SC06_029 2478 1772 0 2490 2662 93.5%
ov_SC06_030 2413 1772 0 2413 2456 98.2%
ov_SC06_032 2488 1772 0 2495 2658 93.9%
ov_SC06_033 2489 1772 0 2496 2631 94.9%
ov_SC07_000 2433 1775 0 2435 2521 96.6%
ov_SC07_001 2404 1771 0 2406 2454 98.0%
ov_SC07_002 2460 1772 0 2464 2579 95.5%
ov_SC07_006 2323 1595 0 2403 2455 97.9%
ov_SC07_007 2336 1628 0 2420 2612 92.6%
ov_SC07_008 2385 1771 0 2385 2386 100.0%
ov_SC07_009 2397 1771 0 2399 2430 98.7%
ov_SC07_010 2320 1649 0 2403 2523 95.2%
ov_SC07_011 2338 1627 0 2418 2448 98.8%