Outwars — trial (outwars_trial)

SingleTrac / Microsoft, 1998, Direct3D (DirectX 5), Watcom-compiled (register calling convention). Candidate outwars-trial (archive.org Outwars_1020, owtrial.zip → owtrial.exe, a WinZip self-extractor that 7z unpacks into installed/: owtrial.exe, owres.dll (resource strings), QMIXER.DLL (QSound mixer), data folders). Reaches in-mission gameplay with movement. Evidence: scratch/runs/20261011T0605Z-outwars-w6.

Running it

DISPLAY=:0 node test/run.js --app=outwars_trial --no-build --quiet-api --quiet-blocks \
  --no-close --stuck-after=0 --headless-gl --max-batches=71000 --input=...

QMIXER.DLL must load as the real DLL (the registry seeds it; with a bare --exe pass --dll-seed=.../QMIXER.DLL), otherwise its exports fall to WAT stubs and the game dies on QSWaveMixInitEx. Default clock (200 ms/batch).

batch input screen
~4045 — (before dc7e8454d: "Outwars Audio Compression Error: ACM is not installed", Enter dismissed it; gone now)
~4700 — "Outwars CD Audio Error: Another program has the CDAUDIO device locked" (MB_RETRYCANCEL)
4800 Escape (Cancel = play without music; Enter = Retry loops)
~9000 — TRIAL VERSION title
~20000 — main menu (Solo Campaign / Single Mission / Group Maneuvers / Options / Exit)
20500 click (113,228) SINGLE MISSION mission list (ia01, anub02)
27000 Enter briefing "Single Mission - Exercise 1"
37000 click (95,291) CONTINUE loadout (Weapons … Launch, Briefing)
45000 click (113,364) LAUNCH mission loads
~56000 — in mission: marine on a platform, HUD
hold Up (VK 38) — marine moves to the platform edge; radar changes

Identified code (owtrial.exe, image base 0x400000)

Audio

QMIXER loads msacm32 and resolves acmFormatSuggest/acmStream*. Since dc7e8454d the ACM has the MS-ADPCM and IMA ADPCM codecs of a stock Win98 (decode to 16-bit PCM in WAT), so acmFormatSuggest(ADPCM → PCM) and acmStreamOpen succeed and the "ACM is not installed" box is gone. Measured 2026-10-11 (boat, main 8373af6cd, route to the main menu): 2 streams, 18 acmStreamConvert, 3 IDirectSoundBuffer_Play and ~20k Lock (QMixer streams into DirectSound; --audio-out records waveOut only, so it stays empty). The first converted block (512-byte mono MS-ADPCM -> 2024 bytes) is real signal: min -32172, max 32356, RMS 21388. Evidence scratch/runs/20261011T0740Z-outwars-acm-adpcm-w4. The CD-audio box comes from mciSendCommandA(MCI_OPEN, type cdaudio) failing; Cancel continues.