5DO 1.6.0¶
Release date: 2026-11-08 Status: Compatibility-completion update on the 1.5.0 accuracy release.
Highlights¶
- The compatibility plan is complete. The unique-title corpus covers 1,371 images, 414 unique titles, and a 378-title game/homebrew test set. 375 of 378 test-set titles are Playable under the documented binary beyond-title rule (a distinct screen beyond the title with input). The comparison has 0
Behindand 0Regressionrows and is a strict superset of the 252-title peer union (167 4DO + 233 Phoenix after one evidenced peer invalidation). - Authoritative 3-way matrix.
CompatibilityComparison.mdanddocs/data/compatibility-comparison.jsoncompare 5DO, 4DO, and Phoenix on the same canonical discs.BeyondTitleEvidence.mdrecords the BIOS, disc hash, capture frame, screenshot, and failure reason for every title. - CD-ROM parity.
POLREMASKis now a one-shot FIFO reset; only the three interrupt enables persist, andPOLREis write-one-to-clear. MODE SELECT page 3 stores Opera'sMEI_CDROM_DOUBLE_SPEEDbyte (0x80) and updates the XBUS 2x status bit; a configured multi-speed drive caps at 1x when the guest selects single speed. SESSION INFO returns the single-session payload, TOC entries carry the Q-position bit, and the readable-disc limit comes from the volume header's big-endianvolume_block_countat sector 0 offset0x50. The CD-ROM save-state section is version 5 and remains backward compatible. - Persistence hardening. Settings and NVRAM writes prefer an atomic temporary-file replace and fall back to a direct copy when a cloud-sync placeholder, read-only file, or delete-locked file rejects the replace. The shell keeps running when the write still fails, guards startup media loading, and preserves a newer build's settings as
settings.json.v<version>.bak. Null/shortPlayersarrays are normalized to eight non-null profiles. - Diagnostics.
--fiq-traceand the timer trace record the XBUS FIQ source, enable/acknowledge writes, and level-held raise transitions. The differential harness can gate audio, replay input scripts, and compare a fresh run with the checked-in baseline; capture errors fail the job. - Desktop polish. Every interactive Avalonia control has a tooltip, enforced by
FrontendToolTipTests; fallback/cleanup paths log their expected exceptions.
Changed¶
- The CD-ROM state section is version 5. Version 3/4 states recover the guest speed byte from the XBUS status; older states continue to load.
FiveDo.CliandFiveDo.Frontend.Avaloniagenerate XML documentation. InternalProgrammembers andAsyncEvent.Runuse internal visibility; the two production async methods without anAsyncsuffix were renamed.- The README, status snapshot, compatibility docs, and release checklist now report the 414-title corpus, the 378-title test set, and the current test count.
- A weekly compatibility baseline workflow runs the full beyond-title gate on the self-hosted 3DO runner and uploads the evidence.
Fixed¶
- Settings persistence no longer aborts the desktop shell when the data folder denies an atomic replace. The store copies the completed temporary file over the destination and logs a warning if that also fails instead of throwing from the UI thread.
- NVRAM writes use the same fallback and keep the image dirty for a later retry instead of throwing during pause or shutdown.
- A newer-schema settings file is backed up before an older build rewrites it; expected schema/invalid-file warnings no longer create bug reports.
- Input settings with a null or short
Playersarray no longer fail input initialization. - Unreadable disc/BIOS/media paths are shown in the UI without filing a bug report, and startup configured paths cannot abort
OnOpened.
Validation¶
- Full suite 2,061/2,061 passes in Debug.
dotnet buildreports 0 warnings and 0 errors;dotnet format --verify-no-changesandjb inspectcode --severity=WARNINGare clean.tools/verify-beyond-title-ledger.py: 378 ledger rows, 375 Playable, 2 Title-only, 1 No-video, 0 Not-loadable, 0 Behind/Regression, strict peer superset.tools/generate-compat-comparison.py --checkreports the committed comparison outputs are current.- Road Rash boots for 600 frames in both the compatible and accuracy profiles after the CD/volume-header changes; the 50-title differential panel remains 50/50 frame hashes at frames 60/120/300 with 0 errors.
- Windows x64 bundle smoke passes (CLI
--version/selftestand desktop--smoke-test); the release workflow validates the six bundle trees, checksums, and arm64/macOS apphost architectures.
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.6.0-win-x64.zip |
| Windows arm64 | 5do-1.6.0-win-arm64.zip |
| Linux x64 | 5do-1.6.0-linux-x64.tar.gz |
| Linux arm64 | 5do-1.6.0-linux-arm64.tar.gz |
| macOS x64 | 5do-1.6.0-osx-x64.tar.gz |
| macOS arm64 | 5do-1.6.0-osx-arm64.tar.gz |
Each bundle contains the framework-dependent single-file CLI and desktop app, README.md, LICENSE, THIRD-PARTY-NOTICES.md, whatsnew.md, and the release/legal docs. See the release page for SHA256SUMS.txt.
Known limits¶
- Playability follows the documented binary beyond-title rule, not a full playthrough or a claim for every regional revision.
- CD command cadence is the remaining behavioral differential on the 50-title panel; the 3,000-frame showcase still diverges on Road Rash.
- Windows x64 remains the validated target. Linux x64 full-suite and CLI/frontend smoke validation pass; GPU presentation under llvmpipe/SSH is preview/best-effort. macOS and arm64 bundles are cross-published and architecture-validated.
- VRR depends on the GPU, driver, monitor, and desktop; 5DO only avoids the blocking swap interval.