Carmageddon TDR2000 Alpha Test Demo

Source preparation, 2026-10-07

New-game lane NEW-GAME-TDR2000-DEMO-20261007. This is a different title from qualified Carmageddon2. No TDR2000 gameplay/run evidence was found in the retained exact-title run/docs/task searches. The video-support design names its AVIFile imports; that is not a gameplay result. Current main19b1a10c has no registration. Public apps.js fetched2026-10-07T12:07:15Z, SHA256 c8cb758ab7e73b9270f626becbdb57c54919f753e3aa3b24c0dad73f86fcd8d0, also has no TDR2000 entry. No deployment or gameplay qualification is implied.

Original media lives in test/binaries/win98-games-a-d/Carmageddon TDR2000 demo-D3D. The publisher readme calls it an Alpha Test Demo, not the later retail game: a four-minute drive in the Eagle. The additional README FIRST!!!!.txt identifies this as the first alpha demo redistributed by Carmageddon City/Toxic Ragers.

The loose directory is not a complete installed tree. Its original InstallShield cabinet lists2,961 members totaling203,099,877 decoded bytes, all under Program Executable Files. The runtime subset excluding seven DirectX installer prerequisites is2,954 members/195,070,449bytes. It includes the36,864-byte TDRLauncher.exe,352,256-byteMss32.dll, gameEXE and complete nested Assets tree. 7z cannot list this InstallShield format. Retained unshield1.4.2 lists it without extraction; no payload was extracted in this preparation.

Loose Tdr2000Demo.exe SHA256 8b15bee96560f31d447757067c7eaca90163a57c61b9436a6fd564453189ded4, imagebase400000. Imports DDRAW,DSOUND,DINPUT,Mss32,AVIFIL32,WINMM and ordinary Windows libraries. The cabinet supplies twelve Miles .m3d providers under Assets/Sound/Miles.

Original installer overlays matter

setup.ins has explicit string pairs for copying loose files after cabinet data:

The loose descriptor names Null.hie and Null.h. An extraction-only registration would miss these explicit overlays, the splash script and nine TGA screens. No overlay bytes should be synthesized. Future materialization may hardlink original loose files after retaining cabinet hash/size and mapping receipts.

Faithful ordinary route

Read the actual extracted launcher first to determine direct game entry versus original launcher settings; do not force guessed registry/config values. The readme says launcher defaults to Direct3D and explicitly says not to switch this demo to software rendering. Start with detected defaults (640x48016-bit is the documented supported minimum); inspect actual dialogs before clicking. The splash script defines five intro screens, six seconds each, and four outro screens. Do not count splash or launcher output as gameplay.

Once the actual world/car/HUD appears, capture before/after normal Up acceleration, Left/Right steering and Down brake/reverse; hold/release keys with timestamps and finally-release cleanup. Return/Insert recovers the car; Space is handbrake. Those controls are documented, not yet exercised. Use scene gates; no guest setters, skipped callbacks, injected save state or menu-only qualification.

Next serialized resource request

First selective extraction/authentication into one private installed tree, with original CAB source hash before/after, bounded decoded sizes and every output path/hash. Exclude DirectX installer support from runtime mounts, preserve asset subdirectories/case and original loose overlays. Inspect launcher imports/config and Assets/options.txt before final registry/helper pins. No engine/build/browser has run. A later browser lease needs exact source/module equivalence, full registered allowlist and ordinary startup/control evidence; budget and disk headroom must include approximately203MB decoded original data.

Private listing, installer offset strings, public receipt and small source pins: scratch/wt-tdr2000-demo-20261007/scratch/tdr2000-preparation/.

Original extraction and launcher proof

Granted extraction completed2026-10-07T12:16:50.450Z in1.821seconds: all2,961 exact members/203,099,877bytes and each output SHA verified. CAB SHA before/after 7e6c0693f395fb9343390c9043dcc55d2a6bd66c4f3c185ea517849ccdbb5415; source inode/size/mtime unchanged. Child2638611/group absent, no signals/errors or guest. Receipt: private preparation/extraction-attempt1/receipt.json and outputs.json.

Important: CAB Tdr2000Demo.exe SHA7958398fcec85d18b030d34c8c05e11fb6c3b4ce5f0039ad276249be78f9b149 differs from the same-sized loose installer overlay EXE. The explicit original setup.ins copy means the loose8b15bee9 executable is the installed final version. Do not silently launch the cabinet binary instead.

