From 59e403bd3fbffaedb2fe947276327e8fed465a3a Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Fri, 23 Oct 2026 15:30:36 +0200 Subject: [PATCH] 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. --- emulators/virtualjaguar.yml | 80 +++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/emulators/virtualjaguar.yml b/emulators/virtualjaguar.yml index 75383dfc..882118a0 100644 --- a/emulators/virtualjaguar.yml +++ b/emulators/virtualjaguar.yml @@ -4,8 +4,8 @@ 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" +source_commit: "e7db53678b86e2fceb459e26cf09d2fdaaa4d395" +core_version: "v3.10.0" display_name: "Atari - Jaguar (Virtual Jaguar)" cores: - virtualjaguar @@ -13,30 +13,30 @@ 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 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). - 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). + 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" core option (virtualjaguar_bios, disabled by default) still - controls whether the boot ROM is executed at startup. When enabled, the + 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:1466-1468). When disabled, jaguarRunAddress is written - directly, skipping the boot animation. + (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: @@ -44,9 +44,10 @@ notes: | 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). + 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" @@ -65,14 +66,14 @@ files: - "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" + 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 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. + 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 @@ -84,7 +85,7 @@ files: - "[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" + 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. @@ -101,11 +102,12 @@ files: - "[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" + 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. No checksum is tested, and a read shorter - than 131072 bytes leaves the embedded Series K in place. + 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 @@ -116,7 +118,7 @@ files: 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" + 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 @@ -161,7 +163,7 @@ analysis: filedb_name: "[BIOS] Atari Jaguar Developer CD (World)" bios_type_enum: - source_ref: "src/core/settings.h:61" + source_ref: "src/core/settings.h:66" values: - BT_K_SERIES - BT_M_SERIES @@ -174,13 +176,13 @@ analysis: 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" + source_ref: "libretro_core_options.h:589-601" bios_loading: mechanism: embedded load_address: "0xE00000" 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" external_loading: true note: |