Reconstruction status
The reference is the January 1998 software engine and the shared game data on the October 2000 European disc. The C++ game now runs the single-player frontend, missions and campaigns. Original routines execute separately in an isolated reference harness for comparisons.
Implemented and compared
- Resource readers cover models and drawing programs, terrain, scenery, missions and formations, artwork, fonts, cockpit components, movies and sound banks. All 110 shipped missions initialize their actors, scenery, target bindings and radar grids.
- The software renderer covers terrain, scenery, animated models, sky, weather, effects, shadows, craters and debris. Cockpit panels, instruments, MFD pages, moving maps and helmet displays have original-frame comparisons at both video resolutions.
- Both flight models, engines, fuel, rotors, failures, landing, controls, weapons, seekers, damage, sensors and AI run in the shared mission runtime. Comparisons include carrier starts and landings, player firing, battles and slow-frame subdivision.
- The frontend connects Quickstart, training, single missions and campaigns to briefing, takeoff, flight, debrief, retry and logging. Pilot profiles, campaign progress, recovery, promotions and medals persist in the original file formats, outside the game data.
- Preferences retain the original graphics, flight-model, difficulty, audio and device choices. Keyboard input, calibrated joystick axes, buttons and hats are connected.
- Briefing maps provide navigation, threat and territory layers, payload selection, route editing and a movable/resizable 3D preview. Planned routes and weapons reach the launched mission.
- Original PCM music, effects, briefing narration, radio calls and warning events play through the native mixer. Intro and campaign movies use the authored frame interval and palettes.
- F1 opens all 108 illustrated manual pages, including during flight. The original yes/no mission-exit prompt freezes the mission until a response.
Normal and AddressSanitizer/UndefinedBehaviorSanitizer builds run the numerical and frame comparisons. The four-warzone session matrix covers 1,896 frames and 142,200 state fields, plus 326 complete safe frames containing 62,592,000 matching pixels. Separate suites cover extended combat, radio timing, campaign progression, planner interaction, audio and all 5,217 movie frames. The implementation record gives the detailed counts; local reports are under work/checks/cpp/.
Private X-server tests exercise real window input and complete frontend transitions, including help entry/exit, pause/view changes, quit cancellation/confirmation, movie skipping and campaign takeoff. They use temporary saves and no audio device. Physical controllers, host audio output and subjective playability remain human beta-test items.
Beta testing
The optimized build, release archives, first-launch extraction and both-resolution window journeys pass. All six Debug/Release CI configurations pass on Linux, Windows and macOS, and the runtime packages are published. Downloaded packages contain exactly nine runtime files each; their checksums and the published Linux menu frame were verified in the archived release report. Hardware input, host audio output and subjective playability are the remaining human checks.
The earlier-engine comparison now includes instruction maps for all three 1996 Windows revisions and executed matrix, range, positioning and crater comparisons. Earlier revisions remain comparison subjects rather than additional reconstruction targets.
Multiplayer integration is complete: lobby controls, all Apache menu modes, shared pilot/gunner flight, chat, casualties, respawn, rewards, departure and server handover. The six-mode original-code matrix passes 48 cases and 3,840 frames in both builds, with identical state digests. Separate real-window tests pass two-player combat, shared flight and network combat, including chat and return to the menus. Only localhost sockets are used during automation.
MANEDIT's interpolation and anatomical mapping are recovered. The pose viewer now uses the editor's actual generated figure. Its 104 supported files pass 1,040 original-instruction samples; JavaScript interpolation and rotation match another 43,056 fields. Six newer II/IC files remain readable as raw channels, but the shipped editor cannot load that format.
The June 1998 3dfx comparison already identifies changes in framebuffer locking, cockpit/instrument drawing, pause rendering, texture setup and thread shutdown. Its hardware-specific paths do not replace the selected software renderer.
Defined behaviour and reference captures
Original out-of-bounds reads and uninitialized values are excluded. The reconstruction uses bounded handling at those locations, without machinery to reproduce stray memory contents. Frames containing those original reads are compared over their defined regions; they are not included in complete-frame pixel counts. Examples include missing normals in the copsed scenery model and undefined padding after the one-byte STOP sample.
The reference renderer initializes the colour-intensity and solid-colour tables before loading the 3D palette. Early research captures made before that correction are illustrations; current comparisons use the corrected initialization.
Working captures, logs, caches and individual test runs live in the ignored work/checks/ directory, outside the analysis site. Only selected report snapshots linked from these findings are retained in verification/. The menu viewer keeps its displayed comparison images in menus/comparisons/. No installation media or game assets are published or committed to the C++ repository.