Launcher SHAc2e742b0be5cd8b418549f01a5d277ee5f8ce2baf4fd9874403a0e023789694b. Its4014b3–4014db sequence calls GetStartupInfoA then CreateProcessA with application4051c4=Tdr2000Demo.exe, null commandline/security/environment/current directory, inheritfalse and flags0. Its other path checks DirectX and offers installation through DSETUP ordinal5. Direct game entry with no args therefore matches the successful launch branch; do not register the DirectX installer as though it were the game's graphics-options window. This is static launch contract proof, not observed successful execution.

Original Assets/options.txt SHA2671f20f6a0e09a02ba8797c5e18a858697c4f3dc8f857d513732825452270b6 selects Eagle4, Hollowood_Race1,6CPU cars, default difficulty1 and enabled sound. Preserve it unchanged. Network-related127.0.0.1 defaults are original options, not an instruction to start multiplayer. Only ordinary single-player gameplay is planned. No guessed graphics/registry override is needed for initial census.

Extractor physical directory conversion is recorded separately from original VFS spelling: unshield changes directory spaces/<>[] to underscores even with-R. A future installed manifest must retain original guest paths, either through explicit physical/VFS mapping or hardlinks at original paths. Raw extraction and DirectX prerequisite files remain preserved. No overlay/materialization has run.

The previously undecoded _Null_1 operations are DeleteFile instructions at setup.ins offsets0x18d0/0x197f/0x1a2e, independently matched to isDcc's opcode 0x001d. They remove the old .dir/.h/.pak from the installed view; raw cabinet extraction remains preserved. The hardlink-only plan has2965 files/205665919 logical bytes after16 authentic loose overlays and exactly2 replacements. MATERIALIZATION-PLAN.md and .json in the preparation directory contain exact paths, hashes, collision rules and pending command. No materialization or runtime has occurred as part of this source preparation.

2026-10-07 installed closure and current-main build

Hardlink materialization completed12:33:41.809Z:2965files,205665919logical bytes, zero copies/errors. Each original and installed inode/device/content hash was checked, and original cabinet/setup remained unchanged. Receipt SHA e006f47859a990052d1d98cfe53871bf950cc88ef295a41cb3241cbd94e8f843.

Current-main f1de974251d36717675e976d5b7e4c368b29f91b private full build passed all mandatory gates/compile in19.637sec on12:51:58.763Z. Production WASM 992a8b021897e52d2ec1b5f3604f5f89098f02ee2e4748e5340ff4d960f5e880 (1719337B), canonical layout0a82c5ae0e89dba1. Build process group and supervisor closed; no old engine fallback. Private registration overlay only adds the local candidate; original apps.js and public desktop membership remain intact.

Prepared browser source tests5/5 passed, covering actual registry/manifest paths, control error precedence, pending browser acquisition cleanup, and real asset handler HEAD/range/allowlist contracts using synthetic streams, without a server or browser. Final served allowlist3342paths includes2990fixture records; 2963game companion entries use148required config/text files and2815known-size lazy data files, plus explicit original EXE/Mss32. Runtime remains unexecuted until a separate serialized browser grant; no gameplay qualification yet.

2026-10-07 first actual ordinary launch: IntegrityCheck failure

Private attempt1 was a harness failure: adding an app registry entry did not add the debug dropdown option, so page.select returned empty and Notepad launched. Its evidence is retained and says nothing about TDR compatibility. The corrected private index adds one real option, and the driver checks both page.select's return and actual select value before Launch;6source tests pass.

Attempt2 (driver2690350/Chrome2690380) ran13:03:55.093–13:07:44.569Z, sourcef1de9742/module992a8b02. Original hardware test Yes displayed TRenderDevice_D3D::EnumCreateDevice: FAILED: IntegrityCheck. Ordinary OK continued to sound-settings acknowledgment and the real AlphaDemo launcher. Ordinary Start repeated the same error; acknowledging it ended the guest. Six reviewed screenshots include hardware-test, sound-settings (launcher), start-result and post-start-error. No race, player control, FPS or audio qualification. Browser/server closed, Chromeexit0, streamspending0; PIDs absent. Request errors remain recorded (including aborted/optional ole32/auth requests); they have not been established as causal.

