Repository navigation
v3.9.1
Virtual Jaguar libretro v3.9.1
Xenowings gets its sound effects back, Doom's GPU wait loop no longer eats a RISC overclock,
and the desktop app gains shaders on every package, an Interface settings tab and a new font
picker.
v3.9.1 is a polish release on top of v3.9.0. For RetroArch and Provenance users it brings two
DSP/GPU accuracy fixes derived from the original chip netlists, a faster GPU idle-loop
fast-forward, a GDB stub that works with stock gdb, a framebuffer bounds fix, loader fixes for
twelve homebrew and demo files, and working legacy MSVC Windows builds again. With default
settings the cartridge corpus is byte-identical to v3.9.0 except Xenowings (sound effects now
play), a frame or two of Skyhammer (a GPU divide by zero now returns the hardware's value), and
the twelve files the loader now places where they were linked. No option keys were removed, no
listed option values changed, and the savestate format stays v17.
Core
- Xenowings shot and explosion sounds play again
(#895,
#954). A store issued right after a
divnormally writes the register's old value (Atari bug list item 2, modelled since v3.7.1).
The jag_sim netlists show the exception: the scoreboard compares an indexed store's offset
field against the divide's target as if it were a register number, and when they match the
store waits for the quotient. Xenowings' sound mixer hits that case (store r7,(r14+7)), its
joypad reader does not (store r8,(r14+1)), so both now behave as on hardware. Rule and
citations:docs/jtrm-errata.mdB25. - RISC divide keeps 33 bits (same PR). Divisors of
$80000000and above, 16.16 divides
that overflow, and divide by zero now give the netlist's result (B26). The only corpus change
is Skyhammer: frames 1488 and 2072 in a 3000-frame HLE / Fast-blitter run, audio identical. - GPU idle-loop fast-forward covers more loops
(#957). A wait loop may now contain a
long store when its address and value never change, the target is GPU local RAM, and the loop
never reads what it writes; and the probe reaches the fulljrrange (30 bytes, was 14).
Doom's wait loop is now skipped: instructions per frame on Doom EX drop from 83 M to 36 M at
1x and from 141 M to 37 M at RISC 2x, so a 2x overclock costs about the same as 1x. Video,
audio and savestate hashes are identical with the change on 160 carts (six configurations
including 2x), with idle skip off, and on 35 CD images in HLE and BIOS mode. - Framebuffer overrun fixed
(#944,
#946). Wild video registers (seen with
a garbage custom boot ROM) could make the scanline renderer write past the end of the host
framebuffer. Rows the buffer can't hold are now skipped, and a left edge past the row width
is clamped; valid video states are unaffected. v3.9.0 was affected. - GDB remote stub works with stock gdb
(#936,
#948). It now serves a real 68K
target description, sobrew install gdb(orgdb-multiarch) connects with only
set endian big.detachandkillleave the emulator running, watchpoints work (one slot),
and longmonitoroutput is no longer cut at 512 bytes;monitor traceshows the newest
entries. LLDB can read memory but has no 68K target. Recipe:docs/gdb-stub-guide.md. - Twelve homebrew and demo files load where they were linked
(#971,
#972,
#973,
#974,
#978,
#979). The loader now reads plain
GEMDOS/DRI601Aexecutables (Mandelbrot Demo) and Jaguar ServerJAGRtype 2 images (INTRO,
INTROMOD) with their own layouts. Headerless BJL programs that used to be mapped as cartridges
now load as RAM programs at$4000(Hubble Fade, Hubble Nebula, Drumpad2), and Painter (bin) is
placed at$10000. Images linked at$802000are mapped there (Rayman Demo.jag/.rom,
BadCode4 (Metal)/(Modified)(rom)). A cart whose$404vector is erased ($FFFFFFFF) is
entered at$802000when a program starts there (Phase Zero (PD), and the Atari Jaguar Developer
CD BIOS.j64, which now runs instead of showing a black screen). In a full corpus sweep 16
matrix cells improved and none regressed; no other file loads differently. - Legacy MSVC builds link again
(#981,
#982). The libretro buildbot's MSVC
2005 and 2010 Windows builds have failed since v3.9.0 on an unresolvedsnprintfin the debug
interface. The RISC disassembler header now includes the pre-2015 shim itself. MinGW Windows
builds were not affected.
The desktop app
- Shaders everywhere. librashader is now built from source in CI, so the Intel slice of
the macOS app, the AppImage and the.debship a working shader runtime
(#955), and the Flatpak builds it as
its own offline module (#953). When the
runtime is unavailable, the Shader section says why and links to the docs. - Settings > Interface (#941). Theme,
font, frame-rate display, the controls overlay, resume, library display and desktop options
moved out of Video and Storage into their own tab. Config keys are unchanged. - Font picker (#943). Pick any font
installed on the computer; favorites and recents; every name is drawn in its own typeface;
and a separate monospace font for the debug windows, shown as samples. Fonts are scanned in the
background the first time the list opens. - Smoother pacing when a game can't keep up
(#956). The app no longer sleeps or
waits for vsync while it is behind: Doom at RISC 300% (idle skip off) went from 45 to 52 fps on
an M2, against 55 for the core alone. - Fixes: the BIOS selector picks the file you click when the same dump is in several folders
(#940); the frame-rate label no longer
draws over menus; duplicate ImGui IDs in the disc menu, option lists and cheat lists are gone.
Downloads
- Every macOS download is signed and notarized
(#989,
#990): the core.dylibs,cue2cdi,
the Jaguar CD tools and the app, so Gatekeeper opens them without a right-click. Until now only
the app was. - The macOS Jaguar CD tools work on every Mac
(#993,
#994). Thechdmanin
jagcd-tools-macos.zipneeded Homebrew's SDL3, ran only on Apple Silicon and required macOS 26.
It is now built without SDL, universal (Intel and Apple Silicon), for macOS 11 and later.
Website
- The download page is regrouped by platform and architecture, with a Nightly / Latest / Older
releases picker (#958). - New app screenshots: achievements with real artwork, Jaguar CD, themes, debug tools, and a
gdb recipe (#959). - The release log is generated from these notes, and the pages are current to v3.9
(#964). - The app page uses the same release picker as the Download page, every screenshot opens in the
lightbox, and the home page has a strip of 16 game screenshots
(#970). - Links shared on social media show a screenshot collage for the home page and a card of app
screenshots for the app page, and the favicon is the app icon
(#985). - The compatibility matrix no longer says a game runs when its 68K crashed in the first second
and the screen stayed black. Those rows are now marked unverified,? (trap_loop)
(#975,
#980).
Known issues
- Doom's attract demo runs too fast at every setting; gameplay is close. The GPU finishes a
frame in 1-2 fields where hardware needs 4-8
(#401). The timing options help only
at RISC 1x, since an overclock speeds the GPU back up. - Blit Memoization, DRAM Timing and GPU/DSP Pipeline Timing switch the idle-loop
fast-forward off for every game while enabled, so overclocking with them on costs the full
price. Leave them off unless a title needs them. - Shaders are verified to load on every package, but rendering is only checked by hand on
macOS (CI has no GPU). - Signing. Every macOS download is signed and notarized; Windows packages are not signed yet.
- The other v3.9.0 known issues still apply (RetroAchievements for
.chd/.cdi, LAN-only
link play, second instance on double-click on Windows and Linux).
Upgrading
- RetroArch / Provenance: drop-in. The core reports v3.9.1; options and savestates (v17)
carry over. - App: install over v3.9.0. Settings carry over; the moved options appear under
Settings > Interface.
Artifacts in this release
SHA256SUMS.txt
VirtualJaguar-3.9.1-linux-aarch64.AppImage
VirtualJaguar-3.9.1-linux-x86_64.AppImage
VirtualJaguar-3.9.1-linux-x86_64.flatpak
VirtualJaguar-3.9.1-macos-universal.zip
VirtualJaguar-3.9.1-windows-arm64-setup.exe
VirtualJaguar-3.9.1-windows-arm64.zip
VirtualJaguar-3.9.1-windows-x64-setup.exe
VirtualJaguar-3.9.1-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.9.1_amd64.deb
virtualjaguar_3.9.1_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.
e9a198cc30eaf9987cf0f89ea2c65ddd297e4bf7a8843c9d097e52635eb92115 VirtualJaguar-3.9.1-linux-aarch64.AppImage
a52ab7b67ab10aa7839c16b5003f903aca687d4457b64b824b1b9bbb91890cad VirtualJaguar-3.9.1-linux-x86_64.AppImage
0ed7333bd52d6afa3322d8c715fcdbd3bfea4f5d3cba99225d29d653a8271485 VirtualJaguar-3.9.1-linux-x86_64.flatpak
0ad329e454433082830fe1638f53a3a4ae7acf090f7186372327fba801cacbe8 VirtualJaguar-3.9.1-macos-universal.zip
a1f884c7184ceeab40910e4f836eec53341940a38a9a7481800d753e5dc42fe9 VirtualJaguar-3.9.1-windows-arm64-setup.exe
449306afc806efbd0f47d09f180812bfcd0d34f94a96b725d93617f21349abb4 VirtualJaguar-3.9.1-windows-arm64.zip
9913eade70878c9ee3b29d843cc02e9cf5c0e69b50365072b3d2a3cc91e0a850 VirtualJaguar-3.9.1-windows-x64-setup.exe
2c8a8a7d8a1ed763be71c7add30b4ed2926b113c0050ac6b22f4094760cbca59 VirtualJaguar-3.9.1-windows-x64.zip
b926e41185057ee9204aaa0aaafff53ceec2cbb6d4f37e478edf7a7ddb353332 cue2cdi-linux-x86_64
7eca340a32a9633d9cf6c81c8065e27d750339047051036cc1223b763a7a2b92 cue2cdi-macos-universal
2d20101bdb3dcc30a932d08a64bb09a20d7aa7fd2f6d71ca445f8505213acb18 cue2cdi-windows-x86_64.exe
6224a266a9505296ac1c37e221f8f2fd016245d9a8c688f026ab3547d61f03ed jagcd-tools-linux-x64.zip
31da53e40de738d413c477e4f683b13e86de00cf85fb7be6b3db29397df3a103 jagcd-tools-macos.zip
0b246bfb671247cc1f4df66be4f748b4936ee1bd798ba5e689a7446f1824b6c7 jagcd-tools-windows-x64.zip
31388952e051fb87a0e731a81f998e2c3b1c38c693f10048c69994071fd84e90 virtualjaguar_3.9.1_amd64.deb
623a28d1f21f2d6ae05b9bad8416341b0c13c5bd300ee3e5e8830d3c5dbccfcc virtualjaguar_3.9.1_arm64.deb
c7f4c771d1a0c2212fddbe82f215635a1c5a414ce44fefdf79146c8000957e50 virtualjaguar_libretro-android-arm64-v8a-debug.tar.gz
7b5db48040cf8ebdf2ba574efbfe0991f83cbe70954d44a79aa8de263f5c0b1c virtualjaguar_libretro-android-arm64-v8a.so
d1ac7ea0289f3ee7436c60ae1bbb803cc6dc0045de76e5e77810a6c4d14c77bc virtualjaguar_libretro-android-armeabi-v7a-debug.tar.gz
19a57e06a237f40544080f94e5c804e01ac78557f1817927024db0ff32bd50b5 virtualjaguar_libretro-android-armeabi-v7a.so
8dbf9f1859adea67099ce0ca76dc3d7f5af27fec544b86473e7abe93bdb3d51c virtualjaguar_libretro-android-x86-debug.tar.gz
e5fe33d8029fdd9e621f373f98a07e8a8ae2c31a754bdb8eed247a1b270077d4 virtualjaguar_libretro-android-x86.so
50f5ca334f9db79fa7e6fe68e2009f7efe8700ff7fbd1464af3a874c9760c711 virtualjaguar_libretro-android-x86_64-debug.tar.gz
cd677eeb310e95c7cb1e9ef0ecc1fc37dc011cedf45b27bb5880f1290c94f93f virtualjaguar_libretro-android-x86_64.so
b68e4d6ce7b388ba375ef06ef846bbb7461341a7b7bd888139174852e019cbed virtualjaguar_libretro-emscripten-wasm-debug.tar.gz
7ad99e762f689c1790c3978d165d56a798ef23ce2fcb16e0165bba9dda8b6a42 virtualjaguar_libretro-emscripten-wasm.bc
95e5428c4e82f330f9706efb5b3bebbe06d23a1709e88586f968ea9f419a72ce virtualjaguar_libretro-ios-arm64-debug.tar.gz
f1942ab01f02d3bb599468a2539b5b995e406b07db9393783c1ffa5a247d1605 virtualjaguar_libretro-ios-arm64.dylib
c125bc4100145448b274156ca4d569911f0500e9f1d20649d1bce76e51beadb6 virtualjaguar_libretro-linux-aarch64-debug.tar.gz
9508fa5899aab1b0a2d85b23d3d7896b1769dd5c2ad65a805b7251a189925326 virtualjaguar_libretro-linux-aarch64.so
8aef6a7b5176ac32e814a4e7d4285323536afb23adc4f6585c338cbd759c866b virtualjaguar_libretro-linux-i686-debug.tar.gz
0073992d460b3f76d152630fc236979b26154300f4dea26c66ffb9fe6759c763 virtualjaguar_libretro-linux-i686.so
87c374b8a60e114512511d9281283c201fc049c71d45533e25b2808364115d30 virtualjaguar_libretro-linux-rpi1-armv6-debug.tar.gz
a5f89d0da9861c6b89b23d1b1d4edc6192a5d00fe06daeabc3e246af021c1be0 virtualjaguar_libretro-linux-rpi1-armv6.so
7d381daef1c0f43955b3a52492491d51518ec1c4292e262c7f22bdf88b7e728d virtualjaguar_libretro-linux-rpi2-cortex-a7-debug.tar.gz
0941aea986e292314b9af62e1a4e58fad1365f0b3134048bd30887ef477f4e00 virtualjaguar_libretro-linux-rpi2-cortex-a7.so
29f5e63851ef3472dad83a8ac17316dab07c745ad25d945191bd295878d93795 virtualjaguar_libretro-linux-rpi3-cortex-a53-debug.tar.gz
218a8904c3aaa7e172d718e2c548d4e420de8351e6207b8904fc23706f51de5a virtualjaguar_libretro-linux-rpi3-cortex-a53.so
d0ec8310dfda4a577d066c1bf996ba5c1954804b268d00574c0b6fce5a9050f8 virtualjaguar_libretro-linux-rpi3_64-cortex-a53-debug.tar.gz
c88add5ee41d781c2bd86e6221f651e7f0fba224cd9339f53c9c6425516941de virtualjaguar_libretro-linux-rpi3_64-cortex-a53.so
ef11e369da73513f88f3c51cc068f6d1adb947e19b4cea1e1915178f374fdab6 virtualjaguar_libretro-linux-rpi4-cortex-a72-debug.tar.gz
c104af5c85c96990837a2b0868a0cab3c4b30ef46f9a3d6910050187a85f8d15 virtualjaguar_libretro-linux-rpi4-cortex-a72.so
fb6a5b898261f89a41bc15919318dc735f6eaa609ec6341f2e8289684a20e762 virtualjaguar_libretro-linux-rpi4_64-cortex-a72-debug.tar.gz
dce9d921a744de6c49cd6c8c2ebc605d9a0fbdacfb4cb2e42e08bd1ddda8eddf virtualjaguar_libretro-linux-rpi4_64-cortex-a72.so
0c0d76965c1d38852b7df0d779f6f0faab4f17f69e699d55b1f8f8765bab801a virtualjaguar_libretro-linux-rpi5-cortex-a76-debug.tar.gz
ab1e639b44c3dd7e4c233658789b44dac27fa970525f823a1760da9351c33607 virtualjaguar_libretro-linux-rpi5-cortex-a76.so
aa067ae8f22df7dcf8cf4623b8b073d8c8cedf08115dbf16aaf78f3575eed0b5 virtualjaguar_libretro-linux-rpi5_64-cortex-a76-debug.tar.gz
fb185b17e52801b8ffa5afe839f77aca88ed06e76aca53361589abd71e0cb7b8 virtualjaguar_libretro-linux-rpi5_64-cortex-a76.so
9643121bb5ee411cf49609f6b418fb63722f724a8e5e656322776b61f0e4005c virtualjaguar_libretro-linux-x86_64-debug.tar.gz
2cca4b4783deddc1dba3fcc5f537719a349fe19c73c26f68707f35f87f979a8b virtualjaguar_libretro-linux-x86_64.so
978c29da934bb0ab06aeb5e1bcedbd0a397d8da2d0372ac32d95758604c60c3c virtualjaguar_libretro-macos-arm64-debug.tar.gz
9717fc3397d5f91768afe3309a0676397435d5da3870e65827816b7567526212 virtualjaguar_libretro-macos-arm64.dylib
521efb0e102e706756c439dac35ac8946795303d6e164a898e26e1e22f2686ad virtualjaguar_libretro-macos-x86_64-debug.tar.gz
4ba60526a7cef4e6e588f0cb20fa34cec6c73b01d70a47092a445a278f419af6 virtualjaguar_libretro-macos-x86_64.dylib
11d462f0adf1adfa7655a54ceddd21030717a07cb4a0aad661dd5e7006499ce7 virtualjaguar_libretro-switch-debug.tar.gz
cb945562db710ca0c66a72b2b23e9afa5edd897e74f98f2cc659ca17abba63f9 virtualjaguar_libretro-switch.a
904077d035a0046483ca9920f5a289de47fdb76b8c0edb0e684324fb54968576 virtualjaguar_libretro-tvos-arm64-debug.tar.gz
bd280de4206a17341b676909f1c27ed789f31b58cf51373fb9cc97b34d48edcb virtualjaguar_libretro-tvos-arm64.dylib
2bcbb6b7267b5d5cddb29a1a9b81da39344fe164ca9548340a89387fcef17d5c virtualjaguar_libretro-vita-debug.tar.gz
26e2f05b783c70e14354165d5eb3908d21dfe8a6f6221c6efda830a39de0b451 virtualjaguar_libretro-vita.a
67151be40c952620e2ba6b4e1232363cb6ff66895a54847315169355f331f53b virtualjaguar_libretro-windows-i686-debug.tar.gz
dd82fcd5bb272a586c64094d8a69e437249a54a3dab238f296e568afa152ea2b virtualjaguar_libretro-windows-i686.dll
e1d8e93f51b02710008b3f8cde0b746b29e27a61266407900c7a27169ed30a2f virtualjaguar_libretro-windows-x86_64-debug.tar.gz
7442963170a48cfce2fddb48ec087ddabfdd8d4ee03eeb85154ede07a0b48f2e virtualjaguar_libretro-windows-x86_64.dll
2dd5a5cafb2ab02d79559cbde00118d405fb77878eb356af169bd2855df9b456 virtualjaguar_libretro.info