Reconstruction Matrix¶
Progress of the FA reconstruction programs — the
game-executable program (epic #209)
and the overlay-binary program (epic #247)
— one section per binary, one row per subsystem, generated from the
symbol database and verified against the per-binary Ghidra
inventory export (db/inventory/, local-only — regenerated and checked where the
canonical Ghidra project lives; see db/README.md).
FA.EXE¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| Object / entity system & shape selection | 0x462600–0x4646600x4A6EB0–0x4A72400x473A40–0x473DA00x491240–0x491AA0 |
157 named · 0 waived / 157 (100%) | 31 named · 193 waived | doc | ✓ | #210 | complete |
| Renderer & rasterizer (GG/G_) | 0x45DBD0–0x45E4600x497330–0x4993800x4B7900–0x4BA700 |
251 named · 12 waived / 263 (100%) | 14 named · 353 waived | doc | ✓ | #211 | complete |
| Flight model / physics (FM/HARD) | 0x451480–0x454800 |
116 named · 4 waived / 120 (100%) | 0 named · 344 waived | doc | ✓ | #212 | complete |
| HUD / cockpit | 0x405E30–0x40AE50 |
42 named · 7 waived / 49 (100%) | 16 named · 189 waived | doc | ✓ | #213 | complete |
| Weapons — projectiles / seekers / ECM (PROJ) | 0x4C0690–0x4C5D30 |
55 named · 4 waived / 59 (100%) | 6 named · 49 waived | doc | ✓ | #215 | complete |
| AI interpreter (CT) | 0x464C60–0x467110 |
130 named · 0 waived / 130 (100%) | 8 named · 30 waived | doc | ✓ | #216 | complete |
| Wingman / group AI (WNG/GRP) | 0x45E460–0x45FEC0 |
48 named · 2 waived / 50 (100%) | 1 named · 16 waived | doc | ✓ | #217 | complete |
| Campaign / mission / pilot (MAP/CAM/MC/MM/PLT) | 0x421D40–0x421DD00x421DE0–0x4221D00x422230–0x4223000x422350–0x4223800x4224B3–0x4224EE0x42256A–0x42267F0x4226CB–0x4226F00x422828–0x4228510x42297E–0x422A0D0x422A71–0x42B8000x467240–0x4672C00x4674F0–0x4678B00x467E30–0x467F300x468C40–0x4699600x46A57B–0x46A6400x47A510–0x47A5A00x47FAAE–0x47FEC00x4805AC–0x4806900x4809D0–0x480A300x481920–0x4819400x481A7B–0x481B800x483C90–0x484D900x485380–0x4854E00x4856F0–0x4858200x4867D0–0x4868100x486BF0–0x486C600x486DC0–0x486DF0 |
279 named · 5 waived / 284 (100%) | 25 named · 793 waived | doc | ✓ | #218 | complete |
| Network / multiplayer (NET/SER/UDP/MP) | 0x4016C0–0x4023000x402330–0x4023800x4024D0–0x4026400x405360–0x4053D00x4054F0–0x405E300x45D090–0x45DBD00x46BD90–0x46BDE00x46C0A0–0x46C1500x46C28C–0x46C4700x46C680–0x46C9100x46C980–0x46EED00x46EEDF–0x46FDB00x46FF20–0x46FF700x47001C–0x4701500x4701AC–0x4702500x47025C–0x4705600x470780–0x4708B00x4715BC–0x4719E00x471A90–0x471BD00x471BDF–0x4722600x472670–0x472A900x4735D0–0x4736800x499F70–0x499F900x49A000–0x49A3800x49A3E0–0x49A5200x49A660–0x49A8500x49A9B0–0x49AD700x49AF30–0x49B1D00x4AC180–0x4AC3E00x4AC480–0x4AC510 |
377 named · 10 waived / 387 (100%) | 4 named · 416 waived | doc | ✓ | #219 | complete |
| Sound / music (incl. WAIL32) | 0x4328B0–0x435C60 |
53 named · 4 waived / 57 (100%) | 5 named · 181 waived | doc | ✓ | #220 | complete |
| Terrain (T_) | 0x4A7310–0x4ABBE20x4C5D30–0x4C60E8 |
85 named · 3 waived / 88 (100%) | 0 named · 113 waived | doc | ✓ | #221 | complete |
| Collision (COL) | 0x42B800–0x42E680 |
19 named · 2 waived / 21 (100%) | 28 named · 16 waived | doc | ✓ | #222 | complete |
| Memory & resource managers (MM/RM) | 0x435C60–0x43631C0x4A67F0–0x4A6E46 |
86 named · 8 waived / 94 (100%) | 12 named · 69 waived | doc | ✓ | #223 | complete |
| Input — joystick / serial / modem | 0x494270–0x494BB00x499CF0–0x499F700x49B1D0–0x49D1B0 |
80 named · 2 waived / 82 (100%) | 6 named · 118 waived | doc | ✓ | #224 | complete |
| Core shell / menu / dialog UI | 0x40B8A0–0x40BA100x40BC20–0x40C2900x40C410–0x40D7A00x42E680–0x42E7200x42E9A0–0x42F2E00x432F80–0x432F8B0x433170–0x4331800x47F0B0–0x47F1000x47FA30–0x47FA500x487A3A–0x4891700x4891A0–0x48D2B00x4A08A0–0x4A0FE00x4A26F0–0x4A2A30 |
199 named · 0 waived / 199 (100%) | 43 named · 406 waived | doc | ✓ | #225 | complete |
| Startup / Phar Lap DOS extender / config | 0x4D715A–0x4E8A2F |
495 named · 130 waived / 625 (100%) | 40 named · 293 waived | doc | ✓ | #226 | complete |
| Video decode (FMV/Cobra) | 0x456300–0x45CDA0 |
82 named · 5 waived / 87 (100%) | 0 named · 27 waived | doc | ✓ | #227 | complete |
| 3D render core / SH interpreter (GR) | 0x4CD588–0x4D6C00 |
174 named · 0 waived / 174 (100%) | 0 named · 349 waived | doc | ✓ | #228 | complete |
| .SEQ scripted-cutscene / sequence player (SEQ) | 0x444F70–0x446D900x446F10–0x4471E0 |
41 named · 0 waived / 41 (100%) | 25 named · 37 waived | doc | ✓ | #240 | complete |
| View / camera & replay (VIEW) | 0x40D7A0–0x40F6B0 |
19 named · 0 waived / 19 (100%) | 5 named · 24 waived | doc | ✓ | #257 | complete |
| Cockpit sensors (radar / IR / RWR) | 0x438520–0x4410C0 |
63 named · 0 waived / 63 (100%) | 9 named · 179 waived | doc | ✓ | #486 | complete |
| Radio / speech — orders & AWACS chatter (MSG/SAY) | 0x418070–0x418A660x48D2B0–0x48EC3F0x490F30–0x491239 |
39 named · 0 waived / 40 (97%) | 0 named · 0 waived | doc | · | #493 | active |
| Multiplayer chat (CHAT) | 0x413120–0x413C68 |
9 named · 0 waived / 9 (100%) | 0 named · 0 waived | doc | · | #493 | active |
| Airports / carriers — parking, approach, deck (AP) | 0x4BA7E0–0x4BAD400x4BD2D0–0x4BD5100x4BE6A0–0x4BEE60 |
26 named · 0 waived / 26 (100%) | 0 named · 0 waived | doc | · | #493 | active |
| Core math & runtime utility library | 0x411950–0x412DE2 |
64 named · 0 waived / 64 (100%) | 0 named · 0 waived | doc | · | #482 | active |
FA.EXE totals: 21/25 subsystems complete; 3187/3188 in-scope functions named; 4473/8771 referenced globals resolved.
Unclaimed: 386 of 3573 functions (113,377 of 866,332 code bytes, 13%) are in the binary but in no subsystem — so nothing above measures them. 0 of them already carry a recovered name (the binary tells us what they are; they are the debt #482 closes to zero). See #482.
Undefined: 62,800 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 246 symbol names already sit inside these bytes — those are free to claim. See #496.
WAIL32.DLL¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| WAIL32.DLL — Miles Sound System (AIL) audio driver | 0x20001000–0x20019E00 |
130 named · 373 waived / 503 (100%) | 0 named · 577 waived | doc | ✓ | #253 | complete |
WAIL32.DLL totals: 1/1 subsystems complete; 503/503 in-scope functions named; 577/756 referenced globals resolved.
Undefined: 15,937 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 38 symbol names already sit inside these bytes — those are free to claim. See #496.
IP.EXE¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| IP.EXE — EA system-info & tech-support tool (MFC) | 0x401000–0x4BD800 |
5 named · 1800 waived / 1805 (100%) | 0 named · 1339 waived | doc | ✓ | #254 | complete |
IP.EXE totals: 1/1 subsystems complete; 1805/1805 in-scope functions named; 1339/1737 referenced globals resolved.
Undefined: 92,457 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 61 symbol names already sit inside these bytes — those are free to claim. See #496.
CDRVDL32.DLL¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| CDRVDL32.DLL — Cdrv RS-232 serial comms driver | 0x10001000–0x10010000 |
26 named · 78 waived / 104 (100%) | 0 named · 129 waived | doc | ✓ | #255 | complete |
CDRVDL32.DLL totals: 1/1 subsystems complete; 104/104 in-scope functions named; 129/175 referenced globals resolved.
Undefined: 566 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 5 symbol names already sit inside these bytes — those are free to claim. See #496.
CDRVHF32.DLL¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| CDRVHF32.DLL — Cdrv Hayes-modem comms driver | 0x10001000–0x10010000 |
75 named · 79 waived / 154 (100%) | 0 named · 114 waived | doc | ✓ | #255 | complete |
CDRVHF32.DLL totals: 1/1 subsystems complete; 154/154 in-scope functions named; 114/150 referenced globals resolved.
Undefined: 5 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 3 symbol names already sit inside these bytes — those are free to claim. See #496.
CDRVXF32.DLL¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| CDRVXF32.DLL — Cdrv file-transfer comms driver | 0x10001000–0x10010000 |
33 named · 88 waived / 121 (100%) | 0 named · 171 waived | doc | ✓ | #255 | complete |
CDRVXF32.DLL totals: 1/1 subsystems complete; 121/121 in-scope functions named; 171/322 referenced globals resolved.
Undefined: 677 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 24 symbol names already sit inside these bytes — those are free to claim. See #496.
COMMSC32.DLL¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| COMMSC32.DLL — Cdrv comms terminal-screen service | 0x10001000–0x10010000 |
8 named · 52 waived / 60 (100%) | 0 named · 109 waived | doc | ✓ | #255 | complete |
COMMSC32.DLL totals: 1/1 subsystems complete; 60/60 in-scope functions named; 109/153 referenced globals resolved.
Undefined: 15 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 6 symbol names already sit inside these bytes — those are free to claim. See #496.
MSAPI.DLL¶
| Subsystem | Range(s) | Funcs (named · waived / in-range) | Ref. globals | Doc | Diagram | Issue | Status |
|---|---|---|---|---|---|---|---|
| Matchmaking / internet-play client (MSAPI) | 0x100011E0–0x10002AB0 |
25 named · 773 waived / 798 (100%) | 12 named · 23 waived | doc | ✓ | #275 | complete |
MSAPI.DLL totals: 1/1 subsystems complete; 798/798 in-scope functions named; 35/36 referenced globals resolved.
Undefined: 10,993 more executable bytes are in no function at all — code auto-analysis never reached (typically entered only through a function pointer: window procs, thread entries, proc-table entries, callbacks), so it was labelled but never disassembled. It is absent from the counts above, because a function that does not exist cannot be reported missing. 22 symbol names already sit inside these bytes — those are free to claim. See #496.
Program totals (all binaries): 28/32 subsystems complete; 6732/6733 in-scope functions named; 6947/12100 referenced globals resolved.