Source localization on authentic loose EXE8b15bee9: literal568e70 has one raw absolute reference at4e5b7e. Caller4e5b69 calls4e5e80, then4e5b70 accepts nonnegativeEAX; negative chooses this exact failure. Function4e5e80 rejects [object+840]<1, allzero820/824/828, zero count from virtual+48, or no bit0-set entry among virtual+4c(index) results. These are four distinct possible checks; no runtime object fields were sampled, so which failed is unknown. It is not proof of file checksum failure, missing assets or physical GPU incapability. Next bounded owner observation should capture this call's ECX/object fields and actual virtual targets/results before failure, preserving original execution. See preparation/integrity-literal-xrefs.json, integrity-caller.txt and integrity-check.txt. No CPU/renderer fix or repeat launch authorized from this static evidence alone.

Static refinement: producer4e5f00 populates820/824/828 from the per-stage filter bit groups in field964; current D3D7 caps reuse fill_primcaps with filter0xFF, which lacks every tested stage bit. This is an actionable advertisement-gap candidate pending exact live GetCaps destination and backend filter-contract confirmation. See ops/handoffs/tdr2000-first-launch-20261007 for bounded original disassembly and unmodified runtime receipts. No renderer fix is yet applied.

2026-10-07 ordinary repaired race

Ordinary attempt3 passed hardware IntegrityCheck, then Sound Settings OK, launcher Start, intro and natural lazy loading, reaching an actual race. Root and worker reviewed loading-settled.png and forward.png: HUD0/N became15/gear1 after ArrowUp1000ms with road advancement. ArrowRight1000ms was sent but its stopped endpoint does not independently prove steering. ArrowDown1000ms produced19/R and changed car/world orientation; Space1000ms produced0/R. Forward/reverse and brake response are supported; completed race, FPS and audio quality are not qualified.

Source efb1dba0/tree de4e9522 (same as coordinator62ab2a22), full-gated module d4256f3cd6b085a4acbd8192df7e9d0de8625beb82d10060ac2f27a51d8add74. Private original registration/index overlays only, no diagnostic callbacks or forced guest state. Immutable run: scratch/wt-tdr2000-demo-20261007/scratch/tdr2000-preparation/browser/attempt3. Start13:58:21.615Z, ordinary close14:04:28.221Z; browser/server closed, Chromeexit0, streams0, driver2754631/Chrome2754670 absent. Eleven screenshots3785609B. Request errors remain (aborts/optional lookups); do not call cleanup.errors empty.

All312 complete200 responses match pinned source/original hashes;1204 partial206 and5 recorded404 retained.31 raw artifacts hashed in accompanying handoff. Server-read hashes do not establish client consumption. Earlier preflight-only failure at1.93GB created no browser/output; regrant followed disk recovery without lowering thresholds. Durable local registration/manifest is next; no public deployment.

2026-10-07 durable local corpus registration

The registry now points to the stable original installed tree under test/binaries/win98-games-a-d/Carmageddon TDR2000 demo-D3D-installed, with Tdr2000Demo.exe and Mss32.dll explicit. The local candidate list and selector option expose the route locally; public DESKTOP_APPS membership is absent. The generator excludes those explicit mounts and emits 2,963 companions: 148 TXT/INI/CFG files required, 2,815 known-size data files lazy. No original settings or payload bytes were changed. Gameplay evidence remains commit 2e834347 and browser/attempt3 above; this registration adds no gameplay claim.

The earlier 19:26 metadata operation matched the tested rows, but its disk preflight failed below 2GiB and the shell continued into the metadata write. That was a guard failure, not a successful capacity check; the earlier receipt must not be interpreted as proving the disk floor passed. The generator now checks available capacity immediately before each metadata write and throws on capacity below 2GiB or an unreadable capacity probe. Regression tests mock both failures and verify the existing manifest bytes remain unchanged.

Fresh sequential JavaScript orchestration throws on every failed disk check or child test before any subsequent step or success receipt. Focused registration, app-file policy, and all 11 lazy-loading checks passed; the installed generator --only=carmageddon_tdr2000_demo --check passed. Exact row comparison against the gameplay-tested preparation/browser-manifest.json passed after normalizing only URL ./ prefixes and drive-letter case; paths, sizes and modes agree. Available capacity was 3,399,299,072 bytes before and after the batch. Receipt: preparation/registration-validation-fail-closed.json. The broader selector suite fails on 20 unrelated missing local options, reproduced on unchanged HEAD; TDR's option is asserted in the focused test. No build or browser ran.

Root must review/integrate this scoped commit into main. Any public release still needs explicit distribution/deployment authorization and release asset review. FPS, audio quality, independent steering proof and a completed race remain unqualified. Future browser validation must use a separate temporary box under the current user policy.