Earthsiege 2Excavated · Lost Engines

Working research

Analysis status and implementation handoff

A retained analysis note. Addresses and capture filenames refer to the original research workspace. Download the Markdown.

The supplied media and named resources are characterized, the main viewers are working, and the C++26 reconstruction joins the shell, simulation, cockpit, recorded demos and mission audio. Forty controlled v1.1 mission runs now agree with the original process after every captured simulation tick. The three shipped demos now have full-process comparisons too, with two documented departures from an original pointer-derived rocket timer. Two hundred and twenty-three complete cockpit frames also match every pixel and palette entry, covering idle, walking, turning, reversal, turret motion, side glances, both heads-down pages, Razor flight, assault combat, later campaign environments, delayed lunar deployment, six consecutive campaign battles, sound-enabled combat and the death camera. Further missions can extend this coverage.

The definitive target is the English Win95 v1.1 installation from cd_v1_1_1997_09. The older retail build, Win3.1 build and April demo remain comparison oracles. Disc mastering dates do not determine executable age.

Analysis and implementation coverage

Area Inspectable result and evidence
Media Sector/file hashes, audio correspondence, distinct variants, ten comparison installs and an original Wine launch path. Media
Resources 2,841 distinct name/hash pairs audited; 2,754 structurally decoded, 86 retained partials, one truncated leftover and no unidentified type. Coverage
Models 57 libraries, 540 roots, loadouts, LOD, animation, scenery and variant thumbnails. Original BSP, transform, polygon/sprite and equipped-model comparisons. Animation
Missions 61 intact sources, original compiler output, explicit campaign inputs, terrain generation/flattening and a 3D mission browser. Missions
Campaign Flags, grants, promotions, objectives, salvage, save round trips, consecutive shell/debrief histories and eight joined data-link missions. Campaign, actions
Simulation Walking, contacts, flight, AI, navigation, ramming, armed structures, convoys, deployment and ending rules. Independent instruction fixtures and joined mission tests. Foundations
Combat Sensors, target selection, weapon systems, bullet/rocket/beam flight, hit geometry, shields, component damage and destruction. Combat
Rendering Indexed clipping/raster paths, ramps, sky, terrain, equipped models, LOD and scene filing. Eleven normal and eleven missile-view scene frames match original drawing code. Rendering, ground shapes
Interface Interactive shell, MFD/HDD pages, targeting pod, preferences, input/joystick, status panels, startup/dropouts, external/developer cameras, freeze/single-step and diagnostic movement/damage, cockpit shake and impact palettes. Interface
Audio/video Lossless samples, portraits, CD tracks, movies, captions and manuals. Original sound requests, speech-cache and CD-selection rules are connected; final host mixing is separate. Audio/video
Recorded demos All 7,060 input packets, modal queue consumption, real-window launch/abort checks and 5,801 full-process snapshots. Three complete playback outcomes agree, with a labelled DEMO2 component guard and two documented pointer-derived timer departures in DEMO3. Replays
Complete original processes 165,525 tick snapshots compare actor/AI/pose/combat/sensor/projectile state, squad firing lines, debris, explosion/fire pools, all four missile types, Razor flight, flags and RNG. The first four training missions reach success on the same ticks and write identical results. The long assault reaches death on tick 6,055, and a separate run using the original training invulnerability option reaches success on tick 7,317, both with identical result bytes; defence training reaches death on tick 7,917 with identical result bytes. Escort failure and reconnaissance death add further outcomes. The opening campaign patrol reaches success on tick 10,417 with all four squad members alive and a byte-exact debrief. The actual C1_01 result carries into C1_02, whose guarded run reaches failure on tick 11,533 with exact states, results and debrief. C1_03 then succeeds on tick 5,209 and the loaned Razor completes C1_04 on tick 3,969; their original weapon fits, complete results and debriefs also match. The same Razor completes the C1_05 rescue on tick 6,697; the pilot switches back to the owned Outlaw and returns from C1_06 with the objective unfinished on tick 6,000. Hard nighttime escort, an interrupted C1_08 data-link attempt and C5_10 through player death add three further outcomes. Nineteen actual battle results have matching original debrief saves and RNG. Lunar C5_04 matches through disabled-player ending on tick 3,349, followed by a byte-exact original campaign debrief. The v1.0 prefix ends at a verified terrain-visibility difference. Defence training and the long assault each retain an unmodified prefix and a separately labelled bounds-guarded original capture. Process traces

The native comparison index links the retained reports. Each describes its boundaries. The complete-process traces run the original game under Wine, while most subsystem fixtures execute original instructions with explicit input/output boundaries. Neither kind of comparison alone covers every possible mission.

Remaining work

The gameplay coverage table separates exercised combinations from the next useful full-mission checks. The latest verification pass records the new scenarios and the three implementation errors they exposed.

The model and mission browsers use modern display conveniences. Pixel evidence comes from independent software-renderer comparisons. Discoveries during C++ work are reflected in the analysis tools and exports.

Repository policy

The analysis tree stays uncommitted for manual inspection. The reconstruction lives in ../earthsiege2-cpp, targets C++26 and is committed and pushed in working increments. Linux CI now builds with GCC 16 and runs the complete original-fixture and integration suite on pushes and pull requests. All 177 local checks pass; the CI report retains the last completed run links, complete logs and source revision. The local full-suite report retains the tested revision, XML and log hashes. The redundant original source containers have now been removed after rechecking every retained member and sector representation. Working media and resource contents retain their provenance.