Deus Ex demo — local candidate

The official 1.002f demo installer is pinned in test/candidate-corpus/manifest.json from Archive item DeusExDemo. Its bundled license permits private/domestic use but does not grant redistribution, so the installer and installed fixture stay ignored and must not be deployed or rehosted.

Fetch and test:

node tools/fetch-candidate-corpus.js --id=deus-ex-demo
node test/test-deus-ex-demo.js

The fetcher retains DeusExDemo.exe as the original distribution. Wine Assembly runs that self-extractor, captures the Setup.exe it launches, and resumes setup from the captured guest VFS. The wizard installs to C:\DeusExDemo. The frozen driver exports the VFS after the complete game payload is written and before setup chains into its obsolete bundled DirectX updater; Wine Assembly already provides that runtime. No host archive or cabinet extractor prepares the playable tree.

The test uses the prepared installed tree, verifies the software-renderer INI, and launches the same app manifest as the browser. It requires native UE1 DLLs, live audio, and a rendered animated intro without spending the normal suite's time budget on a full map load. A separate frozen controlled acceptance loaded the Training map, rendered its 3D HUD and transmission sequence, and moved JC through the world with ordinary Win32 keyboard input.

The browser's experimental Worker backend is functional but substantially slower during UE1 startup. An exact isolated Chrome run stayed live (changing main-thread EIPs, no trapped Worker), created its third Worker and 648x508 game window after roughly 45 seconds, and progressed from the gray allocation frame through the animated Deus Ex title. It was still in that title sequence around 90–110 seconds. Keyboard events were routed with hwnd=0 in this mode even after a scripted viewport click, so the interactive acceptance remains the cooperative backend; leave Threads off for the responsive demo path.

Compatibility work required for this route: