Repository navigation
v3.1.0
·
1298 commits
to master
since this release
Virtual Jaguar libretro v3.1.0
New-feature release: Jaguar GameDrive support, clock-scale (overclock) options,
audio-CD / Virtual Light Machine playback, and savestate compatibility restored
for every format any released core ever wrote — plus a substantially hardened
test suite that now covers the CD path in CI with no commercial discs.
Highlights
- Jaguar GameDrive (JagGD) cartridge support (#312, #320). Detection plus
full 16 MB bank switching (6×1 MB pages over 16 banks), implemented from
RetroHQ's published GDBIOS bindings. GD-locked homebrew that previously hung
forever now boots. New core optionvirtualjaguar_jgd = auto(default) /
enabled(force, for GD-locked <6 MB images) /disabled. Also fixes a
pre-existing loader buffer overflow for >6 MB images. - M68K / RISC clock-scale options (#314, #316). Overclock or underclock
each domain independently (virtualjaguar_m68k_clock_scale0.5x–3x,
virtualjaguar_risc_clock_scale0.5x–2x) for framerate-limited titles.
Defaults are bit-identical to previous behaviour; bus/DRAM costs stay in
real time so the timing model is not distorted, and audio pacing is proven
unchanged at every scale (no pitch shift). - Audio CDs play, and the Virtual Light Machine now works (#291, #300,
#325). Single-session audio discs no longer stall the BIOS, and the VLM
unmutes on its own: its mute gate turned out to be the Q-channel
CONTROL/ADR data-track flag, which we never served because BUTCH's subcode
registers were unimplemented. SetCD Boot ModetoAuto/Real BIOS—
audio-only discs have no session-2 boot stub for the HLE path. - Savestates: every released format loads again (#268, #301). States from
v2.2.0 / v2.3.0 / v2.3.1 / v2.3.2 were either rejected or — worse —
silently mis-parsed from the CD chunk onward. All four released layouts now
load exactly; the loader is exact, not best-effort. Savestate format bumps
to v8 (JagGD state).
Performance
- Binary is ~22% smaller (#321, #326). The UAE 68K core shipped two
complete 68000 handler tables and dispatched only one; the linker now
garbage-collects the dead table and its exclusively-reachable handlers.
Makefile-only, per-platform gated, emulation bit-identical. - Accurate blitter ~16% faster on blit-heavy titles (#332, #334). The
SIMD helpers were reached through a function-pointer table across
translation units with no LTO, so nothing inlined — 20.6% of runtime sat
in five tiny leaf functions. Tempest 2000 +16.2%, other titles +6%.
Bit-identical output (132,912 blits compared, zero differences). - MSVC x64/x86 and every Android ABI were silently falling back to the
scalar blitter (#333, #335) — they now get the SIMD path they should
always have had.
Bug fixes
- AvP: red background behind the shotgun with the accurate blitter
(#267, #292) — DCOMPEN transparency now keys on the unshaded source pixel,
so SRCSHADE can no longer make transparent pixels opaque. - CD: a redundant seek re-framed the in-flight stream (#306, #307) —
rewinding both the FIFO and SSI audio heads (up to ~13 ms of replayed
CD-DA). Found by the new synthetic tests; pinned in both byte and audio
domains. - External CD BIOS files are validated (#296, #299) — a truncated or
wrong-console file at the override path now falls back to the embedded
BIOS with a log line instead of booting to a black screen. The developer
CD BIOS dump is now accepted. - AvP overscan artefacts investigated and closed as hardware-faithful
(#266) — the green dot/bar lives at x≥320, where 67 corpus titles render
real content; masking would damage them and miss the artefact.
Accuracy / investigation record
- The FMV scene-jump investigation (#297) ran every hypothesis to ground with
measurements now indocs/fmv-drift-notes.md: the presentation clock is
video-field-locked (drift structurally impossible), transfer rates are
within +0.15 % of hardware, FIFO scheduling charges no ISR latency, and a
BigPEmu reference capture bounds seek latency to tens of ms. A reproducible
Dragon's Lair scene-branch fixture ships intest/fixtures/.
Testing
- Three synthetic CD test suites run in CI with zero commercial discs:
HLE read delivery (#303), real-BIOS BUTCH/DSA/FIFO (#304), and CD-DA over
the SSI on a multi-track chirp disc whose decoded audio identifies track,
position, and channel (#309). - Silently-skipping checks eliminated (#308): ten real-BIOS assertions
and the Skyhammer clipping sentinel had been inert; the suite now prints a
named skip ledger ("Skipped checks: none" on a full corpus) and
VJ_REQUIRE_ROMS=1escalates skips to failures. - JagGD probe-ROM harness (32 checks, synthetic) and non-1x clock-scale
audio-contract rows run in CI. - The netlink latency test no longer flakes under load (#310, #317) —
absolute frame-ceiling assertions replaced a load-sensitive ratio.
Stats
- 79 files changed, ~14,450 insertions, ~1,020 deletions across 30 merged
PRs since v3.0.0 (git diff --shortstat v3.0.0..develop).
Known issues
- Battle Morph (CD) runs too fast (#331) — most likely the unmodelled
GPU/DSP pipeline hazards (#313); a reporter with real hardware has offered
comparisons. - Pipeline-hazard timing (#313) and dram_timing domain audit (#318) are
tracked under the timing-accuracy epic (#319). - See
docs/cd-known-issues.mdfor the CD backlog.
Downloads
Built for 16 platforms by CI on the v3.1.0 tag.
Artifacts in this release
SHA256SUMS.txt
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-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.
51b730aeeebb7431388865d932d1b834312e1c2e4bb1dde5b3e48573497cfd26 virtualjaguar_libretro-android-arm64-v8a-debug.tar.gz
8e87edd936c5c6a18add214a7a039966a5b0434469fa36682c506e119c63f7f5 virtualjaguar_libretro-android-arm64-v8a.so
a930f7d40175a424a42181b2f352ff35ca817dc1806948fe8c2e9e36e1081418 virtualjaguar_libretro-android-armeabi-v7a-debug.tar.gz
2ae81a883f6cf31058718a9ab6f30e0e6e7fe6eb88ee18e63dd8eb65bbe50f42 virtualjaguar_libretro-android-armeabi-v7a.so
2ad0b287efb1451b391cb5b951f29cab342ae3de9977c6d3f591728670c40389 virtualjaguar_libretro-android-x86-debug.tar.gz
4f6227c84858940458212308ac24318cfc49ee47093d92f82a89239ed7ce1d5f virtualjaguar_libretro-android-x86.so
fd8e681f14ea5b89f8da1678cc33ef41043d09a9c8bde9e3dd92d5bbb837c677 virtualjaguar_libretro-android-x86_64-debug.tar.gz
11922cb276668c8e4afae985b8052a50544fcf48246f4b909ac55453a9181d74 virtualjaguar_libretro-android-x86_64.so
17b27764ad4723dfc4c6cc072f3b591c544261e9e63369a7f334ce1b7025763d virtualjaguar_libretro-emscripten-wasm-debug.tar.gz
6e83057e886bebf6fbc4e5210851fbdb93d0a637fc02da005262d80f19d0fbb5 virtualjaguar_libretro-emscripten-wasm.bc
4ed39cac6c91498dd7d73360166b37cf749cd01d33e6beff93bd97367dfe3f04 virtualjaguar_libretro-ios-arm64-debug.tar.gz
d1bff93824f56354f7bd6e6a2579b3219b14b28574b76d4919b760d091127bc3 virtualjaguar_libretro-ios-arm64.dylib
19def144d2b530b3e46df1dda5da5d13e07c0a50673fdda0ae91f8b7fc44cd0f virtualjaguar_libretro-linux-aarch64-debug.tar.gz
b4cf1919d63f87f48470d4fb31ff0aa8a880b155e1c5d8c68162b6b70026593a virtualjaguar_libretro-linux-aarch64.so
15802f06cf1ca69a663e39bfa763f8a3967ec5be0538e3cbcc47c2725855a788 virtualjaguar_libretro-linux-i686-debug.tar.gz
d76fcfca5084f23d05b3da28eae7ff97b057ab05bdd7058535fb5adfa97813b3 virtualjaguar_libretro-linux-i686.so
bf1cf10b7ad09e583ef3d48c5ac7b85b873cf6e61d68a5c66c60de3ffd5da073 virtualjaguar_libretro-linux-x86_64-debug.tar.gz
37e790f71fb6841ba23826aed643fc78706a90f445d3130ba46dbcd93cf00ca1 virtualjaguar_libretro-linux-x86_64.so
b8d87df2b48bd63d7d8d3806f55f75c3f2b5b5e15d8c18e0474b875841c328a3 virtualjaguar_libretro-macos-arm64-debug.tar.gz
60863e2487dad2c7bf359f77b092e93740ea4c1552805431cf8a9f21d560b59f virtualjaguar_libretro-macos-arm64.dylib
e3530036b307b26502a38fbacf8fcd53c5d87401f3bacbbca4e047b7ffd2a51d virtualjaguar_libretro-macos-x86_64-debug.tar.gz
2b3f92b1fc2493171d94f3de1beead97cc823d3db9d572e2e679591108a6b894 virtualjaguar_libretro-macos-x86_64.dylib
0d2569c3d66c85a295a6dfd2e5393082062f81bc35a754f1fe61dd4d187a5d57 virtualjaguar_libretro-switch-debug.tar.gz
809c6424ec6032f7f44d4643f43fb9daf1f33f1a3918be902358d975d987eeff virtualjaguar_libretro-switch.a
3f463766b46a4287137402846ffa2a7e8eeb67e27f61c286ad217e85bb233190 virtualjaguar_libretro-tvos-arm64-debug.tar.gz
2e0331000622264400a484fbed2cf852010810eea7ebf2c74efa7e1dc50ce8de virtualjaguar_libretro-tvos-arm64.dylib
7f87a3395eebdc5de0b832a78b4ba2b08c5cb400b1f9c2a054b10b6ef574ab25 virtualjaguar_libretro-vita-debug.tar.gz
4da7161f7cceeb33f19902804f1953d4aaed69b8b436b0509432f848d6016bb1 virtualjaguar_libretro-vita.a
7b3cd51fab3e153c94f944ebbeba95bbc88177461d639cc092092a606f8e0254 virtualjaguar_libretro-windows-i686-debug.tar.gz
c31f80563198ed3af05e6b6a04136c6e98dc39f8d1c8b3201827dca3f8b129d6 virtualjaguar_libretro-windows-i686.dll
8e80a7a970603ff52f7fa5298b4b007416f01db5c08118141884d9b2193cb6f9 virtualjaguar_libretro-windows-x86_64-debug.tar.gz
ed334ba7894ef7311dd2eb19ce0ef2cc1d2f5f42cb7e8583567d6f5b999032c5 virtualjaguar_libretro-windows-x86_64.dll
37a96ab60ab4dbf5a36ed6d4524e7d5eb5d89dee7f94b339fc1a53863bcfb7df virtualjaguar_libretro.info