Sid Meier's Pirates! (2004)

test/binaries/candidates/pirates-2004/digital/app/Pirates!.exe, registry id pirates_2004 (d3d9Programmable, bigMemory). Direct3D 9, statically linked (d3d9.dll import), with msvcr71/msvcp71, Bink, Miles (mss32 plus its win32/*.asi, *.m3d, *.flt providers) and oleaut32 from the game directory.

Route to the main menu (CLI, software D3D9 arm)

node test/run.js --app=pirates_2004 --d3d9-renderer=software --batch-size=100000 \
  --max-batches=1000000 --max-seconds=180 --stuck-after=1000000 --no-close --png=menu.png

The D3D9 main menu (Play Sid Meier's Pirates!, Load A Game, Change Your System Options, Visit The Firaxis Website, Visit The Hall Of Champions, View Credits, Quit, over the Caribbean map) is up by batch ~1000 at --batch-size=100000. Assets load from assets\pak*.fpk one byte per ReadFile, which is slow but correct. Evidence: scratch/runs/20261006T033534Z-pirates_2004-dxinit.

Startup, as reverse engineered (2026-10-06)

Fixed

commit what
ba161dfb D3D9 caps advertise MaxTextureBlendStages = 6 (was 0)
12408feb a CoCreateInstance whose in-proc DLL is missing resumes the caller (the yield pump left EIP on the thunk and re-ran it on the caller stack) and clears *ppv
d7f5a429 test/run.js honours bigMemory (2048 MB); at 512 MB the asset load runs out of guest heap

Not yet looked at

Gameplay (Play Sid Meier's Pirates!), audio, the WebGL arm at this build. ole32.dll is absent from this box's test/binaries/dlls, so the Miles providers' ole32 imports fall to WAT stubs.