Slave Zero (demo)
Accolade/Ronin Entertainment, 1999, third-person mech shooter, Direct3D.
Registered as slave_zero_demo (candidate slave-zero-demo, local
only).
Source and layout
- archive.org
SlaveZeroDemo,SlaveZeroDemo.zip(sha1 881fdbf2d7e239e7986be34f8fbc1e19199e1326). The readme says the demo "may not be copied, distributed, transferred or sold", so it is a local ignored fixture only. - The zip is an InstallShield 5 Setup tree. File group
DEFAULTofdata1.cabis the whole game; the manifest unshields it intoinstalled/Slave Zero/and copiesInstData/GameData/INSTSUPP/szHardware.inibeside the exe (the installer writes it there; without it the renderer probe has no hardware table). No installer run needed. - Run
SlaveZero.exewith the working directoryC:\Slave Zero(exeGuestPathc:\slave zero\slavezero.exe). It LoadLibrary'sd3d.dll,wgamescript.dll,winputkbm.dll,wdsound.dllanda3dapi.dllfrom its own folder.
Runtime requirements found
- Real msvcrt. The app declares
dlls: ['binaries/dlls/msvcrt.dll']. With the built-in WAT CRT it stopped at_putenv(now implemented, 51ef79adc) and then_strdate; the real DLL avoids that whole tail. The CLI findstest/binaries/dllson its own, so the CLI never showed it. - ~15000 live DirectDraw surfaces in the demo level (tiny textures plus
their mip levels). It exhausted the 8192 DX object slots and then the 63 MB
DIB arena (whole 4K pages per surface). Fixed in c758a6742:
$DX_MAX16384 and heap storage for plain textures and mip levels when the arena is full. - A3D.
a3dapi.dllCoCreateInstance's the A3D class whose servera3d.dllis not shipped. CoCreateInstance fails with REGDB_E_CLASSNOTREG and the game continues with DirectSound. In the browser the guest-main Worker's failure path left EIP on the CoCreateInstance thunk (it only set EAX and popped ESP), so the thunk re-ran on the caller's stack and the guest trappedunreachableat a heap EIP. The CLI had this fixed for Pirates!; both now shareDllLoader.failComDllYield. - "AudBuffer error in lock" (wdsound.dll): an intermittent modal box. The music stream thread locks a buffer that has already been released. Known, not yet root-caused.
Headless route
node test/run.js --app=slave_zero_demo --quiet-api --max-batches=2600 --batch-size=200000 reaches the front-end menu. In 640x480, NEW GAME is at
(320,153).