Skip to content

v3.10.0

Latest

Choose a tag to compare

@github-actions github-actions released this 22 Oct 07:06
· 6 commits to master since this release
v3.10.0
e7db536

Virtual Jaguar v3.10.0

Controller-friendly TV mode, a more responsive desktop app, multi-disc playlists,
and optional AI players.

This is a feature release for the standalone app on macOS, Windows and Linux.
It also includes MMULT and TOM register-readback corrections from AtariAge reports.
Core options and v17 savestates carry over.
Experimental emulation threading remains off by default.

Play from the couch

  • TV mode adds Home, Library and Game details screens and a paused in-game menu
    designed for a controller. Hold the configured TV-menu button to open it, or use
    Ctrl/Cmd+Shift+T to toggle TV mode. Initial setup still uses desktop mode.
    (#995,
    #999,
    #1024)
  • Desktop library controller navigation, with per-family and custom button profiles.
    (#1030)
  • Jaguar Pro Controller support exposes X, Y, Z, L and R as separate controls.
    (#1019)
  • Fullscreen menu auto-hide is optional. Detached tool windows use the native
    operating-system title bar, without duplicate in-app window controls.
    (#1034)

Desktop responsiveness

An optional emulation thread lets the UI keep responding while the core runs.
RetroAchievements evaluation and link play run on the core owner thread; long operations
show a busy indicator. Command ordering, achievements UI access and shutdown races are
covered by regression tests, including ThreadSanitizer tests in CI.
(#1000,
#1031,
#1033)

Presentation pacing and late input latching have more precise wake-ups, more deadline
headroom and slower safety-pad decay.
(#1018,
#1023,
#1035)

The setting is under Settings > Interface > Performance > Emulation thread and takes
effect after restarting. Keep it off to use the Tools/debugger windows or GDB: those features
still need to move across the thread boundary. Rare host scheduling stalls and display-rate
pacing remain follow-up work; this release does not claim to eliminate every repeated frame.

Community cheat conversion

An optional offline source converter turns supported community-authored C memory
freezes into .cht files, including grouped writes and bounded loops. Unsupported
operations are reported for a manual port. Generated sets start disabled and the
app checks the cartridge CRC32 before applying them. Pinned community sources are
tested in CI; no community cheat pack, emulator binary, or SDK is bundled.
(#1052,
conversion guide)

Emulation corrections

  • GPU and DSP MMULT preserve the advanced matrix-address counter and wrap
    coefficient reads within local RAM. Consecutive multiplies now render the supplied
    polygon demo as a filled solid instead of a line. Row/column stepping, address wrap
    and matrix-address savestate round trips have regression coverage.
    (#1043)
  • TOM PIT reads expose live timer counters. Unreadable TOM I/O registers fall back
    to MEMCON1, following the original Atari netlists. Timer reads use the existing
    scheduler and have scheduler-slice resolution; independent prescaler phase during
    partial reprogramming remains future work.
    (#1044,
    #1045)
  • The fast blitter uses the A2 destination lanes for computed Z and Gouraud
    gradients when DSTA2 is selected. A bootable greater-than Z test reproduces the
    incorrect writes before the fix and passes afterward. Regression cases cover both
    engines, mixed pixel/phrase modes, signed increments and phrase boundaries.
    (#1046,
    #1051)

Jaguar CD and achievements

  • Open .m3u multi-disc playlists; every disc appears under File > Disc.
    (#1012)
  • Invalid playlists no longer hide otherwise playable discs. States from every playlist disc
    remain available in the library and TV mode, including identical slot numbers on different
    discs. Resuming mounts the state-owning disc while retaining the playlist's full disc list
    and save-RAM ownership.
    (#1042)
  • The disc menu works after loading a CD and while booted into the CD BIOS without a disc.
    Swaps update the running content identity while keeping save ownership on the disc that
    opened the session.
    (#1006,
    #1009,
    #1011)
  • The achievements browser omits games with no achievement set.
    (#1015)
  • Missing CD mirror artwork is remembered only for the current session, so later launches
    can retry. The website also offers the CD artwork collection as one ZIP.
    (#998,
    #1016)

AI players

Settings > Neuro connects to a server implementing the Neuro game API, allowing an AI
backend to control Player 1. Tempest 2000 has a built-in profile; custom profiles can define
other games' moves. This is opt-in and requires a separate server. Disconnects release held
inputs, stopping is bounded, and hardcore achievements block AI input. See
the Neuro guide
for configuration and privacy details.
(#1001,
#1027)

Known limitations and the road to 4.0

  • Emulation threading is experimental, opt-in, and disables the Tools/debugger windows and GDB.
  • TV mode settings, overlays, achievements screens and automatic switching remain in progress.
  • Doom's attract-demo timing and the other emulation limitations documented for v3.9.1 remain.
  • Windows signing depends on the signing service's availability and approval; do not assume
    every Windows package is signed.

The 4.0 milestone now tracks a fully integrated app: debugging while threaded, validated
60/120 Hz display pacing, finished TV mode, and dependable installation/update flows.
The hardware timing campaign and dual-Jaguar rollback remain separate future projects.

Downloads and upgrading

Install the app over your existing version; settings carry over. RetroArch and Provenance
users can replace the core without changing options or v17 savestates.

Download the app, libretro cores and Jaguar CD tools from
the v3.10.0 release.
Use the release's SHA256SUMS.txt to verify downloads. macOS packages are universal;
Windows has portable and installer packages; Linux has AppImage and Debian packages.

Validation

Combined candidate 344dc0bc passed the core build, C89 lint and full core suite on
Mac Studio with the private corpus. Three checks skipped for missing optional
Fountain live-abort, CHSE-capable chdman and one-session Red Book fixtures/tools.
Host-sensitive network checks ran and passed. Explicit Skyhammer/Iron Soldier 2
clipping and Iron Soldier 1 presence checks also passed.

Fresh Studio matrices on final-core candidate b5e40090 cover 155 cartridge
titles (HLE/BIOS) and 28 CD title/mode rows. Comparisons against both v3.9.1
and the previous release candidate 24ae1bdb show zero backward moves, zero
added/removed rows and no new watchdog signatures
. The three existing cartridge
HLE/BIOS asymmetries are unchanged; no new asymmetries appeared. Matrix input
identity: 67acceb9dc39. Existing known failures remain recorded. The acid suite ran all
151 cases: 148 pass, three known failures, zero regressions, zero missing tests.
The original GT ROM also passes with the fast blitter.

The subsequent #1051 backport adds a second GT ROM that reproduces the DSTA2
computed-Z defect. Its source candidate passed all 93 blitter checks and all 152
acid cases with zero regressions or missing tests (three established known failures).
RetroArch showed the reproducer failing before the fix and passing afterward; the
supplied polygon demo compared 202,616 blits with zero pixel differences or skips.

The combined app passed all 159 CTest tests, including 53 emulation-thread tests,
with zero failures or skips. Playlist tests cover invalid entries, per-disc state
ownership with identical slots, warm-cache lookup, TV resume routing, and actual
inline/threaded state-load events. Windows path expectations were corrected, and
all three previously failing Windows app jobs passed on that fix.

Independent review of the incoming core changes found no defects. Source-session
RetroArch checks confirmed the polygon demo's filled geometry, changing PIT counter
and matching MEMCON1 values. Earlier focused Studio windowed checks covered
inline/threaded operation, settings, fullscreen hover/F1/restore/persistence and
native-only chrome. POSIX installer hermetic tests passed 208 checks. Clean-machine
Windows qualification remains separate. Fresh GitHub CI and published-artifact
checks remain release gates; current status is in
release tracker #1036.


Artifacts in this release

SHA256SUMS.txt
VirtualJaguar-3.10.0-linux-aarch64.AppImage
VirtualJaguar-3.10.0-linux-x86_64.AppImage
VirtualJaguar-3.10.0-linux-x86_64.flatpak
VirtualJaguar-3.10.0-macos-universal.zip
VirtualJaguar-3.10.0-windows-arm64-setup.exe
VirtualJaguar-3.10.0-windows-arm64.zip
VirtualJaguar-3.10.0-windows-x64-setup.exe
VirtualJaguar-3.10.0-windows-x64.zip
cue2cdi-linux-x86_64
cue2cdi-macos-universal
cue2cdi-windows-x86_64.exe
jagcd-tools-linux-x64.zip
jagcd-tools-macos.zip
jagcd-tools-windows-x64.zip
virtualjaguar_3.10.0_amd64.deb
virtualjaguar_3.10.0_arm64.deb
virtualjaguar_libretro-android-arm64-v8a-debug.tar.gz
virtualjaguar_libretro-android-arm64-v8a.so
virtualjaguar_libretro-android-armeabi-v7a-debug.tar.gz
virtualjaguar_libretro-android-armeabi-v7a.so
virtualjaguar_libretro-android-x86-debug.tar.gz
virtualjaguar_libretro-android-x86.so
virtualjaguar_libretro-android-x86_64-debug.tar.gz
virtualjaguar_libretro-android-x86_64.so
virtualjaguar_libretro-emscripten-wasm-debug.tar.gz
virtualjaguar_libretro-emscripten-wasm.bc
virtualjaguar_libretro-ios-arm64-debug.tar.gz
virtualjaguar_libretro-ios-arm64.dylib
virtualjaguar_libretro-linux-aarch64-debug.tar.gz
virtualjaguar_libretro-linux-aarch64.so
virtualjaguar_libretro-linux-i686-debug.tar.gz
virtualjaguar_libretro-linux-i686.so
virtualjaguar_libretro-linux-rpi1-armv6-debug.tar.gz
virtualjaguar_libretro-linux-rpi1-armv6.so
virtualjaguar_libretro-linux-rpi2-cortex-a7-debug.tar.gz
virtualjaguar_libretro-linux-rpi2-cortex-a7.so
virtualjaguar_libretro-linux-rpi3-cortex-a53-debug.tar.gz
virtualjaguar_libretro-linux-rpi3-cortex-a53.so
virtualjaguar_libretro-linux-rpi3_64-cortex-a53-debug.tar.gz
virtualjaguar_libretro-linux-rpi3_64-cortex-a53.so
virtualjaguar_libretro-linux-rpi4-cortex-a72-debug.tar.gz
virtualjaguar_libretro-linux-rpi4-cortex-a72.so
virtualjaguar_libretro-linux-rpi4_64-cortex-a72-debug.tar.gz
virtualjaguar_libretro-linux-rpi4_64-cortex-a72.so
virtualjaguar_libretro-linux-rpi5-cortex-a76-debug.tar.gz
virtualjaguar_libretro-linux-rpi5-cortex-a76.so
virtualjaguar_libretro-linux-rpi5_64-cortex-a76-debug.tar.gz
virtualjaguar_libretro-linux-rpi5_64-cortex-a76.so
virtualjaguar_libretro-linux-x86_64-debug.tar.gz
virtualjaguar_libretro-linux-x86_64.so
virtualjaguar_libretro-macos-arm64-debug.tar.gz
virtualjaguar_libretro-macos-arm64.dylib
virtualjaguar_libretro-macos-x86_64-debug.tar.gz
virtualjaguar_libretro-macos-x86_64.dylib
virtualjaguar_libretro-switch-debug.tar.gz
virtualjaguar_libretro-switch.a
virtualjaguar_libretro-tvos-arm64-debug.tar.gz
virtualjaguar_libretro-tvos-arm64.dylib
virtualjaguar_libretro-vita-debug.tar.gz
virtualjaguar_libretro-vita.a
virtualjaguar_libretro-windows-i686-debug.tar.gz
virtualjaguar_libretro-windows-i686.dll
virtualjaguar_libretro-windows-x86_64-debug.tar.gz
virtualjaguar_libretro-windows-x86_64.dll
virtualjaguar_libretro.info

SHA-256 checksums

Verify with sha256sum --check SHA256SUMS.txt (Linux) or
shasum -a 256 --check SHA256SUMS.txt (macOS).
See SECURITY.md
for full verification instructions and antivirus false-positive guidance.

c4596a3d28dc1481b7af3a5621ceeb676f64e6d5a5950c17f50345cebe0d01be  VirtualJaguar-3.10.0-linux-aarch64.AppImage
bde425c25cd0d739aa11cbe4c382a0562c2e0badaad4d09b885e24721ae649d3  VirtualJaguar-3.10.0-linux-x86_64.AppImage
19a902f7200952cf946e32f1eca9f1807996683b229144f1e75833b0adf777a2  VirtualJaguar-3.10.0-linux-x86_64.flatpak
3d8afe41fe587793cad65ffe4431745c38cc90acddc426be57199346be0e917a  VirtualJaguar-3.10.0-macos-universal.zip
5a018ffdba63aa56c8cafe0a6fa4fdeb62edfb7d8146ff5827e796b94b05c2ba  VirtualJaguar-3.10.0-windows-arm64-setup.exe
a5c7a4656eda85044e4a7de8b62ed0553ebf83805780aa5e3ae8e2ca959529fd  VirtualJaguar-3.10.0-windows-arm64.zip
653150aa2b381b79a42d33a1f4fb60ad44cd0b9b0f5713c8b07a5f13e13e5565  VirtualJaguar-3.10.0-windows-x64-setup.exe
6f8db9cc3b381745ef10581e53c9778185f087282a6145da64f2f4ba04ee3780  VirtualJaguar-3.10.0-windows-x64.zip
b926e41185057ee9204aaa0aaafff53ceec2cbb6d4f37e478edf7a7ddb353332  cue2cdi-linux-x86_64
a71f0ac5ec31fe205e6cb9c3440d0fe665991feabe9330923793a6ee4e56b64b  cue2cdi-macos-universal
404e0d29a492363bc5c0f44199fe95db683377ef14142cd2793c3592e19509bd  cue2cdi-windows-x86_64.exe
36d8bb1cee0867c80026f643e68f96dbe234af5e4c18aacfa61d3a282ccda46a  jagcd-tools-linux-x64.zip
a95be08d2f82f079296f3260c7eaefc91c665919d5a75135bdd61c7e2dadf882  jagcd-tools-macos.zip
4ca78c045d7331ef0d478071cbfd944f36f4c1be038992f92508ce150e058ccb  jagcd-tools-windows-x64.zip
5451d9f7011df43b85929ccce5a90e99b8064029c43fbbd1d7108612677fb1b5  virtualjaguar_3.10.0_amd64.deb
1fd99cf44788efb0fdf7ad8687f057c89b2a74645c6153fe6639c1665547fb52  virtualjaguar_3.10.0_arm64.deb
4159ce27344e710862dc16d3fd4a535897dc12a64c98f98ecc8cef1acd49fcbf  virtualjaguar_libretro-android-arm64-v8a-debug.tar.gz
bc1b4ce51c411ea879d2e44746a179f63a0b34b2c4e6b6cbada2b8f5075d157a  virtualjaguar_libretro-android-arm64-v8a.so
b0c88645f551c7284da2b097fa0f92b72eb5abd2f434e151ab7377d1a4c1fa5f  virtualjaguar_libretro-android-armeabi-v7a-debug.tar.gz
aa8011fe7c135251c7ce60865a560fd2946fd7006a218daf5f1b652e1b1138f1  virtualjaguar_libretro-android-armeabi-v7a.so
953538d27ffaed095b38d6d876395873cf93219223800ac342bf479056bb294c  virtualjaguar_libretro-android-x86-debug.tar.gz
efd2ea544e92d8832134c61d82ae9995c589efd3dd5bc41e92323b95e94219b8  virtualjaguar_libretro-android-x86.so
f23f5f6287d5ce495d3f4bd0ea3988cf0b28696ca880ee32f34df62d21be1779  virtualjaguar_libretro-android-x86_64-debug.tar.gz
59e178612d57b5c338a85522fc38e8f6efde86bf23213a0ce029698e4d0508bf  virtualjaguar_libretro-android-x86_64.so
857befaf6a46695d190ae961a3f82eb6c97d6faf9ab979f7f065dac5da220ebe  virtualjaguar_libretro-emscripten-wasm-debug.tar.gz
cc6d571a635d3785adce48a91dc5374284a4e4456127384bd6c55e5e1a75cfb7  virtualjaguar_libretro-emscripten-wasm.bc
742891e9bffbef5acbe16ab0ecfd7a08d27fd4cfa081d4cd22f75de12e7e7108  virtualjaguar_libretro-ios-arm64-debug.tar.gz
2708d5f44268791c5a9c699ae1644d7938626541f5581124ca2e0ac7ee49b654  virtualjaguar_libretro-ios-arm64.dylib
20a5c01757be90bb1bf95e5e656b8811e7fdd9bf3525b4f108314a0cce457359  virtualjaguar_libretro-linux-aarch64-debug.tar.gz
12fd2a8ad016475ad9c91dd391098c5df1b5bf88ed76c295beea2582768eaac4  virtualjaguar_libretro-linux-aarch64.so
6fbb7e7e92324481abf652c1c38a6cc645a79ec3ff78f9e3e46272574d0a00a1  virtualjaguar_libretro-linux-i686-debug.tar.gz
2e158000ea45d8814c724e3c21f9bf07d4485c634e0a807183d066d0553f3a22  virtualjaguar_libretro-linux-i686.so
ce9e0f45cf3ed2b845be11f033b9bcafb072315f67a2989c57a29c10653c4357  virtualjaguar_libretro-linux-rpi1-armv6-debug.tar.gz
65957794bed42908ad40336ac69b50f03c5a15a650a05c81110762753cd89c26  virtualjaguar_libretro-linux-rpi1-armv6.so
f21d2084c9722b8ca20ddddda57ac02de00af66c5a4e5ecb1417cf371257311e  virtualjaguar_libretro-linux-rpi2-cortex-a7-debug.tar.gz
e0d015adf6a9236b60553081f32e32a45afcdb3666dbf760ccfad680418d9c0d  virtualjaguar_libretro-linux-rpi2-cortex-a7.so
e750981653fb859779214a809838a071adf7e0bfd3e08c10f32f0fa6936d6568  virtualjaguar_libretro-linux-rpi3-cortex-a53-debug.tar.gz
143e0630920d06d20a1becf7cc497936f5936785dbef8c164034d9228941b93e  virtualjaguar_libretro-linux-rpi3-cortex-a53.so
418527fe31d3dc197dda0e8cd2401fe4743c047357cb665bd66c7d326ea7b3c2  virtualjaguar_libretro-linux-rpi3_64-cortex-a53-debug.tar.gz
fbfab8c61a11bc8e50b5450bd7d8504fc670d2fa6b0482d75d272ac340cc2e91  virtualjaguar_libretro-linux-rpi3_64-cortex-a53.so
c6141f682a2b3b126b275e14d9ca27316d49c398ab970129e1d014884f2fa0c1  virtualjaguar_libretro-linux-rpi4-cortex-a72-debug.tar.gz
78b477a423babf2dc760c60681ae8f03207156fd8728da43024c61d92a408dde  virtualjaguar_libretro-linux-rpi4-cortex-a72.so
92e7cc0ef95f7a5f89a7e710530971c1c684b929382dc333aa4df220fa292771  virtualjaguar_libretro-linux-rpi4_64-cortex-a72-debug.tar.gz
0fa1c077ccbc6d346984ae3ab8944a205341683cb4ee32219ee206db3076ef02  virtualjaguar_libretro-linux-rpi4_64-cortex-a72.so
4200cd0d5ad5c5c3f1cc03df9f0a4c6da503b8caa5402eb70576077015f8ebdf  virtualjaguar_libretro-linux-rpi5-cortex-a76-debug.tar.gz
b1ffe63185ee27735ac455b8a2cf2597fd9998e3c0dbafb666f131e670d076d4  virtualjaguar_libretro-linux-rpi5-cortex-a76.so
c81944dddb7bbb61901edabcd25f6d340d241b78936ad2216a947a93c5c8b506  virtualjaguar_libretro-linux-rpi5_64-cortex-a76-debug.tar.gz
cd7c3a3d64ea650b5387c701fbaeb4d553bf7febaadfd1effb7fb91c7f4b02e0  virtualjaguar_libretro-linux-rpi5_64-cortex-a76.so
ffc2e591c543fe353a51dcf0c1357da07a1b617acd7203b028ac59e808a9b0bd  virtualjaguar_libretro-linux-x86_64-debug.tar.gz
863962ca871b4bc0bba1d7f948ad962adb8c1b8fd727aca1594ff115331203aa  virtualjaguar_libretro-linux-x86_64.so
95d959bd589cdaf425e8d5cc8cf1c7b60be9cfaef60d5ac06ea173a5f1e82371  virtualjaguar_libretro-macos-arm64-debug.tar.gz
a1bc9f0205dbdc377c2b761f9b22cc877dd56cb253ec209ddd9062146ced2d81  virtualjaguar_libretro-macos-arm64.dylib
5eff5bba63536348260e7e5c68bc4a74ffe6f2fac5e0f22da2f4200feda28e96  virtualjaguar_libretro-macos-x86_64-debug.tar.gz
3bf4ac45e66eaa8dc3a2e8b2f49140ccb46b960ead0afeeae2feaa26b92f549e  virtualjaguar_libretro-macos-x86_64.dylib
87bb8b151e5b50623fd2108976d1d6e52ddcd2fbe1eb67f31e05facab0bbebed  virtualjaguar_libretro-switch-debug.tar.gz
7169e008bfdafd2a38529331a591c6ad09fb9e8b655dd5a91208ffb73adc1983  virtualjaguar_libretro-switch.a
330ab8887d97c6f0c1e6c65688bba85ebe750e59c3157ca6bc8fe67a83e12ea9  virtualjaguar_libretro-tvos-arm64-debug.tar.gz
90225e90c4261f3bdf1f66712e65f79f75a424d03d0aed7b2709ba5466cd354c  virtualjaguar_libretro-tvos-arm64.dylib
59b9f432debe3d26a1373ac360cdcb20ce6a5c8913341d8c114b29fc48663c27  virtualjaguar_libretro-vita-debug.tar.gz
7e807f29be86dbfcbe2080c35acc4d48063c9665713e7dda8720f7c35a4f1c1b  virtualjaguar_libretro-vita.a
e9bfbe3bf6a4d90d7588e5a9e49721aa216be1c2b60bf4c56dda3a9ab1091206  virtualjaguar_libretro-windows-i686-debug.tar.gz
e8c3d0fa75b08ee531b84e46511d667e50842e7a5a3b27383cb928c1b23a7543  virtualjaguar_libretro-windows-i686.dll
e194b131ade19bf1154443221994b3949b7bca4b81622e8ba8e50f1804bdab46  virtualjaguar_libretro-windows-x86_64-debug.tar.gz
78919ede14947738da3fbfa4948256be11daa12e13d469555ecd5ea90fe6a868  virtualjaguar_libretro-windows-x86_64.dll
24c2fdfe86583822556e16726a2c09158447c71cad9aac7a131b5620821b3e30  virtualjaguar_libretro.info