Repository navigation
v3.5.1
Virtual Jaguar libretro v3.5.1 — Settings clarity
A small fast-follow to v3.5.0. No emulation behaviour changes: this release
makes the core options honest about what they do to each other, shortens the
descriptions that had grown into walls of text, and fixes a test fixture that
kept make test red on a clean tree.
The compounding-settings warning (#595)
DSP Idle-Loop Fast-Forward (virtualjaguar_risc_idle_skip) is the largest
speed lever the core has — 66-87% less DSP interpretation on the titles
measured in #569 — and DSPExec() switches it off entirely while certain
other options are active. Nothing said so. A user who raised the RISC
overclock on a borderline-slow title paid the overclock's own cost and
silently forfeited the bigger win, which reads as "overclocking made it much
slower" with no explanation available anywhere.
The core now logs one [perf] line naming the actual suppressor:
[perf] virtualjaguar_risc_idle_skip is enabled but suppressed by:
virtualjaguar_risc_clock_scale -- the DSP idle-loop fast-forward is doing
nothing, so this combination can run slower than idle-skip alone. Your
settings are honored, not overridden.
It warns; it never overrides. User-set values always win — the same rule
the per-title database already honours for known-bad entries (#464). Latched
once per content load, so it does not repeat every time the options menu is
opened.
The four suppressors are virtualjaguar_risc_clock_scale (any non-1x value),
virtualjaguar_dram_timing, virtualjaguar_gpu_pipeline_timing, and
virtualjaguar_blit_memo. Each of those options now says so in its own
description, and the idle-skip option lists what turns it off.
Two options that look like suppressors and are not
Worth stating plainly, because both this feature's original issue text and
some earlier notes claimed otherwise before the gate was read and measured:
virtualjaguar_m68k_clock_scaledoes NOT disable idle-skip.
m68kClockScalePctappears in the DSP's budget arithmetic but nowhere in
the gate. The 68K overclock and idle-skip compose fine.virtualjaguar_blitter_timingdoes not either.vjs.blitterTiming
never reachesbusArbiter.enabled; onlyvirtualjaguar_dram_timingsets
that.
Measured on Alien vs Predator, 120 frames:
| Configuration | Idle-skip fires | DSP opcodes/frame |
|---|---|---|
| idle-skip alone | 112,398 | 419,949 |
+ m68k_clock_scale 3x |
127,525 | 476,343 |
+ blitter_timing |
112,316 | 419,776 |
+ risc_clock_scale 2x |
0 | 917,593 |
+ dram_timing |
0 | 363,628 |
Warning on either of the first two would have false-positived on the most
likely overclock combination there is.
Note also that despite the risc_ prefix, idle-skip is DSP-only — the GPU
idles too and gets nothing from it — and it still ships off by default
pending a listening pass, so it has to be enabled by hand.
Core-option text pass (#596)
23 info strings rewritten; the rest already read as a single idea and were
left alone. Net −700 characters even after adding the new interaction text
above.
Cut: internal issue numbers, source and doc paths, wire-protocol names, and
boilerplate restated on option after option. Kept every load-bearing caveat —
"takes effect on restart", "off by default", "bit-identical either way",
cartridge-vs-CD applicability, and "report bugs only at 1x".
Largest reductions: Network Link Speed (1090→893), Cart BIOS (682→513), CD Boot
Mode (734→651), Voice Chat (599→481), Widescreen (297→239).
Category descriptions were considered as a home for the repeated
presentation-only boilerplate and deliberately not used: libretro.h
documents retro_core_option_v2_category.info only as "secondary help text",
which is spec intent rather than evidence that any frontend renders it
somewhere a user actually reads. Losing a caveat costs more than duplicating
one.
make test exits 0 again (#590)
test_pertitle_db cases 4 and 7 asserted against Alien vs Predator's shipped
titledb row expecting a virtualjaguar_true_color pair. #551 removed that pair
after a pixel-diffed A/B found it changed 0.0000% of pixels — so the test had
been failing on unmodified develop ever since, and every contributor since
has had to know which two failures were "expected".
Fixed at the fixture, not the table: a new TitleDBSetPairsForTest() override
(mirroring the existing hooks and negative-pair overrides) lets those two cases
drive off a synthetic row instead of real, evolving shipped data. A test that
breaks every time the database is legitimately edited was the actual defect.
Known limitations
- The warning's mid-session path — raising the RISC overclock from the
options menu during play, rather than having it set at load — is reasoned
fromcontent_loadedbeing true at that point, not measured. The load-time
path is verified headlessly. - Nothing here changes emulation. Everything still open against v3.5.0 stays
open, including World Tour Racing's second freeze (#589) and the on-device
A10X capture (#601).
Stats
6 files changed, 232 insertions(+), 29 deletions(-)
3 commits since v3.5.0
Maintainers
Joseph Mattiello, with the Virtual Jaguar libretro contributors.
Original Virtual Jaguar by David Raingeard (Potato Emulation) and
James Hammons.
Artifacts in this release
SHA256SUMS.txt
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_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.
b926e41185057ee9204aaa0aaafff53ceec2cbb6d4f37e478edf7a7ddb353332 cue2cdi-linux-x86_64
c19f65c1be0eab40e58f0a4d619704dcfc4632858d00eef78a737d0f26e7a134 cue2cdi-macos-universal
d102e1349ae72690f4e17eab118fd50a504a95916f0a61474546d606bf45e15b cue2cdi-windows-x86_64.exe
3a108c565454dfc30af7cf32b7cb543b31061e952c085cf4204dad63908ba3da jagcd-tools-linux-x64.zip
86e43d4cce56ade02df0e3ddcd8d1d8186e47e71892b8e46338d9997fa79bbdf jagcd-tools-macos.zip
ddc630e01221edabf8247bc9927a09dad5768e03e243c4740c6a7623a3b12d31 jagcd-tools-windows-x64.zip
afc82165993bad50ec3ef16622c489f6db0946084707dfeb564842ca6ddc4aa7 virtualjaguar_libretro-android-arm64-v8a-debug.tar.gz
4b48f2f8b0c5986855ab8aaf60e537185e4af28a0863f8a5ea1f354fabd44cb5 virtualjaguar_libretro-android-arm64-v8a.so
e6a6dcd5e93da0e84d61793023f7fee2beb0d5075bdeb88d3b4788a3e3cc55d6 virtualjaguar_libretro-android-armeabi-v7a-debug.tar.gz
1dd347cca885c43ffd71e49f777ca3d64b6569d82c0b77dcfccf738b4d4e8f65 virtualjaguar_libretro-android-armeabi-v7a.so
d5ea95bd5a62efcede0c91365c189b18e4d04d9ac7469860a840347e22ad3027 virtualjaguar_libretro-android-x86-debug.tar.gz
5ad32d8ce155ffcd91d174fae216e987e1afcd9ec3fc3b24834178ea2ced9162 virtualjaguar_libretro-android-x86.so
1d7669b06171a2856a22398ba43f031fb4dad2b507243904df50513abd591384 virtualjaguar_libretro-android-x86_64-debug.tar.gz
8fbfae58ff62f1520cfb4eccbf1399b078e99174596fe513e697eb0119c2140f virtualjaguar_libretro-android-x86_64.so
7db862d8c1d616f0deb81fcf7c1b9b7958f077cf8098426d5a9ba3a83c741258 virtualjaguar_libretro-emscripten-wasm-debug.tar.gz
961eb40306315e0e233eab0e1c09b5a861cec56822e87e7ead61fa5c1a2aaf93 virtualjaguar_libretro-emscripten-wasm.bc
582f817a33160a95c968e63bd4259dc71a5cfb76d183e5f2c78526c10728f13e virtualjaguar_libretro-ios-arm64-debug.tar.gz
ee365c1cbde6e536632bcfc7cea2c88af46e2b7f0218784102846845c03d5ea9 virtualjaguar_libretro-ios-arm64.dylib
701e6ae698809dfda375800869a4a4e321394d0933c7e52f778317aacd83a35d virtualjaguar_libretro-linux-aarch64-debug.tar.gz
c17ddd1934e97c0fbf947a35d1bce9ae39927d51d8aa935fc93659d015c632b8 virtualjaguar_libretro-linux-aarch64.so
b8d3c5d67d0c434ce3cbb9d4be058ce23ca3f81301ba69b6e508866d73da4101 virtualjaguar_libretro-linux-i686-debug.tar.gz
9af2dc2284ffe5ac5efc1657b1378bce45731af7d0b61310983f94751fddce93 virtualjaguar_libretro-linux-i686.so
63563306148f690fa5350945afc8b376a4e232715077a35e4333add048c54543 virtualjaguar_libretro-linux-rpi1-armv6-debug.tar.gz
d9fb3859787dd9a4dd7a01db121c0c60cbde4b2a35f493eb0addc11c919c6140 virtualjaguar_libretro-linux-rpi1-armv6.so
baabdf7558d0277c59f2ed9148c4b7a572e57035cfb9e2bd6b2211b98d734965 virtualjaguar_libretro-linux-rpi2-cortex-a7-debug.tar.gz
85c0d00baad8f7c6a674e2314b7f53930c10991291c859d93d8a7e76418b439f virtualjaguar_libretro-linux-rpi2-cortex-a7.so
3edffdabf231c2ffc70c6e99ff01f7f5589cf792d302acd2d945d0c770ac5f9e virtualjaguar_libretro-linux-rpi3-cortex-a53-debug.tar.gz
390a63d2e356501c3cc00d82a16472918dea30258db65473a1c779f179e5ba0b virtualjaguar_libretro-linux-rpi3-cortex-a53.so
f87e50b5f70b820bce939e284c7d2ce81645821dfeb7073fe69af7a6274205d7 virtualjaguar_libretro-linux-rpi3_64-cortex-a53-debug.tar.gz
f5348b636b344376702ea54b9bb7d27ada9b7ce8c46a5ca357c3afae723dcacc virtualjaguar_libretro-linux-rpi3_64-cortex-a53.so
fc0a4f6254d35f2ad09e83583cbb8b3850b43518e810728ac7646a460b74d300 virtualjaguar_libretro-linux-rpi4-cortex-a72-debug.tar.gz
3eb56cb5bca79203cb17fe30ddb6623762872ac69e0d157e82c8fa8096538c3a virtualjaguar_libretro-linux-rpi4-cortex-a72.so
e9597dce7089542f34bf879c543079e1eb6f6bf35cde525db8cbcaaee70a6fc2 virtualjaguar_libretro-linux-rpi4_64-cortex-a72-debug.tar.gz
b287ee428299180b609bf9ed3eeec031281cdfc7674f2c11bbdb026b7fce4952 virtualjaguar_libretro-linux-rpi4_64-cortex-a72.so
69e1c8dc3b866a9c42ddc13e4cba814de3c05997ac1cb47b86afcfa7b5446109 virtualjaguar_libretro-linux-rpi5-cortex-a76-debug.tar.gz
e0fc27b71bbd245ed7e6a421be414176d5babf2f09ca0ad8d32d226da68c852c virtualjaguar_libretro-linux-rpi5-cortex-a76.so
d172b7eb397a34a0e6c07951b5efbd9a7ad12252641f031ff309dd9a02713f0f virtualjaguar_libretro-linux-rpi5_64-cortex-a76-debug.tar.gz
e9fd338cb4e5f4a411003571fdf8b0ca753130cb6becfe394ea2541071339e10 virtualjaguar_libretro-linux-rpi5_64-cortex-a76.so
8db403dcfc2a85e75c15881b1c4aac882a8d6632d268e637f2903e20467902a0 virtualjaguar_libretro-linux-x86_64-debug.tar.gz
5969c93148c91f0d222311bbc1deb84f967d2af69ca5ae0f55832fe9bd01b27a virtualjaguar_libretro-linux-x86_64.so
d0335b104814d7f38fbf0350f54dc6a31d9e91508730905f46a7024d42e503b8 virtualjaguar_libretro-macos-arm64-debug.tar.gz
b2a1e218a6edd76a304d193ba83d95ba8e2fc62d06238a9c97352eadd1e3d701 virtualjaguar_libretro-macos-arm64.dylib
472eab81d2d4feb820fdf66ec9ee299e32c963468d4218f1ae4ba296120ee354 virtualjaguar_libretro-macos-x86_64-debug.tar.gz
0c521d8cb2b6234a7684bfe67963aec378ff36cbbcaab0f7165ad94c88466b8c virtualjaguar_libretro-macos-x86_64.dylib
0e896aabe11a23171507cbdc6f81488a0db4abbd51d2d8c84b2e6975e078702d virtualjaguar_libretro-switch-debug.tar.gz
58278b35182ae7bdc16aa8e87419003e79dbc280f804faac10a1ed9a3e7d93b4 virtualjaguar_libretro-switch.a
4dde60b8ce9c451b9b42b6522d1e556d66896132a02c92ebb3ea6226839c9006 virtualjaguar_libretro-tvos-arm64-debug.tar.gz
bc222e27996b3df6a816540fc9d88190be6862439f47d927b422896924dad6ca virtualjaguar_libretro-tvos-arm64.dylib
bf4c1bba28e127c608a72bc3d31d0482b7825084fad2bd30577ed7019dd19a30 virtualjaguar_libretro-vita-debug.tar.gz
eb8fe7e5fdfb253b59fec9155cbb98a9eab93d957ad5868a6cc0cc23fc98ca05 virtualjaguar_libretro-vita.a
e397ce7e0181145ae76ffe032246592cb017d1a9ad387945b1349122acbf3a1d virtualjaguar_libretro-windows-i686-debug.tar.gz
90cfe99425e35fbae19bfaefb67f8c9505176737eb89d10c4663d2bff22e37f6 virtualjaguar_libretro-windows-i686.dll
c5974a32ee3374df80757d07055bd23b6e0744333e77a4c571bef2835271f96b virtualjaguar_libretro-windows-x86_64-debug.tar.gz
a3f7272d4d4fba0161783419a38c7610fd1ad2a6b25c51a9f33a7e783662917f virtualjaguar_libretro-windows-x86_64.dll
592bc17dd9ab58ed274010d1c55116f88c2fcf4f32890b8ef7be4dd61ac5c890 virtualjaguar_libretro.info