Files
libretro/emulators/virtualjaguar.yml
T

190 lines
7.3 KiB
YAML

emulator: Virtual Jaguar
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/virtualjaguar-libretro"
upstream: "http://shamusworld.gotdns.org/git/virtualjaguar"
profiled_date: "2026-09-04"
source_commit: "f9a3c89f58836cb2c45a42ad4edfac047050f30a"
core_version: "v2.1.0"
display_name: "Atari - Jaguar (Virtual Jaguar)"
cores:
- virtualjaguar
systems:
- atari-jaguar
notes: |
The boot ROMs are still compiled in, generated by bin2c, but the core no
longer only uses them. Staging moved out of retro_load_game into
stage_cart_boot_rom, which reads a file first and falls back to the
embedded array (libretro.c:5339-5382). BT_M_SERIES tries jagboot_m.rom in
the system directory; BT_CUSTOM, a value the enum did not carry before,
searches six names across the system directory and two subdirectories
(libretro.c:5293-5337). Either way the file has to be 0x20000 bytes, the
size copied to jagMemSpace + 0xE00000; anything shorter is a short read and
the embedded Series K takes over.
The Jaguar CD BIOS is the larger change. stage_cd_bios calls
load_external_cd_bios, which walks three name groups over five directories
(libretro.c:5049-5158). The group order follows the
virtualjaguar_cd_bios_type option, then generic names, then the other type,
because a lone file of the wrong type still beats the embedded copy: the
user put it there deliberately. A candidate is accepted at exactly 0x40000
bytes and recognised by CRC32 against two constants
(libretro.c:4964-4965,4971-5048).
The "BIOS" core option (virtualjaguar_bios, disabled by default) still
controls whether the boot ROM is executed at startup. When enabled, the
boot ROM entry point is copied to jaguarMainRAM
(src/core/jaguar.c:1466-1468). When disabled, jaguarRunAddress is written
directly, skipping the boot animation.
Nothing here is required: every path falls back to an embedded copy, and a
file only replaces it. The embedded arrays are the dumps themselves:
jaguarBootROM and jaguarBootROM_M hash to the CRC32 values biosdb.c names
Series K and Model M, jaguarCDBootROM and jaguarDevCDBootROM to the two
values the CD BIOS test accepts (src/bios/jagbios.c, src/bios/jagbios_m.c,
src/bios/jagcdbios.c, src/bios/jagdevcdbios.c, src/core/biosdb.c:20-21,
libretro.c:4964-4965). A file changes what runs only under BT_CUSTOM,
where any image of 0x20000 bytes is loaded and an unrecognised checksum
is logged (libretro.c:5245-5284).
files:
- name: "[BIOS] Atari Jaguar CD (World).j64"
system: atari-jaguar
required: false
size: 262144
crc32: "687068d5"
validation: [size, crc32]
aliases:
- "[BIOS] Atari Jaguar CD (World).rom"
- "[BIOS] Atari Jaguar CD (World).bin"
- "jaguarcd_bios.bin"
- "jagcd_bios.bin"
- "jaguarcd.bin"
- "jagcd.bin"
- "Jaguar CD BIOS.rom"
- "Jaguar CD BIOS.bin"
description: "Jaguar CD retail BIOS, replacing the embedded copy"
source_ref: "libretro.c:4964, libretro.c:4971-5048, libretro.c:5049-5158, libretro.c:5159-5175"
note: >-
Searched in the system directory and under Atari - Jaguar,
Atari - Jaguar CD, jaguar and jaguarcd. Accepted at exactly 262144
bytes and recognised by its CRC32; a file of the right size whose
checksum matches neither constant is counted as rejected and the
embedded BIOS is used. The generic names are tried after the type the
virtualjaguar_cd_bios_type option selects.
- name: "[BIOS] Atari Jaguar Developer CD (World).j64"
system: atari-jaguar
required: false
size: 262144
crc32: "55a0669c"
validation: [size, crc32]
aliases:
- "[BIOS] Atari Jaguar Developer CD (World).rom"
- "[BIOS] Atari Jaguar Developer CD (World).bin"
description: "Jaguar CD developer BIOS, selected by virtualjaguar_cd_bios_type"
source_ref: "libretro.c:4965, libretro.c:5049-5158"
note: >-
Same search and the same size and checksum test as the retail BIOS.
Whichever type the option does not select is still tried last.
- name: jagboot.rom
system: atari-jaguar
required: false
size: 131072
validation: [size]
aliases:
- boot.rom
- boot0.rom
- "[BIOS] Atari Jaguar (World).j64"
- "[BIOS] Atari Jaguar Stubulator '94 (World).j64"
- "[BIOS] Atari Jaguar Stubulator '93 (World).j64"
description: "Cart boot ROM read when the BIOS type is set to custom"
source_ref: "libretro.c:5293-5337, libretro.c:5339-5356"
note: >-
Reached only through BT_CUSTOM. Searched in the system directory and
under Atari - Jaguar and jaguar. No checksum is tested; a read shorter
than 131072 bytes leaves the embedded Series K in place.
- name: jagboot_m.rom
system: atari-jaguar
required: false
size: 131072
validation: [size]
sha1: "af643900fea84234e08b616a6d27f03f0a61db96"
md5: "6e844759720226e58d55ecaf33608a13"
crc32: "ae25bdf5"
description: "Model-M cart boot ROM, read when the BIOS type is Model M"
source_ref: "libretro.c:5358-5380, src/bios/jagbios_m.c:9"
note: >-
Read from the system directory only, as jagboot_m.rom, and only when
biosType is BT_M_SERIES. A short read falls back to the embedded
Model M array, which carries the same bytes as the Model M dump.
analysis:
embedded_bios:
k_series_boot_rom:
source_file: src/bios/jagbios.c
header: src/bios/jagbios.h
symbol: jaguarBootROM
size: 131072 # 0x20000, 128 KB
description: "Jaguar K-series boot ROM"
filedb_crc: "0xFB731AAA"
filedb_name: "[BIOS] Atari Jaguar (World)"
m_series_boot_rom:
source_file: src/bios/jagbios_m.c
header: src/bios/jagbios_m.h
symbol: jaguarBootROM_M
size: 131072 # 0x20000, 128 KB
description: "Jaguar M-series boot ROM"
biosdb_crc: "0xAE25BDF5"
biosdb_name: "Model M boot ROM"
cd_boot_rom:
source_file: src/bios/jagcdbios.c
header: src/bios/jagcdbios.h
symbol: jaguarCDBootROM
size: 262144 # 0x40000, 256 KB
description: "Jaguar CD boot ROM"
filedb_crc: "0x687068D5"
filedb_name: "[BIOS] Atari Jaguar CD (World)"
dev_cd_boot_rom:
source_file: src/bios/jagdevcdbios.c
header: src/bios/jagdevcdbios.h
symbol: jaguarDevCDBootROM
size: 262144 # 0x40000, 256 KB
description: "Jaguar Developer CD boot ROM"
filedb_crc: "0x55A0669C"
filedb_name: "[BIOS] Atari Jaguar Developer CD (World)"
bios_type_enum:
source_ref: "src/core/settings.h:61"
values:
- BT_K_SERIES
- BT_M_SERIES
- BT_STUBULATOR_1
- BT_STUBULATOR_2
- BT_CUSTOM
core_option:
key: virtualjaguar_bios
label: "BIOS (Cartridges)"
description: "Which BIOS a cartridge boots with: disabled is HLE, enabled runs the boot ROM."
default: disabled
source_ref: "libretro_core_options.h:588-600"
bios_loading:
mechanism: embedded
load_address: "0xE00000"
load_size: "0x20000"
source_ref: "libretro.c:5339-5383, libretro.c:6332"
selection_logic: "BT_CUSTOM reads a file, BT_M_SERIES tries jagboot_m.rom, otherwise the embedded array"
external_loading: true
note: |
jagBootPath and CDBootPath struct fields are never set in the libretro
port. The standalone Virtual Jaguar GUI uses them but that code path
is not compiled into the libretro core.