Skip to content

Release 1.2.2

5DO documentation edited this page Nov 6, 2026 · 3 revisions

5DO 1.2.2

Released: 2026-11-06

5DO 1.2.2 is a performance, library, and compatibility update on the 1.2.1 arm64 release. The six-bundle packaging model is unchanged: Windows, Linux, and macOS on x64 and arm64, with the CLI and desktop app in one framework-dependent bundle.

Highlights

  • Interpreter hot paths. Direct DRAM/ROM instruction fetch, inline LSL#0 and rotated-immediate operands, a flag-preserving ALU dispatch, and BitOperations.PopCount/TrailingZeroCount LDM/STM iteration. Interleaved A/B: synthetic 1.58 → 1.33 ms/frame, Lemmings 1.43 → 1.13 ms/frame, hashes unchanged.
  • High-resolution VDLP. Scanline DMA reads the raw VRAM word span. Lemmings high-res 2.42-2.47 → 1.30-1.43 ms/frame with an identical high-res hash.
  • Rewind capture. Fast compression, unchecked transient CRCs, a live-range memory section, and pooled buffers cut the worst Lemmings keyframe 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 JIT (opt-in). --cpu-backend jit shares PC/CPSR/cycle state across compiled blocks, compiles register-specified shifts, and invalidates blocks exactly on guest writes. It is ~20% faster than the first 1.2.x JIT but still ~1.25x slower than the interpreter on Lemmings boot, so the interpreter remains the default.
  • Library and database. The library reports 653 games across 1,366 images, lists duplicate copies on demand, edits game folders in Settings, and verifies every image against a Redump/No-Intro DAT. The embedded database grew from 518 to 653 records with revision, disc, BIOS, fix, input, NVRAM, and cheat metadata.
  • Machine and input options. Eight Opera DRAM/VRAM layouts, eight PBUS ports, opt-in Portfolio OS SWI HLE, auto per-game profiles, and audio-only CHD cataloging.
  • Hardening. Async void UI handlers catch exceptions, missing-BIOS prompts open the BIOS picker first, and the CLI explains stale/mixed build output.

Bundles

System Bundle
Windows x64 5do-1.2.2-win-x64.zip
Windows arm64 5do-1.2.2-win-arm64.zip
Linux x64 5do-1.2.2-linux-x64.tar.gz
Linux arm64 5do-1.2.2-linux-arm64.tar.gz
macOS x64 5do-1.2.2-osx-x64.tar.gz
macOS arm64 5do-1.2.2-osx-arm64.tar.gz

Each bundle contains the desktop app, the CLI, README.md, LICENSE, THIRD-PARTY-NOTICES.md, whatsnew.md, the release notes, and the legal/OpenAL notices. SHA256SUMS.txt is attached to the release.

The apps are framework-dependent single-file executables. Install the .NET 10 Runtime from https://dotnet.microsoft.com/download/dotnet/10.0; no runtime is embedded in the bundle.

Bug fixes

  • JIT register-shift PC-relative operands read instruction+12 for Rn and Rm (Rs reads instruction+8), matching the interpreter.
  • ROM-bank switches, BIOS reloads, overlay changes, and soft resets invalidate compiled blocks.
  • JIT FIQ entry telemetry includes the current block's cycles.
  • 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 PBUS packets report slots 7-8 as disconnected.
  • Pointer exit clears lightgun and mouse state for all eight PBUS ports.
  • The machine-option validator enforces the documented 0.5x-4x ARM clock range.

Verification

  • Full suite: 1,815 tests passing.
  • Build, format, benchmark gate, and CLI selftest are clean.
  • JIT parity: 1,000-frame Road Rash 0x41D2A1DA and Lemmings 0x110E7DC5, identical instruction counts.
  • Six bundles build; x64 runtime smoke tests pass; arm64 apphosts are architecture-verified.

Known issues

  • The managed JIT is still slower than the interpreter on real boot/gameplay code.
  • CORE-05 threaded DSP remains pending.
  • Crash 'n Burn (Japan) remains the single known no-video case in the 594-disc sweep.
  • Linux GPU presentation is preview/best-effort under llvmpipe.
  • Arm64 bundles are architecture-validated but not executed on arm64 hardware in CI.

See the full release notes and What's new.

Clone this wiki locally