{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "virtualjaguar",
      "profile": {
        "analysis": {
          "bios_loading": {
            "external_loading": true,
            "load_address": "0xE00000",
            "load_size": "0x20000",
            "mechanism": "embedded",
            "note": "jagBootPath and CDBootPath struct fields are never set in the libretro\nport. The standalone Virtual Jaguar GUI uses them but that code path\nis not compiled into the libretro core.\n",
            "selection_logic": "BT_CUSTOM reads a file, BT_M_SERIES tries jagboot_m.rom, otherwise the embedded array",
            "source_ref": "libretro.c:6105-6180, libretro.c:7237"
          },
          "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": {
            "default": "disabled",
            "description": "Which BIOS a cartridge boots with: disabled is HLE, enabled runs the boot ROM.",
            "key": "virtualjaguar_bios",
            "label": "BIOS (Cartridges)",
            "source_ref": "libretro_core_options.h:589-601"
          },
          "embedded_bios": {
            "cd_boot_rom": {
              "description": "Jaguar CD boot ROM",
              "filedb_crc": "0x687068D5",
              "filedb_name": "[BIOS] Atari Jaguar CD (World)",
              "header": "src/bios/jagcdbios.h",
              "size": 262144,
              "source_file": "src/bios/jagcdbios.c",
              "symbol": "jaguarCDBootROM"
            },
            "dev_cd_boot_rom": {
              "description": "Jaguar Developer CD boot ROM",
              "filedb_crc": "0x55A0669C",
              "filedb_name": "[BIOS] Atari Jaguar Developer CD (World)",
              "header": "src/bios/jagdevcdbios.h",
              "size": 262144,
              "source_file": "src/bios/jagdevcdbios.c",
              "symbol": "jaguarDevCDBootROM"
            },
            "k_series_boot_rom": {
              "description": "Jaguar K-series boot ROM",
              "filedb_crc": "0xFB731AAA",
              "filedb_name": "[BIOS] Atari Jaguar (World)",
              "header": "src/bios/jagbios.h",
              "size": 131072,
              "source_file": "src/bios/jagbios.c",
              "symbol": "jaguarBootROM"
            },
            "m_series_boot_rom": {
              "biosdb_crc": "0xAE25BDF5",
              "biosdb_name": "Model M boot ROM",
              "description": "Jaguar M-series boot ROM",
              "header": "src/bios/jagbios_m.h",
              "size": 131072,
              "source_file": "src/bios/jagbios_m.c",
              "symbol": "jaguarBootROM_M"
            }
          }
        },
        "core_classification": "community_fork",
        "core_version": "v3.10.0",
        "cores": [
          "virtualjaguar"
        ],
        "display_name": "Atari - Jaguar (Virtual Jaguar)",
        "emulator": "Virtual Jaguar",
        "files": [
          {
            "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"
            ],
            "crc32": "687068d5",
            "description": "Jaguar CD retail BIOS, replacing the embedded copy",
            "name": "[BIOS] Atari Jaguar CD (World).j64",
            "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.",
            "required": false,
            "size": 262144,
            "source_ref": "libretro.c:5681, libretro.c:5706-5781, libretro.c:5785-5884, libretro.c:5899-5940",
            "system": "atari-jaguar",
            "validation": [
              "size",
              "crc32"
            ]
          },
          {
            "aliases": [
              "[BIOS] Atari Jaguar Developer CD (World).rom",
              "[BIOS] Atari Jaguar Developer CD (World).bin"
            ],
            "crc32": "55a0669c",
            "description": "Jaguar CD developer BIOS, selected by virtualjaguar_cd_bios_type",
            "name": "[BIOS] Atari Jaguar Developer CD (World).j64",
            "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.",
            "required": false,
            "size": 262144,
            "source_ref": "libretro.c:5682, libretro.c:5706-5781, libretro.c:5785-5884",
            "system": "atari-jaguar",
            "validation": [
              "size",
              "crc32"
            ]
          },
          {
            "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",
            "name": "jagboot.rom",
            "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.",
            "required": false,
            "size": 131072,
            "source_ref": "libretro.c:6010-6050, libretro.c:6059-6103, libretro.c:6131-6147",
            "system": "atari-jaguar",
            "validation": [
              "size"
            ]
          },
          {
            "crc32": "ae25bdf5",
            "description": "Model-M cart boot ROM, read when the BIOS type is Model M",
            "md5": "6e844759720226e58d55ecaf33608a13",
            "name": "jagboot_m.rom",
            "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.",
            "required": false,
            "sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
            "size": 131072,
            "source_ref": "libretro.c:6149-6171, src/bios/jagbios_m.c:9",
            "system": "atari-jaguar",
            "validation": [
              "size"
            ]
          }
        ],
        "notes": "The boot ROMs are compiled in, generated by bin2c, and a file in the system\ndirectory can replace them. stage_cart_boot_rom stages the cart boot ROM at\njagMemSpace + 0xE00000 (libretro.c:6105-6180). BT_M_SERIES reads\njagboot_m.rom from the system directory, and a read shorter than 0x20000\nbytes leaves the embedded Model M in place. BT_CUSTOM searches six names\nacross the system directory and two subdirectories (libretro.c:6059-6103),\ntakes the first file of exactly 0x20000 bytes, and falls back to the\nembedded Series K when none qualifies (libretro.c:6010-6050).\n\nstage_cd_bios calls load_external_cd_bios, which walks three name groups\nover five directories (libretro.c:5785-5884, 5899-5940). The group order\nfollows the virtualjaguar_cd_bios_type option, then generic names, then the\nother type, so a lone file of the other type still beats the embedded copy.\nA candidate must be exactly 0x40000 bytes. Its CRC32 is compared with two\nconstants, and a file matching neither is still accepted when the run\naddress at 0x404 lies between 0x800000 and 0x840000\n(libretro.c:5681-5682,5706-5781).\n\nThe \"BIOS (Cartridges)\" core option (virtualjaguar_bios, disabled by\ndefault) controls whether the boot ROM runs at startup. When enabled, the\nboot ROM entry point is copied to jaguarMainRAM\n(src/core/jaguar.c:1499-1501). When disabled, jaguarRunAddress is written\ndirectly, skipping the boot animation. GPU-only cartridges turn the boot\nROM on regardless (libretro.c:5968-6002).\n\nNothing here is required: every path falls back to an embedded copy, and a\nfile only replaces it. The embedded arrays are the dumps themselves:\njaguarBootROM and jaguarBootROM_M hash to the CRC32 values biosdb.c names\nSeries K and Model M, jaguarCDBootROM and jaguarDevCDBootROM to the two\nvalues the CD BIOS test accepts (src/bios/jagbios.c, src/bios/jagbios_m.c,\nsrc/bios/jagcdbios.c, src/bios/jagdevcdbios.c, src/core/biosdb.c:20-21,\nlibretro.c:5681-5682). A file changes what runs when it is a cart boot ROM\nunder BT_CUSTOM, where any checksum is loaded and an unrecognised one is\nlogged (libretro.c:6010-6050), or a CD BIOS revision outside the two\nchecksums.\n",
        "profiled_date": "2026-09-04",
        "source": "https://github.com/libretro/virtualjaguar-libretro",
        "source_commit": "e7db53678b86e2fceb459e26cf09d2fdaaa4d395",
        "systems": [
          "atari-jaguar"
        ],
        "type": "libretro",
        "upstream": "http://shamusworld.gotdns.org/git/virtualjaguar",
        "version_basis": {
          "distance": 0,
          "kind": "tag",
          "tag": "v3.10.0"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
