Carmageddon II: Carpocalypse Now demo (SCi / Stainless, 1998)

lib/apps.js id carmageddon2_demo (localhost-only), exe test/binaries/win98-games-a-d/Carmageddon2Demo-D3D-Glide/installed/carma2_d3d.exe with smackw32.dll. Argonaut BRender 1.3 engine; Direct3D (IDirect3DDevice2 + viewport Clear/Begin/EndScene), DirectInput keyboard, Smacker intro.

Getting the files (InstallShield 3)

The package is InstallShield 3 media (SETUP.EXE 16-bit bootstrap, data.z). installed\ is what the demo's own installer wrote inside the emulator:

# 1. the 16-bit bootstrap extracts _ins0432._mp and launches it; capture that
node test/run.js --exe='<pkg>/SETUP.EXE' --vfs-include='**/*' --screen=800x600 \
  --batch-size=100000 --tick-ms-per-batch=100 --max-batches=400 --no-close --capture-launch=<cap>
# 2. run the engine with the launch.json args, press Next through every page
node test/run.js --exe=<cap>/windows/temp/_ins0432._mp --exe-guest-path='c:\windows\temp\_ins0432._mp' \
  --args='-fC:\SETUP.INS  -z1 -cx -xC:\WINDOWS\TEMP\' --vfs-tree=<cap> --cwd='C:\' --screen=800x600 \
  --batch-size=100000 --tick-ms-per-batch=100 --max-batches=25000 --no-close --save-vfs=<out> \
  --input='620:dlg-click:1,740:dlg-click:1,860:dlg-click:1,980:dlg-click:1,1100:dlg-click:1,1220:dlg-click:1,9010:dlg-click:1'

"Setup is complete" by ~9000; copy <out>/program files/interplay/carmageddon ii demo to installed\ (46 MB, 1606 files).

Executables

Route

node test/run.js --app=carmageddon2_demo --quiet-api --batch-size=50000 --max-batches=3201 --no-close \
  --input='2250:tick-ms:10,2700:keydown:104,3200:keyup:104,3200:png:/tmp/carma.png'

Smacker intro (~800), LOADING title (~1500), the Controls screen (~2200), then the race on its own: grid flyby, 3-2-1, go. Keypad 8 accelerates (VK 0x68), keypad 2 brakes/reverses, keypad 4/6 steer. Switch to tick-ms:10 before the race: at 200 ms/batch the demo's race timer runs out in a few hundred batches and it plays its outro "sell" screens and exits (ExitProcess(0) after writing OPTIONS.TXT) — that exit is the demo ending, not a crash.