Repository navigation
5DO 1.2.2
5DO 1.2.2
Release date: 2026-11-06
Status: Performance, library, and compatibility update on the 1.2.1 arm64 release.
Highlights
- Faster CPU hot paths. The interpreter now fetches instructions directly from
DRAM/ROM, inlines LSL#0 and rotated-immediate operands, uses a flag-preserving ALU
dispatch, and iterates LDM/STM with population-count/trailing-zero intrinsics. An
interleaved A/B measured synthetic 1.58 → 1.33 ms/frame and Lemmings (USA)
1.43 → 1.13 ms/frame with unchanged hashes. - Faster high-resolution video. High-resolution scanline DMA reads the raw VRAM word
span instead of fourIRam.Read16calls per pixel. Lemmings high-res fell from
2.42-2.47 to 1.30-1.43 ms/frame with an identical high-res hash. - Rewind no longer stalls gameplay. Rewind keyframes use fast compression and
unchecked transient CRCs, the memory section stores only the live RAM/VRAM range,
and the capture buffers are pooled. On Lemmings the worst keyframe fell from
139.3 ms to 7.4-9.2 ms, allocations from ~1.5 GB to 16 MB per 1,200
frames, and a stock state from ~26 MB to ~10 MB. - Managed ARM JIT (opt-in, still experimental).
--cpu-backend jitcompiles hot
blocks, shares PC/CPSR/cycle state across blocks, compiles register-specified shifts,
and invalidates blocks exactly on guest writes. It is bit-identical on the test
corpus and is ~20% faster than the first 1.2.x JIT, but it is still ~1.25x slower
than the interpreter on Lemmings boot. The interpreter remains the default. - Library and game database. The library now reports both unique games and image
counts (for example653 games · 1,366 images), lists duplicate copies on demand,
edits game folders in Settings, and verifies every image against a Redump/No-Intro
DAT with cached health badges. The embedded game database grew from 518 to 653
records with revision, disc, BIOS, fix, input, NVRAM, and cheat metadata. - More machine and input options. All eight Opera DRAM/VRAM layouts are selectable,
input supports eight PBUS ports, and the opt-in Portfolio OS SWI HLE handles Opera's
14 fixed-point math SWIs. Auto per-game profiles apply database input, BIOS, NVRAM,
fix, and timing values. - Audio-only CHD cataloging. CHDs with no data track now open, derive a stable
TOC-based ID, and reportaudioCd/trackCount, so bonus audio discs appear in the
library. In-emulator CD-DA playback still needs a data-track boot path.
Bug fixes
The post-1.2.1 audit fixed eight concrete issues:
- JIT register-shift PC-relative operands now read
instruction+12forRnandRm
(Rsstill readsinstruction+8), matching the interpreter. - ROM-bank switches, BIOS reloads, low-memory overlay changes, and soft resets now
invalidate compiled blocks. - JIT FIQ entry telemetry includes the current block's cycles, so
--fiq-traceand
FIQ latency are no longer short by one batch. - Prefetched track sectors keep their actual byte count, so a 2048-byte data sector
cannot return a 2352-byte length or stale tail bytes. - Legacy 16-byte PBUS packets report slots 7-8 as disconnected.
- Pointer exit clears lightgun and mouse state for all eight PBUS ports.
- The central machine-option validator enforces the documented 0.5x-4x ARM clock range.
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.
- Windows 10+, a current Linux desktop, or macOS 12+.
- An OpenGL 3.3 or OpenGL ES 3.0/3.1 context for the GPU presenter; the CPU
WriteableBitmapfallback is used when OpenGL is unavailable.
BIOS ROMs and game images are not included.
Artifacts
The release publishes six versioned bundles and SHA256SUMS.txt:
5do-1.2.2-win-x64.zip5do-1.2.2-win-arm64.zip5do-1.2.2-linux-x64.tar.gz5do-1.2.2-linux-arm64.tar.gz5do-1.2.2-osx-x64.tar.gz5do-1.2.2-osx-arm64.tar.gz
Each bundle contains both the desktop app and the CLI, README.md, LICENSE,
THIRD-PARTY-NOTICES.md, whatsnew.md, docs/Licensing.md,
docs/ReleaseLegalReview.md, docs/OpenALSoft.md, docs/OpenAL-Soft-COPYING.txt,
these release notes, and PACKAGE.txt.
The apps are framework-dependent single-file executables and require the .NET 10
runtime on the host. No .NET runtime is embedded in the executables or copied into the
bundle. PDB and XML documentation files are omitted because they are build outputs, not
runtime dependencies. Native libraries (OpenAL Soft, Skia, and ANGLE) stay beside the
apps so the LGPL replacement rights remain practical.
Verification
dotnet build 5DO.sln -c Release: 0 warnings and 0 errorsdotnet test 5DO.sln -c Debug: 1,815/1,815 passingdotnet format 5DO.sln --verify-no-changes --no-restore: clean- Synthetic benchmark gate: pass (0 bytes/frame, core/total p99 within budget)
- CLI
selftest: pass - JIT parity: 1,000-frame Road Rash
0x41D2A1DAand Lemmings0x110E7DC5, identical
instruction counts; 600-frame Lemmings benchmark hash0x2A53D449 - Six bundle builds; x64 CLI
selftestand desktop--smoke-testpass; arm64 apphost
machine types verified as PE ARM64, ELF aarch64, and Mach-O arm64 - Bundle checks confirm no
runtime/,*.xml, or*.pdbfiles are present - Release workflow
https://github.com/purelogiccode/5DO/actions/runs/42169040644 passed all six bundle
jobs and the publish job; all sixSHA256SUMS.txtentries verify. The docs workflow
deployed the Pages site and published the wiki.
Known issues
- The managed JIT is still slower than the interpreter on real boot/gameplay code
(~1.25x on Lemmings). The interpreter remains the default and the accuracy oracle. - CORE-05 threaded DSP remains pending. The DSP is only ~14% of frame time, and a
per-sample worker handoff costs more than the DSP work; a speculative pipeline still
needs FIFO/RAM validation before it can preserve FIQ and FIFO timing. - Arm64 bundles are architecture-validated but are not executed on arm64 hardware in
CI. Please report arm64 runtime findings with a diagnostics bundle. Crash 'n Burn(Japan) remains the single known no-video case in the local
594-disc compatibility sweep (593/594 render).- Linux GPU presentation is preview/best-effort under llvmpipe; the CPU fallback works.
- Display refresh above 60 Hz re-presents the latest frame; frame interpolation is not
implemented. - WebAssembly, Android/iOS, and Raspberry Pi are out of scope.
Licensing
5DO is donationware: non-commercial, source-available software under the FreeDO
modified GNU LGPL. Donations do not grant commercial rights. "3DO", "Panasonic", and
"GoldStar" are trademarks of their respective owners; 5DO is not affiliated with or
endorsed by them.
See Licensing.md, OpenALSoft.md, and
ReleaseLegalReview.md for the full notices.