Colin McRae Rally demo (Codemasters, 1998)

lib/apps.js id colin_mcrae_rally_demo (localhost-only), exe test/binaries/win98-games-a-d/ColinMcrae-Rally1-Demo/SETUP/GAME.EXE with QMIXER.DLL (QSound). Direct3D; runs on the software rasterizer headless. The CD demo runs from its SETUP\ directory; SETUPDIR\ and the cabs are the installer and are not mounted. Manifest: node tools/gen-win98-games-a-d-manifests.js.

Data path: CDPath, not the working directory

The game builds every data path from HKLM\SOFTWARE\Codemasters\Rally\1.00 CDPath (+ \game\...), which its setup writes, falling back to the compiled-in "Q:\Game" (four copies in .data, e.g. 0x52bcf0). With no Q: the VFS answered Q:\Game\language\english.txt and Q:\Game\setrep\language\english.txt by basename, with the first english.txt it had (c:\demo\english.txt, 0x13f4 bytes). Every in-game string table was therefore the DEMO one and indexes landed on the wrong strings: "NETWORK (HOST): CORRIGIN", "PLAYER 1" as "E 1", labels that looked clipped. --trace-fs shows it directly: the [FS] ReadFile ... path= names the file actually served. The registry entry seeds CDPath=C: and Language=ENGLISH (other values the key holds: Hardware).

Route

node test/run.js --app=colin_mcrae_rally_demo --quiet-api --batch-size=50000 --max-batches=4460 \
  --input='600:keydown:13,604:keyup:13,2750:keydown:39,2754:keyup:39,2770:keydown:13,2774:keyup:13,4000:keydown:38,4400:keyup:38' \
  --no-close --png=/tmp/cmr.png

Options -> OK (Enter) -> loading -> service-area setup (~2700): the bottom bar is VIEW STAGES / CONTINUE / RESET (arrows select); CONTINUE loads Australia stage 2 (Corrigin, ~3000-3900) and the stage clock starts. Up accelerates, Left/Right steer; keyboard is DirectInput.

Leads