Virtual Jaguar libretro is an open-source Atari Jaguar emulator — cartridges and Jaguar CD — packaged as a libretro core, so it runs everywhere RetroArch runs.
All four Jaguar processors are emulated (68000, GPU, DSP, Object Processor), plus the CD drive's BUTCH controller, the link port, the Memory Track cartridge, the Jaguar GameDrive, and the controller-port peripherals — ST/Amiga mouse, Tempest rotary, analog and driving controllers, and the light gun. CI builds 16 platforms on every release tag. Every accuracy, performance and compatibility claim below links to the commit, pull request, test log or committed document behind it.
Cybermorph, frame 850. Stock / true-color / difference. The difference panel is amplified 64× on purpose — the per-pixel delta is deliberately subtle. Details and numbers in Enhancements.
This is a libretro core, so the whole frontend feature set applies — and the core does the work required to make the harder ones actually function:
| Frontend feature | What the core does to support it |
|---|---|
| RetroAchievements | Exposes libretro memory maps and asserts achievement support; a harness checks the rcheevos Atari Jaguar console mapping resolves against this core's RAM (test_memory_map.c, test_rcheevos_e2e.sh) |
| Run-ahead, rewind, netplay | Declares deterministic savestates, backed by a harness that reproduces RetroArch's rollback loop and demands byte-identical replay (PR #327, test_runahead_determinism.c) |
| Save states that keep working | Every savestate format any released version of this core ever wrote still loads — versions 1 through 8, with the one documented exception that v1 predates four DAC fields and restores them to defaults (savestate-compat.md) |
| Shaders, overrides, remapping, fast-forward, screenshots, streaming | Clean XRGB8888 video and 48 kHz stereo audio out of libretro.c; RetroArch does the rest |
| Cheats | Native cheat-code decoding, covered by the test suite |
- Jaguar CD, two ways. CUE/BIN and CDI images boot through a high-level-emulated CD BIOS or through the real CD BIOS driving emulated BUTCH/DSA/FIFO hardware. Audio CDs play and the Virtual Light Machine visualizer works. (v3.0.0 notes · v3.1.0 notes)
- Damaged-rip repair. CDI images from the old V2 ripper that lost each track's leading bytes used to be rejected outright. The loader now classifies the boot track and repairs slides or head-loss at read time; when bytes are provably gone it logs a precise diagnosis instead of a black screen. (PR #342)
- JagLink / netlink link-cable networking. The Jaguar's link-port serial hardware is emulated at the register level with a TCP transport and a multi-peer hub — Doom deathmatch over LAN validated end to end. (user guide · design doc)
- Controller-port peripherals, not just the pad. The ST/Amiga mouse adapter sold by AtariAge and The Brewing Academy (and its PS/2 variant), emulated from a sourced pin-level mapping including the fact that the real adapter is row-blind — all three wiring cases ship as selectable devices. Plus the Tempest 2000 rotary, Atari's TR10 bank-switching analog and driving controllers, the port-1 light gun, and the early-board motherboard ADC at
$F17C00that BattleSphere's analog stick actually reads — with per-axis dead zone, offset and response curves on every analog source. Every Jaguar controller Atari shipped is now emulated too: the Team Tap 4-player adapter (validated through the real bus against AtariJaguarPadtest), the Pro Controller six-button pad, and — best-effort, unvalidated against any known software — the 6D flight stick's six degrees of freedom. Every one is opt-in: with none selected the controller registers are bit-identical to before, proven by a test. (user guide · mouse mapping · light gun design · epic #428) - The Jaguar Voice Modem. Ultra Vortek's modem netplay works — dial, answer and play a match — with the modem's command set derived from the game's own ROM rather than guessed. (
voice-modem.md· #481) - Jaguar GameDrive (JagGD). Detection plus full 16 MB bank switching (6×1 MB pages over 16 banks), implemented from RetroHQ's published GDBIOS bindings, so GD-locked homebrew boots. (interface notes · v3.1.0 #312, #320)
- Memory Track saves. The Jaguar CD's Memory Track cartridge is emulated — a flash window at
$900000plus an HLE'd NVM BIOS module — so CD titles keep their saves, round-tripping through the frontend's.srm. (memory-track.md· PR #259) - A crash watchdog that names the bug. A runtime watchdog recognises hang and crash signatures (GPU/DSP program-counter escape, wedges, video stalls, CD seek wedges) and writes the diagnosis into your frontend log at the moment of failure — so a bug report points at the subsystem, not just "black screen". (
crash_detect.c) - No BIOS files required. The console boot ROM and both Jaguar CD BIOSes ship inside the core. See BIOS.
- Hardware-referenced accuracy. Emulation decisions are checked against the Jaguar Technical Reference Manual, and an "acid" suite of hardware-behaviour assertions gates CI (
test/acid). A distilled, machine-readable JTRM summary is committed asdocs/jtrm-*.md.
We know of no other Atari Jaguar emulator offering a true-color rendering mode or an internal-resolution upscaling track like the ones described below. If we're wrong, we'd genuinely like to know — tell us in Discussions and this file gets corrected. We make no other claims about any other emulator's internals.
Features the original hardware never had, built so the stock pipeline stays bit-identical when they're off — and measured, not just screenshotted, when they're on. Every one is a core option you set in your frontend's core-options menu.
The Jaguar's blitter computes Gouraud-shaded intensity with 16 fraction bits of precision, then throws them away writing a 16-bit CRY pixel. The true-color shadow framebuffer keeps them: with virtualjaguar_true_color = enabled, shaded pixels are also stored at full precision (CRY chroma × 24-bit intensity) in a shadow buffer, and the scanline renderer substitutes them at output time. Game-visible RAM stays bit-identical — the game cannot tell the difference.
Measured on Cybermorph, both blitter engines agreeing exactly (PR #341 validation record):
| Measurement | Result |
|---|---|
| Unique on-screen colors | 304 → 450 (peak frame 423 → 702) |
| Pixels refined | 45.9%, every changed channel moving by exactly one quantization step |
| Difference panel above | amplified 64× — the per-pixel delta is deliberately subtle |
| Identity with the option off | 600 frames across three cartridge titles hash bit-identical to develop |
| Cost | CRY 16bpp only, default off, ~8 MB allocated only when enabled |
Honest caveat: Checkered Flag shows no change — it turns out to be flat-shaded and never uses blitter Gouraud at all. This is banding removal on shaded geometry, not a filter repainting the image, so titles that don't shade don't move.
Design doc: docs/true-color-shadowfb-design.md. Status: shipped in v3.2.0 (PR #341).
Two independent clock-scale options — the 68000 (virtualjaguar_m68k_clock_scale, 0.5×–3×) and the RISC GPU/DSP pair (virtualjaguar_risc_clock_scale, 0.5×–2×) — for framerate-limited titles. Bus and DRAM latencies are charged in wall time under any clock scale (the cycle-domain contract), defaults are bit-identical to previous behaviour, and audio pitch is proven unchanged at every scale by CI rows running at non-1× scales. (v3.1.0 notes #314, #316 · issue #318 via PR #337)
virtualjaguar_cd_read_speed: 1× (hardware-faithful) through 2×/4×/8× up to instant, trimming load screens on the HLE CD path. Implemented with streaming reads so accelerated transfers can't overwrite in-flight game code — the failure mode instant reads used to cause is documented, fixed and regression-tested. (docs/cd-read-speed.md)
virtualjaguar_crash_detect (on by default) checks once per frame for known failure signatures and writes the diagnosis into the frontend log. Cost when enabled: one indirect call plus a ~256-pixel hash per frame. (src/core/crash_detect.c)
virtualjaguar_pertitle_defaults (on by default) applies known-safe enhancement presets automatically for recognized games — only for options you've left at their default value. Any option you've changed yourself always wins, and disabling this option restores stock behaviour for every title. 21 entries (romhack aliases included — JagDoomEX is recognized by both patched CRCs and enhanced identically to retail Doom), derived from committed census evidence, including Alien vs Predator (2x internal resolution + true color), Doom (2x + true color), Missile Command 3D (2x + true color), Hover Strike (2x), and Cybermorph (true color). New entries require committed evidence — propose candidates via issue #368.
virtualjaguar_internal_resolution (1x default, 2x; restart required) renders above native resolution inside the core — and the extra pixels are source data the hardware sampled past, not interpolation or a filter. The blitter walks textures with 16.16 fixed-point steps and rounds each output pixel to one texel; at 2× those same walks are re-sampled at double density into a shadow surface. The emulated machine never sees it: the stock framebuffer stays bit-identical and 1×-vs-2× savestate digests match, both proven per-title by committed tooling (hires_state_digest).
As of v3.3.0 the pipeline is complete across every path that carries recoverable detail:
| Piece | What it supersamples | Shipped |
|---|---|---|
| Stage 2 | fractional-walk blits (3D texture walks) | v3.2.0 |
| Stage 3 | Object Processor scaled sprites (SCBITOBJ) | v3.3.0 |
| Stage 3 CLUT | scaled 8bpp CLUT objects — 76–81% of scaled pixels in 2D titles | v3.3.0 |
| RGB16 renderer | delivery for RGB16 direct video mode (previously CRY-only) | v3.3.0 |
JagDoomEX (the per-title database recognizes both patched CRCs and applies Doom's 2×+true-color preset), demo frame machine-selected for peak sub-pixel density: 1× / 2× / difference amplified 8×. 14.7% of the frame's pixels change; the diagonal mortar seam resolves continuously at 2×.
Measured coverage in real scenes: Alien vs Predator 13–31%, Doom 8.7–13.9%, Val d'Isère Skiing 0% → 2.5–7.2% (its content is scaled 8bpp CLUT in RGB16 mode — both v3.3.0 pieces are load-bearing), Missile Command 3D 5–6%. Titles that magnify their textures (Towers II, I-War) measure a true zero — there is nothing to recover, and the page says so. Full evidence with A/B figures: jaguar.provenance-emu.com/enhancements. Epic #338.
virtualjaguar_blit_memo (default off, per-title via the enhancement database) skips blits whose entire input state provably matches an earlier identical blit — some titles re-render an identical scene every engine cycle while idle. Output is bit-identical by construction; a verify mode executes every would-be skip and checks it. 2,546,482 corpus verifications, zero divergences. (docs/blit-memo.md · #411)
Generated by test/tools/cd_boot_matrix.sh into docs/cd-boot-matrix.md — not typed in by hand. Every image is exercised in both CD modes: HLE (high-level-emulated CD BIOS) and BIOS (the real CD BIOS driving emulated BUTCH/DSA/FIFO hardware).
| Measured from the committed matrix | Count |
|---|---|
| Disc images in the corpus | 11 |
| Reach game code in HLE mode | 11 |
| Reach game code in real-BIOS mode | 11 |
Titles in the current corpus, all recorded GAME_CODE in both modes: Baldies (CUE and CDI), Battle Morph, BrainDead 13, Dragon's Lair, Highlander, Hover Strike — Unconquered Lands, Iron Soldier 2, Myst, Primal Rage, Space Ace.
Read this honestly. "Reaches game code" means the 68000 was observed executing game-owned code in RAM with a healthy, non-looping PC trace — a headless regression gate, not a completed-the-game certificate. Rows are disc images, not distinct games (baldies.cdi and Baldies (USA) (Rev 1).cue are the same title from two rips). Several rows also record a cd_seek_wedge or video_stall watchdog signature alongside a passing trace; those are frequently benign (Myst fires one during the intro movie's ~6 s all-black pause while the movie plays from RAM) — the stage column, not the watchdog column, is the gate, and the matrix doc discusses each case. Runs are on the maintainer's own images at the build stamp recorded in the matrix, so your dump may differ.
Cartridge titles have no equivalent committed per-title matrix yet. Named, verified fixes and open known issues are tracked in docs/cart-issue-triage.md and the release notes; the CD backlog lives in docs/cd-known-issues.md. Open, tracked examples: Doom combat pacing still runs fast (#313), Battle Morph runs fast (#331), Battle Sphere menu text renders dark.
libretro also hosts a community-maintained Atari Jaguar compatibility list — a separate document from the machine-generated boot matrix above, with different methodology and a wider scope.
If a title works (or doesn't) for you, a report in Discussions is genuinely useful. Attach your frontend log: the crash watchdog writes the failure signature at the moment things break.
- Install the core. In RetroArch: Main Menu → Online Updater → Core Downloader → Atari - Jaguar (Virtual Jaguar). Or download a build from Releases and drop it in your
coresfolder. - No BIOS files needed. Nothing to hunt down — see BIOS.
- Load a game. Supported:
.j64,.jag,.rom,.abs,.cof,.bin,.prg(including inside ZIP archives), plus.cue,.cdi, and.chdfor Jaguar CD images, and conservative headerless raw homebrew loading. CHD files must include session metadata from a current chdman; seedocs/jagcd-chd.md.
| Option | Why you'd touch it |
|---|---|
virtualjaguar_usefastblitter |
Fast vs. accurate blitter. The accurate path is SIMD-accelerated (SSE2/NEON); a few titles still prefer fast |
virtualjaguar_true_color |
Full-precision Gouraud shading (see Enhancements); default off |
virtualjaguar_cd_boot_mode |
HLE CD BIOS (default) vs. real CD BIOS. Audio-only discs need Auto/Real BIOS |
virtualjaguar_cd_read_speed |
Trim CD load screens |
virtualjaguar_m68k_clock_scale / virtualjaguar_risc_clock_scale |
Overclock a framerate-limited title |
virtualjaguar_pal |
NTSC (320×240) vs. PAL (320×256) |
virtualjaguar_crash_detect |
Leave on — it's what makes your bug report actionable |
virtualjaguar_alt_inputs, virtualjaguar_p*_* |
2-player input and full numpad remapping |
The canonical, always-current list is the core options reference on docs.libretro.com.
Cartridge EEPROM/SRAM and the Jaguar CD Memory Track both go through the libretro SRAM interface, so RetroArch writes them to its saves folder as <gamename>.srm; save states land in the states folder. Nothing is written next to your ROMs.
No BIOS files are required. Both Jaguar console boot ROMs (Series K and Model M) and both Jaguar CD BIOSes (retail and developer) are embedded in the core, so every boot mode works out of the box. External images are supported as an override for people who want a specific revision — never as a requirement.
- Cartridges —
BIOS (Cartridges)chooses between the HLE BIOS (default: the core performs the boot setup itself, skipping the boot animation) and the real boot ROM. The HLE BIOS reproduces hardware-equivalent post-boot state — MEMCON1, clocks, GPU auth magic, OLP, video-interrupt compare, exception vectors, TOM/JERRY timing — pinned by 219 checks intest_hle_biosacross NTSC and PAL. GPU-only / jagcrypt carts (the BootIntro demos) auto-enable the real boot ROM even when this is set to HLE, because they contain no 68K program for the HLE path to start. - CD discs —
CD Boot Modechooses between the HLE CD BIOS (default, recommended) and a real CD BIOS (Real BIOS, orAuto, which currently also boots the real BIOS). This overrides the cartridge setting for CD content. If a real-BIOS mode is selected but no CD BIOS can be staged at all, the core falls back to HLE rather than failing.
Cart BIOS Type (restart required) picks the console boot ROM for the real-BIOS cartridge path:
| Setting | Image |
|---|---|
Series K (default) |
The original Jaguar boot ROM. Embedded. |
Model M |
The later revision (patch address $4804) most size-coded BootIntros target. Embedded, but an optional jagboot_m.rom in the system directory root replaces it. |
Custom |
A 128 KB image loaded from the system directory — see below. |
For Custom, the core searches these names, in this order, across system/, system/Atari - Jaguar/ and system/jaguar/:
jagboot.rom · boot.rom · boot0.rom · [BIOS] Atari Jaguar (World).j64 · [BIOS] Atari Jaguar Stubulator '94 (World).j64 · [BIOS] Atari Jaguar Stubulator '93 (World).j64
Filename priority beats directory depth — a jagboot.rom two folders down wins over a boot0.rom in the root, because the filename is your explicit signal about which image you meant. If Custom is selected and nothing usable is found, the core logs a warning and falls back to the embedded Series K.
In the real-BIOS CD modes only (CD Boot Mode = Real BIOS or Auto), a CD BIOS file in the system directory takes precedence over the embedded images. It must be exactly 256 KiB, and can sit in system/ or in an Atari - Jaguar/, Atari - Jaguar CD/, jaguar/ or jaguarcd/ sub-folder, under one of these names:
| Type | Accepted filenames |
|---|---|
| Retail | [BIOS] Atari Jaguar CD (World).j64 / .rom / .bin |
| Developer | [BIOS] Atari Jaguar Developer CD (World).j64 / .rom / .bin |
| Generic | jaguarcd_bios.bin, jagcd_bios.bin, jaguarcd.bin, jagcd.bin, Jaguar CD BIOS.rom, Jaguar CD BIOS.bin |
CD BIOS Type decides the search order, not just the embedded fallback: the selected type's filenames are tried first, then the generic names, then the other type's. A lone file of the "wrong" type still beats falling back to embedded — you put it there on purpose.
The filename only decides what gets tried, and in what order. The contents decide what is accepted. Both loaders checksum what they read:
| Outcome | Cartridge boot ROM (128 KB) | CD BIOS (256 KiB) |
|---|---|---|
| Recognized | CRC32 matches one of four known dumps (Series K, Model M, Stubulator '93, Stubulator '94) — loaded, logged by name. | CRC32 matches the retail or developer dump — loaded, logged by its real revision. |
| Unrecognized | Loaded anyway with a warning. Custom images are the whole point of this setting. | Accepted only if the run address at $404 lands in $800000–$840000, with a warning naming the file as prime suspect if boot black-screens. |
| Rejected | Wrong size, or a short read. | Wrong size, short read, or a run address outside that window. |
So a genuine dump under the "wrong" name still loads and the log names the revision it actually is — but a file that is not a BIOS at all is refused rather than booted into a black screen. Read the log line: the core prints exactly which image it staged and where it came from at every boot.
If real-BIOS boots misbehave, remove or rename any BIOS files in system/ to fall back to the known-good embedded images.
The peripheral wave: mouse, Tempest rotary, TR10 analog and driving controllers and the port-1 light gun all ship, with per-axis dead zone, offset and response tuning (epic #428). Ultra Vortek netplay over the emulated Jaguar Voice Modem — dial, answer, play — plus automatic link mode and LAN host discovery so the link configures itself. Texture dump and replacement tier 1 for HD pack authoring, per-title enhancement hooks (shipping with zero rows — the mechanism, not the data), and cart boot-ROM selection including custom external images. CHD session attribution and boot-header search fixed. Full notes.
Hi-res completion and correctness: the internal-resolution track now adds real detail on every video mode and on scaled sprites (RGB16 renderer, Stage 3 SCBITOBJ supersampling, the 8bpp CLUT extension that reaches 2D titles). Val d'Isère's ground renders correctly — root-caused to the OB register byte order, settled from the original Flare/Atari TOM netlists after the JTRM proved silent. Doom savestate rollback is deterministic again (run-ahead safe, savestate v11, older states still load). Plus soft patching for cartridges, blit memoization, and the Cybermorph projectile fix under the accurate blitter. Full notes.
True-color Gouraud rendering and 2× internal resolution with blit supersampling shipped; Raiden's two long-standing bugs and Power Drive Rally's mid-game sound freeze fixed; damaged CDI V2 rips boot. Full notes.
Older release-cycle details
- True-color shadow framebuffer — full-precision Gouraud rendering, the opener of the #338 enhancement suite. (PR #341)
- Damaged CDI V2 rips boot — per-track boot-header repair. World Tour Racing reaches an in-game race and the Myst demo plays through the Cyan intro, in both CD modes; images whose bytes are provably gone get a precise logged diagnosis instead of a silent failure. (PR #342)
- EEPROM save-data corruption fixed — EEPROM data-out is sampled at
$F14000, the joystick register, and our read was destructive: an interrupt-context pad scan landing inside an in-flight EEPROM read stole data bits. On Raiden that flipped a stored$0000into$00FFand permanently disabled the music option — persisted back to the save file. Now 93C46-correct: reads sample, only the clock strobe shifts. Affects any title polling the pad from an interrupt during an EEPROM read. (PR #344) If you were hit by this, re-enable music in Raiden's options menu — the bad value may be sitting in your.srm. - Raiden boots in HLE mode — the HLE fast-boot path never programmed TOM's video-interrupt compare register, which Raiden inherits from the boot ROM rather than setting itself, so its VBlank ISR never fired. Black screen since #20/#70. (PR #339)
- CD FMV verification — a real-BIOS evidence table plus a documented CD boot-mode gotcha in the visual-verification harness. (PR #340)
Jaguar GameDrive support, clock-scale options, audio-CD / Virtual Light Machine playback, savestate compatibility restored for every released format, a ~22% smaller binary (the UAE 68K core shipped two complete handler tables and dispatched one), and the accurate blitter ~16% faster on blit-heavy titles (Tempest 2000 +16.2%, bit-identical across 132,912 compared blits). Full notes.
Jaguar CD support matured, JagLink networking, a compatibility wave (Wolfenstein 3D music, Pitfall, Tempest 2000, Alien vs Predator, Iron Soldier 2), and the hardware-referenced acid suite gating CI. Full notes.
Earlier: v2.3.2 · v2.3.1 · v2.3.0 · v2.2.0 · full changelog
make -j$(getconf _NPROCESSORS_ONLN) # Auto-detects platform
make -j$(getconf _NPROCESSORS_ONLN) DEBUG=1 # Debug build (-O0 -g)
make platform=ios-arm64 # Cross-compile target
make cleanOutput: virtualjaguar_libretro.{so,dylib,dll} at the repo root. Source is C89/GNU89-strict (the libretro buildbot uses MSVC); bash scripts/c89-lint.sh is a CI gate.
make test # full white-box test suite
./test/regression_test.sh ./virtualjaguar_libretro.so # screenshot regression
make benchmark # headless wall-clock perfFull contributor mechanics — branching, lint gates, commit style, pre-commit hook — are in CONTRIBUTING.md. New PRs target develop, not master.
Linux (x86_64, aarch64, i686) · macOS (Apple Silicon, Intel) · Windows (x64, x86) · Android (arm64-v8a, armeabi-v7a, x86_64, x86) · iOS · tvOS · WebAssembly · PS Vita · Nintendo Switch — 16 targets, defined in release.yml. Other handhelds and consoles get the core through the libretro buildbot.
The core can open a loopback-only GDB remote-serial-protocol socket (off by default, developer-facing) so a real gdb or lldb can set breakpoints, read/write registers and memory, and single-step across all three processors — 68000, GPU, and DSP. tools/gdb/connect.sh (connect.cmd on Windows) finds a debugger and launches it pre-configured; tools/gdb/install.sh adds the same convenience commands to your ~/.gdbinit/~/.lldbinit permanently. Full walkthrough, the honest limits (symbol-level, not source-level; no GDB backend for the RISC ISA; a halt freezes the whole frontend), and the monitor command reference: docs/gdb-stub-guide.md.
Four processors on a unified, big-endian memory map:
| Part | Role |
|---|---|
| Motorola 68000 @ ~13.3 MHz | Main CPU (src/m68000/, UAE-derived) |
| GPU @ ~26.6 MHz RISC | Graphics coprocessor (src/tom/gpu.c) |
| DSP | Same RISC ISA, audio (src/jerry/dsp.c) |
| Object Processor | Sprite/bitmap display list (src/tom/op.c) |
| TOM / JERRY | Video + blitter / audio, timers, EEPROM, UART |
| BUTCH | Jaguar CD controller (src/cd/) |
Plus the peripherals that hang off it:
| Peripheral | Status |
|---|---|
| Standard joypad (both ports) | Emulated |
| ST / Amiga mouse adapter (all three wirings) | Emulated, port 2 |
| Tempest 2000 rotary | Emulated, either port |
| TR10 analog joystick / driving controller | Emulated, either port — no released title reads it, so it exists for homebrew |
| Light gun | Emulated, port 1 (the Jaguar wires the LP pin to port 1 only) |
| Jaguar Voice Modem | Emulated, over the netlink transport |
| JagLink / CatBox link cable | Emulated, TCP or RetroArch netplay |
| Memory Track cartridge · Jaguar GameDrive | Emulated |
| Team Tap (4-player adapter) | Emulated, validated through the real bus against AtariJaguarPadtest — #513 |
| Pro Controller (six-button pad) | Emulated as a core-option preset (no published detection method exists to test against) — #514 |
| 6D flight stick (six degrees of freedom) | Emulated from Technical Reference V10; unvalidated against any known real or homebrew software — #538 |
Motherboard paddle ADC ($F17C00, BattleSphere analog stick) |
Emulated, either port — #505 |
System clock 26.590906 MHz NTSC / 26.593900 MHz PAL. Full source map: docs/source-layout.md.
Known limitations: the blitter is not fully cycle-accurate (a few games need fast mode) and GPU/DSP pipeline hazards are not yet modelled (#313), which shows up as some titles running fast.
Running slow? The defaults are tuned for compatibility, not speed, and the biggest available speedup ships off by default. See the settings & performance tuning guide — it covers which options actually matter, and which combinations quietly cancel each other out.
- Official libretro documentation for this core — the canonical reference manual: supported extensions, the core options reference, controller tables, frontend feature support. Maintained in
libretro/docsseparately from this repository, so it can lag the newest releases. - GitHub Discussions — questions and compatibility reports. Bring your frontend log.
- Issues — confirmed bugs.
- Releases — tagged builds for 16 platforms. The rolling
nightlyprerelease is rebuilt from every push todevelop; it is gated on compiling, not on the test suite — treat it as bleeding edge. docs/— the full document index: settings & performance tuning, network play setup, input devices / mouse, file formats, source layout, savestate compatibility, patching a game, ROM patches / soft patching, CD read speed, CD known issues, cartridge triage, profiling, release process, changelog, TODO, and the distilled JTRM hardware references (docs/jtrm-*.md).- SECURITY.md — security policy and binary verification.
Built on the work of many people — see the full list on GitHub.
- Original Virtual Jaguar by David Raingeard (Potato Emulation).
- SDL/Linux/Win32 port by Niels Wagenaar & Carwin Jones (SDLEMU).
- Cleanups, GUI/Qt port, and ongoing upstream maintenance by James Hammons (Shamus) — upstream:
git clone http://shamusworld.gotdns.org/git/virtualjaguar(GitHub mirror). - libretro core port by libretro/RetroArch contributors.
- Current maintainer — Joseph Mattiello (@JoeMatt). This repository is where Virtual Jaguar development continues today.

