A standalone desktop front end for the same core. It runs on macOS,
Windows and Linux with no RetroArch installed, and it drives the core
through the same retro_* API RetroArch uses, so every core
option and save state behaves the same in both. New in v3.9.0; it carries
the core’s version number.
Two ways to play: the RetroArch core, or this app. The core is not going away, and nothing here changes how it works. Jump to the screenshots.
{{APP_DOWNLOADS}}Virtual Jaguar.app in a zip,
Apple Silicon and Intel in one binary, macOS 11 or later. No disk
image.portable.txt keeps settings in a data
folder beside the program); the installer is per-user by default.
x64 and native ARM64 builds..deb for x86_64
and aarch64, built on Ubuntu 22.04; the .deb installs
under /usr/lib/virtualjaguar with a link in
/usr/bin. The Flatpak bundle (x86_64) installs with
flatpak install --user and takes its runtime from
Flathub.develop on
every push, gated on compiling, not on the test suite. The installer
takes --channel nightly.More installer options, and the PowerShell alternatives, are on the home page. Packaging, signing and the package-manager templates are in app/packaging/README.md.
Click a picture to enlarge it (Esc closes, arrow keys move on). All real captures of the app with a demo library: no personal data, no signed-in account.
.slangp shader presets through librashader, with the slang-shaders CRT, scanline and interpolation families bundled; aspect fit, integer scaling or stretch.
The same saved moment, plain and through the bundled
crt-gdv-mini-ultra-trinitron preset (an aperture-grille,
Sony Trinitron style look). Both use aspect fit: the picture keeps its
4:3 shape and is letterboxed, never stretched.
Shaders are optional: if a preset does not compile or librashader is
missing, the app draws the plain picture and says why. Point
Preset folder at a full slang-shaders checkout for the
rest, and preset parameters get sliders.
Platform notes: every package bundles the librashader
runtime: macOS (Apple Silicon and Intel), Windows, the AppImage, the
.deb and the Flatpak (details in the
packaging notes).
.cue discs are identified.
The RetroAchievements pictures use the app’s built-in mock server, so no real account or sign-in was involved. It answers with the real, public achievement list and artwork of the games shown (from retroachievements.org and its image host); the account, progress and unlock dates are made up. Discord was off for its picture.
gdb can set breakpoints, read memory and registers and step the 68000 (the GPU and DSP via monitor commands). Off by default, loopback only. LLDB can attach but cannot debug the 68000. The GDB remote debugging guide has the rest.$ virtualjaguar --option virtualjaguar_gdb_stub=enabled --option virtualjaguar_gdb_wait=enabled game.jag
$ gdb -ex 'set endian big' -ex 'target remote 127.0.0.1:2345'
(gdb) x/3i $pc
(gdb) stepi
The first option turns the stub on (Settings, search “gdb”,
does the same; reopen the game); the second halts the 68000 before its
first instruction so gdb attaches at the start. Use a gdb with m68k
support (Homebrew gdb; gdb-multiarch on Debian
and Ubuntu); set endian big is needed, or every word reads
byte-swapped.