fix: virtualjaguar notes and refs at v3.10.0

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.
This commit is contained in:
Abdessamad Derraz committed 2026-10-23 15:52:34 +02:00
1 parent dfc6401a1b
commit 59e403bd3f
1 file changed
+41 -39
+41 -39
View File
@@ -4,8 +4,8 @@ core_classification: community_fork
source: "https://github.com/libretro/virtualjaguar-libretro" source: "https://github.com/libretro/virtualjaguar-libretro"
upstream: "http://shamusworld.gotdns.org/git/virtualjaguar" upstream: "http://shamusworld.gotdns.org/git/virtualjaguar"
profiled_date: "2026-09-04" profiled_date: "2026-09-04"
source_commit: "f9a3c89f58836cb2c45a42ad4edfac047050f30a" source_commit: "e7db53678b86e2fceb459e26cf09d2fdaaa4d395"
core_version: "v2.1.0" core_version: "v3.10.0"
display_name: "Atari - Jaguar (Virtual Jaguar)" display_name: "Atari - Jaguar (Virtual Jaguar)"
cores: cores:
- virtualjaguar - virtualjaguar
@@ -13,30 +13,30 @@ systems:
- atari-jaguar - atari-jaguar
notes: | notes: |
The boot ROMs are still compiled in, generated by bin2c, but the core no The boot ROMs are compiled in, generated by bin2c, and a file in the system
longer only uses them. Staging moved out of retro_load_game into directory can replace them. stage_cart_boot_rom stages the cart boot ROM at
stage_cart_boot_rom, which reads a file first and falls back to the jagMemSpace + 0xE00000 (libretro.c:6105-6180). BT_M_SERIES reads
embedded array (libretro.c:5339-5382). BT_M_SERIES tries jagboot_m.rom in jagboot_m.rom from the system directory, and a read shorter than 0x20000
the system directory. BT_CUSTOM, a value the enum did not carry before, bytes leaves the embedded Model M in place. BT_CUSTOM searches six names
searches six names across the system directory and two subdirectories across the system directory and two subdirectories (libretro.c:6059-6103),
(libretro.c:5293-5337). Either way the file has to be 0x20000 bytes, the takes the first file of exactly 0x20000 bytes, and falls back to the
size copied to jagMemSpace + 0xE00000. Anything shorter is a short read and embedded Series K when none qualifies (libretro.c:6010-6050).
the embedded Series K takes over.
The Jaguar CD BIOS is the larger change. stage_cd_bios calls stage_cd_bios calls load_external_cd_bios, which walks three name groups
load_external_cd_bios, which walks three name groups over five directories over five directories (libretro.c:5785-5884, 5899-5940). The group order
(libretro.c:5049-5158). The group order follows the follows the virtualjaguar_cd_bios_type option, then generic names, then the
virtualjaguar_cd_bios_type option, then generic names, then the other type, other type, so a lone file of the other type still beats the embedded copy.
because a lone file of the wrong type still beats the embedded copy: the A candidate must be exactly 0x40000 bytes. Its CRC32 is compared with two
user put it there deliberately. A candidate is accepted at exactly 0x40000 constants, and a file matching neither is still accepted when the run
bytes and recognised by CRC32 against two constants address at 0x404 lies between 0x800000 and 0x840000
(libretro.c:4964-4965,4971-5048). (libretro.c:5681-5682,5706-5781).
The "BIOS" core option (virtualjaguar_bios, disabled by default) still The "BIOS (Cartridges)" core option (virtualjaguar_bios, disabled by
controls whether the boot ROM is executed at startup. When enabled, the default) controls whether the boot ROM runs at startup. When enabled, the
boot ROM entry point is copied to jaguarMainRAM boot ROM entry point is copied to jaguarMainRAM
(src/core/jaguar.c:1466-1468). When disabled, jaguarRunAddress is written (src/core/jaguar.c:1499-1501). When disabled, jaguarRunAddress is written
directly, skipping the boot animation. 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 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: file only replaces it. The embedded arrays are the dumps themselves:
@@ -44,9 +44,10 @@ notes: |
Series K and Model M, jaguarCDBootROM and jaguarDevCDBootROM to the two 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, 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, 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, libretro.c:5681-5682). A file changes what runs when it is a cart boot ROM
where any image of 0x20000 bytes is loaded and an unrecognised checksum under BT_CUSTOM, where any checksum is loaded and an unrecognised one is
is logged (libretro.c:5245-5284). logged (libretro.c:6010-6050), or a CD BIOS revision outside the two
checksums.
files: files:
- name: "[BIOS] Atari Jaguar CD (World).j64" - name: "[BIOS] Atari Jaguar CD (World).j64"
@@ -65,14 +66,14 @@ files:
- "Jaguar CD BIOS.rom" - "Jaguar CD BIOS.rom"
- "Jaguar CD BIOS.bin" - "Jaguar CD BIOS.bin"
description: "Jaguar CD retail BIOS, replacing the embedded copy" 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" source_ref: "libretro.c:5681, libretro.c:5706-5781, libretro.c:5785-5884, libretro.c:5899-5940"
note: >- note: >-
Searched in the system directory and under Atari - Jaguar, Searched in the system directory and under Atari - Jaguar,
Atari - Jaguar CD, jaguar and jaguarcd. Accepted at exactly 262144 Atari - Jaguar CD, jaguar and jaguarcd. Accepted at exactly 262144
bytes and recognised by its CRC32. A file of the right size whose bytes. A file whose CRC32 matches neither constant is still accepted
checksum matches neither constant is counted as rejected and the when its run address at 0x404 lies between 0x800000 and 0x840000,
embedded BIOS is used. The generic names are tried after the type the otherwise it is rejected and the search goes on. The generic names are
virtualjaguar_cd_bios_type option selects. tried after the type the virtualjaguar_cd_bios_type option selects.
- name: "[BIOS] Atari Jaguar Developer CD (World).j64" - name: "[BIOS] Atari Jaguar Developer CD (World).j64"
system: atari-jaguar system: atari-jaguar
@@ -84,7 +85,7 @@ files:
- "[BIOS] Atari Jaguar Developer CD (World).rom" - "[BIOS] Atari Jaguar Developer CD (World).rom"
- "[BIOS] Atari Jaguar Developer CD (World).bin" - "[BIOS] Atari Jaguar Developer CD (World).bin"
description: "Jaguar CD developer BIOS, selected by virtualjaguar_cd_bios_type" description: "Jaguar CD developer BIOS, selected by virtualjaguar_cd_bios_type"
source_ref: "libretro.c:4965, libretro.c:5049-5158" source_ref: "libretro.c:5682, libretro.c:5706-5781, libretro.c:5785-5884"
note: >- note: >-
Same search and the same size and checksum test as the retail BIOS. Same search and the same size and checksum test as the retail BIOS.
Whichever type the option does not select is still tried last. Whichever type the option does not select is still tried last.
@@ -101,11 +102,12 @@ files:
- "[BIOS] Atari Jaguar Stubulator '94 (World).j64" - "[BIOS] Atari Jaguar Stubulator '94 (World).j64"
- "[BIOS] Atari Jaguar Stubulator '93 (World).j64" - "[BIOS] Atari Jaguar Stubulator '93 (World).j64"
description: "Cart boot ROM read when the BIOS type is set to custom" description: "Cart boot ROM read when the BIOS type is set to custom"
source_ref: "libretro.c:5293-5337, libretro.c:5339-5356" source_ref: "libretro.c:6010-6050, libretro.c:6059-6103, libretro.c:6131-6147"
note: >- note: >-
Reached only through BT_CUSTOM. Searched in the system directory and Reached only through BT_CUSTOM. Searched in the system directory and
under Atari - Jaguar and jaguar. No checksum is tested, and a read shorter under Atari - Jaguar and jaguar, name by name. No checksum is tested. A
than 131072 bytes leaves the embedded Series K in place. file that is not exactly 131072 bytes is skipped, and with none left the
embedded Series K is used.
- name: jagboot_m.rom - name: jagboot_m.rom
system: atari-jaguar system: atari-jaguar
@@ -116,7 +118,7 @@ files:
md5: "6e844759720226e58d55ecaf33608a13" md5: "6e844759720226e58d55ecaf33608a13"
crc32: "ae25bdf5" crc32: "ae25bdf5"
description: "Model-M cart boot ROM, read when the BIOS type is Model M" 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" source_ref: "libretro.c:6149-6171, src/bios/jagbios_m.c:9"
note: >- note: >-
Read from the system directory only, as jagboot_m.rom, and only when 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 biosType is BT_M_SERIES. A short read falls back to the embedded
@@ -161,7 +163,7 @@ analysis:
filedb_name: "[BIOS] Atari Jaguar Developer CD (World)" filedb_name: "[BIOS] Atari Jaguar Developer CD (World)"
bios_type_enum: bios_type_enum:
source_ref: "src/core/settings.h:61" source_ref: "src/core/settings.h:66"
values: values:
- BT_K_SERIES - BT_K_SERIES
- BT_M_SERIES - BT_M_SERIES
@@ -174,13 +176,13 @@ analysis:
label: "BIOS (Cartridges)" label: "BIOS (Cartridges)"
description: "Which BIOS a cartridge boots with: disabled is HLE, enabled runs the boot ROM." description: "Which BIOS a cartridge boots with: disabled is HLE, enabled runs the boot ROM."
default: disabled default: disabled
source_ref: "libretro_core_options.h:588-600" source_ref: "libretro_core_options.h:589-601"
bios_loading: bios_loading:
mechanism: embedded mechanism: embedded
load_address: "0xE00000" load_address: "0xE00000"
load_size: "0x20000" load_size: "0x20000"
source_ref: "libretro.c:5339-5383, libretro.c:6332" 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" selection_logic: "BT_CUSTOM reads a file, BT_M_SERIES tries jagboot_m.rom, otherwise the embedded array"
external_loading: true external_loading: true
note: | note: |