5DO 1.4.0¶
Release date: 2026-11-07 Status: Feature and accuracy update on the 1.3.0 field-handling release.
Highlights¶
- Online cover art (UX-26). An optional content-addressed WebP catalog at
https://assets.purelogiccode.com/5do/v1provides 473 unique covers and maps 645 of 653 4DO game IDs. 5DO downloads the catalog and only the covers it needs, verifies every image by SHA-256, and supports an optional ~27 MB bulk pack for offline use. Matching uses exact game IDs, annotation stripping, token/no-space/subtitle aliases, and Jaro-Winkler fallback with sequel-number guards. Settings > Covers and thecovers update/download/match/verify/cacheCLI commands expose the feature. - Latency controls (VID-12). Settings > Video adds 0-2 frame run-ahead, a 0-8 frame presentation delay, and VRR/adaptive-sync presentation. Settings > Audio and
--audio-sync -250..250add a host A/V offset. Per-game profiles store all four values, the FPS overlay reports software input-poll-to-frame-submit telemetry, and run-ahead auto-disables after repeated frame-budget overruns. The run-ahead snapshot is a reusable uncompressedMachineStateSnapshot; machine-state section v2 stores only visible lines and copies pixels as blocks, and the RAM loader clears only the previously addressable tail. - Unsigned-disc support (SYS-06). Settings > Paths and
--allow-unsigned-discsdisable the BIOS media RSA check in memory so unsigned, homebrew, and arcade discs can boot. A known No-RSA BIOS is preferred when available; otherwise a compatible retail 1 MB image is patched with the documented two-site bypass. The BIOS file is never modified. Already patched images and known No-RSA file names are accepted, and an incompatible image is rejected with an explicit error. - Exact NTSC field clock and rational VDL. NTSC now runs at 60000/1001 (59.94 Hz, 208,541 cycles per field at 12.5 MHz) instead of 60.00 Hz.
Quartzuses an exact rational VDL accumulator, removing the per-batch 8.24 rounding that ran the scanline clock about 0.09% fast. Quartz state is version 4; version 1-3 states convert their 8.24 fraction on load. - VDLP and audio fixes. Disabled bitmap DMA now renders a black line instead of retaining the previous field, and the background word is converted from 8-bit RGB to the 5-bit format the renderers expect. Live OpenAL device switching uses the thread-local context extension, and the Settings test tone queues the whole second up front so Windows sleep granularity cannot insert silent gaps.
- Differential evidence. The harness now compares CD command counts, opcode hashes, full command sequences, per-command cycle stamps, CPSR, instruction counts, and sample deltas. The 50-title panel captured 50/50 with 0 errors; 32/50 titles match every frame hash at frames 60/120/300 and every sample delta is within 9. At 3,000 frames Space Ace, Wolfenstein 3D, Alone in the Dark, and Lemmings match Opera's hash; Road Rash still diverges.
Changed¶
FiveDoMachine.FramesPerSecondnow returns the exact 59.94 Hz field rate for host pacing; the nominalFieldRateremains 60/50 for display and JSON compatibility.AppSettingsschema is version 7. Version 5 added unsigned-disc support, version 6 added latency options, and version 7 added the online cover options. Older files load with documented defaults.- Machine save-state section v2 stores only visible VDL lines and preserves frame dimensions and pixel aspect across load/restore.
CoreRunnerinvalidates the run-ahead snapshot after any external machine action (disc swap, state load, BIOS/NVRAM change) even when the frame counter does not move.LatencyTelemetry.MaxMillisecondsnow describes the rolling window rather than the maximum ever observed.
Requirements¶
- The .NET 10 Runtime installed on the host. The bundles are framework-dependent and do not include the runtime. Choose the x64 or arm64 bundle that matches your OS.
- A legally obtained 1 MB 3DO BIOS ROM (for example
panafz1.bin). - Legally obtained 3DO disc images in ISO, BIN, CUE+BIN, or CHD format.
- Optional: network access for the online cover catalog. Local covers and the core emulator work offline.
Download¶
| System | Bundle |
|---|---|
| Windows x64 | 5do-1.4.0-win-x64.zip |
| Windows arm64 | 5do-1.4.0-win-arm64.zip |
| Linux x64 | 5do-1.4.0-linux-x64.tar.gz |
| Linux arm64 | 5do-1.4.0-linux-arm64.tar.gz |
| macOS x64 | 5do-1.4.0-osx-x64.tar.gz |
| macOS arm64 | 5do-1.4.0-osx-arm64.tar.gz |
Each bundle contains the framework-dependent single-file CLI and desktop app, the README/license/notices, whatsnew.md, and the legal/release docs. SHA256SUMS.txt is attached to the GitHub release.
Known limits¶
- Run-ahead is CPU-bound and opt-in. It is incompatible with rewind history and deterministic movie recording/playback; the frontend disables those features while it is active.
- VRR is a display/driver feature. 5DO can avoid the blocking swap interval, but actual adaptive-sync activation depends on the GPU, driver, monitor, and desktop.
- The online cover catalog is optional and is not included in any release bundle. A wrong fuzzy match should be corrected with the threshold or a local cover.
- The 50-title differential panel still has unresolved PC/CPSR phase and CD-cadence differences. Frame-hash matches are evidence, not a full accuracy claim.
- Windows x64 is the validated target. Linux x64 full-suite and CLI/frontend smoke validation pass; GPU presentation remains preview/best-effort under llvmpipe/SSH. macOS and arm64 bundles are cross-published and architecture-validated.
Validation¶
- Full suite: 1,905/1,905 passing in Debug and Release.
dotnet build 5DO.sln -c Debug: 0 warnings, 0 errors.dotnet format 5DO.sln --verify-no-changes --no-restore: clean.jb inspectcode 5DO.sln --severity=WARNING --no-updates: 0 results.- Frontend
--smoke-test, CLIselftest, and the differential harness checks are part of the release gate.