mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-23 20:29:06 -05:00
Same four files. A CD BIOS outside the two CRC32 constants is accepted on a plausible run address (libretro.c:5706-5781), and a custom cart boot ROM must be exactly 131072 bytes (libretro.c:6010-6050). core_version follows CORE_BASE_VERSION in the Makefile.
192 lines
7.6 KiB
YAML
192 lines
7.6 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: "e7db53678b86e2fceb459e26cf09d2fdaaa4d395"
|
|
core_version: "v3.10.0"
|
|
display_name: "Atari - Jaguar (Virtual Jaguar)"
|
|
cores:
|
|
- virtualjaguar
|
|
systems:
|
|
- atari-jaguar
|
|
|
|
notes: |
|
|
The boot ROMs are compiled in, generated by bin2c, and a file in the system
|
|
directory can replace them. stage_cart_boot_rom stages the cart boot ROM at
|
|
jagMemSpace + 0xE00000 (libretro.c:6105-6180). BT_M_SERIES reads
|
|
jagboot_m.rom from the system directory, and a read shorter than 0x20000
|
|
bytes leaves the embedded Model M in place. BT_CUSTOM searches six names
|
|
across the system directory and two subdirectories (libretro.c:6059-6103),
|
|
takes the first file of exactly 0x20000 bytes, and falls back to the
|
|
embedded Series K when none qualifies (libretro.c:6010-6050).
|
|
|
|
stage_cd_bios calls load_external_cd_bios, which walks three name groups
|
|
over five directories (libretro.c:5785-5884, 5899-5940). The group order
|
|
follows the virtualjaguar_cd_bios_type option, then generic names, then the
|
|
other type, so a lone file of the other type still beats the embedded copy.
|
|
A candidate must be exactly 0x40000 bytes. Its CRC32 is compared with two
|
|
constants, and a file matching neither is still accepted when the run
|
|
address at 0x404 lies between 0x800000 and 0x840000
|
|
(libretro.c:5681-5682,5706-5781).
|
|
|
|
The "BIOS (Cartridges)" core option (virtualjaguar_bios, disabled by
|
|
default) controls whether the boot ROM runs at startup. When enabled, the
|
|
boot ROM entry point is copied to jaguarMainRAM
|
|
(src/core/jaguar.c:1499-1501). When disabled, jaguarRunAddress is written
|
|
directly, skipping the boot animation. GPU-only cartridges turn the boot
|
|
ROM on regardless (libretro.c:5968-6002).
|
|
|
|
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:5681-5682). A file changes what runs when it is a cart boot ROM
|
|
under BT_CUSTOM, where any checksum is loaded and an unrecognised one is
|
|
logged (libretro.c:6010-6050), or a CD BIOS revision outside the two
|
|
checksums.
|
|
|
|
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:5681, libretro.c:5706-5781, libretro.c:5785-5884, libretro.c:5899-5940"
|
|
note: >-
|
|
Searched in the system directory and under Atari - Jaguar,
|
|
Atari - Jaguar CD, jaguar and jaguarcd. Accepted at exactly 262144
|
|
bytes. A file whose CRC32 matches neither constant is still accepted
|
|
when its run address at 0x404 lies between 0x800000 and 0x840000,
|
|
otherwise it is rejected and the search goes on. 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:5682, libretro.c:5706-5781, libretro.c:5785-5884"
|
|
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:6010-6050, libretro.c:6059-6103, libretro.c:6131-6147"
|
|
note: >-
|
|
Reached only through BT_CUSTOM. Searched in the system directory and
|
|
under Atari - Jaguar and jaguar, name by name. No checksum is tested. A
|
|
file that is not exactly 131072 bytes is skipped, and with none left the
|
|
embedded Series K is used.
|
|
|
|
- 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:6149-6171, 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:66"
|
|
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:589-601"
|
|
|
|
bios_loading:
|
|
mechanism: embedded
|
|
load_address: "0xE00000"
|
|
load_size: "0x20000"
|
|
source_ref: "libretro.c:6105-6180, libretro.c:7237"
|
|
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.
|