Skip to content

Virtual Jaguar - RetroBIOS

Type libretro
Classification Community forks
Source https://github.com/libretro/virtualjaguar-libretro
Upstream http://shamusworld.gotdns.org/git/virtualjaguar
Version v2.1.0
Profiled 2026-09-04
Cores virtualjaguar
Systems atari-jaguar
Source analysis

embedded_bios:

**k_series_boot_rom:**

    - **source_file:** src/jagbios.c
    - **header:** src/jagbios.h
    - **symbol:** jaguarBootROM
    - **size:** 131072
    - **description:** Jaguar K-series boot ROM
    - **filedb_crc:** 0xFB731AAA
    - **filedb_name:** [BIOS] Atari Jaguar (World)
**m_series_boot_rom:**

    - **source_file:** src/jagbios2.c
    - **header:** src/jagbios2.h
    - **symbol:** jaguarBootROM2
    - **size:** 131072
    - **description:** Jaguar M-series boot ROM
**cd_boot_rom:**

    - **source_file:** src/jagcdbios.c
    - **header:** src/jagcdbios.h
    - **symbol:** jaguarCDBootROM
    - **size:** 262144
    - **description:** Jaguar CD boot ROM
    - **filedb_crc:** 0x687068D5
    - **filedb_name:** [BIOS] Atari Jaguar CD (World)
**stubulator_93:**

    - **source_file:** src/jagstub1bios.c
    - **header:** src/jagstub1bios.h
    - **symbol:** jaguarDevBootROM1
    - **size:** 131072
    - **description:** Jaguar Stubulator '93 dev BIOS
    - **filedb_crc:** 0xE60277BB
    - **filedb_name:** [BIOS] Atari Jaguar Stubulator '93 (World)
**stubulator_94:**

    - **source_file:** src/jagstub2bios.c
    - **header:** src/jagstub2bios.h
    - **symbol:** jaguarDevBootROM2
    - **size:** 131072
    - **description:** Jaguar Stubulator '94 dev BIOS
    - **filedb_crc:** 0x8D15DBC6
    - **filedb_name:** [BIOS] Atari Jaguar Stubulator '94 (World)
**dev_cd_boot_rom:**

    - **source_file:** src/jagdevcdbios.c
    - **header:** src/jagdevcdbios.h
    - **symbol:** jaguarDevCDBootROM
    - **size:** 262144
    - **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
- **description:** Use the Jaguar BIOS, required for some games.
- **default:** disabled
- **source_ref:** libretro_core_options.h:123

bios_loading:

- **mechanism:** embedded
- **load_address:** 0xE00000
- **load_size:** 0x20000
- **source_ref:** libretro.c:5339-5382, libretro.c:6295
- **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.

Technical 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. What the files buy is the real dump rather than the reimplementation, which is why they are collected.

4 files | 0 required, 4 optional | 0 in repo, 4 missing

[BIOS] Atari Jaguar CD (World).j64 optional missing
Jaguar CD retail BIOS, replacing the embedded copy

  • System: atari-jaguar
  • Size: 256.0 KB
  • CRC32: 687068d5
  • 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
  • Validation: size, crc32
  • Source: libretro.c:4964, libretro.c:4971-5048, libretro.c:5049-5158, libretro.c:5159-5175
  • 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.

[BIOS] Atari Jaguar Developer CD (World).j64 optional missing
Jaguar CD developer BIOS, selected by virtualjaguar_cd_bios_type

  • System: atari-jaguar
  • Size: 256.0 KB
  • CRC32: 55a0669c
  • Aliases: [BIOS] Atari Jaguar Developer CD (World).rom, [BIOS] Atari Jaguar Developer CD (World).bin
  • Validation: size, crc32
  • Source: libretro.c:4965, libretro.c:5049-5158
  • Same search and the same size and checksum test as the retail BIOS. Whichever type the option does not select is still tried last.

jagboot.rom optional missing
Cart boot ROM read when the BIOS type is set to custom

  • System: atari-jaguar
  • Size: 128.0 KB
  • Aliases: boot.rom, boot0.rom, [BIOS] Atari Jaguar (World).j64, [BIOS] Atari Jaguar Stubulator '94 (World).j64, [BIOS] Atari Jaguar Stubulator '93 (World).j64
  • Validation: size
  • Source: libretro.c:5293-5337, libretro.c:5339-5356
  • 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.

jagboot_m.rom optional missing
Model-M cart boot ROM, read when the BIOS type is Model M

  • System: atari-jaguar
  • Size: 128.0 KB
  • Validation: size
  • Source: libretro.c:5358-5380
  • Read from the system directory only, under that exact name, and only when biosType is BT_M_SERIES. A short read falls back to the embedded Model M array.

Generated on 2026-09-14T09:03:10Z