Driver demo (Reflections / GT Interactive, 1999)

lib/apps.js id driver_demo (localhost-only), exe test/binaries/win98-games-a-d/Driver-Demo-Glide-D3D/installed/game.exe ("Driver V5.7t"), mounted at C:\Program Files\GT Interactive\Driver Demo\. Manifest: node tools/gen-win98-games-a-d-manifests.js.

Install (headless)

The fixture is an InstallShield 5 Disk1 (16-bit SETUP.EXE, _INST32I.EX_, data1.cab):

  1. run.js --exe=.../SETUP.EXE --vfs-include='*' --tick-ms-per-batch=5 --capture-launch=cap -> c:\windows\temp\_ins5176._mp (at 200 ms/batch the bootstrap's splash timer quits before _INST32I.EX_ is expanded).
  2. run.js --exe=cap/windows/temp/_ins5176._mp --exe-guest-path='c:\windows\temp\_ins5176._mp' --vfs-tree=cap --tick-ms-per-batch=5 --control --frozen --save-vfs=inst --save-vfs-prefix='c:\program files': Next, Next, Next, copy, OK.
  3. game.exe says "Please run 'Config' first" until config.dat exists. Run config.exe (same mount), Test Settings -> "Configuration OK", Save Settings: it writes the 256-byte config.dat beside the exe. The tree keeps that file, i.e. it is the state after the user ran Config once.

config.exe only offers "3Dfx (Glide 2.x)". Our Direct3D HAL is accepted by its EnumDevices callback (0x4050ad) and added as a device record by 0x4051ed, yet the dropdown fill (0x401825) lists only Glide: the record is lost somewhere between 0x4098e2 and the CB_ADDSTRING loop. Not followed up; Glide works.

Emulator fixes it needed (3bbc7155)

Running it

Route to gameplay (2026-10-06, boat, ~700k batches)

node test/run.js --app=driver_demo --glide-renderer=software --quiet-api \
  --tick-ms-per-batch=5 --control=8187 --frozen --max-seconds=4000 --max-batches=100000000

Step to the title/attract loop, Escape out of a demo, then Enter on the front end starts the "Lose the tail!" chase. From GAME OVER: Down x3 (Restart), Enter, Left (YES), Enter; the level reloads (~13k batches), then hold ' + Z. Without input the car sits still and is rammed: GAME OVER at 01:04.48 every time. With input it burns out, turns and drives to the garage exit, alive at 01:02. Evidence: scratch/runs/20261006T1520Z-driver_demo-gameplay-w6.

The whole route is minutes of CPU (software Glide ~2.6k batches/s in 3D): run it on a boat.