Skip to content

v3.7.1

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Oct 08:28
dbed684

Virtual Jaguar libretro v3.7.1

Broken-games release, continued. Xenowings is now playable, Club Drive stops crashing
when you drive, and the homebrew carts that froze the Accurate blitter now run.

v3.7.1 is the second broken-games release (milestone "v3.7.1, Broken games, continued"). It
fixes titles that froze, crashed, showed a black screen or ignored input. There is no
performance work and no new core option. The savestate format moves from v15 to v16; v3.7.0
and older states still load (see Savestates).

The Xenowings work makes the core emulate three more entries from Atari's own hardware-bug
list (TOM bug 13, JERRY bug 13, JERRY bug 2), and a new document lists where the manual is
wrong or silent (see Documentation).


Highlights

  • Xenowings is playable. It needed four fixes: two documented Atari hardware bugs
    (TOM/JERRY bug 13 and bug 2) and 68000 prefetch emulation. Gameplay rendered black,
    dropped back to the loader, and ignored input before. Headless-verified only; not yet
    confirmed in RetroArch (#819, #822, #823, #824, #825, #811).
  • Club Drive no longer crashes when you drive, and its walls, ceilings and horizon now
    render as on hardware (#828, #829, #611).
  • Seven homebrew carts that froze on the Accurate blitter now run, and a blit that
    never ends no longer freezes RetroArch (#817, #800, #794).
  • Six homebrew binaries now load at the right address, so they draw instead of
    sitting on a black screen (#826, #818).
  • White Men Can't Jump's intro logo is fixed (#827, #736).
  • Memory Track saves work after a no-content boot plus a disc insert (#815, #810).
  • Real-BIOS CD run-ahead and rewind stay in sync (#814, #804).

Game fixes

Cartridge titles

  • Xenowings (#811). Four separate faults stood between the title and a playable
    game. All are headless-verified (scripted button presses and framebuffer checks); none is
    yet confirmed on a RetroArch run.
    • Black gameplay, TOM bug 13 (#819). At the start of gameplay the GPU swaps its
      object-list buffer with load (r0),r2 followed by moveq #0,r2. Atari's bug list
      (JTRM Rev 8 p.136, "Scoreboard failure on successive writes") says the late load data
      lands after the moveq, so the object list pointer gets the real address. The core
      wrote the load data first, so the pointer became 0 and the screen stayed black. After the
      fix the stage 1 playfield renders (94% of the frame lit in the PR's headless check).
    • Back to the loader, 68000 prefetch (#823). A few frames into gameplay the game
      runs a self-modifying anti-tamper check. On a real 68000 the two words it patches are
      already in the prefetch queue, so the old instructions still execute once. The core now
      models that, only where it is observable. The PR measured instructions retired within
      0.07% of the base on Doom, Alien vs Predator and Tempest 2000. Gameplay then stays up
      (990 consecutive lit gameplay frames, in both HLE and BIOS boot).
    • Input did nothing, JERRY bug 13 and bug 2 (#822, #825). The DSP joypad reader
      hit the same late-load rule on the DSP (#822) and then bug 2, "Scoreboard failure on
      indexed addressing mode stores" (JTRM Rev 8 p.134): a div followed by an indexed
      store writes the register's old value, not the quotient. After both, 835 frames differ
      from a no-input run in the PR's check, and screenshots show the ship moving, firing and
      scoring.
    • Guard (#824). The GPU idle-loop fast-forward now refuses a loop in which the
      late write-back fired, so the bug-13 rule and the fast-forward cannot disagree. In
      Skyhammer the rule fires 94 times in 3000 frames and nothing observable changed:
      identical frame hashes, audio and savestates.
  • Club Drive (#611, #828, #829). The game froze or crashed a few seconds into
    driving. GPU NORMI returned one too high for every input ($80000000 gave 9 where the
    chip gives 8, zero gave 0 where the chip gives -32). The jag_sim chip
    netlists decode to the lower values. Club Drive uses NORMI to pick a corner for each
    polygon it clips against the screen, so a polygon crossing two screen edges came out
    twisted, the edge walker bailed, and the GPU returned into garbage. With the fix, six driving input patterns from a
    saved state each ran 2400 frames clean with the picture moving; on the previous build
    four of the six crashed. The DSP has the same NORMI block and gets the same fix
    (#829; only Music Demo executes DSP NORMI in the cart corpus, with no
    visible or audible change). Club Drive's indoor world (Jerome's Pad) now draws its ceiling
    and walls instead of the flat clear colour, and the outdoor worlds' sky boxes render as
    before (#831 was this, not a missing sky). See Testing for the corpus effects.
  • Seven homebrew carts hung the Accurate blitter (#800, #817). Chroma-Luma (bin),
    DEMO1 (bin), DEMO1B (two dumps), JagMania (Jul 8), Ladybug Demo and Ladybug Demo (rom)
    each froze inside one blit under the default Accurate blitter. The blitter was not slow:
    these are uploaded executables with no vector table, and several end their 68K main with
    ILLEGAL. The 68K then ran the vector table as code and walked its stack down into the
    blitter registers. The core now parks the ILLEGAL vector at a loop at $1000 for any
    image that is neither a cartridge nor a CD. All seven now run to the end of a 600 frame
    test under the Accurate blitter, in both boot modes. Some of these demos used to produce
    noise from the runaway 68K; they now sit parked, so a few show a black or silent screen
    where they used to show garbage.
  • A blit that never ends no longer freezes the host (#794, #817). Some blits
    never finish on real hardware (phrase mode below 8bpp whose X step never reaches the
    count). The core now hangs the emulated blitter the way the chip does: status reads busy,
    further starts are ignored, and it clears on reset. RetroArch keeps running. Where
    repeating the step is not idempotent the core runs one defined pass, and the crash
    watchdog logs approx=1. Across the 155-cart corpus, both blitters, both boot modes,
    there are now no timeouts.
  • Six homebrew binaries loaded $1000 low (#818, #826). Headerless 68K binaries
    linked at $5000 were being loaded at $4000, so their first JSR ran font data. The
    loader gained $5000 as a candidate and breaks ties by which base makes JSR/JMP
    targets land on a function start. Exactly six of the 155 corpus titles change:
    Chroma-Luma (bin), JagMania (Jul 8), JagMarble (2000), FORCE Design Legion Force Jidai
    Intro Demo 0!, Joypad-TeamTap Tester [a1] and Music Demo (ScatoLOGIC). Each goes from a
    black screen to video (Music Demo also plays audio). The Music Demo fix is also the
    actual cause of #794: loaded low in BIOS mode its 68K sprayed the blitter registers.
    One thing remains for Music Demo: in BIOS mode it logs a single dsp_pc_escape at frame
    5, while HLE does not.
  • White Men Can't Jump intro logo (#736, #827). Only the apex of the first logo
    (the Trimark pyramid) showed, and the High Voltage logo never appeared. The game starts
    the GPU decoding the logo and then fades it in with 128 blits without waiting. On real
    hardware each blit stalls the 68000 so the decode wins; with zero-time blits the fade
    finished while the logo was still decoding. The title now turns on Blitter Bus Timing by
    default through a per-title row. It is limited to this one title; it is not on for
    everything. Fast vs Accurate blitter makes no difference. The new wmcj_intro_logo check, which needs the
    first held picture to be at least 25% lit, went from 6.4% to 43.8%. A 6000-frame driven run
    reached the menus, team select, the city map and a live match with no new freeze, but
    #736 covers more than the logo and this release does not claim the whole game is clean.

Jaguar CD titles

  • Memory Track saves after a no-content boot plus a disc insert (#810, #815).
    Two faults. The core reported save RAM only when content was loaded, so the frontend saw
    nothing to save on a no-content launch. And the insert path never reinstalled the NVM BIOS
    module, which the insert's reboot wipes, so a game started by an insert saw the Memory
    Track with no NVM BIOS behind it. Save RAM is now exposed whenever the Memory Track is
    enabled, and the insert reinstalls the module. Covered by new test_disk_control cases
    (marker written before the insert survives it). Not yet verified in RetroArch: the
    actual .srm file name for a no-content launch, and a real game saving then reloading
    after an insert. With the Memory Track disabled, nothing is exposed.
  • Real-BIOS CD run-ahead and rewind (#804, #814). With cd_boot_mode=bios,
    Hover Strike diverged under run-ahead because two pieces of state lived outside the
    savestate: the flag that gates the 68K boot-stub injection, and the remainder that
    decides whether a CD FIFO refill takes 2 or 3 ticks. Both are now saved. Run-ahead at
    warmup 400, 150, 600 and 800 now agrees with a plain run. This is the savestate change
    below.

Savestates

  • States are now v16. v3.7.0 (v15) and older states still load, with the new fields left
    at their live values (exactly v3.7.0 behaviour). v16 states do not load in older builds.
    A v15 file written by a v3.7.0 build loads in v3.7.1 with video identical to v3.7.0.
  • Three chunks are appended after the HLE chunk: CDB1 and CDX1 (real-BIOS CD boot
    flag and refill phase, #814) and BLH1 (the "blitter hung" flag and its stuck count,
    #817). A missing or unrecognised chunk loads as the default, so a v16 state that
    lacks BLH1 loads with a normal blitter.
  • Format details and the chunk layout: docs/savestate-compat.md.

Documentation

  • New docs/jtrm-errata.md (#821, #820). A list of where Atari's manual is
    wrong, contradicts itself or says nothing, plus which entries in Atari's own
    hardware-bug list (JTRM Rev 8 pp.133-141, Hardware Bugs & Warnings, Software Reference)
    the core emulates. Each entry gives what the manual says, what is true, the evidence
    (netlist, Verilator, game, PR or commit) and where it lives in the emulator.
  • 110 corrections to the distilled docs/jtrm-*.md files, each re-read against the
    PDF. Examples: DSP local RAM is $F1B000-$F1CFFF, 27 opcode numbers were wrong
    (CMP is 30, not 15), SH with a positive count shifts right, and MULT is unsigned
    while IMULT is signed. #821 changes only docs and comments; no behaviour changes.
  • Cart and CD boot matrices regenerated for this release (#830). The site pages
    were audited for v3.7.0 (#808).

Testing

Release gate, v3.7.1 against the v3.7.0 tag, each built from a clean tree.

  • Cart corpus, 155 titles. Fast blitter: 155/155 reach game code in HLE and 154/155 in
    BIOS (was 155 and 153; the v3.7.0 LOAD_FAIL, JagMarble BIOS, now completes). Accurate
    blitter: 155/155 in both modes, up from 148 HLE and 136 BIOS in v3.7.0.
  • CD corpus: 28 of 28 discs reach game code in both modes, unchanged from v3.7.0.
  • NORMI corpus sweep (#828). Across 155 ROMs, HLE and BIOS, both blitters, the only
    titles that change are Club Drive, Checkered Flag and Native Demo. Club Drive's
    rendering was confirmed correct by the maintainer. Native Demo (bin), HLE, was already
    a runaway GPU from frame 1; its garbage path reshuffles to a black, silent screen.
  • Several Fast-blitter rows for homebrew demos (DEMO1, DEMO1B, Ladybug and others) moved
    from audio or static video to silent or black. The matrix bisect (#830) puts the flip
    at #817: in each case the old signal was a runaway 68K, not real output.
  • The cart boot matrix runs only the Fast blitter by default; the Accurate sweep is not
    committed (it needs CART_MATRIX_PROBE_ARGS). The matrices record a stage plus coarse
    video and audio flags, so they cannot see most of what changed here. Xenowings is not in
    the corpus.

Developer and CI

  • scripts/pr-link-issue.sh now signals failure modes with distinct exit codes (2 no tag,
    3 API error) and the workflow reads those instead of matching error text; release.yml
    target count corrected from 16 to 24 (#812).
  • test_cd_bios_boot now fails when the CD transfer wedged (it printed PASS before)
    (#813, #799).
  • The voicemodem pair test waits for its peer instead of the wall clock; 120/120 under
    heavy load where develop failed about 1 run in 6 (#816, #796).
  • New and extended tests: test_blitter_hung, test_upload_illegal_park,
    test_club_drive_611, xenowings_ingame_video, wmcj_intro_logo, test_m68k_prefetch,
    test_state_compat cases for v16, and NORMI cases in test_gpu_ops and test_dsp_ops
    taken from the netlist decode. ROM-gated tests skip without the private ROMs.
  • cart_boot_matrix.sh gains a CART_MATRIX_PROBE_ARGS knob and refuses to write without an
    explicit CART_MATRIX_OUT, so an Accurate sweep cannot overwrite the published Fast rows.
  • New test-ABI counters: gpu_load_wb_fixups, dsp_load_wb_fixups, dsp_div_store_fixups.

Known issues

  • Closed without a code change: the Dragon's Lair / Space Ace / BrainDead 13 interactive-scenes report
    (#737) does not reproduce on v3.7.0 or later. These games start
    on A/B/C, not START (RetroPad START is mapped to Jaguar Option by default). The AvP noise report
    (#633) could not be reproduced either; reopen either issue if it still happens.
  • Myst CHD on Raspberry Pi 5 is confirmed working on the v3.7.0 release build
    (#774).
  • White Men Can't Jump is not declared fixed beyond its intro logo (#736).
  • Xenowings and Memory Track: verified headless only, see above.
  • GPU bug 2 (the TOM half of the indexed-store-after-divide bug) is not modelled; only
    the DSP half is, because nothing needed the GPU half (#825).
  • Chroma-Luma and JagMania were still black after the hang fix alone; #826 gives
    them video.

Upgrading

  • Savestates: v15 and older load; v16 states do not load in older builds.
  • No core option changes.

Downloads

Pre-built libretro cores are attached to the GitHub release, built by release.yml (24
targets), Each binary has a matching debug archive
and SHA256 checksums are in SHA256SUMS.txt. Every push to develop publishes a nightly
pre-release: https://github.com/libretro/virtualjaguar-libretro/releases/tag/nightly

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
ecd2ebd76083c941d3f0691e4d8de4ca12a17acfe3434a32478cc810e384f3dc  cue2cdi-windows-x86_64.exe
5f84201052b81c8625dc1297ec62dd003fa1ba468ede33dabbdecefb6bb4fae8  jagcd-tools-linux-x64.zip
582c47b9f042e912be9b498ee1c27111917f91341665368cabb723b8329bec67  jagcd-tools-macos.zip
3fdc310314df9b5201b5ddfcf261ec23b298de90b9e5e5e60d3af39eb5ad036d  jagcd-tools-windows-x64.zip
f4a46d72cf51088821416e59e4fe40d38083cacdeda59eec3c796a42319614e7  virtualjaguar_libretro-android-arm64-v8a-debug.tar.gz
3e6e9c9ae7cc15e2c94e105ff7b32c9648aedab04c59b08c7be19a08aa887d45  virtualjaguar_libretro-android-arm64-v8a.so
c0060c18a2e68e6063d85ce303a04a1dd1888c8252c47d6ad677b4b9a0d4c564  virtualjaguar_libretro-android-armeabi-v7a-debug.tar.gz
e6c63b0abfa435a9b4b45dc0813757898939e57468e6a305acdf7d24f8dbf393  virtualjaguar_libretro-android-armeabi-v7a.so
9e00ba1ed059ca2a9777e3aad692ac70fe93ad911f6dbe9fcc1960a8513fc691  virtualjaguar_libretro-android-x86-debug.tar.gz
053fe915582554a9dc25bf3c9f040ac08b64e5690b11d85ec54131fa0fbd820c  virtualjaguar_libretro-android-x86.so
95776c773ad31e934940cbfccdfa14ebef6e46b1a110dcc1b7500864649979c3  virtualjaguar_libretro-android-x86_64-debug.tar.gz
d38cb85a96551be56c398c894a96597b1cbd09cfc070b481cc2a19bb67951221  virtualjaguar_libretro-android-x86_64.so
9038b1a6cd3ee1aaebaaa88e596e02d24a2451407b15b2b83d90f16ea7577d58  virtualjaguar_libretro-emscripten-wasm-debug.tar.gz
c46434bfeadaf455c2def6f532897e1e2e1e152b0fe1215c594c5711b56273c3  virtualjaguar_libretro-emscripten-wasm.bc
779ab558e05c5193090ecd421c9970f36dd864d0eb78cea36e6bcdf49498c169  virtualjaguar_libretro-ios-arm64-debug.tar.gz
6f08e2ca69afe04aa20eeaab7049c576ba23b2b677387538328455460b0ef613  virtualjaguar_libretro-ios-arm64.dylib
90a82757f7173fa0f17f79d93e93191fc978d5abba3dfd480582fb5a0a214e26  virtualjaguar_libretro-linux-aarch64-debug.tar.gz
67665582f9fb59cbeeea2249b1bd32ec38b434ff65df51721d5e15090cd1608f  virtualjaguar_libretro-linux-aarch64.so
bbf5fa774272e368bf2a8ffbb6c63bc06b71687d68537fd3044c4bf710f1b65a  virtualjaguar_libretro-linux-i686-debug.tar.gz
147a2a9b8543071b0705aa83b32206ce78e8e1302590507aeea6cc63fbeee9ef  virtualjaguar_libretro-linux-i686.so
949d8557fc706987fa45667b55c39fecc27304d29cf4a35d3279ac59fa8f235a  virtualjaguar_libretro-linux-rpi1-armv6-debug.tar.gz
6c9976e2d9cc8f9c3fc12ba21aeb7b1c00bc01265891f40fddd333a816506a94  virtualjaguar_libretro-linux-rpi1-armv6.so
a2836c5ed9b58e09a891b3fc652920be4f266d473292caeef35c796931715c63  virtualjaguar_libretro-linux-rpi2-cortex-a7-debug.tar.gz
4609ca469fa1e913aef83ac5dc265d4cf99b6574863f7e81d539caa2de6c72cf  virtualjaguar_libretro-linux-rpi2-cortex-a7.so
53f3deda46064c1d499bbb5b3addafcbc7011f581e68d4546674473b90f3172d  virtualjaguar_libretro-linux-rpi3-cortex-a53-debug.tar.gz
ca6af0773a76fb81715181803cbc2ab0417c1758a7b99c4b588b85ee5f44b9d0  virtualjaguar_libretro-linux-rpi3-cortex-a53.so
a796be5291d24892e9223e5a203949b7b8a98d6c1ec1303649ab264bd9dd5e10  virtualjaguar_libretro-linux-rpi3_64-cortex-a53-debug.tar.gz
2a8038408dc25280e06b917663ea6d205a922404989e2668b69b90d36d92277c  virtualjaguar_libretro-linux-rpi3_64-cortex-a53.so
db7e68de338705cf74c10d469751e7bb13ddbb2590b8ec59217c15819b0295fd  virtualjaguar_libretro-linux-rpi4-cortex-a72-debug.tar.gz
cda030775531bd6787fae5f5e1ee6da74b7a04890e5c3ee64d414a157cf3a7c6  virtualjaguar_libretro-linux-rpi4-cortex-a72.so
692e73ef9f91b33d3584de21b2694d36e43ccefdc9f9fa72e35db16fa7cd7536  virtualjaguar_libretro-linux-rpi4_64-cortex-a72-debug.tar.gz
6a6fa247b8328b6975d9671c700b38b9cb45711289e912ff0ab1326543a2ef98  virtualjaguar_libretro-linux-rpi4_64-cortex-a72.so
f41fe9f27dd6a02e3d4a9bbfee1d3ab714232d13b6065d72d8c5708fc429489d  virtualjaguar_libretro-linux-rpi5-cortex-a76-debug.tar.gz
87a59b0723f6d8ebd7aa19dc0f96e26eda4f412fd6dd04c7f48ff715294aaf8b  virtualjaguar_libretro-linux-rpi5-cortex-a76.so
02cdf94a5b92cf4ca413b2d1dbea1ffd74fb6f2437038bec9fe480b17b486905  virtualjaguar_libretro-linux-rpi5_64-cortex-a76-debug.tar.gz
b6547081b1318da79ccec118dec76bdd10cdd451ebe57a213e9583c2e26381cf  virtualjaguar_libretro-linux-rpi5_64-cortex-a76.so
c0ed9ed271ddccdcdfe31102db4d77fc96dd243a53301b7838868c0a37862a53  virtualjaguar_libretro-linux-x86_64-debug.tar.gz
e965576f976df3933a5fb49fd4a46552ce6ca9a3316308394ed556445a469acf  virtualjaguar_libretro-linux-x86_64.so
ea53b7af5c50da93109a9baba5f350a10a012a3055e9d3ac152f3e4f63044181  virtualjaguar_libretro-macos-arm64-debug.tar.gz
bdc9f3e7573c4e42ed3d99a12786752a34146cee7dba05c670979bb57ceda1c7  virtualjaguar_libretro-macos-arm64.dylib
6ba3be865e72861fadd74aa4194ba3f7a6bf532a0756211f203a4c198f6b1383  virtualjaguar_libretro-macos-x86_64-debug.tar.gz
797c07659b6ebec0a742f6f278021f49cd335b596428f087145e76a5f7d1a89c  virtualjaguar_libretro-macos-x86_64.dylib
4cbc3f09bcc4ec9ab20c5173aea2042e140b85bfd7913f53a6c8bcb57ec3325f  virtualjaguar_libretro-switch-debug.tar.gz
e6a03debb06e42934873337e4c76d3cb575cfde3f3a40faaf8dd70d2ae444d48  virtualjaguar_libretro-switch.a
ea611a05788bb8103b23cdad377a513c1a6dd6dd65289dfe816d229bd0d378f2  virtualjaguar_libretro-tvos-arm64-debug.tar.gz
5042a8b9679816fc23d370cc436b63063297b06e4c14ad24717fbfe900af61fa  virtualjaguar_libretro-tvos-arm64.dylib
78eed58ee465909fb580756a8081377950d9c9b5bb5e98a0e58038998d36373c  virtualjaguar_libretro-vita-debug.tar.gz
dde05187e122504c2204ac95e37f307fc2ff3a1b3152326906c7d4006aad1b65  virtualjaguar_libretro-vita.a
9a79a322fe95b3b8a5d1a62d408aae312a4a084c893c0906eeb1eef8449399c9  virtualjaguar_libretro-windows-i686-debug.tar.gz
03ae7e3d23e00209e39d2c6a1eb3127d91166f58a82e330ef2b873a986db2b9a  virtualjaguar_libretro-windows-i686.dll
746603ab13a8c9b265f8fbc146aaaeadc9c2c1778f7fc9eac5fb5c06d04d3cfa  virtualjaguar_libretro-windows-x86_64-debug.tar.gz
94a68ddc480baa04cedb9dae5745ba7eb6fbc7b8efe93cfa685ab9f0a02bbb03  virtualjaguar_libretro-windows-x86_64.dll
f029e00f124c29cb7c3cf9600b66d7554c86ffdf61252fa22d326c7bfa83d14b  virtualjaguar_libretro.info