Darker — the two demo packages

Investigation and limits · Shared city explorer · Shared model browser · Cockpits and effects sheets · Lossless inventory

Release labels follow the supplied directory names. The early README is dated 21 May 1993, but accompanying material includes a 1995 antivirus report and a Macintosh Word document. These are not independently established build dates.

Maps and model banks

Use the same map/type/state controls as retail. Surface A/B are deliberately neutral names. Colours come from demo sheets; modern preview projection and retail-derived placement/state conventions remain inspection assumptions. Unsupported standalone definitions are marked; no guessed geometry replaces them.

Map differences

Green: added occupied cell. Red: removed occupied cell. Yellow: changed raw type ID. Grey: unchanged occupied cell. Type IDs can mean different objects across banks; identical IDs do not prove identical models.

Executable and resource inventory

1993 X/X1 startup workaround verified: the sound-probe timer wait can be bypassed using the same missing call as X2. Both patched builds enter the first saved game. Instructions, exact patches and evidence.

All resource sizes, hashes and text runs

Supplied saved-game slots

Read-only inventory; names are bounded by their first null byte. Unknown record bytes are preserved in the original files. Do not use the retail save editor for these different layouts.

Native scenario selection

1993 first scenario: radio timeline

Original script executed with a synthetic clock. Times are script-clock units, not independently calibrated seconds. These are timed player-script messages, not proximity triggers.


Model reference audit

References include map placements, every stored scenario setup, player configurations, geometry aliases and city damage/alternate chains. “No reference” does not exclude executable spawns or later script callbacks. Projectile definitions are a known example of dynamically used models.

ModelFacesPlacementsEvidence

Dual Launch firing comparison

Thirty native checks verify the primary/follow-up selection transitions and candidate gates. The 1995 follow-up additionally requires the candidate's exact primary-capsule definition; the 1993 handler only checks for a nonzero pointer. This does not establish that normal gameplay supplies an incorrect candidate. Checks and scope

Direct PC-speaker quirk

Native hit-result checks also show the 1995 Skimma chirp on building/object hits, but not misses or ground-plane interception; 1993 includes the ground-plane result. Damage dealt is not tested by this cue. The 1995 chargeable-weapon release executes 256 port-61 bit-1 toggles with progressively shorter software delays (32,896 writes). Twelve native firing-dispatch traces found no sound-device-selection gate on this path. Actual audibility depends on the speaker/PIT state and emulated CPU timing. Similar loops occur elsewhere in both demos, including a repeating terminal loop; player-facing effect versus development feedback remains unresolved. The retail chargeable release omits this block. Port traces and scope

Reconstructed speaker previews

Estimated 386 instruction timings, with timer output assumed high. Listening previews have a quiet, illustrative speaker response (150 Hz–8 kHz); they are reconstructions, not recordings. The extra I/O wait profile shows timing sensitivity. Timing assumptions and exact edge times

Listening WAV · Electrical drive WAV (unipolar, no speaker response)

Nightmare choreography

Original player-script scheduling; seconds use the nominal ~500 Hz game clock. Vehicle tracks execute the 1995 ground-route interpreter, independently of combat and collision. Lines join phase-start positions; they do not show the full turning curve. Traces stop at scheduled destruction or the first repeated route address.

Player timelines and beacon runs · Native vehicle, hit-cue and impact checks

Distinct scenario scripts

195 records reduce to 17 distinct byte sequences; each release has 90 copies of one empty placeholder. This view decodes setup objects and scripts from their stored entry points. Conditional branches, stopped-script continuations and normal menu reachability remain explicit. Beacon run coordinates are city cells; horizontal and vertical are map axes.

Full setup, object scripts and printable text index

Scenario records and test messages

These formats predate the retail multilingual header and script opcode set. Record boundaries, configuration bytes and relative entry pointers are exported. Text below is a printable-run index, including possible formatting bytes; it is not a completed briefing/message timeline or a claim that all records are reachable.

Raw record bytes and entry

Hidden commands

The selection code retains the *3 comparison. Use Shift+8, then number-row 3. The original matcher was executed independently; case and punctuation matter. The two short handlers below really are return-only stubs. An active patch does not by itself establish its in-flight effect.

Exact phraseHandlerNative instructions

Native matching/handler checks

Native weapon-selector, boost and Z checks · Early scenario weapon-mask checks · Jason/Z numeric patch checks

Craft-specific engine sound gates

Keyboard event dispatch

All 83 event slots, including inactive ones. Held controls (steering, fire, brakes and look-around) use separate input paths: absence from this table does not mean a key does nothing. The first instructions are evidence, not automatic descriptions of complete behaviour. See the investigation for explained differences.

KeyDemo eventRetail eventHandler / first instructions

Flight comparison

The original movement kernels match on 1,000 horizontal and 1,000 vertical test vectors per release. The 1993 vertical-target calculation differs in downward-pitch and braking behaviour; the tested 1995 and retail target slices agree. Early velocity values reside in self-modifying instructions; later builds store them in object records. These isolated checks do not establish identical complete flight behaviour or real-time speed.

Native flight comparison and numeric examples · Interpretation and limits

Boost consumption also matches across the three builds: a steady target contribution until the last partial update. Retail increases boost-reserve recharge compared with both demos. Engine-off gates incoming beacon energy but does not directly cancel existing boost.

Native boost, engine-gate and recharge checks · Equations and limits

Steering, startup and controlled flight updates

The demos share angular integration helpers; retail changes rounding. The bounded angular-error response changes in every release. All three program the same nominal 500 Hz PIT timer.

Native steering, launch and timer checks · Complete trace data

These traces run the original steady Caero or Skimma callbacks with a constant beacon supplier and common synthetic starting values. They exclude collision, input sampling and mission setup. Positions and angles are internal units, not metres or degrees; update counts are not rendered frames.

UpdateXYHeightForward velocityVertical velocityHeadingPitchRollBoost

Actual craft parameters and elapsed-time checks · Skimma trace data · Underground smoothing comparisons · Interpretation and limits

1993 executable comparison

The complete decoded X/X1/X2 image audit leaves no unexplained bytes after rebasing and explicit padding changes. The substantive differences are two startup probe calls; no further gameplay revision was identified. Full address-normalization audit · Findings and limits.

Command-line parser prefixes

These are the two-letter keys stored in the executable, not reconstructed long option names. README spellings can be stale.


Original README

Macintosh Word document printable runs · Disassembly, key tables and X1/X2 differences · Native vertex checks