# emulators

id: bnes
name: bnes
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/bnes-libretro
upstream: https://github.com/Alcaro/bsnes-gc
source_commit: 8e26e89a93bef8eb8992d1921b539dce1792660a
profile_json:
{"analysis": {"bios_search": {"cartridge_load": "nes/cartridge/cartridge.cpp:18-31 - parses iNES header + ROM data", "interface_init": "nes/interface/interface.cpp:17-20 - stores derived pointer, calls system.init", "retro_load_game": "libretro/libretro.cpp:181-211 - loads cartridge data only, no BIOS", "system_init": "nes/system/system.cpp:62-66 - sets interface pointer, no ROM loading", "system_power": "nes/system/system.cpp:43-50 - powers subsystems, no file I/O"}, "fds_support": false, "filesystem_access": false, "system_directory_used": false}, "core_classification": "frozen_snapshot", "core_version": "v083", "cores": ["bnes"], "display_name": "Nintendo - NES / Famicom (bnes)", "emulator": "bnes", "files": [], "notes": "Frozen libretro port of byuu's higan v083 NES module by Ryphecha. Experimental,\nnot maintained. ROM data passed via retro_load_game memory buffer\n(libretro/libretro.cpp:181-184). Cartridge::load parses iNES headers and\ndelegates to Board::load (nes/cartridge/cartridge.cpp:18-31). System::init sets\nup the interface pointer and default input devices (nes/system/system.cpp:62-66).\nNo system directory access. No FDS support. Palette hardcoded\n(libretro/libretro.cpp:20-37). .info declares no firmware (firmware_count absent).\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/bnes-libretro", "source_commit": "8e26e89a93bef8eb8992d1921b539dce1792660a", "systems": ["nes"], "type": "libretro", "upstream": "https://github.com/Alcaro/bsnes-gc"}


id: boom3
name: boom3
type: libretro
classification: game_engine
source: https://github.com/libretro/boom3
upstream: https://github.com/dhewm/dhewm3
source_commit: b810234ea1e3b498fa6ff5f51efaaa9433b21060
profile_json:
{"core_classification": "game_engine", "core_version": "git", "cores": ["boom3", "boom3_xp"], "display_name": "Doom 3 (boom3)", "emulator": "boom3", "files": [], "notes": "Doom 3 source port based on dhewm3 (GPL Doom 3 engine). The core accepts .pk4 extensions (retro_get_system_info sets valid_extensions = \"pk4\"). Content is loaded directly from the .pk4 file path - the engine extracts the grandparent directory as fs_basepath (libretro.cpp:1097,1135-1136 via extract_directory called twice on info->path) and expects the standard Doom 3 directory layout with base/ containing pak000.pk4 through pak008.pk4. BASE_GAMEDIR is hardcoded to \"base\" (Licensee.h:58). The boom3_xp variant compiles with _D3XP defined, which passes \"+set fs_game d3xp\" at startup (libretro.cpp:538-544) to load the Resurrection of Evil expansion from a d3xp/ subdirectory alongside base/. The filesystem code (FileSystem.cpp:2125) scans for .pk4 files in the game directory and loads them in order, with higher-numbered paks overriding lower ones. The core requires OpenGL (RETRO_ENVIRONMENT_SET_HW_RENDER) and XRGB8888 pixel format. All required files are commercial Doom 3 game data, not engine firmware. No BIOS or system files are needed in the RetroArch system directory.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/boom3", "source_commit": "b810234ea1e3b498fa6ff5f51efaaa9433b21060", "systems": ["doom3"], "type": "libretro", "upstream": "https://github.com/dhewm/dhewm3", "verification": "existence"}


id: boytacean
name: Boytacean
type: standalone + libretro
classification: official_port
source: https://github.com/joamag/boytacean
upstream: https://github.com/joamag/boytacean
source_commit: 440213b507cfaefcc3adf6a62460097407379bcc
profile_json:
{"core_classification": "official_port", "core_version": "0.11.5", "cores": ["boytacean"], "display_name": "Nintendo - Game Boy / Color (Boytacean)", "emulator": "Boytacean", "files": [{"hle_fallback": true, "mode": "standalone", "name": "dmg_boot.bin", "note": "Original Nintendo DMG boot ROM", "required": false, "size": 256, "source_ref": "src/gb.rs:1400, src/data.rs:14", "system": "nintendo-gb"}, {"hle_fallback": true, "mode": "standalone", "name": "sgb_boot.bin", "note": "Super Game Boy boot ROM", "required": false, "size": 256, "source_ref": "src/gb.rs:1401, src/data.rs:29", "system": "nintendo-gb"}, {"hle_fallback": true, "mode": "standalone", "name": "dmg_bootix.bin", "note": "Open-source DMG boot ROM from Bootix (default DMG)", "required": false, "size": 256, "source_ref": "src/gb.rs:1402, src/data.rs:44", "system": "nintendo-gb"}, {"hle_fallback": true, "mode": "standalone", "name": "mgb_bootix.bin", "note": "Open-source MGB (Pocket) boot ROM from Bootix", "required": false, "size": 256, "source_ref": "src/gb.rs:1403, src/data.rs:59", "system": "nintendo-gb"}, {"hle_fallback": true, "mode": "standalone", "name": "cgb_boot.bin", "note": "Original Nintendo CGB boot ROM", "required": false, "size": 2304, "source_ref": "src/gb.rs:1404, src/data.rs:74", "system": "nintendo-gbc"}, {"hle_fallback": true, "mode": "standalone", "name": "cgb_boytacean.bin", "note": "Custom open-source CGB boot ROM (default CGB)", "required": false, "size": 2304, "source_ref": "src/gb.rs:1405, src/data.rs:177", "system": "nintendo-gbc"}], "notes": "Game Boy / Game Boy Color emulator written in Rust by Joao Magalhaes.\n\nLibretro: all boot ROMs compiled into binary as static byte arrays in\nsrc/data.rs. load_boot_static() copies from arrays. No filesystem\naccess, no RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. No external files.\nref: core.rs:402 instance.load(true) -> gb.rs:1311 -> load_boot_static\n\nStandalone (SDL): also defaults to embedded boot ROMs via load(true).\nUser can override via --boot-rom-path CLI argument with any boot ROM\nfile. load_boot_file() with hardcoded ./res/boot/*.bin paths exists in\ngb.rs:1361 but is not called from any frontend.\n\nBoot ROM defaults: DmgBootix (DMG), CgbBoytacean (CGB) — open-source.\n", "profiled_date": "2026-03-23", "source": "https://github.com/joamag/boytacean", "source_commit": "440213b507cfaefcc3adf6a62460097407379bcc", "systems": ["nintendo-gb", "nintendo-gbc"], "type": "standalone + libretro", "upstream": "https://github.com/joamag/boytacean"}


id: bsnes
name: bsnes
type: libretro
classification: official_port
source: https://github.com/libretro/bsnes-libretro
upstream: https://github.com/bsnes-emu/bsnes
source_commit: 9c1285dda7dd6bb9a9951d37bcee8794ada640e6
profile_json:
{"core_classification": "official_port", "core_version": "115", "cores": ["bsnes"], "display_name": "Nintendo - SNES / SFC (bsnes)", "emulator": "bsnes", "files": [{"hle_fallback": true, "name": "dsp1.program.rom", "note": "NEC uPD7725 program ROM for DSP1", "required": false, "size": 6144, "source_ref": "bsnes/sfc/cartridge/load.cpp:490-494, bsnes/heuristics/super-famicom.cpp:601", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "dsp1.data.rom", "note": "NEC uPD7725 data ROM for DSP1", "required": false, "size": 2048, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "dsp1b.program.rom", "note": "NEC uPD7725 program ROM for DSP1B (default NEC identifier)", "required": false, "size": 6144, "source_ref": "bsnes/heuristics/super-famicom.cpp:606", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "dsp1b.data.rom", "note": "NEC uPD7725 data ROM for DSP1B", "required": false, "size": 2048, "source_ref": "bsnes/heuristics/super-famicom.cpp:606", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "dsp2.program.rom", "note": "NEC uPD7725 program ROM for DSP2 (Dungeon Master)", "required": false, "size": 6144, "source_ref": "bsnes/sfc/cartridge/load.cpp:515-520, bsnes/heuristics/super-famicom.cpp:602", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "dsp2.data.rom", "note": "NEC uPD7725 data ROM for DSP2", "required": false, "size": 2048, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503", "system": "nintendo-snes", "validation": ["size"]}, {"name": "dsp3.program.rom", "note": "NEC uPD7725 program ROM for DSP3 (SD Gundam GX). No HLE fallback", "required": true, "size": 6144, "source_ref": "bsnes/sfc/cartridge/load.cpp:531-534", "system": "nintendo-snes", "validation": ["size"]}, {"name": "dsp3.data.rom", "note": "NEC uPD7725 data ROM for DSP3. No HLE fallback", "required": true, "size": 2048, "source_ref": "bsnes/sfc/cartridge/load.cpp:531-534", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "dsp4.program.rom", "note": "NEC uPD7725 program ROM for DSP4 (Top Gear 3000)", "required": false, "size": 6144, "source_ref": "bsnes/sfc/cartridge/load.cpp:522-528, bsnes/heuristics/super-famicom.cpp:604-605", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "dsp4.data.rom", "note": "NEC uPD7725 data ROM for DSP4", "required": false, "size": 2048, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "st010.program.rom", "note": "NEC uPD96050 program ROM for ST010", "required": false, "size": 49152, "source_ref": "bsnes/sfc/cartridge/load.cpp:570-574, bsnes/heuristics/super-famicom.cpp:583-587", "system": "nintendo-snes", "validation": ["size"]}, {"hle_fallback": true, "name": "st010.data.rom", "note": "NEC uPD96050 data ROM for ST010", "required": false, "size": 4096, "source_ref": "bsnes/sfc/cartridge/load.cpp:578-583", "system": "nintendo-snes", "validation": ["size"]}, {"name": "st011.program.rom", "note": "NEC uPD96050 program ROM for ST011 (2dan Morita Shougi). No HLE fallback", "required": true, "size": 49152, "source_ref": "bsnes/sfc/cartridge/load.cpp:599-601, bsnes/heuristics/super-famicom.cpp:586", "system": "nintendo-snes", "validation": ["size"]}, {"name": "st011.data.rom", "note": "NEC uPD96050 data ROM for ST011. No HLE fallback", "required": true, "size": 4096, "source_ref": "bsnes/sfc/cartridge/load.cpp:599-601", "system": "nintendo-snes", "validation": ["size"]}, {"name": "st018.program.rom", "note": "ARM6 program ROM for ST018 (Hayazashi Nidan Morita Shougi). No HLE fallback", "required": true, "size": 131072, "source_ref": "bsnes/sfc/cartridge/load.cpp:379-385, bsnes/sfc/coprocessor/armdsp/armdsp.hpp:31, bsnes/heuristics/super-famicom.cpp:580", "system": "nintendo-snes", "validation": ["size"]}, {"name": "st018.data.rom", "note": "ARM6 data ROM for ST018. No HLE fallback", "required": true, "size": 32768, "source_ref": "bsnes/sfc/cartridge/load.cpp:387-393, bsnes/sfc/coprocessor/armdsp/armdsp.hpp:32", "system": "nintendo-snes", "validation": ["size"]}, {"crc32": "b6e76a6a", "hle_fallback": true, "md5": "037ac4296b6b6a5c47c440188d3c72e3", "name": "cx4.data.rom", "note": "Hitachi HG51BS169 data ROM for Cx4 (Mega Man X2/X3). HLE fallback and built-in static ROM available", "required": false, "sha1": "a002f4efba42775a31185d443f3ed1790b0e949a", "size": 3072, "source_ref": "bsnes/sfc/cartridge/load.cpp:444-456, bsnes/sfc/coprocessor/hitachidsp/hitachidsp.hpp:49, bsnes/heuristics/super-famicom.cpp:597, bsnes/sfc/coprocessor/hitachidsp/data-rom.cpp:3 (staticDataROM[3072])", "system": "nintendo-snes", "validation": ["size"]}, {"name": "SGB1.sfc", "note": "Super Game Boy 1 cartridge ROM, loaded when playing .gb/.gbc via SGB mode", "required": false, "source_ref": "bsnes/target-libretro/libretro.cpp:926-935 (system_dir + sgb_bios), bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)", "system": "nintendo-super-game-boy"}, {"name": "SGB2.sfc", "note": "Super Game Boy 2 cartridge ROM, uses dedicated oscillator for accurate GB speed", "required": false, "source_ref": "bsnes/target-libretro/libretro.cpp:926-935 (system_dir + sgb_bios), bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)", "system": "nintendo-super-game-boy"}, {"name": "BS-X.bin", "note": "BS-X Satellaview BIOS ROM, loaded from system_dir when running .bs games", "required": true, "source_ref": "bsnes/target-libretro/libretro.cpp:944-951 (system_dir + BS-X.bin hardcoded, .bs extension branch)", "system": "nintendo-satellaview"}], "logo": "https://raw.githubusercontent.com/bsnes-emu/bsnes/master/bsnes/target-bsnes/resource/bsnes.svg", "notes": {"cx4_static_fallback": "The Cx4 (HG51BS169) has a compiled-in static data ROM (hitachidsp/staticDataROM) as fallback when cx4.data.rom is missing and HLE is disabled. This means Mega Man X2/X3 work in all configurations without user-supplied firmware.\n", "embedded_firmware": "If firmware data is appended to the game ROM, bsnes splits it automatically based on firmwareRomSize() detection. Sizes: uPD7725=0x2000, uPD96050=0xD000, ARM6=0x28000, HG51BS169=0xC00. This eliminates the need for separate files when using combined ROM+firmware dumps.\n", "firmware_resolution": "Firmware filenames are derived from the game manifest identifier field (lowercased) plus \".program.rom\" or \".data.rom\" suffix. The mapping is: NEC uPD7725 -> dsp1/dsp1b/dsp2/dsp3/dsp4, NEC uPD96050 -> st010/st011, ARM6 -> st018, HG51BS169 -> cx4. Firmware can also be appended directly to the ROM image (auto-detected by firmwareRomSize heuristic).\n", "hle_available": true, "hle_note": "bsnes provides HLE for DSP1, DSP1B, DSP2, DSP4, ST010, and Cx4. Controlled by core option bsnes_coprocessor_prefer_hle (default ON). DSP3, ST011, and ST018 have no HLE - LLE firmware files are mandatory for the few games that use them.\n", "sgb_note": "SGB boot ROMs (256 bytes each for SGB1/SGB2) are compiled into the core at icd/boot-roms.cpp. The SGB cartridge ROM (SGB1.sfc or SGB2.sfc) is a separate requirement. Core option bsnes_sgb_bios selects which one to use (default SGB1.sfc). Loading .gb/.gbc files auto-loads the selected SGB ROM.\n"}, "profiled_date": "2026-04-05", "source": "https://github.com/libretro/bsnes-libretro", "source_commit": "9c1285dda7dd6bb9a9951d37bcee8794ada640e6", "systems": ["nintendo-snes", "nintendo-super-game-boy", "nintendo-satellaview"], "type": "libretro", "upstream": "https://github.com/bsnes-emu/bsnes"}


id: bsnes-jg
name: bsnes-jg
type: libretro
classification: community_fork
source: https://github.com/libretro/bsnes-jg
upstream: https://gitlab.com/jgemu/bsnes
source_commit: aedc27e367b65f002afb5098684f39eb6124079c
profile_json:
{"core_classification": "community_fork", "core_version": "2.1.0", "cores": ["bsnes-jg"], "display_name": "Nintendo - SNES / SFC (bsnes-jg)", "emulator": "bsnes-jg", "files": [{"hle_fallback": true, "name": "dsp1.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:429, src/cartridge.cpp:774,798-804", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:432, src/cartridge.cpp:786,798-804", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1b.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:435, src/cartridge.cpp:774,798-804", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1b.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:438, src/cartridge.cpp:786,798-804", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp2.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:441, src/cartridge.cpp:774,806-811", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp2.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:444, src/cartridge.cpp:786,806-811", "system": "nintendo-snes"}, {"name": "dsp3.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:447-448, src/cartridge.cpp:774,822-828", "system": "nintendo-snes"}, {"name": "dsp3.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:451-452, src/cartridge.cpp:786,822-828", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp4.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:455, src/cartridge.cpp:774,813-818", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp4.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:458, src/cartridge.cpp:786,813-818", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "st010.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:461, src/cartridge.cpp:851,872-882", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "st010.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:464, src/cartridge.cpp:863,872-882", "system": "nintendo-snes"}, {"name": "st011.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:467-468, src/cartridge.cpp:851,884-901", "system": "nintendo-snes"}, {"name": "st011.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:471-472, src/cartridge.cpp:863,884-901", "system": "nintendo-snes"}, {"aliases": ["arm6.program.rom"], "name": "st018.program.rom", "required": false, "source_ref": "libretro/libretro.cpp:475-476, src/cartridge.cpp:640", "system": "nintendo-snes"}, {"aliases": ["arm6.data.rom"], "name": "st018.data.rom", "required": false, "source_ref": "libretro/libretro.cpp:479-480, src/cartridge.cpp:650", "system": "nintendo-snes"}], "notes": "Fork of bsnes v115 by Rupert Carmichael, rewritten for C++ standard library.\nCoprocessor firmware loaded from system_dir via openFileCallback.\nHLE available for DSP1/1B/2/4 and ST010 (core option bsnes_jg_coproc_preferhle).\nDSP3, ST011, ST018 require LLE firmware in all cases (no HLE path).\nCX4/HitachiDSP uses embedded static data ROM (3072 bytes), no external file.\nSGB1/SGB2 boot ROMs embedded (256 bytes each).\nBML game databases embedded as C++ string literals.\n\nref: libretro/libretro.cpp:420-502 fileOpenV firmware loading callback\nref: src/cartridge.cpp:754-829 uPD7725 (DSP1-4) LLE/HLE dispatch\nref: src/cartridge.cpp:831-901 uPD96050 (ST010/ST011) LLE/HLE dispatch\nref: src/cartridge.cpp:615-670 ARM6 (ST018) firmware loading\nref: src/cartridge.cpp:672-752 HG51BS169 (HitachiDSP/CX4) embedded ROM + HLE\nref: src/coprocessor/icd.cpp:249,260 SGB1/SGB2 boot ROMs embedded\nref: src/cartridge.cpp:62 hitachidspStaticDataROM embedded\nref: libretro/libretro.cpp:30-33 BML databases embedded\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/bsnes-jg", "source_commit": "aedc27e367b65f002afb5098684f39eb6124079c", "systems": ["nintendo-snes", "nintendo-sgb", "nintendo-satellaview", "nintendo-sufami-turbo"], "type": "libretro", "upstream": "https://gitlab.com/jgemu/bsnes"}


id: bsnes2014
name: bsnes 2014
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/bsnes2014
upstream: https://github.com/bsnes-emu/bsnes
source_commit: 1a6b3caf187605e53fa9970996bcfa49b8c90ce3
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "v094", "cores": ["bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance"], "display_name": "Nintendo - SNES / SFC (bsnes 2014)", "emulator": "bsnes 2014", "files": [{"name": "dsp1b.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:381", "system": "nintendo-snes"}, {"name": "dsp1b.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:382", "system": "nintendo-snes"}, {"name": "dsp2.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:403", "system": "nintendo-snes"}, {"name": "dsp2.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:404", "system": "nintendo-snes"}, {"name": "dsp3.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:417", "system": "nintendo-snes"}, {"name": "dsp3.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:418", "system": "nintendo-snes"}, {"name": "dsp4.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:431", "system": "nintendo-snes"}, {"name": "dsp4.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:432", "system": "nintendo-snes"}, {"name": "cx4.data.rom", "required": false, "size": 3072, "source_ref": "ananke/heuristics/super-famicom.hpp:146", "system": "nintendo-snes"}, {"name": "st010.program.rom", "required": false, "size": 49152, "source_ref": "ananke/heuristics/super-famicom.hpp:445", "system": "nintendo-snes"}, {"name": "st010.data.rom", "required": false, "size": 4096, "source_ref": "ananke/heuristics/super-famicom.hpp:446", "system": "nintendo-snes"}, {"name": "st011.program.rom", "required": false, "size": 49152, "source_ref": "ananke/heuristics/super-famicom.hpp:460", "system": "nintendo-snes"}, {"name": "st011.data.rom", "required": false, "size": 4096, "source_ref": "ananke/heuristics/super-famicom.hpp:461", "system": "nintendo-snes"}, {"name": "st018.program.rom", "required": false, "size": 131072, "source_ref": "ananke/heuristics/super-famicom.hpp:475", "system": "nintendo-snes"}, {"name": "st018.data.rom", "required": false, "size": 32768, "source_ref": "ananke/heuristics/super-famicom.hpp:476", "system": "nintendo-snes"}, {"name": "sgb.boot.rom", "required": false, "size": 256, "source_ref": "ananke/heuristics/super-famicom.hpp:133", "system": "nintendo-sgb"}], "notes": "Frozen at bsnes v094. Three build profiles: accuracy (dot-based PPU),\nbalanced, performance (scanline PPU). All 3 share the same 16 firmware\nfiles. Profiles only differ in PPU (sfc/profile-*.hpp), not coprocessors.\nSPC700 IPL ROM (64 bytes) embedded in target-libretro/libretro.cpp:31.\nNo HLE fallback for any coprocessor in v094.\nFirmware loaded from system_dir via file::exists() + mmapstream.\nNo hash or size validation on any firmware file.\nLibretro build uses heuristics only (ananke/heuristics/), not the SHA256\ndatabase (ananke/database/). All DSP1 games use DSP1B filenames via\nheuristic fallback. The database dsp1.program.rom / dsp1.data.rom names\nare only in the standalone build (target-ethos via ananke).\n.info accuracy/balanced: firmware_count=18 (overcounts by 2, includes\nphantom dsp1.* from unused database). Performance .info: firmware_count=17\n(also missing cx4.data.rom).\nUpstream v094 source is contained within the libretro repo (sfc/, ananke/).\nbsnes-emu/bsnes is the modern rewrite (v115+).\n", "profiled_date": "2026-03-25", "source": "https://github.com/libretro/bsnes2014", "source_commit": "1a6b3caf187605e53fa9970996bcfa49b8c90ce3", "systems": ["nintendo-snes", "nintendo-sgb", "nintendo-satellaview", "nintendo-sufami-turbo"], "type": "libretro", "upstream": "https://github.com/bsnes-emu/bsnes"}


id: bsnes_cplusplus98
name: bsnes C++98
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/bsnes-libretro-cplusplus98
upstream: https://byuu.org/
source_commit: 0ac6a163490b4ffb1c09350e17bad060857c33d2
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "v085 (Performance)", "cores": ["bsnes_cplusplus98"], "display_name": "Nintendo - SNES / SFC (bsnes C++98 (v085))", "emulator": "bsnes C++98", "exclusion_note": "firmware_count=0 in .info is correct. DSP firmware (NEC uPD7725/uPD96050, Hitachi CX4) is loaded from the ROM directory via game XML markup, not from system_dir. RetroArch cannot pre-populate firmware in the ROM directory. Upstream byuu.org is defunct; this libretro port is the preserved v085 code.\n", "files": [], "notes": "Frozen snapshot of bsnes v085 downgraded to C++98 for old compilers (PS3).\nPerformance profile only. is_experimental=true.\n\nNEC DSP and Hitachi DSP firmware loaded from the ROM directory, not\nsystem_dir. Path: dir(interface->path(Slot::Base, \".dsp\")) + firmware_name\nfrom game XML markup. interface->path() returns ROM basename + hint.\nref: snes/cartridge/markup.cpp parse_markup_necdsp, parse_markup_hitachidsp\nref: snes/libretro/libretro.cpp Interface::path()\n\nRETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY is never called.\nNo file I/O targets system_dir anywhere in the codebase.\n\nCore continues without DSP firmware but coprocessor games won't function.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/bsnes-libretro-cplusplus98", "source_commit": "0ac6a163490b4ffb1c09350e17bad060857c33d2", "systems": ["nintendo-snes", "nintendo-sufami-turbo", "nintendo-satellaview"], "type": "libretro", "upstream": "https://byuu.org/"}


id: bsnes_hd_beta
name: bsnes-hd beta
type: libretro
classification: enhanced_fork
source: https://github.com/DerKoun/bsnes-hd
upstream: https://github.com/bsnes-emu/bsnes
source_commit: fc26b25ea236f0f877f0265d2a2c37dfd93dfde9
profile_json:
{"core_classification": "enhanced_fork", "core_version": "v10.6", "cores": ["bsnes_hd_beta", "bsneshd", "bsnes_hd"], "display_name": "Nintendo - SNES / SFC (bsnes-hd beta)", "emulator": "bsnes-hd beta", "files": [{"hle_fallback": true, "name": "dsp1.program.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:490-494, bsnes/sfc/cartridge/load.cpp:506-513", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1.data.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503, bsnes/sfc/cartridge/load.cpp:506-513", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1b.program.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:490-494, bsnes/sfc/cartridge/load.cpp:506-513", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1b.data.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503, bsnes/sfc/cartridge/load.cpp:506-513", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp2.program.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:490-494, bsnes/sfc/cartridge/load.cpp:515-520", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp2.data.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503, bsnes/sfc/cartridge/load.cpp:515-520", "system": "nintendo-snes"}, {"name": "dsp3.program.rom", "note": "no HLE — required for SD Gundam GX", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:490-494, bsnes/sfc/cartridge/load.cpp:531-534", "system": "nintendo-snes"}, {"name": "dsp3.data.rom", "note": "no HLE — required for SD Gundam GX", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503, bsnes/sfc/cartridge/load.cpp:531-534", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp4.program.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:490-494, bsnes/sfc/cartridge/load.cpp:522-528", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp4.data.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:498-503, bsnes/sfc/cartridge/load.cpp:522-528", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "cx4.data.rom", "required": false, "size": 3072, "source_ref": "bsnes/sfc/cartridge/load.cpp:431-454", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "st010.program.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:570-574, bsnes/sfc/cartridge/load.cpp:586-596", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "st010.data.rom", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:578-583, bsnes/sfc/cartridge/load.cpp:586-596", "system": "nintendo-snes"}, {"name": "st011.program.rom", "note": "no HLE — required for Hayazashi Nidan Morita Shougi", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:570-574, bsnes/sfc/cartridge/load.cpp:599-602", "system": "nintendo-snes"}, {"name": "st011.data.rom", "note": "no HLE — required for Hayazashi Nidan Morita Shougi", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:578-583, bsnes/sfc/cartridge/load.cpp:599-602", "system": "nintendo-snes"}, {"name": "st018.program.rom", "note": "no HLE — required for Hayazashi Nidan Morita Shougi 2", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:379-384", "system": "nintendo-snes"}, {"name": "st018.data.rom", "note": "no HLE — required for Hayazashi Nidan Morita Shougi 2", "required": false, "source_ref": "bsnes/sfc/cartridge/load.cpp:387-393", "system": "nintendo-snes"}, {"md5": "b15ddb15721c657d82c5bab6db982ee9", "name": "SGB1.sfc", "note": "SGB1 cartridge ROM. Boot ROM embedded in icd/boot-roms.cpp:1", "required": false, "source_ref": "bsnes/target-libretro/libretro.cpp:1022, bsnes/target-libretro/libretro.cpp:1040", "system": "nintendo-sgb"}, {"md5": "8ecd73eb4edf7ed7e81aef1be80031d5", "name": "SGB2.sfc", "note": "SGB2 cartridge ROM. Boot ROM embedded in icd/boot-roms.cpp:12", "required": false, "source_ref": "bsnes/target-libretro/libretro.cpp:1022, bsnes/target-libretro/libretro.cpp:1040", "system": "nintendo-sgb"}, {"name": "BS-X.bin", "note": "required when loading .bs files, core returns false if missing", "required": false, "source_ref": "bsnes/target-libretro/libretro.cpp:1054-1060", "system": "nintendo-satellaview"}], "notes": "bsnes-hd beta is a fork of bsnes ~v114 by DerKoun with widescreen\nand true color rendering. Firmware handling identical to bsnes v115.\nrepo Version=\"10.6\", SerializerVersion=\"114.2\"\nref: bsnes/emulator/emulator.hpp:33-34,40\n\nSGB boot ROMs embedded in binary (icd/boot-roms.cpp:1,12).\nSGB1.sfc/SGB2.sfc are SGB cartridge ROMs (not boot ROMs).\nHLE available for DSP1/1B/2/4, ST010, CX4 (default ON in libretro).\nDSP3, ST011, ST018 have no HLE.\nCoprocessor firmware not loaded from system_dir in libretro wrapper;\nHLE used by default, LLE requires firmware embedded in ROM.\nref: sfc/cartridge/load.cpp:431,506,586\nref: sfc/coprocessor/icd/icd.cpp:87,90\nref: target-libretro/libretro_core_options.h:462-470\n", "profiled_date": "2026-03-23", "source": "https://github.com/DerKoun/bsnes-hd", "source_commit": "fc26b25ea236f0f877f0265d2a2c37dfd93dfde9", "systems": ["nintendo-snes", "nintendo-sgb", "nintendo-satellaview", "nintendo-sufami-turbo"], "type": "libretro", "upstream": "https://github.com/bsnes-emu/bsnes"}


id: bsnes_mercury
name: bsnes-mercury
type: libretro
classification: enhanced_fork
source: https://github.com/libretro/bsnes-mercury
upstream: https://byuu.org/higan
source_commit: d83bf7ab607e09131731b3a81825f986f91c1f84
profile_json:
{"core_classification": "enhanced_fork", "core_version": "v094 (Mercury)", "cores": ["bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance"], "display_name": "Nintendo - SNES / SFC (bsnes-mercury)", "emulator": "bsnes-mercury", "files": [{"hle_fallback": true, "name": "dsp1.program.rom", "note": "only loaded via custom BML manifest, ananke uses dsp1b", "required": false, "size": 6144, "source_ref": "sfc/cartridge/markup.cpp:422-432", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1.data.rom", "note": "only loaded via custom BML manifest, ananke uses dsp1b", "required": false, "size": 2048, "source_ref": "sfc/cartridge/markup.cpp:422-432", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1b.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:381", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp1b.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:382", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp2.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:403", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp2.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:404", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp3.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:417", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp3.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:418", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp4.program.rom", "required": false, "size": 6144, "source_ref": "ananke/heuristics/super-famicom.hpp:431", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "dsp4.data.rom", "required": false, "size": 2048, "source_ref": "ananke/heuristics/super-famicom.hpp:432", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "cx4.data.rom", "required": false, "size": 3072, "source_ref": "ananke/heuristics/super-famicom.hpp:146", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "st010.program.rom", "required": false, "size": 49152, "source_ref": "ananke/heuristics/super-famicom.hpp:445", "system": "nintendo-snes"}, {"hle_fallback": true, "name": "st010.data.rom", "required": false, "size": 4096, "source_ref": "ananke/heuristics/super-famicom.hpp:446", "system": "nintendo-snes"}, {"name": "st011.program.rom", "required": false, "size": 49152, "source_ref": "ananke/heuristics/super-famicom.hpp:460", "system": "nintendo-snes"}, {"name": "st011.data.rom", "required": false, "size": 4096, "source_ref": "ananke/heuristics/super-famicom.hpp:461", "system": "nintendo-snes"}, {"name": "st018.program.rom", "required": false, "size": 131072, "source_ref": "ananke/heuristics/super-famicom.hpp:475", "system": "nintendo-snes"}, {"name": "st018.data.rom", "required": false, "size": 32768, "source_ref": "ananke/heuristics/super-famicom.hpp:476", "system": "nintendo-snes"}, {"name": "sgb.boot.rom", "required": false, "size": 256, "source_ref": "ananke/heuristics/super-famicom.hpp:133", "system": "nintendo-sgb"}], "notes": "Fork of higan v094 by Alcaro. Restores HLE for coprocessor chips removed\nin v094, adds firmware_appended support and SuperFX overclocking.\nThree profiles: accuracy, balanced, performance (PPU differs, not firmware).\nCore option bsnes_chip_hle (default LLE, requires bsnes_violate_accuracy)\ncontrols HLE/LLE at runtime. ref: target-libretro/libretro.cpp:428-442\n\nFirmware loaded from system_dir via file::exists + mmapstream.\nNo hash or size validation on any firmware file.\nref: target-libretro/libretro.cpp:242-264\n\nfirmware_appended: firmware can be appended to end of ROM file.\nref: ananke/heuristics/super-famicom.hpp:83\n\nSPC700 IPL ROM (64 bytes) is embedded in the binary.\nref: target-libretro/libretro.cpp:39\n\nUpstream higan v094 by byuu (2014, site defunct). Mercury preserves v094\ncode with HLE additions documented in changes.diff at repo root.\n", "profiled_date": "2026-03-25", "source": "https://github.com/libretro/bsnes-mercury", "source_commit": "d83bf7ab607e09131731b3a81825f986f91c1f84", "systems": ["nintendo-snes", "nintendo-sgb", "nintendo-satellaview", "nintendo-sufami-turbo"], "type": "libretro", "upstream": "https://byuu.org/higan"}


id: c64-emu
name: C64.emu
type: standalone
classification: community_fork
source: https://github.com/Rakashazi/emu-ex-plus-alpha
upstream: https://github.com/VICE-Team/svn-mirror
source_commit: 1c12fac5ce49badaadff2e2f210dcc30b89f4943
profile_json:
{"core_classification": "community_fork", "core_version": "1.5.85", "cores": ["c64-emu", "C64.emu", "C64-EMU"], "display_name": "Commodore - C64 (C64.emu)", "emulator": "C64.emu", "files": [{"description": "C64 kernal Rev 3, default kernal and default model", "name": "kernal-901227-03.bin", "path": "C64/kernal-901227-03.bin", "required": true, "sha1": "1d503e56df85a62fee696e7618dc5b4e781df1bb", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:52,93 (name, hash), C64.emu/src/vice/c64/c64-resources.c:378,245, C64.emu/src/vice/c64/c64rom.c:226", "system": "commodore-c64", "validation": ["size", "sha1"]}, {"description": "C64 kernal Rev 2, C64 old PAL model", "name": "kernal-901227-02.bin", "path": "C64/kernal-901227-02.bin", "required": false, "sha1": "0e2e4ee3f2d41f00bed72f9ab588b83e306fdb13", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:51,92, C64.emu/src/vice/c64/c64model.c:113-116, C64.emu/src/vice/c64/c64-resources.c:244", "system": "commodore-c64", "validation": ["size", "sha1"]}, {"description": "C64 kernal Rev 1, C64 old NTSC model", "name": "kernal-901227-01.bin", "path": "C64/kernal-901227-01.bin", "required": false, "sha1": "87cc04d61fc748b82df09856847bb5c2754a2033", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:50,91, C64.emu/src/vice/c64/c64model.c:128-131, C64.emu/src/vice/c64/c64-resources.c:243", "system": "commodore-c64", "validation": ["size", "sha1"]}, {"description": "SX-64 kernal, C64 SX PAL and NTSC models", "name": "kernal-251104-04.bin", "path": "C64/kernal-251104-04.bin", "required": false, "sha1": "aa136e91ecf3c5ac64f696b3dbcbfc5ba0871c98", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:54,95, C64.emu/src/vice/c64/c64model.c:138-146, C64.emu/src/vice/c64/c64-resources.c:247", "system": "commodore-c64", "validation": ["size", "sha1"]}, {"description": "Japanese C64 kernal", "name": "kernal-906145-02.bin", "path": "C64/kernal-906145-02.bin", "region": ["japan"], "required": false, "sha1": "4ff0f11e80f4b57430d8f0c3799ed0f0e0f4565d", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:49,90, C64.emu/src/vice/c64/c64model.c:148-151, C64.emu/src/vice/c64/c64-resources.c:246", "system": "commodore-c64", "validation": ["size", "sha1"]}, {"description": "C64 GS kernal", "name": "kernal-390852-01.bin", "path": "C64/kernal-390852-01.bin", "required": false, "sha1": "3ad6cc1837c679a11f551ad1cf1a32dd84ace719", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:53,94, C64.emu/src/vice/c64/c64model.c:153-156, C64.emu/src/vice/c64/c64-resources.c:248", "system": "commodore-c64", "validation": ["size", "sha1"]}, {"description": "Educator 64 kernal, PET64 PAL and NTSC models", "name": "kernal-901246-01.bin", "path": "C64/kernal-901246-01.bin", "required": false, "sha1": "6c4fa9465f6091b174df27dfe679499df447503c", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:55,96, C64.emu/src/vice/c64/c64model.c:158-166, C64.emu/src/vice/c64/c64-resources.c:249", "system": "commodore-c64", "validation": ["size", "sha1"]}, {"description": "C64 BASIC", "name": "basic-901226-01.bin", "path": "C64/basic-901226-01.bin", "required": true, "sha1": "79015323128650c742a3694c9429aa91f355905e", "size": 8192, "source_ref": "C64.emu/src/vice/c64/c64rom.h:31,88, C64.emu/src/vice/c64/c64-resources.c:381, C64.emu/src/vice/c64/c64rom.c:279", "system": "commodore-c64", "validation": ["size"]}, {"description": "C64 character generator", "name": "chargen-901225-01.bin", "path": "C64/chargen-901225-01.bin", "required": true, "size": 4096, "source_ref": "C64.emu/src/vice/c64/c64rom.h:60, C64.emu/src/vice/c64/c64-resources.c:375, C64.emu/src/vice/c64/c64rom.c:295", "system": "commodore-c64", "validation": ["size"]}, {"description": "Japanese C64 character generator", "name": "chargen-906143-02.bin", "path": "C64/chargen-906143-02.bin", "region": ["japan"], "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/c64/c64rom.h:61, C64.emu/src/vice/c64/c64model.c:148-151,323", "system": "commodore-c64", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "C64 symbolic keymap, US layout", "name": "gtk3_sym.vkm", "path": "C64/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263,704,1386-1392", "system": "commodore-c64"}, {"category": "game_data", "description": "VIC-II default external palette", "name": "pepto-pal.vpl", "path": "C64/pepto-pal.vpl", "required": false, "source_ref": "C64.emu/src/vice/vicii/vicii-resources.c:170, C64.emu/src/vice/viciisc/vicii-resources.c:186, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-c64"}, {"description": "SuperCPU64 firmware", "max_size": 524288, "min_size": 65536, "name": "scpu64", "path": "SCPU64/scpu64", "required": true, "source_ref": "C64.emu/src/vice/scpu64/scpu64-resources.c:234, C64.emu/src/vice/scpu64/scpu64rom.c:80, C64.emu/src/vice/scpu64/scpu64mem.h:39-40", "system": "commodore-c64-supercpu", "validation": ["size"]}, {"description": "Character generator for the SuperCPU machine", "name": "chargen-901225-01.bin", "path": "SCPU64/chargen-901225-01.bin", "required": true, "size": 4096, "source_ref": "C64.emu/src/vice/scpu64/scpu64-resources.c:231, C64.emu/src/vice/scpu64/scpu64rom.c:63, C64.emu/src/vice/scpu64/scpu64mem.h:38", "system": "commodore-c64-supercpu", "validation": ["size"]}, {"description": "Japanese character generator, Japanese SuperCPU model", "name": "chargen-906143-02.bin", "path": "SCPU64/chargen-906143-02.bin", "region": ["japan"], "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/scpu64/scpu64model.c:303, C64.emu/src/vice/c64/c64rom.h:61", "system": "commodore-c64-supercpu", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "SuperCPU symbolic keymap, US layout", "name": "gtk3_sym.vkm", "path": "SCPU64/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263,704", "system": "commodore-c64-supercpu"}, {"category": "game_data", "description": "VIC-II default external palette", "name": "pepto-pal.vpl", "path": "SCPU64/pepto-pal.vpl", "required": false, "source_ref": "C64.emu/src/vice/viciisc/vicii-resources.c:186, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-c64-supercpu"}, {"description": "C64 kernal Rev 3 for the DTV machine", "name": "kernal-901227-03.bin", "path": "C64DTV/kernal-901227-03.bin", "required": true, "sha1": "1d503e56df85a62fee696e7618dc5b4e781df1bb", "size": 8192, "source_ref": "C64.emu/src/vice/c64dtv/c64dtv-resources.c:154, C64.emu/src/vice/c64/c64rom.h:52,93, C64.emu/src/vice/c64/c64rom.c:226", "system": "commodore-c64dtv", "validation": ["size", "sha1"]}, {"description": "C64 BASIC for the DTV machine", "name": "basic-901226-01.bin", "path": "C64DTV/basic-901226-01.bin", "required": true, "sha1": "79015323128650c742a3694c9429aa91f355905e", "size": 8192, "source_ref": "C64.emu/src/vice/c64dtv/c64dtv-resources.c:157, C64.emu/src/vice/c64/c64rom.h:31,88, C64.emu/src/vice/c64/c64rom.c:279", "system": "commodore-c64dtv", "validation": ["size"]}, {"description": "Character generator for the DTV machine", "name": "chargen-901225-01.bin", "path": "C64DTV/chargen-901225-01.bin", "required": true, "size": 4096, "source_ref": "C64.emu/src/vice/c64dtv/c64dtv-resources.c:151, C64.emu/src/vice/c64/c64rom.c:295", "system": "commodore-c64dtv", "validation": ["size"]}, {"description": "DTV flash image, all six DTV model resources default to this name", "max_size": 2097152, "name": "dtvrom.bin", "note": "Read into the 2 MB flash. When the file is absent the emulator builds the flash from the loaded kernal, BASIC and chargen instead.", "path": "C64DTV/dtvrom.bin", "required": false, "source_ref": "C64.emu/src/vice/c64dtv/c64dtvflash.c:59-64,643-656,471,486-500", "system": "commodore-c64dtv", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "DTV symbolic keymap, US layout", "name": "gtk3_sym.vkm", "path": "C64DTV/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263,704", "system": "commodore-c64dtv"}, {"category": "game_data", "description": "VIC-II default external palette on the DTV machine", "name": "spiff.vpl", "path": "C64DTV/spiff.vpl", "required": false, "source_ref": "C64.emu/src/vice/vicii/vicii-resources.c:167-168, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-c64dtv"}, {"description": "C128 international kernal, editor and Z80 BIOS", "name": "kernal-318020-05.bin", "path": "C128/kernal-318020-05.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:93, C64.emu/src/vice/c128/c128-resources.c:658, C64.emu/src/vice/c128/c128rom.c:343,770", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 German kernal", "name": "kernal-315078-03.bin", "path": "C128/kernal-315078-03.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:95, C64.emu/src/vice/c128/c128-resources.c:662, C64.emu/src/vice/c128/c128rom.c:771", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Swiss kernal", "name": "kernal-325172-01.bin", "path": "C128/kernal-325172-01.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:94, C64.emu/src/vice/c128/c128-resources.c:660, C64.emu/src/vice/c128/c128rom.c:777", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Swedish kernal", "name": "kernal-318034-01.bin", "path": "C128/kernal-318034-01.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:100, C64.emu/src/vice/c128/c128-resources.c:672, C64.emu/src/vice/c128/c128rom.c:776", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Finnish kernal", "name": "kernalfi", "path": "C128/kernalfi", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:96, C64.emu/src/vice/c128/c128-resources.c:664, C64.emu/src/vice/c128/c128rom.c:772", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 French kernal", "name": "kernalfr", "path": "C128/kernalfr", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:97, C64.emu/src/vice/c128/c128-resources.c:666, C64.emu/src/vice/c128/c128rom.c:773", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Italian kernal", "name": "kernalit", "path": "C128/kernalit", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:98, C64.emu/src/vice/c128/c128-resources.c:668, C64.emu/src/vice/c128/c128rom.c:774", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Norwegian kernal", "name": "kernalno", "path": "C128/kernalno", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:99, C64.emu/src/vice/c128/c128-resources.c:670, C64.emu/src/vice/c128/c128rom.c:775", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 BASIC low half", "name": "basiclo-318018-04.bin", "path": "C128/basiclo-318018-04.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:103, C64.emu/src/vice/c128/c128-resources.c:650, C64.emu/src/vice/c128/c128rom.c:434,763", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 BASIC high half, holds the editor", "name": "basichi-318019-04.bin", "path": "C128/basichi-318019-04.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/c128/c128rom.h:104, C64.emu/src/vice/c128/c128-resources.c:652, C64.emu/src/vice/c128/c128rom.c:443,764", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 international character generator", "name": "chargen-390059-01.bin", "path": "C128/chargen-390059-01.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:82, C64.emu/src/vice/c128/c128-resources.c:634, C64.emu/src/vice/c128/c128rom.c:529,783", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 German character generator", "name": "chargen-315079-01.bin", "path": "C128/chargen-315079-01.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:85, C64.emu/src/vice/c128/c128-resources.c:638, C64.emu/src/vice/c128/c128rom.c:784", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Italian, French and Belgian character generator", "name": "chargen-325167-02.bin", "path": "C128/chargen-325167-02.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:87-88, C64.emu/src/vice/c128/c128-resources.c:642,644, C64.emu/src/vice/c128/c128rom.c:785,790", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Swedish and Finnish character generator", "name": "chargen-325181-01.bin", "path": "C128/chargen-325181-01.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:86,90, C64.emu/src/vice/c128/c128-resources.c:640,648, C64.emu/src/vice/c128/c128rom.c:786,789", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Swiss character generator", "name": "chargen-325173-01D.bin", "path": "C128/chargen-325173-01D.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:84, C64.emu/src/vice/c128/c128-resources.c:636, C64.emu/src/vice/c128/c128rom.c:787", "system": "commodore-c128", "validation": ["size"]}, {"description": "C128 Norwegian character generator", "name": "chargen-325078-02.bin", "path": "C128/chargen-325078-02.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:89, C64.emu/src/vice/c128/c128-resources.c:646, C64.emu/src/vice/c128/c128rom.c:788", "system": "commodore-c128", "validation": ["size"]}, {"description": "C64 mode kernal", "name": "kernal64-901227-03.bin", "path": "C128/kernal64-901227-03.bin", "required": true, "sha1": "1d503e56df85a62fee696e7618dc5b4e781df1bb", "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:110, C64.emu/src/vice/c128/c128-resources.c:654, C64.emu/src/vice/c128/c128rom.c:672,796, C64.emu/src/vice/c64/c64rom.h:93", "system": "commodore-c128", "validation": ["size"]}, {"description": "C64 mode BASIC", "name": "basic64-901226-01.bin", "path": "C128/basic64-901226-01.bin", "required": true, "sha1": "79015323128650c742a3694c9429aa91f355905e", "size": 8192, "source_ref": "C64.emu/src/vice/c128/c128rom.h:107, C64.emu/src/vice/c128/c128-resources.c:656, C64.emu/src/vice/c128/c128rom.c:710,801, C64.emu/src/vice/c64/c64rom.h:88", "system": "commodore-c128", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "C128 symbolic keymap, US layout", "name": "gtk3_sym.vkm", "path": "C128/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263,704", "system": "commodore-c128"}, {"category": "game_data", "description": "VIC-II default external palette", "name": "pepto-pal.vpl", "path": "C128/pepto-pal.vpl", "required": false, "source_ref": "C64.emu/src/vice/vicii/vicii-resources.c:170, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-c128"}, {"category": "game_data", "description": "VDC default external palette", "name": "vdc_deft.vpl", "path": "C128/vdc_deft.vpl", "required": false, "source_ref": "C64.emu/src/vice/vdc/vdc-resources.c:127, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-c128"}, {"description": "VIC-20 PAL kernal, default kernal resource", "name": "kernal.901486-07.bin", "path": "VIC20/kernal.901486-07.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/vic20/vic20rom.h:53, C64.emu/src/vice/vic20/vic20-resources.c:183, C64.emu/src/vice/vic20/vic20rom.c:112", "system": "commodore-vic20", "validation": ["size"]}, {"description": "VIC-20 NTSC kernal, default model and VIC-21", "name": "kernal.901486-06.bin", "path": "VIC20/kernal.901486-06.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/vic20/vic20rom.h:52, C64.emu/src/vice/vic20/vic20model.c:58-59,140", "system": "commodore-vic20", "validation": ["size"]}, {"description": "VIC-1001 kernal", "name": "kernal.901486-02.bin", "path": "VIC20/kernal.901486-02.bin", "region": ["japan"], "required": false, "size": 8192, "source_ref": "C64.emu/src/vice/vic20/vic20rom.h:51, C64.emu/src/vice/vic20/vic20model.c:60,140", "system": "commodore-vic20", "validation": ["size"]}, {"description": "VIC-20 BASIC", "name": "basic-901486-01.bin", "path": "VIC20/basic-901486-01.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/vic20/vic20rom.h:43, C64.emu/src/vice/vic20/vic20-resources.c:185, C64.emu/src/vice/vic20/vic20rom.c:156", "system": "commodore-vic20", "validation": ["size"]}, {"description": "VIC-20 character generator", "name": "chargen-901460-03.bin", "path": "VIC20/chargen-901460-03.bin", "required": true, "size": 4096, "source_ref": "C64.emu/src/vice/vic20/vic20rom.h:56, C64.emu/src/vice/vic20/vic20-resources.c:181, C64.emu/src/vice/vic20/vic20rom.c:175", "system": "commodore-vic20", "validation": ["size"]}, {"description": "VIC-1001 character generator", "name": "chargen-901460-02.bin", "path": "VIC20/chargen-901460-02.bin", "region": ["japan"], "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/vic20/vic20rom.h:57, C64.emu/src/vice/vic20/vic20model.c:60,139", "system": "commodore-vic20", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "VIC-20 symbolic keymap, US layout", "name": "gtk3_sym.vkm", "path": "VIC20/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263,704", "system": "commodore-vic20"}, {"category": "game_data", "description": "VIC default external palette", "name": "mike-pal.vpl", "path": "VIC20/mike-pal.vpl", "required": false, "source_ref": "C64.emu/src/vice/vic20/vic-resources.c:90, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-vic20"}, {"description": "Plus/4 NTSC kernal, default model", "name": "kernal-318005-05.bin", "path": "PLUS4/kernal-318005-05.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:37, C64.emu/src/vice/plus4/plus4model.c:67,69,153, C64.emu/src/vice/plus4/plus4rom.c:89", "system": "commodore-plus4", "validation": ["size"]}, {"description": "Plus/4 PAL kernal, default kernal resource", "name": "kernal-318004-05.bin", "path": "PLUS4/kernal-318004-05.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:36, C64.emu/src/vice/plus4/plus4-resources.c:186, C64.emu/src/vice/plus4/plus4model.c:66,68", "system": "commodore-plus4", "validation": ["size"]}, {"description": "C232 prototype kernal", "name": "kernal-318004-01.bin", "path": "PLUS4/kernal-318004-01.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:35, C64.emu/src/vice/plus4/plus4model.c:71,153", "system": "commodore-plus4", "validation": ["size"]}, {"description": "V364 prototype kernal", "name": "kernal-364.bin", "path": "PLUS4/kernal-364.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:38, C64.emu/src/vice/plus4/plus4model.c:70,153", "system": "commodore-plus4", "validation": ["size"]}, {"description": "Plus/4 BASIC", "name": "basic-318006-01.bin", "path": "PLUS4/basic-318006-01.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:33, C64.emu/src/vice/plus4/plus4-resources.c:188, C64.emu/src/vice/plus4/plus4rom.c:111", "system": "commodore-plus4", "validation": ["size"]}, {"description": "3-plus-1 low function ROM, Plus/4 and V364 models", "name": "3plus1-317053-01.bin", "path": "PLUS4/3plus1-317053-01.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:40, C64.emu/src/vice/plus4/plus4-resources.c:190, C64.emu/src/vice/plus4/plus4memrom.c:146", "system": "commodore-plus4", "validation": ["size"]}, {"description": "3-plus-1 high function ROM, Plus/4 and V364 models", "name": "3plus1-317054-01.bin", "path": "PLUS4/3plus1-317054-01.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:41, C64.emu/src/vice/plus4/plus4-resources.c:192, C64.emu/src/vice/plus4/plus4memrom.c:166", "system": "commodore-plus4", "validation": ["size"]}, {"description": "V364 speech ROM", "name": "c2lo-364.bin", "path": "PLUS4/c2lo-364.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/plus4/plus4rom.h:43, C64.emu/src/vice/plus4/plus4model.c:70,161, C64.emu/src/vice/plus4/plus4memrom.c:187", "system": "commodore-plus4", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "Plus/4 symbolic keymap, US layout", "name": "gtk3_sym.vkm", "path": "PLUS4/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263,704", "system": "commodore-plus4"}, {"category": "game_data", "description": "TED default external palette", "name": "yape-pal.vpl", "path": "PLUS4/yape-pal.vpl", "required": false, "source_ref": "C64.emu/src/vice/plus4/ted-resources.c:90, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-plus4"}, {"description": "BASIC 4 kernal, default model PET 8032", "name": "kernal-4.901465-22.bin", "path": "PET/kernal-4.901465-22.bin", "required": true, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:53, C64.emu/src/vice/pet/pet-resources.c:406, C64.emu/src/vice/pet/petrom.c:581", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 2 kernal, PET 3008 to 3032B models", "name": "kernal-2.901465-03.bin", "path": "PET/kernal-2.901465-03.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:52, C64.emu/src/vice/pet/petmodel.c:108,371", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 1 kernal, PET 2001-8N model", "name": "kernal-1.901439-04-07.bin", "path": "PET/kernal-1.901439-04-07.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:51, C64.emu/src/vice/pet/petmodel.c:89,371", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 4, default model PET 8032", "max_size": 12288, "min_size": 8192, "name": "basic-4.901465-23-20-21.bin", "path": "PET/basic-4.901465-23-20-21.bin", "required": true, "source_ref": "C64.emu/src/vice/pet/petrom.h:57, C64.emu/src/vice/pet/pet-resources.c:410, C64.emu/src/vice/pet/petrom.c:534", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 2, PET 3008 to 3032B models", "max_size": 12288, "min_size": 8192, "name": "basic-2.901465-01-02.bin", "path": "PET/basic-2.901465-01-02.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:56, C64.emu/src/vice/pet/petmodel.c:110,372", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 1, PET 2001-8N model", "max_size": 12288, "min_size": 8192, "name": "basic-1.901439-09-05-02-06.bin", "path": "PET/basic-1.901439-09-05-02-06.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:55, C64.emu/src/vice/pet/petmodel.c:91,372", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 4 business 80 column editor, default model PET 8032", "max_size": 4096, "min_size": 2048, "name": "edit-4-80-b-50Hz.901474-04_.bin", "path": "PET/edit-4-80-b-50Hz.901474-04_.bin", "required": true, "source_ref": "C64.emu/src/vice/pet/petrom.h:63, C64.emu/src/vice/pet/pet-resources.c:408, C64.emu/src/vice/pet/petrom.c:612", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 4 graphics 40 column editor, PET 4016 and 4032 models", "max_size": 4096, "min_size": 2048, "name": "edit-4-40-n-50Hz.901498-01.bin", "path": "PET/edit-4-40-n-50Hz.901498-01.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:62, C64.emu/src/vice/pet/petmodel.c:373", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 4 business 40 column editor, PET 4032B model", "max_size": 4096, "min_size": 2048, "name": "edit-4-40-b-50Hz.ts.bin", "path": "PET/edit-4-40-b-50Hz.ts.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:65, C64.emu/src/vice/pet/petmodel.c:373", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 2 graphics 40 column editor, PET 3008 to 3032 models", "max_size": 4096, "min_size": 2048, "name": "edit-2-n.901447-24.bin", "path": "PET/edit-2-n.901447-24.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:60, C64.emu/src/vice/pet/petmodel.c:109,373", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 2 business editor, PET 3032B model", "max_size": 4096, "min_size": 2048, "name": "edit-2-b.901474-01.bin", "path": "PET/edit-2-b.901474-01.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:61, C64.emu/src/vice/pet/petmodel.c:373", "system": "commodore-pet", "validation": ["size"]}, {"description": "BASIC 1 graphics 40 column editor, PET 2001-8N model", "max_size": 4096, "min_size": 2048, "name": "edit-1-n.901439-03.bin", "path": "PET/edit-1-n.901439-03.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:59, C64.emu/src/vice/pet/petmodel.c:90,373", "system": "commodore-pet", "validation": ["size"]}, {"description": "Second generation character generator, default model PET 8032", "max_size": 4096, "min_size": 2048, "name": "characters-2.901447-10.bin", "path": "PET/characters-2.901447-10.bin", "required": true, "source_ref": "C64.emu/src/vice/pet/petrom.h:47, C64.emu/src/vice/pet/pet-resources.c:404, C64.emu/src/vice/pet/petrom.c:506", "system": "commodore-pet", "validation": ["size"]}, {"description": "First generation character generator, PET 2001-8N model", "max_size": 4096, "min_size": 2048, "name": "characters-1.901447-08.bin", "path": "PET/characters-1.901447-08.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:46, C64.emu/src/vice/pet/petmodel.c:88,370", "system": "commodore-pet", "validation": ["size"]}, {"description": "SuperPET character generator", "max_size": 4096, "min_size": 2048, "name": "characters.901640-01.bin", "path": "PET/characters.901640-01.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:48, C64.emu/src/vice/pet/petmodel.c:370", "system": "commodore-pet", "validation": ["size"]}, {"description": "SuperPET 6809 ROM at a000", "name": "waterloo-a000.901898-01.bin", "path": "PET/waterloo-a000.901898-01.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:75, C64.emu/src/vice/pet/petmodel.c:305, C64.emu/src/vice/pet/petrom.c:747", "system": "commodore-pet", "validation": ["size"]}, {"description": "SuperPET 6809 ROM at b000", "name": "waterloo-b000.901898-02.bin", "path": "PET/waterloo-b000.901898-02.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:76, C64.emu/src/vice/pet/petmodel.c:306, C64.emu/src/vice/pet/petrom.c:747", "system": "commodore-pet", "validation": ["size"]}, {"description": "SuperPET 6809 ROM at c000", "name": "waterloo-c000.901898-03.bin", "path": "PET/waterloo-c000.901898-03.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:77, C64.emu/src/vice/pet/petmodel.c:307, C64.emu/src/vice/pet/petrom.c:747", "system": "commodore-pet", "validation": ["size"]}, {"description": "SuperPET 6809 ROM at d000", "name": "waterloo-d000.901898-04.bin", "path": "PET/waterloo-d000.901898-04.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:78, C64.emu/src/vice/pet/petmodel.c:308, C64.emu/src/vice/pet/petrom.c:747", "system": "commodore-pet", "validation": ["size"]}, {"description": "SuperPET 6809 ROM at e000, the one slot the loader accepts at 2 KB", "max_size": 8192, "min_size": 2048, "name": "waterloo-e000.901897-01.bin", "path": "PET/waterloo-e000.901897-01.bin", "required": false, "source_ref": "C64.emu/src/vice/pet/petrom.h:79, C64.emu/src/vice/pet/petmodel.c:309, C64.emu/src/vice/pet/petrom.c:745,747", "system": "commodore-pet", "validation": ["size"]}, {"description": "SuperPET 6809 ROM at f000", "name": "waterloo-f000.901898-05.bin", "path": "PET/waterloo-f000.901898-05.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/pet/petrom.h:80, C64.emu/src/vice/pet/petmodel.c:310, C64.emu/src/vice/pet/petrom.c:747", "system": "commodore-pet", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "PET symbolic keymap, US layout and the fallback for every keyboard type", "name": "gtk3_sym.vkm", "path": "PET/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263-1269,1386-1392, C64.emu/src/vice/pet/pet.c:169-176", "system": "commodore-pet"}, {"category": "game_data", "description": "CRTC default external palette", "name": "green.vpl", "path": "PET/green.vpl", "required": false, "source_ref": "C64.emu/src/vice/crtc/crtc-resources.c:102, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-pet"}, {"description": "CBM-II 6x0 and 7x0 kernal, default model CBM 610", "name": "kernal-901244-04a.bin", "path": "CBM-II/kernal-901244-04a.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:45, C64.emu/src/vice/cbm2/cbm2model.c:66-74,160, C64.emu/src/vice/cbm2/cbm2rom.c:155", "system": "commodore-cbm-ii", "validation": ["size"]}, {"description": "CBM 510 kernal, default model of the cbm5x0 plugin", "name": "kernal-901234-02.bin", "path": "CBM-II/kernal-901234-02.bin", "required": true, "size": 8192, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:46, C64.emu/src/vice/cbm2/cbm2model.c:64-65,160, C64.emu/src/vice/cbm2/cbm5x0rom.c:125", "system": "commodore-cbm-ii", "validation": ["size"]}, {"description": "CBM-II 128 KB BASIC, CBM 610 and 710 models", "name": "basic-901242+3-04a.bin", "path": "CBM-II/basic-901242+3-04a.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:41, C64.emu/src/vice/cbm2/cbm2model.c:66-67,72,161, C64.emu/src/vice/cbm2/cbm2rom.c:171", "system": "commodore-cbm-ii", "validation": ["size"]}, {"description": "CBM-II 256 KB BASIC, CBM 620, 620+, 720 and 720+ models", "name": "basic-901240+1-03.bin", "path": "CBM-II/basic-901240+1-03.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:42, C64.emu/src/vice/cbm2/cbm2model.c:68-71,73-74,161", "system": "commodore-cbm-ii", "validation": ["size"]}, {"description": "CBM 510 BASIC", "name": "basic-901235+6-02.bin", "path": "CBM-II/basic-901235+6-02.bin", "required": true, "size": 16384, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:43, C64.emu/src/vice/cbm2/cbm2model.c:64-65,161, C64.emu/src/vice/cbm2/cbm5x0rom.c:141", "system": "commodore-cbm-ii", "validation": ["size"]}, {"description": "CBM-II 600 series character generator, default model CBM 610", "name": "chargen-901237-01.bin", "path": "CBM-II/chargen-901237-01.bin", "required": true, "size": 4096, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:38, C64.emu/src/vice/cbm2/cbm2model.c:66-71,162, C64.emu/src/vice/cbm2/cbm2rom.c:100-101", "system": "commodore-cbm-ii", "validation": ["size"]}, {"description": "CBM-II 700 series character generator", "name": "chargen-901232-01.bin", "path": "CBM-II/chargen-901232-01.bin", "required": false, "size": 4096, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:39, C64.emu/src/vice/cbm2/cbm2model.c:72-74,162", "system": "commodore-cbm-ii", "validation": ["size"]}, {"description": "CBM 510 character generator", "name": "chargen-901225-01.bin", "path": "CBM-II/chargen-901225-01.bin", "required": true, "size": 4096, "source_ref": "C64.emu/src/vice/cbm2/cbm2rom.h:37, C64.emu/src/vice/cbm2/cbm2model.c:64-65,162, C64.emu/src/vice/cbm2/cbm5x0rom.c:83", "system": "commodore-cbm-ii", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "CBM-II symbolic keymap, US layout", "name": "gtk3_sym.vkm", "path": "CBM-II/gtk3_sym.vkm", "required": false, "source_ref": "C64.emu/src/config/kbd.h:7, C64.emu/src/vice/keymap.c:1263,704", "system": "commodore-cbm-ii"}, {"category": "game_data", "description": "CRTC default external palette, 6x0 and 7x0 models", "name": "green.vpl", "path": "CBM-II/green.vpl", "required": false, "source_ref": "C64.emu/src/vice/crtc/crtc-resources.c:102, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-cbm-ii"}, {"category": "game_data", "description": "VIC-II default external palette, 5x0 models", "name": "pepto-pal.vpl", "path": "CBM-II/pepto-pal.vpl", "required": false, "source_ref": "C64.emu/src/vice/vicii/vicii-resources.c:170, C64.emu/src/vice/video/video-resources.c:916-923", "system": "commodore-cbm-ii"}, {"description": "1541-II DOS, default unit 8 on C64, SuperCPU and DTV", "max_size": 32768, "min_size": 16384, "name": "dos1541ii-251968-03.bin", "path": "DRIVES/dos1541ii-251968-03.bin", "required": false, "source_ref": "C64.emu/src/vice/drive/driverom.h:40-41,90, C64.emu/src/vice/drive/iec/iecrom.c:107,182, C64.emu/src/vice/c64/c64drive.c:43", "validation": ["size"]}, {"description": "1541 DOS", "max_size": 32768, "min_size": 16384, "name": "dos1541-325302-01+901229-05.bin", "path": "DRIVES/dos1541-325302-01+901229-05.bin", "required": false, "source_ref": "C64.emu/src/vice/drive/driverom.h:38-39,89, C64.emu/src/vice/drive/iec/iecrom.c:100,172", "validation": ["size"]}, {"description": "1540 DOS, default unit 8 on VIC-20", "max_size": 32768, "min_size": 16384, "name": "dos1540-325302+3-01.bin", "path": "DRIVES/dos1540-325302+3-01.bin", "required": false, "source_ref": "C64.emu/src/vice/drive/driverom.h:36-37,88, C64.emu/src/vice/drive/iec/iecrom.c:93,162, C64.emu/src/vice/vic20/vic20drive.c:44", "validation": ["size"]}, {"description": "1570 DOS", "name": "dos1570-315090-01.bin", "path": "DRIVES/dos1570-315090-01.bin", "required": false, "size": 32768, "source_ref": "C64.emu/src/vice/drive/driverom.h:43,93, C64.emu/src/vice/drive/iec/iecrom.c:115,193", "validation": ["size"]}, {"description": "1571 DOS", "name": "dos1571-310654-05.bin", "path": "DRIVES/dos1571-310654-05.bin", "required": false, "size": 32768, "source_ref": "C64.emu/src/vice/drive/driverom.h:44,94, C64.emu/src/vice/drive/iec/iecrom.c:121,198", "validation": ["size"]}, {"description": "1571CR DOS, default unit 8 on C128", "name": "dos1571cr-318047-01.bin", "path": "DRIVES/dos1571cr-318047-01.bin", "required": false, "size": 32768, "source_ref": "C64.emu/src/vice/drive/driverom.h:45,95, C64.emu/src/vice/drive/iec128dcr/iec128dcrrom.c:51,68, C64.emu/src/vice/c128/c128drive.c:56", "validation": ["size"]}, {"description": "1581 DOS", "name": "dos1581-318045-02.bin", "path": "DRIVES/dos1581-318045-02.bin", "required": false, "size": 32768, "source_ref": "C64.emu/src/vice/drive/driverom.h:46,96, C64.emu/src/vice/drive/iec/iecrom.c:127,203", "validation": ["size"]}, {"description": "1551 DOS, default unit 8 on Plus/4", "name": "dos1551-318008-01.bin", "path": "DRIVES/dos1551-318008-01.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/drive/driverom.h:42,92, C64.emu/src/vice/drive/tcbm/tcbmrom.c:50,66, C64.emu/src/vice/plus4/plus4drive.c:46", "validation": ["size"]}, {"aliases": ["dos2000"], "description": "CMD FD-2000 DOS", "name": "dos2000-cs-33cc6f.bin", "path": "DRIVES/dos2000-cs-33cc6f.bin", "required": false, "size": 32768, "source_ref": "C64.emu/src/vice/drive/driverom.h:47,98, C64.emu/src/vice/drive/iec/iecrom.c:133,208", "validation": ["size"]}, {"aliases": ["dos4000"], "description": "CMD FD-4000 DOS", "name": "dos4000-fd-350022.bin", "path": "DRIVES/dos4000-fd-350022.bin", "required": false, "size": 32768, "source_ref": "C64.emu/src/vice/drive/driverom.h:48,99, C64.emu/src/vice/drive/iec/iecrom.c:139,213", "validation": ["size"]}, {"description": "CMD HD boot ROM", "name": "bootromCMDHD-v2-80.bin", "note": "The MAME dump cmd_hd_bootrom_v280.bin reads the chip over 32 KB and its two halves are identical; the image here is the first half, the 16 KB the loader asks for.", "path": "DRIVES/bootromCMDHD-v2-80.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/drive/driverom.h:49,100, C64.emu/src/vice/drive/iec/iecrom.c:145,218", "validation": ["size"]}, {"description": "2031 DOS, default unit 8 on PET and CBM-II", "name": "dos2031-901484-03+05.bin", "path": "DRIVES/dos2031-901484-03+05.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/drive/driverom.h:50,73, C64.emu/src/vice/drive/ieee/ieeerom.c:56,107, C64.emu/src/vice/pet/petdrive.c:42", "validation": ["size"]}, {"description": "2040 DOS", "name": "dos2040-901468-06+07.bin", "path": "DRIVES/dos2040-901468-06+07.bin", "required": false, "size": 8192, "source_ref": "C64.emu/src/vice/drive/driverom.h:53,76, C64.emu/src/vice/drive/ieee/ieeerom.c:63,115", "validation": ["size"]}, {"description": "3040 DOS", "name": "dos3040-901468-11-13.bin", "path": "DRIVES/dos3040-901468-11-13.bin", "required": false, "size": 12288, "source_ref": "C64.emu/src/vice/drive/driverom.h:54,79, C64.emu/src/vice/drive/ieee/ieeerom.c:70,123", "validation": ["size"]}, {"description": "4040 DOS", "name": "dos4040-901468-14-16.bin", "path": "DRIVES/dos4040-901468-14-16.bin", "required": false, "size": 12288, "source_ref": "C64.emu/src/vice/drive/driverom.h:55,82, C64.emu/src/vice/drive/ieee/ieeerom.c:77,131", "validation": ["size"]}, {"description": "1001, 8050 and 8250 DOS", "name": "dos1001-901887+8-01.bin", "path": "DRIVES/dos1001-901887+8-01.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/drive/driverom.h:51,70, C64.emu/src/vice/drive/ieee/ieeerom.c:84,141", "validation": ["size"]}, {"description": "D9090 and D9060 DOS", "name": "dos9000-300516+7-revC.bin", "path": "DRIVES/dos9000-300516+7-revC.bin", "required": false, "size": 16384, "source_ref": "C64.emu/src/vice/drive/driverom.h:52,85, C64.emu/src/vice/drive/ieee/ieeerom.c:91,149", "validation": ["size"]}], "mode": "standalone", "notes": "Android and Linux member of the EX Emulator series by Robert Broglia,\npublished as com.explusalpha.C64Emu (C64.emu/metadata/conf.mk:2,6,7) and\nreached by ES-DE through its C64-EMU find rule. VICE 3.10 is vendored under\nC64.emu/src/vice (C64.emu/src/config/vice-config.h:699,795) and driven by the\napp's own sysfile, video, sound and zfile layers.\n\nTen machines are built as separate shared libraries\n(C64.emu/src/CMakeLists.txt:535-683): c64, c64sc, scpu64, c64dtv, c128, vic,\npet, plus4, cbm2, cbm5x0. Each opens its files under the VICE machine\ndirectory named by its own machine_name (c64/c64.c:179, c128/c128.c:240,\nvic20/vic20.c:144, plus4/plus4.c:131, pet/pet.c:128, cbm2/cbm2.c:131,\ncbm2/cbm5x0.c:122, scpu64/scpu64.c:157, c64dtv/c64dtv.c:129), so c64 and c64sc\nshare C64/ and cbm2 and cbm5x0 share CBM-II/. Drive ROMs live in DRIVES/\n(drive/driverom.c:104,174).\n\nNothing is embedded. The app implements sysfile_open, sysfile_locate and\nsysfile_load itself (C64.emu/src/main/sysfile.cc:218-355) over a user-set\npath that may be a directory or a ZIP archive, and that path is rejected\nunless it carries a DRIVES folder (C64.emu/src/main/sysfile.cc:140-151). On\nLinux two fallbacks follow it, ~/.local/share/C64.emu and\n/usr/share/games/vice (C64.emu/src/main/Main.cc:91-95). A last fallback reads\nthe application bundle (C64.emu/src/main/sysfile.cc:107-119,252-259), which\nsupplies only the eight keymaps below (C64.emu/res/android/assets symlinks\nC64.emu/res/vice, and each machine directory there holds one file).\n\nMissing ROMs stop the app rather than degrading it: initC64 throws when the\npath is unset, and again with the name of the first file that failed once\nplugin.init_main() returns -1 (C64.emu/src/main/Main.cc:301-311), which is\nwhat machine_init does when mem_load cannot find a ROM.\n\nAll fourteen C64 models are offered (C64.emu/src/main/VicePlugin.cc:66-79), so\nevery kernal revision and both chargens are reachable. The MAX Machine model\nloads nothing: c64rom.c:222-224 matches the kernal-none.bin name and zeroes\nthe ROM area instead of calling sysfile_load.\n\nC128 is the one machine that needs its whole language set present. mem_load\nruns c128rom_check_res_file over both BASIC halves, all eight kernal\nresources, all eight chargen resources, Kernal64 and Basic64, and returns -1\nif any one of them cannot be located (c128/c128rom.c:762-806). Only the\nselected variant is then read. MachineType stays at C128_MACHINE_INT\n(c128/c128-resources.c:684) because no reachable code writes it, so the\nDanish, Norwegian and Swedish kernal64 variants of c128rom.h:111-113 are never\nnamed.\n\nDrive ROMs are optional in the strict sense: iec_drive_rom_load,\nieee_drive_rom_load, tcbm_drive_rom_load and iec128dcr_drive_rom_load return\nvoid, and driverom_load logs the miss and disables the units of that type\n(drive/driverom.c:186-196,131-144). Default unit 8 is a 1541-II on C64, SCPU64\nand DTV (c64/c64drive.c:43), a 1571CR on C128 (c128/c128drive.c:56), a 1540 on\nVIC-20 (vic20/vic20drive.c:44), a 1551 on Plus/4 (plus4/plus4drive.c:46) and a\n2031 on PET and CBM-II (pet/petdrive.c:42, cbm2/cbm2drive.c:42).\n\nSizes come from the min and max arguments of each sysfile_load call. The\nloader accepts a file two bytes over its maximum by dropping the leading load\naddress, pads a short file to the top of the buffer, and truncates anything\nlonger with a warning (C64.emu/src/main/sysfile.cc:30-71).\n\nSHA-1s are those hardcoded in c64/c64rom.h:88-96. c64rom.c:120-131 hashes the\nloaded kernal and matches that table to identify the revision; an unmatched\nimage is reported and accepted. VICE distributes C128/kernal64-901227-03.bin\nand C128/basic64-901226-01.bin with the same bytes as the C64 Rev 3 kernal and\nBASIC, so those two entries carry the same hashes.\n\nPalettes are read only after the user enables an external palette: the\n${CHIP}ExternalPalette resource is registered with factory value 0 and\n${CHIP}PaletteFile with the chip's default name\n(video/video-resources.c:393-398,916-923). The app lists every .vpl in the\nmachine directory and sets both resources\n(C64.emu/src/main/EmuMenuViews.cc:186,1058,1074-1083,\nC64.emu/src/main/options.cc:38-51). Only the code-named default of each chip\nis listed here; palette_load appends the .vpl extension itself\n(palette.c:228-248).\n\nKeymaps are named from KBD_PORT_PREFIX, which the app sets to gtk3\n(C64.emu/src/config/kbd.h:7). keymap_init runs inside init_main and the lookup\nfalls back to <prefix>_sym.vkm (keymap.c:1249-1270,1386-1392), the file the\napp bundles for each machine directory. Host-layout and keyboard-type variants\nextend the name and are not enumerated here.\n\nFour subsystems are compiled but cannot reach their files. Printer ROMs and\nthe PRINTER/ palettes load from drv_mps803_open and drv_nl10_open, which\nrequire Printer4, Printer5 or Printer6 to leave PRINTER_DEVICE_NONE\n(printerdrv/interface-serial.c:145-149); the app writes no printer resource,\nand neither main.c nor initcmdline.c is compiled, so the resource file and the\ncommand line that would set one do not exist. Romset .vrs files, the monitor\ncommand file and joystick .vjm maps have no default name at all\n(joyport/joystick.c:2212) and no menu that supplies one. vice/arch is outside\nthe build, so the CBM font, icon and hotkey lookups of archdep_cbmfont.c,\narchdep_icon_path.c and hotkeys/parser.c are never linked.\n", "profiled_date": "2026-08-11", "source": "https://github.com/Rakashazi/emu-ex-plus-alpha", "source_commit": "1c12fac5ce49badaadff2e2f210dcc30b89f4943", "systems": ["commodore-c64", "commodore-c64-supercpu", "commodore-c64dtv", "commodore-c128", "commodore-vic20", "commodore-plus4", "commodore-pet", "commodore-cbm-ii"], "type": "standalone", "upstream": "https://github.com/VICE-Team/svn-mirror"}


id: cannonball
name: Cannonball
type: libretro
classification: game_engine
source: https://github.com/libretro/cannonball
upstream: https://github.com/djyt/cannonball
source_commit: 0d83575d920ea4c0a280847a19d7802f673e6a68
profile_json:
{"core_classification": "game_engine", "core_version": "1.0", "cores": ["cannonball"], "display_name": "Cannonball", "emulator": "Cannonball", "files": [{"aliases": ["epr-10381b.132"], "category": "game_data", "crc32": "be8c412b", "name": "epr-10381b.132", "note": "Master 68K, high byte, upper bank", "path": "cannonball/epr-10381b.132", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:39", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "10a2014a", "name": "epr-10383b.117", "note": "Master 68K, low byte, upper bank", "path": "cannonball/epr-10383b.117", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:40", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "1f6cadad", "name": "epr-10380b.133", "note": "Master 68K, high byte, lower bank", "path": "cannonball/epr-10380b.133", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:39", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "c4c3fa1a", "name": "epr-10382b.118", "note": "Master 68K, low byte, lower bank", "path": "cannonball/epr-10382b.118", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:40", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "e28a5baf", "name": "epr-10327a.76", "note": "Slave 68K, high byte, lower bank", "path": "cannonball/epr-10327a.76", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:44", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "da131c81", "name": "epr-10329a.58", "note": "Slave 68K, low byte, lower bank", "path": "cannonball/epr-10329a.58", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:45", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "d5ec5e5d", "name": "epr-10328a.75", "note": "Slave 68K, high byte, upper bank", "path": "cannonball/epr-10328a.75", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:46", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "ba9ec82a", "name": "epr-10330a.57", "note": "Slave 68K, low byte, upper bank", "path": "cannonball/epr-10330a.57", "required": true, "size": 65536, "source_ref": "src/main/roms.cpp:47", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "95344b04", "name": "opr-10268.99", "note": "Tile ROM bank 0", "path": "cannonball/opr-10268.99", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:51", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "776ba1eb", "name": "opr-10232.102", "note": "Tile ROM bank 1", "path": "cannonball/opr-10232.102", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:52", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "a85bb823", "name": "opr-10267.100", "note": "Tile ROM bank 2", "path": "cannonball/opr-10267.100", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:53", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "8908bcbf", "name": "opr-10231.103", "note": "Tile ROM bank 3", "path": "cannonball/opr-10231.103", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:54", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "9f6f1a74", "name": "opr-10266.101", "note": "Tile ROM bank 4", "path": "cannonball/opr-10266.101", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:55", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "686f5e50", "name": "opr-10230.104", "note": "Tile ROM bank 5", "path": "cannonball/opr-10230.104", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:56", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "22794426", "name": "opr-10185.11", "note": "Road ROM, layer 1", "path": "cannonball/opr-10185.11", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:60", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "22794426", "name": "opr-10186.47", "note": "Road ROM, layer 2 (identical to opr-10185.11)", "path": "cannonball/opr-10186.47", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:61", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "7cc86208", "name": "mpr-10371.9", "note": "Sprite ROM, bank 0 byte 0", "path": "cannonball/mpr-10371.9", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:65", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "b0d26ac9", "name": "mpr-10373.10", "note": "Sprite ROM, bank 0 byte 1", "path": "cannonball/mpr-10373.10", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:66", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "59b60bd7", "name": "mpr-10375.11", "note": "Sprite ROM, bank 0 byte 2", "path": "cannonball/mpr-10375.11", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:67", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "17a1b04a", "name": "mpr-10377.12", "note": "Sprite ROM, bank 0 byte 3", "path": "cannonball/mpr-10377.12", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:68", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "b557078c", "name": "mpr-10372.13", "note": "Sprite ROM, bank 1 byte 0", "path": "cannonball/mpr-10372.13", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:69", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "8051e517", "name": "mpr-10374.14", "note": "Sprite ROM, bank 1 byte 1", "path": "cannonball/mpr-10374.14", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:70", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "f3b8f318", "name": "mpr-10376.15", "note": "Sprite ROM, bank 1 byte 2", "path": "cannonball/mpr-10376.15", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:71", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "a1062984", "name": "mpr-10378.16", "note": "Sprite ROM, bank 1 byte 3", "path": "cannonball/mpr-10378.16", "required": true, "size": 131072, "source_ref": "src/main/roms.cpp:72", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "a10abaa9", "name": "epr-10187.88", "note": "Z80 sound program", "path": "cannonball/epr-10187.88", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:77", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "bcd10dde", "name": "opr-10193.66", "note": "PCM sample bank 0", "path": "cannonball/opr-10193.66", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:81", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "770f1270", "name": "opr-10192.67", "note": "PCM sample bank 1", "path": "cannonball/opr-10192.67", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:81", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "20a284ab", "name": "opr-10191.68", "note": "PCM sample bank 2", "path": "cannonball/opr-10191.68", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:83", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "7cab70e2", "name": "opr-10190.69", "note": "PCM sample bank 3", "path": "cannonball/opr-10190.69", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:83", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "01366b54", "name": "opr-10189.70", "note": "PCM sample bank 4", "path": "cannonball/opr-10189.70", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:85", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "bad30ad9", "name": "opr-10188.71", "note": "PCM sample bank 5", "path": "cannonball/opr-10188.71", "required": true, "size": 32768, "source_ref": "src/main/roms.cpp:85", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "37598616", "name": "opr-10188.71f", "note": "PCM sample bank 5, fixed version (replaces opr-10188.71)", "path": "cannonball/opr-10188.71f", "required": false, "size": 32768, "source_ref": "src/main/roms.cpp:123", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "e339e87a", "name": "epr-10380.133", "note": "Master 68K Japan, high byte, lower bank", "path": "cannonball/epr-10380.133", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:106", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "65248dd5", "name": "epr-10382.118", "note": "Master 68K Japan, low byte, lower bank", "path": "cannonball/epr-10382.118", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:107", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "be8c412b", "name": "epr-10381.132", "note": "Master 68K Japan, high byte, upper bank", "path": "cannonball/epr-10381.132", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:106", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "dcc586e7", "name": "epr-10383.117", "note": "Master 68K Japan, low byte, upper bank", "path": "cannonball/epr-10383.117", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:107", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "da99d855", "name": "epr-10327.76", "note": "Slave 68K Japan, high byte, lower bank", "path": "cannonball/epr-10327.76", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:112", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "fe0fa5e2", "name": "epr-10329.58", "note": "Slave 68K Japan, low byte, lower bank", "path": "cannonball/epr-10329.58", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:113", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "3c0e9a7f", "name": "epr-10328.75", "note": "Slave 68K Japan, high byte, upper bank", "path": "cannonball/epr-10328.75", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:112", "system": "sega-outrun", "validation": ["crc32"]}, {"category": "game_data", "crc32": "59786e99", "name": "epr-10330.57", "note": "Slave 68K Japan, low byte, upper bank", "path": "cannonball/epr-10330.57", "required": false, "size": 65536, "source_ref": "src/main/roms.cpp:113", "system": "sega-outrun", "validation": ["crc32"]}], "notes": "Cannonball is an enhanced OutRun engine that runs the original Sega OutRun\narcade ROM set (Rev B). It is not a traditional emulator but a source port\nthat loads the original ROM data for graphics, sound, and gameplay logic.\n\nThe core looks for ROM files in one of two locations\n(src/main/libretro/main.c:1009-1020):\n  1. The directory containing a loaded .game content file\n  2. {system_dir}/cannonball/\n\nROM loading is in src/main/roms.c. Each file is located by CRC32 first,\ncanonical filename as fallback (src/main/romloader.c:168-201). Files are\nloaded as raw ROM chips, not\ninside ZIP archives.\n\nThe Rev B ROM set is always required. Japanese ROM variants are loaded on\ndemand when the \"Japanese Tracks\" core option is enabled.\n\nThe widescreen tilemap patches are compiled into the binary\n(tilemap_data.h) and loaded from memory (src/main/engine/omusic.c:50-67).\n\nThe fixed PCM sample variant (opr-10188.71f) replaces opr-10188.71 when the\n\"Fix Broken Samples\" core option is enabled.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/cannonball", "source_commit": "0d83575d920ea4c0a280847a19d7802f673e6a68", "systems": ["sega-outrun"], "type": "libretro", "upstream": "https://github.com/djyt/cannonball"}


id: cap32
name: Caprice32
type: standalone + libretro
classification: community_fork
source: https://github.com/libretro/libretro-cap32
upstream: https://github.com/ColinPitrat/caprice32
source_commit: 4abfb8be233bec630f369379fb6c1d92d31f1c7d
profile_json:
{"core_classification": "community_fork", "core_version": "v4.2.0", "cores": ["cap32", "caprice32"], "display_name": "Amstrad - CPC/GX4000 (Caprice32)", "emulator": "Caprice32", "files": [{"mode": "standalone", "name": "cpc464.rom", "note": "CPC 464 OS + BASIC 1.0", "required": true, "size": 32768, "source_ref": "src/cap32.cpp:217, rom/cpc464.rom", "system": "amstrad-cpc"}, {"mode": "standalone", "name": "cpc664.rom", "note": "CPC 664 OS + BASIC 1.0", "required": false, "size": 32768, "source_ref": "caprice32/rom/cpc664.rom", "system": "amstrad-cpc"}, {"mode": "standalone", "name": "cpc6128.rom", "note": "CPC 6128 OS + BASIC 1.1", "required": false, "size": 32768, "source_ref": "caprice32/rom/cpc6128.rom", "system": "amstrad-cpc"}, {"mode": "standalone", "name": "amsdos.rom", "note": "AMSDOS disc ROM (sideways slot 7)", "required": false, "size": 16384, "source_ref": "src/cap32.cpp:1238", "system": "amstrad-cpc"}, {"mode": "standalone", "name": "system.cpr", "note": "CPC+ system cartridge", "required": false, "size": 131156, "source_ref": "caprice32/rom/system.cpr", "system": "amstrad-cpc"}, {"mode": "standalone", "name": "MF2.rom", "note": "Multiface 2 ROM", "required": false, "size": 8192, "source_ref": "caprice32/rom/MF2.rom, src/cap32.cpp:1316-1335", "system": "amstrad-cpc"}], "notes": "Caprice32 is an Amstrad CPC emulator ported to libretro. Supports CPC 464,\nCPC 664, CPC 6128, and CPC+ (Plus) models.\n\nAll system ROMs are compiled directly into the core binary as C header\narrays in cap32/rom/*.h. No external BIOS files are required.\n\nEmbedded ROMs (cap32/cap32.c:342-345):\n  - cap32/rom/464.h:    OS_BASIC10[32768] - CPC 464 OS + BASIC 1.0\n  - cap32/rom/6128.h:   OS_BASIC11[32768] - CPC 6128 OS + BASIC 1.1\n  - cap32/rom/amsdos.h: AMSDOS[16384]     - AMSDOS disk controller ROM\n  - cap32/rom/6128p.h:  OS_6128P          - CPC+ system cartridge ROM\n  - cap32/rom/cpm.h:    cpmROM            - CP/M boot snapshot (128KB)\n\nROM selection in emulator_select_ROM() (cap32/cap32.c:1072-1100):\n  - CPC 464:  OS_BASIC10 (32KB)\n  - CPC 664:  OS_BASIC10 (32KB) + AMSDOS in slot 7\n  - CPC 6128: OS_BASIC11 (32KB) + AMSDOS in slot 7\n  - CPC+:     OS_6128P loaded as system cartridge via cpr_load()\n\nThe standalone (non-libretro) version references external filenames\ncpc464.rom, cpc664.rom, cpc6128.rom, amsdos.rom in cap32.c:349-352\nvia config file loading (cap32.c:1828-1840), but the libretro port\ndoes not use this path. The libretro init (libretro-core.c:1512) has\na \"TODO: future use to load custom bios\" comment that is not\nimplemented.\n\nKeyboard layout patches are applied to the ROM in memory for French\nand Spanish layouts via rom_mods.h (cap32.c:1102-1126).\n\nCP/M support loads a pre-built snapshot (cpm.h) into memory via\nsnapshot_load_mem() in slots.c:87.\n", "platform_details": {"bios_mapping": {"note": "All ROMs are embedded. emulator_select_ROM() copies the appropriate\nROM array into the pbROM buffer based on CPC.model. No filesystem\nlookup occurs in the libretro port. The retro_system_bios_directory\nvariable is set up in libretro-core.c:1499-1510 but only used for\na future custom BIOS feature that is not yet implemented.\n", "source_ref": "cap32/cap32.c:1072-1100, cap32/cap32.c:342-345"}, "embedded_roms": {"note": "5 ROM sets embedded as C arrays:\nOS_BASIC10 (32KB) - CPC 464/664 OS + BASIC 1.0\nOS_BASIC11 (32KB) - CPC 6128 OS + BASIC 1.1\nAMSDOS (16KB)     - Disk controller ROM, mapped to slot 7\nOS_6128P          - CPC+ system cartridge (White Label cartridge)\ncpmROM (128KB+)   - CP/M boot snapshot including SNA header\n", "source_ref": "cap32/rom/464.h, cap32/rom/6128.h, cap32/rom/amsdos.h, cap32/rom/6128p.h, cap32/rom/cpm.h"}, "model_rom_map": {"note": "CPC 464:  OS_BASIC10 only (no disk support)\nCPC 664:  OS_BASIC10 + AMSDOS in ROM slot 7\nCPC 6128: OS_BASIC11 + AMSDOS in ROM slot 7\nCPC+:     6128P system cartridge (or user-provided .cpr file)\n", "source_ref": "cap32/cap32.c:1072-1100"}}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/libretro-cap32", "source_commit": "4abfb8be233bec630f369379fb6c1d92d31f1c7d", "systems": ["amstrad-cpc"], "type": "standalone + libretro", "upstream": "https://github.com/ColinPitrat/caprice32"}


id: cdi2015
name: CDi 2015
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/mame2015-libretro
upstream: https://github.com/mamedev/mame/tree/mame0160
source_commit: 283e04b03c121db9be12632d6bad2fc3e8707248
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "0.160", "cores": ["cdi2015"], "display_name": "Philips CDi (CDi 2015)", "emulator": "CDi 2015", "files": [{"category": "bios_zip", "contents": [{"crc32": "40c4e6b9", "description": "Magnavox CD-i 200 BIOS (default)", "name": "cdi200.rom", "size": 524288}, {"crc32": "279683ca", "description": "Philips CD-i 220 F2 BIOS (alternate)", "name": "cdi220b.rom", "size": 524288}], "name": "cdimono1.zip", "required": true, "source_ref": "src/osd/retro/retromain.c:1989, src/mame/drivers/cdi.c:421", "system": "philips-cdi", "validation": ["crc32", "sha1"]}], "notes": "MAME 0.160 compiled with SUBTARGET=cdi, only cdimono1 driver.\nChecks cdimono1.zip existence in system_dir, then game dir. Returns -2 if missing.\ncdic.bin and slave.bin are undumped 68HC05 MCUs (NO_DUMP), not in the ZIP.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/mame2015-libretro", "source_commit": "283e04b03c121db9be12632d6bad2fc3e8707248", "systems": ["philips-cdi"], "type": "libretro", "upstream": "https://github.com/mamedev/mame/tree/mame0160"}


id: cemu
name: Cemu
type: standalone
source: https://github.com/cemu-project/Cemu
source_commit: daacdda0bab55dd78a2b5aac2c12d6ebe8c8e868
profile_json:
{"analysis_commit": "HEAD (depth=1)", "analysis_date": "2026-03-17", "core_version": "2.6", "cores": ["cemu"], "display_name": "Cemu (Wii U)", "emulator": "Cemu", "files": [{"name": "keys.txt", "note": "AES-128 disc keys for WUD/WUX decryption, one 32-char hex key per line", "path": "", "required": true, "size": null, "source_ref": "src/Cafe/Filesystem/FST/KeyCache.cpp:63"}, {"name": "otp.bin", "note": "Wii U OTP dump, required for online mode and SSL certificate generation", "path": "", "required": false, "size": 1024, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:556"}, {"name": "seeprom.bin", "note": "Wii U SEEPROM dump, required for online mode and console region detection", "path": "", "required": false, "size": 512, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:579"}, {"name": "CafeCn.ttf", "note": "Shared font - Chinese", "path": "mlc01/sys/title/0005001b/10042400/content/", "required": true, "source_ref": "src/Cafe/CafeSystem.cpp:289"}, {"name": "CafeKr.ttf", "note": "Shared font - Korean", "path": "mlc01/sys/title/0005001b/10042400/content/", "required": true, "source_ref": "src/Cafe/CafeSystem.cpp:290"}, {"name": "CafeStd.ttf", "note": "Shared font - Standard (Latin/Japanese)", "path": "mlc01/sys/title/0005001b/10042400/content/", "required": true, "source_ref": "src/Cafe/CafeSystem.cpp:291"}, {"name": "CafeTw.ttf", "note": "Shared font - Traditional Chinese (Taiwan)", "path": "mlc01/sys/title/0005001b/10042400/content/", "required": true, "source_ref": "src/Cafe/CafeSystem.cpp:292"}, {"name": "WIIU_COMMON_1_CERT.der", "note": "Nintendo client certificate - common", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:471"}, {"name": "WIIU_COMMON_1_RSA_KEY.aes", "note": "Nintendo client key - common (AES-encrypted)", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:471"}, {"name": "WIIU_ACCOUNT_1_CERT.der", "note": "Nintendo client certificate - account", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:472"}, {"name": "WIIU_ACCOUNT_1_RSA_KEY.aes", "note": "Nintendo client key - account (AES-encrypted)", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:472"}, {"name": "WIIU_OLIVE_1_CERT.der", "note": "Nintendo client certificate - olive (Miiverse)", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:473"}, {"name": "WIIU_OLIVE_1_RSA_KEY.aes", "note": "Nintendo client key - olive (AES-encrypted)", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:473"}, {"name": "WIIU_VINO_1_CERT.der", "note": "Nintendo client certificate - vino", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:474"}, {"name": "WIIU_VINO_1_RSA_KEY.aes", "note": "Nintendo client key - vino (AES-encrypted)", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:474"}, {"name": "WIIU_WOOD_1_CERT.der", "note": "Nintendo client certificate - wood", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:475"}, {"name": "WIIU_WOOD_1_RSA_KEY.aes", "note": "Nintendo client key - wood (AES-encrypted)", "path": "mlc01/sys/title/0005001b/10054000/content/ccerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:475"}, {"name": "CACERT_NINTENDO_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:480"}, {"name": "CACERT_NINTENDO_CA_G2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:481"}, {"name": "CACERT_NINTENDO_CA_G3.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:482"}, {"name": "CACERT_NINTENDO_CLASS2_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:483"}, {"name": "CACERT_NINTENDO_CLASS2_CA_G2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:484"}, {"name": "CACERT_NINTENDO_CLASS2_CA_G3.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:485"}, {"name": "BALTIMORE_CYBERTRUST_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:488"}, {"name": "CYBERTRUST_GLOBAL_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:489"}, {"name": "VERIZON_GLOBAL_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:490"}, {"name": "GLOBALSIGN_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:491"}, {"name": "GLOBALSIGN_ROOT_CA_R2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:492"}, {"name": "GLOBALSIGN_ROOT_CA_R3.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:493"}, {"name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G3.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:494"}, {"name": "VERISIGN_UNIVERSAL_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:495"}, {"name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G5.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:496"}, {"name": "THAWTE_PRIMARY_ROOT_CA_G3.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:497"}, {"name": "THAWTE_PRIMARY_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:498"}, {"name": "GEOTRUST_GLOBAL_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:499"}, {"name": "GEOTRUST_GLOBAL_CA2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:500"}, {"name": "GEOTRUST_PRIMARY_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:501"}, {"name": "GEOTRUST_PRIMARY_CA_G3.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:502"}, {"name": "ADDTRUST_EXT_CA_ROOT.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:503"}, {"name": "COMODO_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:504"}, {"name": "UTN_DATACORP_SGC_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:505"}, {"name": "UTN_USERFIRST_HARDWARE_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:506"}, {"name": "DIGICERT_HIGH_ASSURANCE_EV_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:507"}, {"name": "DIGICERT_ASSURED_ID_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:508"}, {"name": "DIGICERT_GLOBAL_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:509"}, {"name": "GTE_CYBERTRUST_GLOBAL_ROOT.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:510"}, {"name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:511"}, {"name": "THAWTE_PREMIUM_SERVER_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:512"}, {"name": "EQUIFAX_SECURE_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:513"}, {"name": "ENTRUST_SECURE_SERVER_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:514"}, {"name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:515"}, {"name": "ENTRUST_CA_2048.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:516"}, {"name": "ENTRUST_ROOT_CA.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:517"}, {"name": "ENTRUST_ROOT_CA_G2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:518"}, {"name": "DIGICERT_ASSURED_ID_ROOT_CA_G2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:519"}, {"name": "DIGICERT_GLOBAL_ROOT_CA_G2.der", "path": "mlc01/sys/title/0005001b/10054000/content/scerts/", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:520"}, {"name": "snd_user.rpl", "note": "Wii U firmware sound library, improves audio accuracy for some games", "path": "cafeLibs/", "required": false, "source_ref": "src/Cafe/OS/libs/snd_user/snd_user.cpp:1225"}, {"name": "snduser2.rpl", "note": "Wii U firmware sound library v2, improves audio accuracy for some games", "path": "cafeLibs/", "required": false, "source_ref": "src/Cafe/OS/libs/snd_user/snd_user.cpp:1225"}], "firmware_titles": [{"content": ["CafeCn.ttf", "CafeKr.ttf", "CafeStd.ttf", "CafeTw.ttf"], "id": "0005001b-10042400", "name": "Shared fonts", "required": true, "source_ref": "src/Cafe/CafeSystem.cpp:289-292"}, {"content": ["ccerts/", "scerts/"], "id": "0005001b-10054000", "name": "SSL certificates", "note": "Only needed for online features, requires otp.bin", "required": false, "source_ref": "src/Cafe/IOSU/legacy/iosu_crypto.cpp:535"}, {"content": ["language.txt", "country.txt"], "id": "0005001b-1005c000", "name": "System language/country data", "note": "Auto-generated by Cemu if missing", "required": false, "source_ref": "src/gui/wxgui/CemuApp.cpp:535-561"}, {"content": ["version.bin"], "id": "00050010-10041200", "name": "System version", "note": "Referenced but not strictly loaded (TODO in source)", "required": false, "source_ref": "src/Cafe/OS/libs/coreinit/coreinit_MCP.cpp:203"}, {"id": "00050010-10040000", "name": "Wii U Menu (JPN)", "required": false, "source_ref": "src/Cafe/OS/libs/sysapp/sysapp.cpp:382"}, {"id": "00050010-10040100", "name": "Wii U Menu (USA)", "required": false, "source_ref": "src/Cafe/OS/libs/sysapp/sysapp.cpp:382"}, {"id": "00050010-10040200", "name": "Wii U Menu (EUR)", "required": false, "source_ref": "src/Cafe/OS/libs/sysapp/sysapp.cpp:382"}], "logo": "https://raw.githubusercontent.com/cemu-project/Cemu/main/dist/linux/info.cemu.Cemu.png", "mlc_structure": ["mlc01/sys/title/0005001b/10042400/content/", "mlc01/sys/title/0005001b/10054000/content/ccerts/", "mlc01/sys/title/0005001b/10054000/content/scerts/", "mlc01/sys/title/0005001b/1005c000/content/", "mlc01/sys/title/00050010/", "mlc01/usr/title/00050000/", "mlc01/usr/title/0005000c/", "mlc01/usr/title/0005000e/", "mlc01/usr/save/", "mlc01/usr/boss/"], "notes": "Cemu is a standalone Wii U emulator (not a libretro core).\nMinimum to run games: keys.txt with disc decryption keys.\nShared fonts are required but Cemu ships fallback fonts in resources/sharedFonts/.\nOnline play requires otp.bin (1024 bytes) + seeprom.bin (512 bytes) + SSL certificates.\nThe cafeLibs/ directory can hold original Wii U firmware .rpl libraries for accuracy.\nAny .rpl from the Wii U firmware placed in cafeLibs/ will override Cemu's HLE implementation.\n", "profiled_date": "2026-03-18", "source": "https://github.com/cemu-project/Cemu", "source_commit": "daacdda0bab55dd78a2b5aac2c12d6ebe8c8e868", "systems": ["nintendo-wiiu"], "type": "standalone"}


id: chailove
name: ChaiLove
type: libretro
classification: game_engine
source: https://github.com/libretro/libretro-chailove
upstream: https://github.com/libretro/libretro-chailove
source_commit: 467cd453e3b1761c5c3611746b35e709328a2ced
profile_json:
{"core_classification": "game_engine", "core_version": "2.0.0", "cores": ["chailove"], "display_name": "ChaiLove", "emulator": "ChaiLove", "files": [], "notes": "2D game framework for libretro using ChaiScript, inspired by LOVE2D. Game engine runtime that loads .chai/.chailove game files as content. Mounts system_dir at /libretro/system via PhysFS for game scripts, but the core itself requires no external files.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/libretro-chailove", "source_commit": "467cd453e3b1761c5c3611746b35e709328a2ced", "systems": [], "type": "libretro", "upstream": "https://github.com/libretro/libretro-chailove"}


id: chimerasnes
name: ChimeraSNES
type: libretro
classification: community_fork
source: https://github.com/jamsilva/chimerasnes
upstream: https://github.com/snes9xgit/snes9x
source_commit: 04c57c2902c25f36ae5a5d9c57aff851a772c868
profile_json:
{"core_classification": "community_fork", "core_version": "", "cores": ["chimerasnes"], "display_name": "Nintendo - SNES / SFC (ChimeraSNES)", "emulator": "ChimeraSNES", "files": [{"aliases": ["BS-X.bios"], "description": "Satellaview BS-X BIOS", "name": "BS-X.bin", "note": "Loaded by BSX_LoadBIOS() from system_dir when core option\nchimerasnes_bsx_bios is set to 'load' (default: skip).\nTries BS-X.bin first, then BS-X.bios as fallback.\nSize must be BIOS_SIZE (0x100000). Many BS-X games run without it.\n", "required": false, "size": 1048576, "source_ref": "source/bsx.c:857-882", "system": "nintendo-satellaview", "validation": ["size"]}, {"description": "Sufami Turbo BIOS", "name": "STBIOS.bin", "note": "Loaded by LoadSFTBIOS() from system_dir when Sufami Turbo game\ndetected (BANDAI SFC-ADX header at ROM offset 0, memmap.c:833).\nReads 0x40000 bytes into Memory.ROM. No validation performed.\n", "required": true, "size": 262144, "source_ref": "source/memmap.c:275-289", "system": "nintendo-sufami-turbo"}], "notes": "Based on multiple snes9x forks (uosnes, snes9x2005), optimized for slow hardware.\nAll coprocessor data (DSP1-4, CX4, SuperFX, SA-1, SPC7110, OBC1) is HLE with\nembedded ROM tables. No external coprocessor firmware needed.\nBS-X BIOS loading controlled by core option chimerasnes_bsx_bios (default: skip).\nretro_load_game_special() returns false (no subsystem support).\n.info firmware_count absent (= 0), under-declares: code loads 2 files.\n", "profiled_date": "2026-03-23", "source": "https://github.com/jamsilva/chimerasnes", "source_commit": "04c57c2902c25f36ae5a5d9c57aff851a772c868", "systems": ["nintendo-snes", "nintendo-satellaview", "nintendo-sufami-turbo"], "type": "libretro", "upstream": "https://github.com/snes9xgit/snes9x"}


id: citra
name: Citra
type: standalone + libretro
classification: community_fork
source: https://github.com/libretro/citra
upstream: https://github.com/citra-emu/citra
source_commit: 4268124a74b55ddba69f29dc9858f222c4bd006d
profile_json:
{"core_classification": "community_fork", "core_version": "Git", "cores": ["citra"], "display_name": "Nintendo - 3DS (Citra)", "emulator": "Citra", "files": [{"description": "AES encryption keys", "name": "aes_keys.txt", "note": "needed for encrypted games", "path": "Citra/sysdata/aes_keys.txt", "required": false, "source_ref": "src/core/hw/aes/key.cpp:207-208 LoadPresetKeys()", "system": "nintendo-3ds"}, {"description": "ARM9 bootrom", "name": "boot9.bin", "note": "provides AES and RSA keys", "path": "Citra/sysdata/boot9.bin", "required": false, "size": 65536, "source_ref": "src/core/hw/aes/key.cpp:162-172 LoadBootromKeys(), src/core/hw/rsa/rsa.cpp:55-65 InitSlots()", "system": "nintendo-3ds", "validation": ["size"]}, {"description": "system shared font (legacy format)", "hle_fallback": true, "name": "shared_font.bin", "note": "fallback to embedded open-source replacement font", "path": "Citra/sysdata/shared_font.bin", "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:259-267 LoadLegacySharedFont()", "system": "nintendo-3ds"}, {"description": "game seed database", "name": "seeddb.bin", "note": "needed for seed-encrypted games (9.6+ titles), creates empty if missing", "path": "Citra/sysdata/seeddb.bin", "required": false, "source_ref": "src/core/file_sys/seed_db.cpp:13-27 SeedDB::Load()", "system": "nintendo-3ds"}], "notes": "Citra 3DS emulator. Upstream taken down March 2024 (Nintendo lawsuit).\nMirror: https://github.com/citra-mirror/citra\nData dir: {save_dir}/Citra/ or {system_dir}/Citra/\nref: src/citra_libretro/citra_libretro.cpp:460-466\n\nHLE for most services. Embedded open-source replacements for shared font,\nMii data, country list, and bad word list compiled into the binary.\nref: src/core/file_sys/archive_ncch.cpp:9-27, 133-167\n\nfirmware_count absent in .info (= 0). All files optional.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/citra", "source_commit": "4268124a74b55ddba69f29dc9858f222c4bd006d", "systems": ["nintendo-3ds"], "type": "standalone + libretro", "upstream": "https://github.com/citra-emu/citra"}


id: citra-mmj
name: Citra MMJ
type: standalone
classification: community_fork
source: https://github.com/weihuoya/citra
upstream: https://github.com/weihuoya/citra
source_commit: 302b0c3bc4312bc96489c11584a97664894b343f
profile_json:
{"core_classification": "community_fork", "core_version": "20251112", "cores": ["citra-mmj"], "display_name": "Nintendo - 3DS (Citra MMJ)", "emulator": "Citra MMJ", "files": [{"description": "ARM9 bootrom", "name": "boot9.bin", "note": "AES key section read at offset 55760, RSA modulus and exponent at 0xB3E0 and 0xB4E0. Both readers bail on any other size.", "path": "sysdata/boot9.bin", "required": false, "size": 65536, "source_ref": "src/core/hw/aes/key.cpp:135-205, src/core/hw/rsa/rsa.cpp:49-80", "system": "nintendo-3ds", "validation": ["size"]}, {"description": "AES key slots", "name": "aes_keys.txt", "note": "One name=hex pair per line, slot0x<NN>Key<X|Y|N> and common<N>. Read last, so it overrides what boot9.bin and the native firm titles set.", "path": "sysdata/aes_keys.txt", "required": false, "source_ref": "src/core/hw/aes/key.cpp:428-493, src/core/hw/aes/key.cpp:497-508", "system": "nintendo-3ds"}, {"description": "New 3DS NAND secret sector", "min_size": 17, "name": "sector0x96.bin", "note": "First 16 bytes decrypt the slot 0x15 KeyX of the New 3DS safe mode native firm, title 0x0004013820000003. A file of 16 bytes or less trips a live assert: Android compiles out ASSERT_MSG, not ASSERT.", "path": "sysdata/sector0x96.bin", "required": false, "source_ref": "src/core/hw/aes/key.cpp:309-345, src/core/hw/aes/key.cpp:380-386, src/common/assert.h:30-35, src/common/assert.h:59-62", "system": "nintendo-3ds", "validation": ["size"]}, {"description": "game seed database", "name": "seeddb.bin", "note": "Seed-encrypted titles from firmware 9.6 onwards. An empty database is written when the file is absent.", "path": "sysdata/seeddb.bin", "required": false, "source_ref": "src/core/file_sys/seed_db.cpp:12-57", "system": "nintendo-3ds"}, {"description": "shared font system archive, title 0x0004009b00014002", "hle_fallback": true, "name": "00000000.app.romfs", "note": "First step of the shared font chain, holding cbf_std.bcfnt.lz in its RomFS. This title low ID is the one the embedded open-source font answers.", "path": "nand/00000000000000000000000000000000/title/0004009b/00014002/content/00000000.app.romfs", "region": ["japan", "north-america", "europe", "australia"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:124-182, src/core/file_sys/archive_ncch.cpp:143-148", "system": "nintendo-3ds"}, {"description": "shared font system archive for CHN, title 0x0004009b00014102", "name": "00000000.app.romfs", "note": "Holds cbf_zh-Hans-CN.bcfnt.lz. No embedded replacement answers this title low ID.", "path": "nand/00000000000000000000000000000000/title/0004009b/00014102/content/00000000.app.romfs", "region": ["china"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:124-182, src/core/file_sys/archive_ncch.cpp:132-158", "system": "nintendo-3ds"}, {"description": "shared font system archive for KOR, title 0x0004009b00014202", "name": "00000000.app.romfs", "note": "Holds cbf_ko-Hang-KR.bcfnt.lz. No embedded replacement answers this title low ID.", "path": "nand/00000000000000000000000000000000/title/0004009b/00014202/content/00000000.app.romfs", "region": ["south-korea"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:124-182, src/core/file_sys/archive_ncch.cpp:132-158", "system": "nintendo-3ds"}, {"description": "shared font system archive for TWN, title 0x0004009b00014302", "name": "00000000.app.romfs", "note": "Holds cbf_zh-Hant-TW.bcfnt.lz. No embedded replacement answers this title low ID.", "path": "nand/00000000000000000000000000000000/title/0004009b/00014302/content/00000000.app.romfs", "region": ["taiwan"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:124-182, src/core/file_sys/archive_ncch.cpp:132-158", "system": "nintendo-3ds"}, {"description": "system shared font, legacy dump", "hle_fallback": true, "name": "shared_font.bin", "note": "Copied whole into the shared memory block, so the file carries the 0x80 byte APT header. Tried after the system archive and before the regional BCFNT files.", "path": "sysdata/shared_font.bin", "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:230-246, src/core/hle/service/apt/apt.cpp:256-272", "system": "nintendo-3ds"}, {"bundled": true, "description": "shared font for JPN, USA, EUR and AUS", "hle_fallback": true, "name": "cbf_std.bcfnt", "note": "Read to offset 0x80 of the shared memory block, so the file is a bare uncompressed BCFNT. Selected for every CFG region other than CHN, KOR and TWN. The embedded open-source font answers the archive request first, so this file is only reached when that archive path is taken out.", "path": "sysdata/cbf_std.bcfnt", "region": ["japan", "north-america", "europe", "australia"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:184-228, src/core/file_sys/archive_ncch.cpp:143-148", "system": "nintendo-3ds"}, {"bundled": true, "description": "shared font for CHN", "name": "cbf_zh-Hans-CN.bcfnt", "note": "Selected when the CFG region is CHN. The embedded font does not cover archive 0x00014102, so the session ends with ErrorSystemFiles without this file or shared_font.bin.", "path": "sysdata/cbf_zh-Hans-CN.bcfnt", "region": ["china"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:184-228, src/core/hle/service/apt/apt.cpp:256-272", "system": "nintendo-3ds"}, {"bundled": true, "description": "shared font for KOR", "name": "cbf_ko-Hang-KR.bcfnt", "note": "Selected when the CFG region is KOR. The embedded font does not cover archive 0x00014202, so the session ends with ErrorSystemFiles without this file or shared_font.bin.", "path": "sysdata/cbf_ko-Hang-KR.bcfnt", "region": ["south-korea"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:184-228, src/core/hle/service/apt/apt.cpp:256-272", "system": "nintendo-3ds"}, {"bundled": true, "description": "shared font for TWN", "name": "cbf_zh-Hant-TW.bcfnt", "note": "Selected when the CFG region is TWN. The embedded font does not cover archive 0x00014302, so the session ends with ErrorSystemFiles without this file or shared_font.bin.", "path": "sysdata/cbf_zh-Hant-TW.bcfnt", "region": ["taiwan"], "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:184-228, src/core/hle/service/apt/apt.cpp:256-272", "system": "nintendo-3ds"}, {"bundled": true, "description": "Mii data system archive, title 0x0004009b00010202", "hle_fallback": true, "name": "00000000.app.romfs", "note": "Split-off RomFS served in place of the NCCH the title tree resolves to. An open-source replacement is built into the binary.", "path": "nand/00000000000000000000000000000000/title/0004009b/00010202/content/00000000.app.romfs", "required": false, "source_ref": "src/core/file_sys/ncch_container.cpp:726-741, src/core/file_sys/archive_ncch.cpp:132-136", "system": "nintendo-3ds"}, {"bundled": true, "description": "country list system archive, title 0x0004009b00010402", "hle_fallback": true, "name": "00000000.app.romfs", "note": "Split-off RomFS served in place of the NCCH the title tree resolves to. An open-source replacement is built into the binary.", "path": "nand/00000000000000000000000000000000/title/0004009b/00010402/content/00000000.app.romfs", "required": false, "source_ref": "src/core/file_sys/ncch_container.cpp:726-741, src/core/file_sys/archive_ncch.cpp:137-142", "system": "nintendo-3ds"}, {"bundled": true, "description": "bad word list system archive, title 0x000400db00010302", "hle_fallback": true, "name": "00000000.app.romfs", "note": "Split-off RomFS served in place of the NCCH the title tree resolves to. An open-source replacement is built into the binary.", "path": "nand/00000000000000000000000000000000/title/000400db/00010302/content/00000000.app.romfs", "required": false, "source_ref": "src/core/file_sys/ncch_container.cpp:726-741, src/core/file_sys/archive_ncch.cpp:150-157", "system": "nintendo-3ds"}, {"bundled": true, "description": "title metadata of the DLP module, title 0x0004013000002802", "hle_fallback": true, "name": "00000000.tmd", "note": "Read to resolve the content ID of index 0, which the shipped metadata gives as 0x1f. Without it the path falls back to content ID 0 and the module is not found.", "path": "nand/00000000000000000000000000000000/title/00040130/00002802/content/00000000.tmd", "required": false, "source_ref": "src/core/hle/service/am/am.cpp:428-464, src/core/hle/service/am/am.cpp:466-501, src/core/file_sys/title_metadata.cpp:19-34", "system": "nintendo-3ds"}, {"bundled": true, "description": "DLP system module, title 0x0004013000002802", "hle_fallback": true, "name": "0000001f.app", "note": "Loaded as a process when LLE is enabled for DLP, otherwise the HLE service is installed.", "path": "nand/00000000000000000000000000000000/title/00040130/00002802/content/0000001f.app", "required": false, "source_ref": "src/core/hle/service/service.cpp:78, src/core/hle/service/service.cpp:197-213", "system": "nintendo-3ds"}], "mode": "standalone", "notes": "Citra fork for Android, shipped as four APKs of the same build per release:\nthe org.citra.emu package, a com.antutu.ABenchMark package, and a\nStorageAccess variant of each. The user directory is citra-emu at the root of\nexternal storage, and Android/data/org.citra.emu/files/citra-emu for the\nStorageAccess builds. External files live in sysdata/ and nand/ below it.\nref: src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:61-94,\n     src/common/common_paths.h:23-29, src/common/file_util.cpp:398-430\n\nInitKeys reads boot9.bin, then the native firm titles in the NAND tree, then\nsector0x96.bin for the New 3DS firm, then aes_keys.txt. Content left\nencrypted stops loading with ErrorEncrypted, shown as \"ROM Encrypted\".\nref: src/core/hw/aes/key.cpp:497-508, src/core/file_sys/ncch_container.cpp:348-351,\n     src/android/jni/main_android.cpp:88-90\n\nGetSharedFont tries the shared font system archive, then shared_font.bin,\nthen the regional BCFNT for the CFG region, and ends the session with\nErrorSystemFiles when the three fail. The embedded open-source font answers\ntitle low ID 0x00014002 only, so CHN, KOR and TWN, which resolve to\n0x00014102, 0x00014202 and 0x00014302, depend on a file. Region defaults to\nthe code the ROM declares.\nref: src/core/hle/service/apt/apt.cpp:143, src/core/hle/service/apt/apt.cpp:256-272,\n     src/core/file_sys/archive_ncch.cpp:143-148, src/core/hle/service/cfg/cfg.cpp:176-181,\n     src/core/loader/ncch.cpp:179, src/android/jni/config/main_settings.cpp:12\n\nLoading the four regional fonts from sysdata is specific to this fork.\nref: src/core/hle/service/apt/apt.cpp:184-228\n\nThe APK assets carry those fonts, three system archives, the DLP module and a\nseeded CFG savegame, and the first run copies them into the user directory\nwithout overwriting what is already there. System archives ship as split-off\nRomFS, picked up beside the .app path the title tree resolves to.\nref: src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:192-207,\n     src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:368-399,\n     src/core/file_sys/ncch_container.cpp:726-741\n\nLLE is opt-in per service module and reads the module from the NAND title\ntree, falling back to HLE when it is absent. There is no title downloader:\nsystem titles come from CIA files the user installs.\nref: src/core/hle/service/service.cpp:60-107, src/core/hle/service/service.cpp:197-213,\n     src/android/jni/main_android.cpp:278-289\n\nClCertA is read from NAND title 0x0004001b00010002 and decrypted with the\nkeyslot 0x0D normal key. HTTPS client authentication stays off without both.\nref: src/core/hle/service/http_c.cpp:810-884\n\nThe published tree does not build as it stands: CitraDirectory.java:349 calls\na NativeLibrary.SetBackgroundGLSL that no file declares, and GetBuildDate and\nGetDeviceIinfo are declared native with no JNI counterpart. Nothing compiled\nhere reads the post-processing shaders the settings screen lists.\nref: src/android/app/src/main/java/org/citra/emu/NativeLibrary.java:341-342,\n     src/android/app/src/main/java/org/citra/emu/settings/SettingsFragment.java:397-401\n\nAmiibo dumps are read as .bin files from amiibo/, cheat codes from\ncheats/<title id>.txt, texture packs and mods from load/.\nref: src/android/app/src/main/java/org/citra/emu/ui/AmiiboDialog.java:57-64,\n     src/core/cheats/cheats.cpp:93-110, src/core/custom_tex_cache.cpp:67,\n     src/core/file_sys/ncch_container.cpp:359-365\n", "profiled_date": "2026-08-11", "source": "https://github.com/weihuoya/citra", "source_commit": "302b0c3bc4312bc96489c11584a97664894b343f", "systems": ["nintendo-3ds"], "type": "standalone", "upstream": "https://github.com/weihuoya/citra"}


id: citra2018
name: Citra 2018
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/citra2018
upstream: https://github.com/citra-emu/citra
source_commit: 29183a99b9771b128a36304c7d734daf5bfd5051
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "Git", "cores": ["citra2018"], "display_name": "Nintendo - 3DS (Citra 2018)", "emulator": "Citra 2018", "files": [{"name": "aes_keys.txt", "note": "AES encryption keys for decrypting 3DS content", "path": "Citra/sysdata/aes_keys.txt", "required": false, "source_ref": "src/core/hw/aes/key.cpp:72-76", "system": "nintendo-3ds"}, {"hle_fallback": true, "name": "shared_font.bin", "note": "system shared font, falls back to embedded open-source replacement", "path": "Citra/sysdata/shared_font.bin", "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:168-183", "system": "nintendo-3ds"}], "notes": "Frozen 2018 snapshot of the Citra 3DS emulator.\nLoads files from {system_dir}/Citra/sysdata/.\nref: src/citra_libretro/citra_libretro.cpp:317, src/common/common_paths.h:24\n\nEmbedded open-source replacement font in archive_ncch.cpp.\nref: src/core/file_sys/archive_ncch.cpp:134-146\n\nfirmware_count absent in .info (= 0). Both files are optional.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/citra2018", "source_commit": "29183a99b9771b128a36304c7d734daf5bfd5051", "systems": ["nintendo-3ds"], "type": "libretro", "upstream": "https://github.com/citra-emu/citra"}


id: citra_canary
name: Citra Canary
type: libretro
classification: community_fork
source: https://github.com/libretro/citra
upstream: https://github.com/citra-emu/citra
source_commit: 4268124a74b55ddba69f29dc9858f222c4bd006d
profile_json:
{"core_classification": "community_fork", "core_version": "Git", "cores": ["citra_canary"], "display_name": "Nintendo - 3DS (Citra Canary/Experimental)", "emulator": "Citra Canary", "files": [{"name": "aes_keys.txt", "note": "AES encryption keys for decrypting 3DS content", "path": "Citra/sysdata/aes_keys.txt", "required": false, "source_ref": "src/core/hw/aes/key.cpp:71-131", "system": "nintendo-3ds"}, {"hle_fallback": true, "name": "shared_font.bin", "note": "system shared font, falls back to embedded open-source replacement", "path": "Citra/sysdata/shared_font.bin", "required": false, "source_ref": "src/core/hle/service/apt/apt.cpp:168-200", "system": "nintendo-3ds"}], "notes": "Canary branch of libretro/citra. Older codebase than master branch (citra core).\nMissing boot9.bin, sector0x96.bin, seeddb.bin support present in master.\nSeed crypto unimplemented (src/core/file_sys/ncch_container.cpp:169).\nUpstream citra-emu/citra taken down March 2024 (Nintendo lawsuit).\nMirror: https://github.com/citra-mirror/citra\n\nData dir: {system_dir}/Citra/sysdata/\nref: src/citra_libretro/citra_libretro.cpp:305-314\n\nEmbedded open-source replacements for shared font, country list, bad word list.\nref: src/core/file_sys/archive_ncch.cpp:142-147\n\nfirmware_count absent in .info (= 0).\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/citra", "source_commit": "4268124a74b55ddba69f29dc9858f222c4bd006d", "systems": ["nintendo-3ds"], "type": "libretro", "upstream": "https://github.com/citra-emu/citra"}


id: citron
name: Citron
type: standalone
classification: community_fork
source: https://git.citron-emu.org/citron-emu/Citron
upstream: https://git.citron-emu.org/citron-emu/Citron
profile_json:
{"analysis_commit": "79dee42 (depth=1)", "analysis_date": "2026-03-26", "core_classification": "community_fork", "core_version": "2026.03.12", "cores": ["citron"], "display_name": "Citron (Nintendo Switch)", "emulator": "Citron", "files": [{"mode": "standalone", "name": "prod.keys", "note": "Production keys for NCA decryption (master, key area, header, titlekek)", "path": "switch/", "required": true, "source_ref": "src/core/crypto/key_manager.cpp:655-656"}, {"mode": "standalone", "name": "title.keys", "note": "Per-title encryption keys (rights_id to titlekey mappings)", "path": "switch/", "required": false, "source_ref": "src/core/crypto/key_manager.cpp:659-660"}, {"mode": "standalone", "name": "console.keys", "note": "Console-specific keys (BIS, SD seed)", "path": "switch/", "required": false, "source_ref": "src/core/crypto/key_manager.cpp:661-662"}, {"mode": "standalone", "name": "key_retail.bin", "note": "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)", "path": "switch/", "required": false, "size": 160, "source_ref": "src/core/hle/service/nfc/common/amiibo_crypto.cpp:274-292"}], "mode": "standalone", "notes": "Citron is a standalone Nintendo Switch emulator, community fork of yuzu by Zephyron.\ndev.keys can be used instead of prod.keys when use_dev_keys is enabled (for Switch dev units).\nFirmware (system NCAs) must be installed through Citron's UI from a firmware ZIP or NCA files.\nRequired for commercial games. Homebrew (.nro, .nso) can run without keys or firmware.\n", "profiled_date": "2026-03-26", "source": "https://git.citron-emu.org/citron-emu/Citron", "systems": ["nintendo-switch"], "type": "standalone", "upstream": "https://git.citron-emu.org/citron-emu/Citron"}


id: clk
name: Clock Signal (CLK)
type: standalone
source: https://github.com/TomHarte/CLK
upstream: https://github.com/TomHarte/CLK
source_commit: 096de57445920ecf16cf066979422e34aceb843a
profile_json:
{"core_version": "2026-07-28", "cores": ["clk"], "display_name": "Clock Signal", "emulator": "Clock Signal (CLK)", "files": [{"crc32": "54c0c963", "description": "RISC OS v3.11", "mode": "standalone", "name": "ROM311", "path": "Archimedes/ROM311", "required": true, "size": 2097152, "source_ref": "Machines/Utility/ROMCatalogue.cpp:58-65"}, {"aliases": ["basic2.rom"], "crc32": "79434781", "description": "Acorn BASIC II ROM, shared by BBC Micro and Electron", "mode": "standalone", "name": "basic.rom", "path": "Acorn/basic.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:78-85"}, {"crc32": "3c14fc70", "description": "BBC MOS v1.2", "mode": "standalone", "name": "os12.rom", "path": "BBCMicro/os12.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:436-443"}, {"crc32": "3ce609cf", "description": "Acorn 8271 DFS 0.9 ROM", "mode": "standalone", "name": "dfs09.rom", "note": "Conditional: only when using 8271 disk interface", "path": "BBCMicro/dfs09.rom", "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:444-451"}, {"crc32": "5ae33e94", "description": "Acorn 1770 DFS 2.26 ROM", "mode": "standalone", "name": "dfs-2.26.rom", "note": "Conditional: needed for 1770 DFS or tube processor", "path": "BBCMicro/dfs-2.26.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:452-459"}, {"crc32": "d3855588", "description": "Acorn ADFS 1.30 ROM", "mode": "standalone", "name": "adfs-1.30.rom", "note": "Conditional: needed for ADFS support", "path": "BBCMicro/adfs-1.30.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:460-467"}, {"crc32": "8314fed0", "description": "Advanced Disc Toolkit 1.40 ROM", "mode": "standalone", "name": "ADT-1.40.rom", "note": "Optional: fetched separately, silently skipped if absent", "path": "BBCMicro/ADT-1.40.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:468-475"}, {"crc32": "9ec2dbd0", "description": "6502 Tube 1.10 Boot ROM", "mode": "standalone", "name": "TUBE110.rom", "note": "Conditional: needed for 6502 tube processor", "path": "BBCMicro/TUBE110.rom", "required": false, "size": 2048, "source_ref": "Machines/Utility/ROMCatalogue.cpp:476-483"}, {"crc32": "b5851efc", "description": "Z80 Tube 1.22 Boot ROM", "mode": "standalone", "name": "Z80_122.rom", "note": "Conditional: needed for Z80 tube processor", "path": "BBCMicro/Z80_122.rom", "required": false, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:484-491"}, {"crc32": "79434781", "description": "Acorn BASIC II ROM (Electron copy)", "mode": "standalone", "name": "basic.rom", "path": "Electron/basic.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:90-97"}, {"crc32": "bf63fb1f", "description": "Electron MOS ROM v1.00", "mode": "standalone", "name": "os.rom", "note": "The catalogue accepts five images: 406a42ce, 0886741b, bf63fb1f, 6fea0978 and d61135d7. They differ only in the credits text, which lives on the IO page of a real machine.\n", "path": "Electron/os.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:146-156"}, {"crc32": "51523993", "description": "E00 ADFS ROM, first slot", "mode": "standalone", "name": "ADFS-E00_1.rom", "note": "Conditional: needed for PRES ADFS", "path": "Electron/ADFS-E00_1.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:98-105"}, {"crc32": "8d17de0e", "description": "E00 ADFS ROM, second slot", "mode": "standalone", "name": "ADFS-E00_2.rom", "note": "Conditional: needed for PRES ADFS", "path": "Electron/ADFS-E00_2.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:106-113"}, {"crc32": "3289bdc6", "description": "Acorn ADFS ROM", "mode": "standalone", "name": "adfs.rom", "note": "Conditional: needed for Acorn ADFS", "path": "Electron/adfs.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:114-121"}, {"crc32": "f3dc9bc5", "description": "1770 DFS ROM", "mode": "standalone", "name": "DFS-1770-2.20.rom", "note": "Conditional: needed for DFS disk images", "path": "Electron/DFS-1770-2.20.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:122-129"}, {"crc32": "a923368d", "description": "IDE-modified ADFS 1.03 ROM", "mode": "standalone", "name": "ELK130E.rom", "note": "Conditional: needed for IDE interface", "path": "Electron/ELK130E.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:130-137"}, {"crc32": "e0013cfc", "description": "Advanced Plus 6 ROM", "mode": "standalone", "name": "AP6v133.rom", "note": "Conditional: needed for AP6 commands", "path": "Electron/AP6v133.rom", "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:138-145"}, {"crc32": "c4f0f55f", "description": "A500/A1000/A2000/CDTV Kickstart 1.3 ROM", "mode": "standalone", "name": "Kickstart-v1.3-rev34.5-1987-Commodore-A500-A1000-A2000-CDTV.rom", "path": "Amiga/Kickstart-v1.3-rev34.5-1987-Commodore-A500-A1000-A2000-CDTV.rom", "required": true, "size": 262144, "source_ref": "Machines/Utility/ROMCatalogue.cpp:193-200"}, {"crc32": "815752df", "description": "CPC 464 firmware", "mode": "standalone", "name": "os464.rom", "note": "Built into binary. Required for CPC 464 model.", "path": "AmstradCPC/os464.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:261-268, Machines/Utility/ROMLibrary.cpp:14535"}, {"crc32": "7d9a3bac", "description": "CPC 464 BASIC ROM", "mode": "standalone", "name": "basic464.rom", "note": "Built into binary. Required for CPC 464 model.", "path": "AmstradCPC/basic464.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:269-276, Machines/Utility/ROMLibrary.cpp:14532"}, {"crc32": "3f5a6dc4", "description": "CPC 664 firmware", "mode": "standalone", "name": "os664.rom", "note": "Built into binary. Required for CPC 664 model.", "path": "AmstradCPC/os664.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:277-283, Machines/Utility/ROMLibrary.cpp:14537"}, {"crc32": "32fee492", "description": "CPC 664 BASIC ROM", "mode": "standalone", "name": "basic664.rom", "note": "Built into binary. Required for CPC 664 model.", "path": "AmstradCPC/basic664.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:284-291, Machines/Utility/ROMLibrary.cpp:14534"}, {"crc32": "0219bb74", "description": "CPC 6128 firmware", "mode": "standalone", "name": "os6128.rom", "note": "Built into binary. Required for CPC 6128 model.", "path": "AmstradCPC/os6128.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:292-299, Machines/Utility/ROMLibrary.cpp:14536"}, {"crc32": "ca6af63d", "description": "CPC 6128 BASIC ROM", "mode": "standalone", "name": "basic6128.rom", "note": "Built into binary. Required for CPC 6128 model.", "path": "AmstradCPC/basic6128.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:300-307, Machines/Utility/ROMLibrary.cpp:14533"}, {"crc32": "1fe22ecd", "description": "Amstrad Disk Operating System", "mode": "standalone", "name": "amsdos.rom", "note": "Built into binary. Needed for CPC 664/6128 disk support.", "path": "AmstradCPC/amsdos.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:253-260, Machines/Utility/ROMLibrary.cpp:14531"}, {"crc32": "ba210588", "description": "Original Apple II ROM", "mode": "standalone", "name": "apple2o.rom", "note": "Required for original Apple II model", "path": "AppleII/apple2o.rom", "required": true, "size": 12288, "source_ref": "Machines/Utility/ROMCatalogue.cpp:336-343"}, {"crc32": "f66f9c26", "description": "Apple II+ ROM", "mode": "standalone", "name": "apple2.rom", "note": "Required for Apple II+ model", "path": "AppleII/apple2.rom", "required": true, "size": 12288, "source_ref": "Machines/Utility/ROMCatalogue.cpp:328-335"}, {"crc32": "e12be18d", "description": "Apple IIe ROM", "mode": "standalone", "name": "apple2eu.rom", "note": "Required for Apple IIe model", "path": "AppleII/apple2eu.rom", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:320-327"}, {"crc32": "65989942", "description": "Enhanced Apple IIe ROM", "mode": "standalone", "name": "apple2e.rom", "note": "Required for Enhanced IIe model", "path": "AppleII/apple2e.rom", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:312-319"}, {"crc32": "64f415c6", "description": "Apple II/II+ character ROM", "mode": "standalone", "name": "apple2-character.rom", "note": "Required for Apple II and II+ models", "path": "AppleII/apple2-character.rom", "required": true, "size": 2048, "source_ref": "Machines/Utility/ROMCatalogue.cpp:344-351"}, {"crc32": "816a86f1", "description": "Apple IIe character ROM", "mode": "standalone", "name": "apple2eu-character.rom", "note": "Required for Apple IIe model", "path": "AppleII/apple2eu-character.rom", "required": true, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:352-359"}, {"crc32": "2651014d", "description": "Enhanced Apple IIe character ROM", "mode": "standalone", "name": "apple2e-character.rom", "note": "Required for Enhanced IIe model. Also used by Apple IIgs.", "path": "AppleII/apple2e-character.rom", "required": true, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:360-367"}, {"crc32": "5aff85d3", "description": "Apple II SCSI card ROM", "mode": "standalone", "name": "scsi.rom", "note": "Conditional: needed for SCSI controller", "path": "AppleII/scsi.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:368-375"}, {"crc32": "42f124b0", "description": "Apple IIgs ROM01", "mode": "standalone", "name": "apple2gs.rom", "note": "Required for ROM01 model", "path": "AppleIIgs/apple2gs.rom", "required": true, "size": 131072, "source_ref": "Machines/Utility/ROMCatalogue.cpp:380-387"}, {"crc32": "de7ddf29", "description": "Apple IIgs ROM03", "mode": "standalone", "name": "apple2gs.rom2", "note": "Required for ROM03 model (default)", "path": "AppleIIgs/apple2gs.rom2", "required": true, "size": 262144, "source_ref": "Machines/Utility/ROMCatalogue.cpp:388-395"}, {"crc32": "91e53cd8", "description": "Apple IIgs character ROM", "mode": "standalone", "name": "apple2gs.chr", "path": "AppleIIgs/apple2gs.chr", "required": true, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:396-403"}, {"crc32": "e1c11fb0", "description": "Apple IIgs ROM03 ADB microcontroller ROM", "mode": "standalone", "name": "341s0632-2", "path": "AppleIIgs/341s0632-2", "required": true, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:404-411"}, {"crc32": "1a586c64", "description": "UK TOS 1.00 ROM", "mode": "standalone", "name": "tos100.img", "path": "AtariST/tos100.img", "required": true, "size": 196608, "source_ref": "Machines/Utility/ROMCatalogue.cpp:416-423"}, {"crc32": "3aa93ef3", "description": "ColecoVision BIOS", "mode": "standalone", "name": "coleco.rom", "path": "ColecoVision/coleco.rom", "required": true, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:496-503"}, {"crc32": "718d42b1", "description": "Commodore 1540 floppy drive ROM", "mode": "standalone", "name": "1540.bin", "note": "Conditional: needed when VIC-20 has 1540 drive", "path": "Commodore1540/1540.bin", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:508-515"}, {"crc32": "fb760019", "description": "Commodore 1541 floppy drive ROM", "mode": "standalone", "name": "1541.bin", "note": "Conditional: needed when Plus/4 has 1541 drive", "path": "Commodore1540/1541.bin", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:516-523"}, {"crc32": "ce7144f6", "description": "Disk II 16-sector boot ROM", "mode": "standalone", "name": "boot-16.rom", "note": "Conditional: needed for 16-sector disk controller", "path": "DiskII/boot-16.rom", "required": false, "size": 256, "source_ref": "Machines/Utility/ROMCatalogue.cpp:528-535"}, {"crc32": "9796a238", "description": "Disk II 16-sector state machine ROM", "mode": "standalone", "name": "state-machine-16.rom", "note": "Conditional: needed for disk controller. Also used by Oric Pravetz.", "path": "DiskII/state-machine-16.rom", "required": false, "size": 256, "source_ref": "Machines/Utility/ROMCatalogue.cpp:536-543"}, {"crc32": "d34eb2ff", "description": "Disk II 13-sector boot ROM", "mode": "standalone", "name": "boot-13.rom", "note": "Conditional: needed for 13-sector disk controller", "path": "DiskII/boot-13.rom", "required": false, "size": 256, "source_ref": "Machines/Utility/ROMCatalogue.cpp:544-551"}, {"crc32": "62e22620", "description": "Disk II 13-sector state machine ROM", "mode": "standalone", "name": "state-machine-13.rom", "note": "Conditional: needed for 13-sector disk controller", "path": "DiskII/state-machine-13.rom", "required": false, "size": 256, "source_ref": "Machines/Utility/ROMCatalogue.cpp:552-559"}, {"aliases": ["Exos (198x)(Enterprise).bin"], "crc32": "30b26387", "description": "Enterprise EXOS ROM v1.0", "mode": "standalone", "name": "exos10.bin", "note": "One EXOS version required. Selected by target or any available.", "path": "Enterprise/exos10.bin", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:600-607"}, {"aliases": ["Expandible OS v2.0 (1984)(Intelligent Software).bin"], "crc32": "d421795f", "description": "Enterprise EXOS ROM v2.0", "mode": "standalone", "name": "exos20.bin", "note": "Alternative EXOS version", "path": "Enterprise/exos20.bin", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:611-618"}, {"aliases": ["Expandible OS v2.1 (1985)(Intelligent Software).bin"], "crc32": "982a3b44", "description": "Enterprise EXOS ROM v2.1", "mode": "standalone", "name": "exos21.bin", "note": "Alternative EXOS version", "path": "Enterprise/exos21.bin", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:622-629"}, {"aliases": ["Expandible OS v2.3 (1987)(Intelligent Software).bin"], "crc32": "24838410", "description": "Enterprise EXOS ROM v2.3", "mode": "standalone", "name": "exos23.bin", "note": "Alternative EXOS version", "path": "Enterprise/exos23.bin", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:633-640"}, {"crc32": "d62e4fb7", "description": "Enterprise BASIC ROM v1.0", "mode": "standalone", "name": "basic10.bin", "note": "One BASIC version required. v1.0 single-file version.", "path": "Enterprise/basic10.bin", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:645-652"}, {"crc32": "37bf48e1", "description": "Enterprise BASIC ROM v1.0, Part 1", "mode": "standalone", "name": "BASIC 1.0 - EPROM 1-2 (198x)(Enterprise).bin", "note": "Alternative: both parts needed together as substitute for basic10.bin", "path": "Enterprise/BASIC 1.0 - EPROM 1-2 (198x)(Enterprise).bin", "required": false, "size": 8193, "source_ref": "Machines/Utility/ROMCatalogue.cpp:653-660"}, {"crc32": "c5298c79", "description": "Enterprise BASIC ROM v1.0, Part 2", "mode": "standalone", "name": "BASIC 1.0 - EPROM 2-2 (198x)(Enterprise).bin", "note": "Alternative: both parts needed together as substitute for basic10.bin", "path": "Enterprise/BASIC 1.0 - EPROM 2-2 (198x)(Enterprise).bin", "required": false, "size": 8193, "source_ref": "Machines/Utility/ROMCatalogue.cpp:661-668"}, {"crc32": "683cf455", "description": "Enterprise BASIC ROM v1.1", "mode": "standalone", "name": "basic11.bin", "note": "Alternative BASIC version", "path": "Enterprise/basic11.bin", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:669-676"}, {"crc32": "c96b7602", "description": "Enterprise BASIC ROM v1.1, with trailing byte", "mode": "standalone", "name": "BASIC 1.1 - EPROM 1.1 (198x)(Enterprise).bin", "note": "Alternative format of BASIC v1.1 with trailing byte", "path": "Enterprise/BASIC 1.1 - EPROM 1.1 (198x)(Enterprise).bin", "required": false, "size": 16385, "source_ref": "Machines/Utility/ROMCatalogue.cpp:677-684"}, {"aliases": ["BASIC Interpreter v2.1 (1985)(Intelligent Software).bin", "BASIC Interpreter v2.1 (1985)(Intelligent Software)[a].bin"], "crc32": "55f96251", "description": "Enterprise BASIC ROM v2.1", "mode": "standalone", "name": "basic21.bin", "note": "Alternative BASIC version", "path": "Enterprise/basic21.bin", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:685-693"}, {"aliases": ["EPDOS v1.7 (19xx)(Haluska, Laszlo).bin"], "crc32": "201319eb", "description": "Enterprise EPDOS ROM", "mode": "standalone", "name": "epdos.bin", "note": "Conditional: needed for EPDOS disk interface", "path": "Enterprise/epdos.bin", "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:698-705"}, {"aliases": ["EX-DOS EPROM (198x)(Enterprise).bin"], "crc32": "e6daa0e9", "description": "Enterprise EXDOS ROM", "mode": "standalone", "name": "exdos.bin", "note": "Conditional: needed when DOS is set to EXDOS", "path": "Enterprise/exdos.bin", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:709-716"}, {"crc32": "6d0c8a28", "description": "Macintosh 128k ROM", "mode": "standalone", "name": "mac128k.rom", "note": "Required for Macintosh 128k model", "path": "Macintosh/mac128k.rom", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:724-731"}, {"crc32": "cf759e0d", "description": "Macintosh 512k ROM", "mode": "standalone", "name": "mac512k.rom", "note": "Required for Macintosh 512k model", "path": "Macintosh/mac512k.rom", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:732-739"}, {"crc32": "4fa5b399", "description": "Macintosh Plus ROM", "mode": "standalone", "name": "macplus.rom", "note": "Required for Macintosh 512ke and Plus models", "path": "Macintosh/macplus.rom", "required": true, "size": 131072, "source_ref": "Machines/Utility/ROMCatalogue.cpp:740-751"}, {"crc32": "0072ed54", "description": "European/US Master System BIOS", "mode": "standalone", "name": "bios.sms", "note": "Optional. Boots cartridge directly if absent.", "path": "MasterSystem/bios.sms", "region": ["north-america", "europe"], "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:764-771"}, {"crc32": "48d44a13", "description": "Japanese Master System BIOS", "mode": "standalone", "name": "japanese-bios.sms", "note": "Optional. Used for Japan region. Boots without if absent.", "path": "MasterSystem/japanese-bios.sms", "region": ["japan"], "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:756-763"}, {"aliases": ["MSX.ROM"], "crc32": "94ee12f3", "description": "Generic MSX BIOS", "mode": "standalone", "name": "msx.rom", "note": "Required for MSX1. Region bytes patched in memory if regional BIOS absent.", "path": "MSX/MSX.ROM", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:777-784"}, {"crc32": "ee229390", "description": "Japanese MSX BIOS", "mode": "standalone", "name": "msx-japanese.rom", "note": "Alternative to msx.rom for Japanese region", "path": "MSX/msx-japanese.rom", "region": ["japan"], "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:785-792"}, {"description": "American MSX BIOS", "mode": "standalone", "name": "msx-american.rom", "note": "Alternative to msx.rom for American region", "path": "MSX/msx-american.rom", "region": ["north-america"], "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:793-800"}, {"description": "European MSX BIOS", "mode": "standalone", "name": "msx-european.rom", "note": "Alternative to msx.rom for European region", "path": "MSX/msx-european.rom", "region": ["europe"], "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:801-808"}, {"crc32": "721f61df", "description": "MSX-DOS ROM", "mode": "standalone", "name": "disk.rom", "note": "Conditional: needed for disk drive support", "path": "MSX/disk.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:809-816"}, {"aliases": ["MSX2.ROM"], "crc32": "6cdaf3a5", "description": "Generic MSX2 BIOS", "mode": "standalone", "name": "msx2.rom", "note": "Required for MSX2", "path": "MSX/MSX2.ROM", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:818-825"}, {"aliases": ["MSX2EXT.ROM"], "crc32": "66237ecf", "description": "MSX2 extension ROM", "mode": "standalone", "name": "msx2ext.rom", "note": "Required for MSX2", "path": "MSX/MSX2EXT.ROM", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:826-833"}, {"crc32": "0e84505d", "description": "MSX-MUSIC / FM-PAC ROM", "mode": "standalone", "name": "fmpac.rom", "note": "Conditional: needed for MSX-Music support", "path": "MSX/fmpac.rom", "required": false, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:834-841"}, {"crc32": "f18710b4", "description": "Oric BASIC 1.0", "mode": "standalone", "name": "basic10.rom", "note": "Required for Oric-1 model", "path": "Oric/basic10.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:870-877"}, {"crc32": "c3a92bef", "description": "Oric BASIC 1.1", "mode": "standalone", "name": "basic11.rom", "note": "Required for Oric Atmos model", "path": "Oric/basic11.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:878-885"}, {"crc32": "58079502", "description": "Pravetz BASIC", "mode": "standalone", "name": "pravetz.rom", "note": "Required for Pravetz 8D model", "path": "Oric/pravetz.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:886-893"}, {"crc32": "d50fca65", "description": "Oric colour ROM (128-byte version)", "mode": "standalone", "name": "colour.rom", "note": "Optional. Enables colour video output.", "path": "Oric/colour.rom", "required": false, "size": 128, "source_ref": "Machines/Utility/ROMCatalogue.cpp:846-853"}, {"crc32": "1ab9b572", "description": "Oric colour ROM (256-byte version)", "mode": "standalone", "name": "ORIC.PAL-PROM-TBP24S10-1ab9b572.bin", "note": "Optional. Alternative colour ROM.", "path": "Oric/ORIC.PAL-PROM-TBP24S10-1ab9b572.bin", "required": false, "size": 256, "source_ref": "Machines/Utility/ROMCatalogue.cpp:854-861"}, {"crc32": "1576a69b", "description": "Pravetz 8D colour ROM", "mode": "standalone", "name": "PRAVETZ-8D.PAL-PROM-82S129-1576a69b.bin", "note": "Optional. Colour ROM for Pravetz model.", "path": "Oric/PRAVETZ-8D.PAL-PROM-82S129-1576a69b.bin", "required": false, "size": 256, "source_ref": "Machines/Utility/ROMCatalogue.cpp:862-869"}, {"crc32": "61952e34", "description": "Oric Byte Drive 500 ROM", "mode": "standalone", "name": "bd500.rom", "note": "Conditional: needed for Byte Drive 500 disk interface", "path": "Oric/bd500.rom", "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:894-901"}, {"crc32": "37220e89", "description": "Oric Jasmin ROM", "mode": "standalone", "name": "jasmin.rom", "note": "Conditional: needed for Jasmin disk interface", "path": "Oric/jasmin.rom", "required": false, "size": 2048, "source_ref": "Machines/Utility/ROMCatalogue.cpp:902-909"}, {"crc32": "a9664a9c", "description": "Oric Microdisc ROM", "mode": "standalone", "name": "microdisc.rom", "note": "Conditional: needed for Microdisc disk interface", "path": "Oric/microdisc.rom", "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:910-917"}, {"crc32": "49a74c06", "description": "8DOS boot ROM", "mode": "standalone", "name": "8dos.rom", "note": "Conditional: needed for Pravetz 8-DOS disk interface", "path": "Oric/8dos.rom", "required": false, "size": 512, "source_ref": "Machines/Utility/ROMCatalogue.cpp:918-925"}, {"crc32": "9576944c", "description": "8088 GLaBIOS 0.2.5", "mode": "standalone", "name": "GLABIOS_0.2.5_8T.ROM", "note": "Required for XT-class emulation", "path": "PCCompatible/GLABIOS_0.2.5_8T.ROM", "required": true, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:930-937"}, {"crc32": "371ea3f1", "description": "AT GLaTICK 0.8.5 RTC option ROM", "mode": "standalone", "name": "GLaTICK_0.8.5_AT.ROM", "note": "XT-class RTC option ROM", "path": "PCCompatible/GLaTICK_0.8.5_AT.ROM", "required": false, "size": 2048, "source_ref": "Machines/Utility/ROMCatalogue.cpp:938-945"}, {"crc32": "8d0d318a", "description": "Phoenix 80286 BIOS 3.05", "mode": "standalone", "name": "Phoenix 80286 ROM BIOS Version 3.05.bin", "note": "Required for AT-class emulation (alternative to IBM AT BIOS)", "path": "PCCompatible/Phoenix 80286 ROM BIOS Version 3.05.bin", "required": true, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:946-953"}, {"crc32": "674426be", "description": "IBM PC AT BIOS v3", "mode": "standalone", "name": "at-bios.bin", "note": "AT-class: single-file IBM AT BIOS (alternative to split U27/U47)", "path": "PCCompatible/at-bios.bin", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:954-961"}, {"crc32": "4995be7a", "description": "IBM PC AT BIOS, Nov 1985, U27 chip", "mode": "standalone", "name": "BIOS_5170_15NOV85_U27_61X9266_27256.BIN", "note": "AT-class: split BIOS, used with U47 chip", "path": "PCCompatible/BIOS_5170_15NOV85_U27_61X9266_27256.BIN", "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:962-969"}, {"crc32": "c32713e4", "description": "IBM PC AT BIOS, Nov 1985, U47 chip", "mode": "standalone", "name": "BIOS_5170_15NOV85_U47_61X9265_27256.BIN", "note": "AT-class: split BIOS, used with U27 chip", "path": "PCCompatible/BIOS_5170_15NOV85_U47_61X9265_27256.BIN", "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:970-977"}, {"crc32": "a362ffe6", "description": "IBM CGA font", "mode": "standalone", "name": "CGA.F08", "note": "Required for CGA video adapter", "path": "PCCompatible/CGA.F08", "required": true, "size": 2048, "source_ref": "Machines/Utility/ROMCatalogue.cpp:978-985"}, {"crc32": "7754882a", "description": "IBM MDA font", "mode": "standalone", "name": "EUMDA9.F14", "note": "Required for MDA video adapter", "path": "PCCompatible/EUMDA9.F14", "required": true, "size": 3584, "source_ref": "Machines/Utility/ROMCatalogue.cpp:986-993"}, {"crc32": "2f2fbc40", "description": "IBM EGA BIOS", "mode": "standalone", "name": "ibm_6277356_ega_card_u44_27128.bin", "note": "Needed for EGA video adapter", "path": "PCCompatible/ibm_6277356_ega_card_u44_27128.bin", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:994-1001"}, {"crc32": "03b3f90d", "description": "IBM VGA BIOS", "mode": "standalone", "name": "ibm_vga.bin", "note": "Needed for VGA video adapter", "path": "PCCompatible/ibm_vga.bin", "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1002-1009"}, {"crc32": "ebacb791", "description": "IBM ROM BASIC 1.10", "mode": "standalone", "name": "ibm-basic-1.10.rom", "note": "Required for AT-class with IBM BIOS (not needed with Phoenix)", "path": "PCCompatible/ibm-basic-1.10.rom", "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1010-1017"}, {"crc32": "74eaae87", "description": "C16+4 BASIC ROM", "mode": "standalone", "name": "basic.318006-01.bin", "path": "Plus4/basic.318006-01.bin", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1046-1053"}, {"crc32": "71c07bd4", "description": "C16+4 kernel, PAL-G revision 5", "mode": "standalone", "name": "kernal.318004-05.bin", "note": "Default kernel version requested by machine code", "path": "Plus4/kernal.318004-05.bin", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1038-1045"}, {"crc32": "77bab934", "description": "C16+4 kernel, PAL-G revision 3", "mode": "standalone", "name": "kernal.318004-03.bin", "note": "Alternative kernel version (in catalogue but not default)", "path": "Plus4/kernal.318004-03.bin", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1022-1029"}, {"crc32": "be54ed79", "description": "C16+4 kernel, PAL-G revision 4", "mode": "standalone", "name": "kernal.318004-04.bin", "note": "Alternative kernel version (in catalogue but not default)", "path": "Plus4/kernal.318004-04.bin", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1030-1037"}, {"crc32": "f62d2f3a", "description": "Thomson MO5 ROM, version 1", "mode": "standalone", "name": "mo5-v1.0.rom", "path": "Thomson/mo5-v1.0.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1157-1164"}, {"crc32": "237c60bf", "description": "Thomson MO5 ROM, version 1.1", "mode": "standalone", "name": "mo5-v1.1.rom", "path": "Thomson/mo5-v1.1.rom", "required": true, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1165-1172"}, {"crc32": "45e859c6", "description": "Thomson MO6 ROM, version 1", "mode": "standalone", "name": "mo6-v1.rom", "path": "Thomson/mo6-v1.rom", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1173-1180"}, {"crc32": "b4430a3b", "description": "Thomson MO6 ROM, version 2", "mode": "standalone", "name": "mo6-v2.rom", "path": "Thomson/mo6-v2.rom", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1181-1188"}, {"crc32": "7a012322", "description": "Thomson MO6 ROM, version 3", "mode": "standalone", "name": "mo6-v3.rom", "path": "Thomson/mo6-v3.rom", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1189-1196"}, {"crc32": "fc173504", "description": "Olivetti Prodest PC128 ROM", "mode": "standalone", "name": "pc128.rom", "path": "Thomson/pc128.rom", "required": true, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1197-1204"}, {"crc32": "5114c0a5", "description": "Thomson CD90-640 floppy controller ROM", "mode": "standalone", "name": "cd90-640.rom", "note": "Requested on top of the machine ROM when a disk is attached.", "path": "Thomson/cd90-640.rom", "required": false, "size": 1984, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1206-1213"}, {"crc32": "db4c43c1", "description": "VIC-20 BASIC ROM", "mode": "standalone", "name": "basic.bin", "path": "Vic20/basic.bin", "required": true, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1218-1225"}, {"crc32": "83e032a6", "description": "English-language VIC-20 character ROM", "mode": "standalone", "name": "characters-english.bin", "note": "Required for English region", "path": "Vic20/characters-english.bin", "region": ["north-america", "europe"], "required": true, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1226-1233"}, {"crc32": "4be07cb4", "description": "English-language PAL VIC-20 kernel ROM", "mode": "standalone", "name": "kernel-pal.bin", "note": "Required for English PAL region", "path": "Vic20/kernel-pal.bin", "region": ["europe"], "required": true, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1234-1241"}, {"crc32": "e5e7c174", "description": "English-language NTSC VIC-20 kernel ROM", "mode": "standalone", "name": "kernel-ntsc.bin", "note": "Required for English NTSC region", "path": "Vic20/kernel-ntsc.bin", "region": ["north-america"], "required": true, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1242-1249"}, {"crc32": "7fc11454", "description": "Danish VIC-20 character ROM", "mode": "standalone", "name": "characters-danish.bin", "note": "Required for Danish region", "path": "Vic20/characters-danish.bin", "region": ["denmark"], "required": false, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1250-1257"}, {"crc32": "02adaf16", "description": "Danish VIC-20 kernel ROM", "mode": "standalone", "name": "kernel-danish.bin", "note": "Required for Danish region", "path": "Vic20/kernel-danish.bin", "region": ["denmark"], "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1258-1265"}, {"crc32": "fcfd8a4b", "description": "Japanese VIC-20 character ROM", "mode": "standalone", "name": "characters-japanese.bin", "note": "Required for Japanese region", "path": "Vic20/characters-japanese.bin", "region": ["japan"], "required": false, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1266-1273"}, {"crc32": "336900d7", "description": "Japanese VIC-20 kernel ROM", "mode": "standalone", "name": "kernel-japanese.bin", "note": "Required for Japanese region", "path": "Vic20/kernel-japanese.bin", "region": ["japan"], "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1274-1281"}, {"crc32": "d808551d", "description": "Swedish VIC-20 character ROM", "mode": "standalone", "name": "characters-swedish.bin", "note": "Required for Swedish region", "path": "Vic20/characters-swedish.bin", "region": ["sweden"], "required": false, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1282-1289"}, {"crc32": "b2a60662", "description": "Swedish VIC-20 kernel ROM", "mode": "standalone", "name": "kernel-swedish.bin", "note": "Required for Swedish region", "path": "Vic20/kernel-swedish.bin", "region": ["sweden"], "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1290-1297"}, {"crc32": "ddee531f", "description": "ZX Spectrum 48K ROM", "mode": "standalone", "name": "48.rom", "note": "Built into binary. Required for 16K/48K model.", "path": "ZXSpectrum/48.rom", "required": false, "size": 16384, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1302-1309, Machines/Utility/ROMLibrary.cpp:14539"}, {"crc32": "2cbe8995", "description": "ZX Spectrum 128K ROM", "mode": "standalone", "name": "128.rom", "note": "Built into binary. Required for 128K model.", "path": "ZXSpectrum/128.rom", "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1310-1317, Machines/Utility/ROMLibrary.cpp:14540"}, {"crc32": "e7a517dc", "description": "ZX Spectrum +2 ROM", "mode": "standalone", "name": "plus2.rom", "note": "Built into binary. Required for +2 model.", "path": "ZXSpectrum/plus2.rom", "required": false, "size": 32768, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1318-1325, Machines/Utility/ROMLibrary.cpp:14541"}, {"crc32": "96e3c17a", "description": "ZX Spectrum +2a/+3 ROM", "mode": "standalone", "name": "plus3.rom", "note": "Built into binary. Required for +2a/+3 model.", "path": "ZXSpectrum/plus3.rom", "required": false, "size": 65536, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1326-1336, Machines/Utility/ROMLibrary.cpp:14542"}, {"crc32": "4c7fc597", "description": "ZX80 BASIC ROM", "mode": "standalone", "name": "zx80.rom", "note": "Built into binary. Required for ZX80 model.", "path": "ZX8081/zx80.rom", "required": false, "size": 4096, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1341-1348, Machines/Utility/ROMLibrary.cpp:14544"}, {"crc32": "4b1dd6eb", "description": "ZX81 BASIC ROM", "mode": "standalone", "name": "zx81.rom", "note": "Built into binary. Required for ZX81 model.", "path": "ZX8081/zx81.rom", "required": false, "size": 8192, "source_ref": "Machines/Utility/ROMCatalogue.cpp:1349-1356, Machines/Utility/ROMLibrary.cpp:14545"}], "notes": "Multi-system cycle-accurate emulator by Tom Harte. Used by Batocera and\nRetroBat as a standalone emulator. Invoked as clksignal with --rompath\npointing to the BIOS directory.\n\nROM resolution: {rompath}/{machine_name}/{filename}. Machine names are\nfixed strings per system (e.g. \"Enterprise\", \"Oric\", \"AmstradCPC\").\nBatocera passes --rompath=/userdata/bios/.\n\nAll ROMs are loaded via a centralized ROM::Request/ROMFetcher system.\nNo hash validation at runtime. CRC32s in the ROM catalogue are for host\nplatform identification only. Sizes are enforced via truncation/padding.\n\nBuilt-in ROMs (compiled into binary, no external file needed):\nAmstrad CPC (all 7), ZX Spectrum (all 4), ZX80 + ZX81. These systems\nfunction without external ROM files. User-supplied files override the\nbuilt-in copies.\n\nAtari 2600 requires no system ROM (cartridge-only).\n", "profiled_date": "2026-03-26", "source": "https://github.com/TomHarte/CLK", "source_commit": "096de57445920ecf16cf066979422e34aceb843a", "systems": ["amstrad-cpc", "acorn-archimedes", "acorn-electron", "acorn-bbc-micro", "amiga", "apple-ii", "apple-iigs", "apple-macintosh", "atari-2600", "atari-st", "colecovision", "commodore-plus4", "commodore-vic20", "enterprise-64-128", "microsoft-msx", "microsoft-msx2", "oric", "pc-compatible", "sega-mastersystem", "sinclair-zx80-81", "sinclair-zx-spectrum", "thomson-mo5", "thomson-mo6"], "type": "standalone", "upstream": "https://github.com/TomHarte/CLK"}


id: clownmdemu
name: ClownMDEmu
type: standalone + libretro
classification: official_port
source: https://github.com/Clownacy/clownmdemu-libretro
upstream: https://github.com/Clownacy/clownmdemu
source_commit: 3b278c900c278678763d96087f1d343a6aed6e58
profile_json:
{"analysis": {"megacd_bios": {"bios_hle": true, "boot_rom_location": "source/mega-cd-boot-rom.c (16384 uint16 entries = 32 KB)", "boot_rom_source": "https://github.com/Clownacy/clownmdemu-mcd-boot", "builtin_boot_rom": true, "bus_mapping": "0x400000-0x41FFFF (address & 0x20000 == 0)", "external_required": false, "hle_source_ref": "bus-sub-m68k.c:64 (MegaCDBIOSCall)", "source_ref": "bus-main-m68k.c:19-21, bus-main-m68k.c:501-513"}, "tmss": {"supported": false}}, "core_classification": "official_port", "core_version": "Git", "cores": ["clownmdemu"], "display_name": "Sega - MD/CD (ClownMDEmu)", "emulator": "ClownMDEmu", "files": [], "notes": "Mega Drive/Genesis and Mega CD emulator by Clownacy. Supports cartridge\n(bin/md/gen) and CD (cue/iso/chd) formats, plus a subsystem for\ncartridge+CD combo (Mega CD Mode 1). Mega CD boot ROM is an open-source\nreplacement compiled into the binary (mega-cd-boot-rom.c, 32 KB). Sub-CPU\nBIOS calls handled via HLE. TMSS not implemented. No external files needed.\n", "profiled_date": "2026-03-23", "source": "https://github.com/Clownacy/clownmdemu-libretro", "source_commit": "3b278c900c278678763d96087f1d343a6aed6e58", "systems": ["sega-megadrive", "sega-megacd"], "type": "standalone + libretro", "upstream": "https://github.com/Clownacy/clownmdemu"}


id: colem
name: ColEm
type: standalone
classification: other
source: https://fms.komkon.org/ColEm/
upstream: https://fms.komkon.org/ColEm/
profile_json:
{"core_classification": "other", "core_version": "5.6", "cores": ["colem"], "display_name": "Coleco - ColecoVision / Adam (ColEm)", "emulator": "ColEm", "files": [{"description": "OS7 ColecoVision BIOS, read into the 8kB ROM_OS7 window", "min_size": 8192, "name": "COLECO.ROM", "required": true, "source_ref": "ColEm/Coleco.c:266-273, 306; ColEm/Coleco.h:78-79", "system": "coleco-colecovision", "validation": ["size"]}, {"description": "Adam SmartWriter ROM, read into the 32kB ROM_WRITER window", "min_size": 32768, "name": "WRITER.ROM", "required": true, "source_ref": "ColEm/Coleco.c:275-285, 300, 749; ColEm/Coleco.h:75", "system": "coleco-adam", "validation": ["size"]}, {"description": "Adam EOS, read into the 8kB ROM_EOS window", "min_size": 8192, "name": "EOS.ROM", "required": true, "source_ref": "ColEm/Coleco.c:287-297, 300, 749; ColEm/Coleco.h:83", "system": "coleco-adam", "validation": ["size"]}], "mode": "standalone", "notes": "ColecoVision and Coleco Adam emulator by Marat Fayzullin, published as\nversioned archives on a personal site rather than a repository. The 5.6\nsource archive carries the portable core (ColEm/, EMULib/, Z80/) and the\nUnix port; Windows and Android builds are binary-only.\n\nThree system ROMs are read by StartColeco (Coleco.c:266-300) before the\nhardware reset and before the cartridge. Lookup runs in the directory\nnamed by -home, which main() defaults to the directory holding the\nexecutable (ColEm.c:66-72), so the ROMs sit next to the binary the way the\nofficial archives ship them. Each name is passed to fopen as written, in\nuppercase.\n\nCOLECO.ROM is fatal. A failed open or a file yielding fewer than 8192\nbytes sets the error string, and StartColeco returns before ResetColeco\nand RunZ80 (Coleco.c:306). It is loaded in both modes and maps at 0000h\non the ColecoVision and under the Super Game Module (Coleco.c:651).\nNothing in the tree substitutes for it.\n\nWRITER.ROM and EOS.ROM gate Adam emulation. Each has to yield its full\nread to advance the AdamROMs counter, EOS.ROM is attempted only once\nWRITER.ROM succeeded, and Coleco.c:300 collapses the counter unless both\nlanded. ResetColeco then clears CV_ADAM when the counter is zero\n(Coleco.c:749), so -adam falls back to ColecoVision, and inserting the\nfirst disk or tape into drive A: is refused (Coleco.c:1454, 1460, 1496,\n1502). SmartWriter maps at 0000h on boot and EOS at 4000h once port 20h\nenables it (Coleco.c:628-646).\n\nNo hash or magic number is checked on the three ROMs; the read length is\nthe only gate. CRC32 is computed for cartridges alone, feeding the\nGuessROM hardware heuristics (Coleco.c:482-486).\n\nCartridges, .DSK/.FDI disks and .DDP tapes are user content. Beside a\nloaded cartridge, FindState (Coleco.c:1529-1548) probes <name>.sav,\n<name>.sta, <name>.cht and <name>.pal, and StartColeco tries the palette\nfile named by -palette, defaulting to ColEm.pal (Coleco.c:75, 327-332).\nThose are written by the emulator or hand-authored, and ChangePalette\nsupplies one of three built-in palettes when no file is found\n(Coleco.c:324, 543). Console fonts are compiled-in arrays (Console.c:46,\n130), and LoadPNG (Image.c:1230) sits behind an undefined LIBPNG guard\nwith no caller.\n", "profiled_date": "2026-08-08", "source": "https://fms.komkon.org/ColEm/", "systems": ["coleco-colecovision", "coleco-adam"], "type": "standalone", "upstream": "https://fms.komkon.org/ColEm/"}


id: cpcemu
name: CPCemu
type: standalone
classification: other
source: https://www.cpc-emu.org/
upstream: https://www.cpc-emu.org/
profile_json:
{"core_classification": "other", "core_version": "3.0.2", "cores": ["cpcemu"], "display_name": "Amstrad - CPC (CPCemu)", "emulator": "CPCemu", "files": [{"md5": "b96280dc6c95a48857b4b8eb931533ae", "min_size": 32768, "name": "CPC6128.ROM", "note": "CPC 6128 firmware and BASIC. Loaded for the shipped CPC_TYPE 2 and opened twice, once per block. Foreground ROM header 80 01 02 00.", "path": "ROM/CPC6128.ROM", "required": true, "sha1": "5977adbad3f7c1e0e082cd02fe76a700d9860c30", "source_ref": "CPCemu 2.5/3.0.2: ROM/CPC6128.ROM, cpcemu0.cfg ROM_BLOCK 255 and 0 for CPC_TYPE 2, 4 and 5", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "a993f85b88ac4350cf4d41554e87fe4f", "min_size": 32768, "name": "CPC464.ROM", "note": "CPC 464 firmware and BASIC, selected by CPC_TYPE 0 or the -t 0 command line. Foreground ROM header 80 01 00 00.", "path": "ROM/CPC464.ROM", "required": false, "sha1": "56d39c463da60968d93e58b4ba0e675829412a20", "source_ref": "CPCemu 2.5/3.0.2: ROM/CPC464.ROM, cpcemu0.cfg ROM_BLOCK 255 and 0 for CPC_TYPE 0 and 3", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "5a384a2310f472c7857888371c00ed66", "min_size": 32768, "name": "CPC664.ROM", "note": "CPC 664 firmware and BASIC, selected by CPC_TYPE 1 or the -t 1 command line. Foreground ROM header 80 01 01 00.", "path": "ROM/CPC664.ROM", "required": false, "sha1": "073a7665527b5bd8a148747a3947dbd3328682c8", "source_ref": "CPCemu 2.5/3.0.2: ROM/CPC664.ROM, cpcemu0.cfg ROM_BLOCK 255 and 0 for CPC_TYPE 1", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "aa2fb251814bd971b2b9874ab0971b3f", "name": "CPCADOS.ROM", "note": "AMSDOS disc ROM, the 8 KB image zero-padded to 16 KB. Declared for every machine by the shipped configuration, so startup ends on status 3 without it; dropping the ROM_BLOCK line instead boots with \"ROM: No AMSDOS ROM found.\" and no disc support. Length is not checked, an 8 KB file installs the AMSDOS speedup all the same.", "path": "ROM/CPCADOS.ROM", "required": true, "sha1": "0e247123b9d3204784eeadb4629b9d35b9dfd984", "size": 16384, "source_ref": "CPCemu 2.5/3.0.2: ROM/CPCADOS.ROM, cpcemu0.cfg ROM_BLOCK 7 for every CPC_TYPE", "system": "amstrad-cpc"}, {"md5": "28a7e368badca8299ba24a15bb4ebe9b", "name": "M4.ROM", "note": "M4 board firmware by Duke. Declared by the shipped configuration, so startup ends on status 3 without it even when M4_ENABLED is 0. Contents are checked, a zeroed file boots and reports \"M4 ROM not valid.\"", "path": "ROM/M4.ROM", "required": true, "sha1": "05f9447d307ab17eae9e2100f91c36b0c9560d4b", "size": 16384, "source_ref": "CPCemu 2.5/3.0.2: ROM/M4.ROM, cpcemu0.cfg ROM_BLOCK 6, M4_ENABLED = 1", "system": "amstrad-cpc", "validation": ["signature"]}, {"md5": "ffcbcbce32223a152753d30766ad6215", "name": "HACK.ROM", "note": "M4 hack ROM, the lower ROM behind the Shift+F1 menu. Opened at every startup, and superseded by a NMIROM.BIN on the emulated SD card. Missing prints \"Unable to load HACK.ROM\" and emulation continues.", "path": "ROM/HACK.ROM", "required": false, "sha1": "582dd1706391f6f0161ad3486ae75a04fb0f7d5b", "size": 7994, "source_ref": "CPCemu 2.5/3.0.2: ROM_PATH + /HACK.ROM, opened after M4_SD_PATH + NMIROM.BIN", "system": "amstrad-cpc"}, {"md5": "b96280dc6c95a48857b4b8eb931533ae", "min_size": 32768, "name": "CPC6128.ROM.UK", "note": "English CPC 6128 firmware, the same image as CPC6128.ROM. Ships in the National folder without being named by any path constant.", "path": "ROM/National/CPC6128.ROM.UK", "region": ["uk"], "required": false, "sha1": "5977adbad3f7c1e0e082cd02fe76a700d9860c30", "source_ref": "CPCemu 2.5/3.0.2: ROM/National/CPC6128.ROM.UK", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "5ee871d5600eb9b5a22989c295f902a5", "min_size": 32768, "name": "CPC6128.ROM.FR", "note": "French CPC 6128 firmware, configured when the French layout is picked.", "path": "ROM/National/CPC6128.ROM.FR", "region": ["france"], "required": false, "sha1": "200d59076dfef36db061d6d7d21d80021cab1237", "source_ref": "CPCemu 3.0.2: National/CPC6128.ROM.FR, keyboard layout dialog on first start", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "0246740371010333385665dfeb7cd0ec", "min_size": 32768, "name": "CPC6128.ROM.ES", "note": "Spanish CPC 6128 firmware, configured when the Spanish layout is picked.", "path": "ROM/National/CPC6128.ROM.ES", "region": ["spain"], "required": false, "sha1": "1acd01c2c03424a78b32c9440f4d890fb1104815", "source_ref": "CPCemu 3.0.2: National/CPC6128.ROM.ES, keyboard layout dialog on first start", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "ca1635fd992e2aa7a776b30da13467e5", "min_size": 32768, "name": "CPC6128.ROM.DK", "note": "Danish CPC 6128 firmware, configured when the Danish layout is picked.", "path": "ROM/National/CPC6128.ROM.DK", "region": ["denmark"], "required": false, "sha1": "a9e7ee6355730f319a37c95ca0a714212b88c3b1", "source_ref": "CPCemu 3.0.2: National/CPC6128.ROM.DK, keyboard layout dialog on first start", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "8ca256a832e83c875f5432b3dee8a36f", "min_size": 32768, "name": "CPC6128.ROM.SE", "note": "Swedish CPC 6128 firmware. Ships in the National folder without being named by any path constant, the layout dialog offering English, French, Spanish and Danish only.", "path": "ROM/National/CPC6128.ROM.SE", "region": ["sweden"], "required": false, "sha1": "6765a91a42fed68a807325bf62a728e5ac5d622f", "source_ref": "CPCemu 2.5/3.0.2: ROM/National/CPC6128.ROM.SE", "system": "amstrad-cpc", "validation": ["size", "signature"]}, {"md5": "1d91a9ef315b302d335cd7e04e8d8d86", "name": "XDDOS210.ROM", "note": "X-DDOS 2.10 by Dobbertin, the disc operating system of the HD20 hard disk. Required in a ROM slot to use DOBBERTIN_HD_ENABLED = 1. Added in 3.0, not shipped with 2.5.", "path": "ROM/XDDOS210.ROM", "required": false, "sha1": "2f1bd4d6e2d2e62818b01e6e7a26488362a7a8ee", "size": 16384, "source_ref": "CPCemu 3.0.2: ROM/XDDOS210.ROM, cpcemu0.cfg commented ROM_BLOCK 7, help topic DOBBERTIN HD20 ENABLED", "system": "amstrad-cpc"}, {"md5": "e9c4288eab8885a1e6ae7504a4736115", "name": "COPYMATE.ROM", "note": "Copy utility ROM, carrying a 128-byte AMSDOS file header ahead of the 16 KB image. Shipped as the example expansion ROM of the configuration file and loaded once the line is uncommented.", "path": "ROM/COPYMATE.ROM", "required": false, "sha1": "15d52de01320d9b954e03b4c2e71ec75fd301bbb", "size": 16512, "source_ref": "CPCemu 2.5/3.0.2: ROM/COPYMATE.ROM, cpcemu0.cfg commented ROM_BLOCK 4", "system": "amstrad-cpc"}, {"md5": "4c9f014e91d407cc6509fad0095ab909", "name": "multface.rom", "note": "Romantic Robot Multiface Two ROM. Ships in the ROM folder for the user to map into a slot, no path constant naming it.", "path": "ROM/multface.rom", "required": false, "sha1": "1431ec628d38f000715545dd2186b684c5fe5a6f", "size": 8192, "source_ref": "CPCemu 2.5/3.0.2: ROM/multface.rom, ROM_BLOCK filename or ROM Manager entry", "system": "amstrad-cpc"}], "mode": "standalone", "notes": "Amstrad CPC emulator by Marco Vieth and Rainer Loritz, closed-source freeware\nfor Windows, macOS, Linux, Android and iOS. Machines are the CPC 464, 664 and\n6128; the firmware identifier and the message catalogue also know the 464+,\nthe 6128+ and the KC compact.\n\nTwo packages were used. The 3.0.2 Windows portable and macOS builds of\n2025-04-24 carry the same fourteen ROM files and the same data files, and\nprovide the path constants, the message catalogue and the v3.0 help file. The\n2.5 Linux x86-64 build of 2022-08-13 is still the newest Linux release, the\n3.0.2 Linux archives listed on the download page being absent from the\nserver, and provides the runtime behaviour:\nfile opens traced with strace, required and optional decided by removing,\ntruncating and patching each file and reading the emulator's own messages.\n\nROMs live in ROM_PATH, \"./ROM/\" in the shipped configuration, resolved against\nthe working directory; the macOS build reads them from the application bundle\nResources folder. Slots are filled by ROM_BLOCK lines naming a ROM number, a\nfile in ROM_PATH and a 16 KB block position inside that file:\n\n  ROM_BLOCK = 255, \"CPC6128.ROM\", 0    lower ROM\n  ROM_BLOCK = 0  , \"CPC6128.ROM\", 1    foreground ROM\n  ROM_BLOCK = 7  , \"CPCADOS.ROM\", 0    AMSDOS\n  ROM_BLOCK = 6  , \"M4.ROM\"     , 0    M4 board\n\nThe shipped cpcemu0.cfg repeats the first three for every CPC_TYPE from 0 to\n5, with CPC464.ROM for types 0 and 3, CPC664.ROM for type 1 and CPC6128.ROM\nfor types 2, 4 and 5, and adds the M4 line once for all types. A file named by\na ROM_BLOCK line that cannot be opened prints \"ROM: Cannot open file\" and ends\nthe process with status 3 before audio initialisation, whichever slot it fills\nand whether or not the matching device is enabled; deleting the line instead\nlets the emulator start.\n\nThe machine is identified from the foreground ROM, not from the lower half and\nnot from CPC_TYPE. CPCemu reads the four-byte CPC ROM header at the start of\nblock 1: byte 0 has to be 0x80, and byte 2 selects the machine, 0x00 for the\n464, 0x01 for the 664, 0x02 for the 6128. A random block 1 gives \"ROM: No\nforeground ROM found.\", an unlisted version byte gives \"ROM: Unknown ROM\nversion.\", and both end on \"CPC type not configured or ROM for CPC type not\navailable. Unable to continue.\" The modification byte is ignored, the lower\n16 KB half is never inspected, and padding past 32768 bytes is accepted, so\nthe length requirement is a lower bound: a block 1 has to exist.\n\nTypes 3, 4 and 5 need ROM images the packages do not carry. The help file\nstates they have to be supplied in CPCEMU.CFG first, and no filename for them\nis compiled into the binary, the user names the file in the ROM_BLOCK line.\nLeft on the shipped configuration those types load the 464 and 6128 files and\nreport the machine those files describe. There is no cartridge support, the\nfile types handled on the command line are dsk, sna, cfg and zip.\n\nM4 board emulation is on by default. HACK.ROM, the board's lower ROM, is\nopened at every startup whatever M4_ENABLED holds, after M4_SD_PATH +\nNMIROM.BIN has been tried, so a NMIROM.BIN placed on the emulated SD card\nreplaces it; with neither present the emulator prints \"Unable to load\nHACK.ROM\" and keeps running. M4.ROM contents are checked, a zeroed file boots\nthe CPC and reports \"M4 ROM not valid.\" The firmware updater downloads\nM4FIRM.BIN from spinpoint.org and rewrites M4.ROM and HACK.ROM in place.\n\nAlongside the ROMs the binary reads its own payload from the program\ndirectory: cpcemu.msg, the message catalogue, whose absence leaves every\nmessage unprinted; cpcemu.dat, colours and key tables; cpcemu.hlp, the online\nhelp opened on F1; cpcemu.dbf, the poke database opened from the poke menu;\nand cpcemu0.cfg, the template used when no user configuration exists.\nConfiguration is looked up first in the user profile, ~/.CPCemu/cpcemu.cfg on\nLinux, then cpcemu0.cfg in the working directory; with neither, startup stops\non \"CPCEMU: Use INSTALL first\". The disc, tape and snapshot folders and the\nM4 SD card folder hold user content.\n", "profiled_date": "2026-08-08", "source": "https://www.cpc-emu.org/", "systems": ["amstrad-cpc"], "type": "standalone", "upstream": "https://www.cpc-emu.org/"}


id: craft
name: Craft
type: libretro
classification: pure_libretro
source: https://github.com/libretro/Craft
upstream: https://github.com/fogleman/Craft
source_commit: 675c5b2fc690d2e80f6099f46407bf23827c59d4
profile_json:
{"core_classification": "pure_libretro", "core_version": "v1", "cores": ["craft"], "display_name": "Minecraft (Craft)", "emulator": "Craft", "files": [], "notes": "Libretro port of Craft, a simple Minecraft clone by Michael Fogleman. All textures, fonts, and shaders are embedded in the binary (header arrays). Upstream loads textures from external PNG files; libretro port compiles them in. Uses system directory only for craft.db/auth.db (core-generated save data). Source has zero fopen calls. .info declares no firmware.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/Craft", "source_commit": "675c5b2fc690d2e80f6099f46407bf23827c59d4", "source_ref": "libretro/libretro.c, src/main.c:2680-2698, src/main.c:3315-3345", "systems": [], "type": "libretro", "upstream": "https://github.com/fogleman/Craft"}


id: crocods
name: CrocoDS
type: libretro
classification: official_port
source: https://github.com/libretro/libretro-crocods
upstream: https://github.com/redbug26/crocods-core
source_commit: a320f6e38af49af84a63f81329a1bdb9322022b4
profile_json:
{"core_classification": "official_port", "core_version": "v1", "cores": ["crocods"], "display_name": "Amstrad - CPC (CrocoDS)", "emulator": "CrocoDS", "files": [], "notes": "CrocoDS is an Amstrad CPC 6128 emulator ported to libretro. Supports\n.dsk, .sna, and .kcr file formats.\n\nAll system ROMs are compiled directly into the core binary as C byte\narrays. No external BIOS files are required.\n\nEmbedded ROMs (crocods-core/):\n  - cpc6128.bin.c: cpc6128_bin[32768] - CPC 6128 OS (16KB) + BASIC 1.1 (16KB)\n  - romdisc.bin.c: romdisc_bin[16384] - AMSDOS disk controller ROM (16KB)\n\nROM initialization in InitMemCPC() (crocods-core/vga.c:185-200):\n  - ROMINF (lower ROM, 16KB): first half of cpc6128_bin (OS)\n  - ROMEXT[0] (upper ROM slot 0, 16KB): second half of cpc6128_bin (BASIC)\n  - ROMEXT[7] (upper ROM slot 7, 16KB): romdisc_bin (AMSDOS)\n\nCalled from HardResetCPC() (crocods-core/platform.c:1009-1020) using\nthe extern byte arrays directly. No filesystem ROM loading exists in\nthe libretro path.\n\nA Multiface ROM loader exists (crocods-core/multiface.c:51-61) that\nreads LocRomMulti via fopen(), but InitMultiface() is never called\nfrom the libretro build or platform.c. Dead code in libretro context.\n\nThe core does not request retro_system_directory or declare any\nfirmware entries in the .info file. need_fullpath is false.\n\nOnly the CPC 6128 model is emulated (no CPC 464/664 selection).\n", "platform_details": {"bios_mapping": {"note": "All ROMs are embedded. InitMemCPC() copies cpc6128_bin and romdisc_bin\ninto ROMINF and ROMEXT arrays via memcpy. No filesystem lookup occurs.\nretro_set_environment() does not request system_directory.\n", "source_ref": "crocods-core/vga.c:185-200, crocods-core/platform.c:1009-1020"}, "embedded_roms": {"note": "2 ROM sets embedded as C byte arrays:\ncpc6128_bin (32KB) - CPC 6128 OS (lower 16KB) + BASIC 1.1 (upper 16KB)\nromdisc_bin (16KB) - AMSDOS disk controller ROM, mapped to slot 7\n", "source_ref": "crocods-core/cpc6128.bin.c, crocods-core/romdisc.bin.c"}, "model_rom_map": {"note": "CPC 6128 only: OS in ROMINF, BASIC in ROMEXT[0], AMSDOS in ROMEXT[7]\nemulator_patch_ROM() applies language patches to ROMINF after loading\n", "source_ref": "crocods-core/vga.c:189-192"}}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/libretro-crocods", "source_commit": "a320f6e38af49af84a63f81329a1bdb9322022b4", "systems": ["amstrad-cpc"], "type": "libretro", "upstream": "https://github.com/redbug26/crocods-core"}


id: cruzes
name: Cruzes
type: libretro
classification: pure_libretro
source: https://github.com/libretro/libretro-samples/tree/master/tests/cruzes
source_commit: bce193bc1b8c9a3da43b2ead0158a69e28b37ed8
profile_json:
{"analysis": {"author": "Higor Euripedes", "file_loading": "none", "is_experimental": true, "license": "2-clause BSD", "need_fullpath": false, "supports_no_game": true, "system_directory_used": false}, "core_classification": "pure_libretro", "core_version": "0.1", "cores": ["cruzes"], "display_name": "Cruzes", "emulator": "Cruzes", "exclusion_note": "Game core with no external file dependencies. All assets compiled in.\n", "files": [], "notes": "Unfinished Picross puzzle game, part of the libretro-samples repository.\nNo separate upstream -- written directly for the libretro API.\n\nsupports_no_game true (cruzes.c:772), valid_extensions \"\" (cruzes.c:749).\nPuzzle grid hardcoded in retro_init (cruzes.c:706-717) via load_challenge.\nretro_load_game (cruzes.c:728-732) sets pixel format and returns true.\nNo file I/O, no RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY call.\n\nFont data (Carlito-Regular.ttf) compiled in via ttf2c (font10.h, font16.h,\nfont24.h).\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/libretro-samples/tree/master/tests/cruzes", "source_commit": "bce193bc1b8c9a3da43b2ead0158a69e28b37ed8", "systems": ["game"], "type": "libretro"}


id: cspect
name: CSpect
type: standalone
classification: other
source: https://mdf200.itch.io/cspect
upstream: https://mdf200.itch.io/cspect
profile_json:
{"core_classification": "other", "core_version": "3.3.1.0", "cores": ["cspect"], "display_name": "Sinclair - ZX Spectrum Next (#CSpect)", "emulator": "CSpect", "files": [{"description": "NextZXOS and BASIC ROM", "min_size": 65536, "name": "enNextZX.rom", "note": "Paged as four 16K banks, so anything shorter than 65536 bytes leaves the top bank unreadable. The image failing to hold it ends the process through Environment.FailFast. Bytes 6 and 7 carry the NextZXOS version as b[6] + ((b[7] & 0x0f) << 8), and a value of 518 or less clears the flag that arms the program counter watch the CPU runs before each instruction.", "path": "machines/next/enNextZX.rom", "required": true, "source_ref": "CSpect.exe 3.3.1.0 a.H::e() IL_00bd-IL_00c9, a.H::e() IL_0102-IL_0149, a.H::N(int32) IL_0051-IL_0086, A.h::a(string[]) IL_0637-IL_0644", "system": "sinclair-zx-spectrum-next"}, {"description": "DivMMC ROM, the esxDOS layer over the SD card", "min_size": 8192, "name": "enNxtmmc.rom", "note": "Read into the 8K DivMMC bank. Its absence ends the process through the same Environment.FailFast as enNextZX.rom, except under -fw, where the test is skipped because TBBLUE.FW replaces both reads.", "path": "machines/next/enNxtmmc.rom", "required": true, "source_ref": "CSpect.exe 3.3.1.0 a.H::e() IL_00da-IL_00e6, a.H::e() IL_010a-IL_012e, a.H::N(int32) IL_0087-IL_0097", "system": "sinclair-zx-spectrum-next"}, {"aliases": ["enNextMF.rom"], "description": "Multiface ROM", "min_size": 8192, "name": "enNextMf.rom", "note": "Read into the 8K Multiface bank with no test of any kind, so a card without it boots and runs. The bank read indexes the array directly, which faults the moment the Multiface is paged in.", "path": "machines/next/enNextMf.rom", "required": false, "source_ref": "CSpect.exe 3.3.1.0 a.H::e() IL_00eb-IL_00f7, a.H::N(int32) IL_00a1-IL_00b1", "system": "sinclair-zx-spectrum-next"}, {"description": "FPGA core firmware", "name": "TBBLUE.FW", "note": "Read from the root of the card under -fw only, in place of the three ROMs. Word 0 of its header gives the payload offset as (n + 1) * 512 and word 1 the payload length as n * 512, and those bytes are written to memory from 0x6000. A .fw file named on the command line takes the same route.", "required": false, "source_ref": "CSpect.exe 3.3.1.0 a.H::e() IL_0016-IL_00bb, A.h::A(string[]) IL_0164-IL_0197, a.d::C(string) IL_014b-IL_01db", "system": "sinclair-zx-spectrum-next"}, {"description": "ZX Spectrum Next SD card image", "name": "<sdcard>.img", "note": "The only route to the ROMs above. SDCard.Open reads its MBR and boot sector, which is also the test that decides whether a positional argument is a card or a game, and the DivMMC opens the same path read write as its card. A second image mounts on the second slot through -sd2=.", "required": true, "source_ref": "CSpect.exe 3.3.1.0 a.H::e() IL_000b-IL_0015, A.h::A(string) IL_0000-IL_00b6, A.h::A(string[]) IL_0697-IL_0773, B.R::.ctor(string), SDCardAccess.dll SDCard.cs:600-635", "system": "sinclair-zx-spectrum-next", "unsourceable": "A FAT image the user builds or downloads, under whatever name is passed to -mmc= or given as the positional argument. CSpect fetches the current one from https://zxnext.uk/hosted/ on demand, and the machine writes to it."}], "notes": "ZX Spectrum Next emulator, assembler and debugger for Windows, macOS and\nLinux, written in C# against .NET Framework 4.8 and run under Mono elsewhere.\nIt is closed source and shipped as a zip from its itch.io page, so every\nreference below names a method and an IL offset in the CSpect.exe of 3.3.1.0.\nType and member names in that build are obfuscated and the string literals sit\nXOR encoded in one 18146 byte blob, decoded at class load by b[i] ^ i ^ 0xAA.\nref: CSpect.exe 3.3.1.0, ReadMe.txt:9-11\n\nThe machine carries no built-in ROM. A cold reset either loads the Next ROMs\nor allocates them zero filled, 65536 bytes for the ROM banks and 8192 each for\nthe DivMMC and Multiface ROMs. The loading branch runs when the Next ROM flag\nis set, which -nextrom and -fw do, which -mmc= does when its argument is an\nexisting file, and which a positional argument does when it opens as a FAT\nimage.\nref: CSpect.exe 3.3.1.0 a.H::A(bool) IL_01fe-IL_023c, A.h::A(string[])\n     IL_012b-IL_0197, A.h::A(string[]) IL_0697-IL_070e, A.h::a(string[])\n     IL_0131-IL_0150\n\nThe ROMs live inside the SD card image, not beside the executable. e() opens\nthe image through SDCardAccess.SDCard.Open and pulls each ROM out with\nSDCard.LoadFile, whose directory walk lowercases both sides of the comparison,\nso the spelling of these paths carries no weight. Memory pages enNextZX.rom as\nfour 16K banks and the other two as their first 8192 bytes.\nref: CSpect.exe 3.3.1.0 a.H::e() IL_000b-IL_00f7, a.H::N(int32)\n     IL_0051-IL_00b1, SDCardAccess.dll SDCard.cs:457-490, SDCard.cs:624-635\n\nES-DE launches it as mono CSpect.exe -zxnext -mmc=./ <rom> from the game\nfolder. An -mmc= naming a directory leaves the Next ROM flag clear, so the\n.nex file runs against the zero filled banks while the bundled esxDOS plugin\nanswers RST $08 out of that directory.\nref: es_systems.xml zxnext, A.h::A(string[]) IL_0697-IL_06f7, esxDOS.dll\n     CRST8.cs:286-302\n\nA positional argument ending in none of nex, sna, snx, rom or fw is taken for\na card image, and when no file sits at that path CSpect offers to fetch one:\nit reads https://zxnext.uk/hosted/ for the first href holding 8gb, unzips it\nand copies the single .img inside to the path that was asked for. The path is\nthen accepted only if its MBR and boot sector read. A .rom argument goes into\na 128 KB buffer entered at 0x6000 instead, and a .fw argument is unpacked\nthrough the TBBLUE.FW header.\nref: A.h::a(string[]) IL_00a6-IL_012c, A.h::b(string), A.h::B(string, string),\n     a.d::C(string) IL_0086-IL_01db\n\nWhat CSpect writes rather than reads: cspect_win.dat under -r for the window\nplacement, cspect.log for the session log, the F5 screenshots, and the -wad=\ncontainer under LocalApplicationData/CSpect, which is created when it does not\nexist. The debugger reads the symbol and map files that -map=, -zmap=, -clst=,\n-z88dk and -pasta80 name, all of them output of the user's own assembler. The\nWindows build probes its audio runtime with LoadLibrary(\"openal32.dll\") and\noffers to run the bundled oalinst.exe when that answers zero.\nref: B.E::e(), B.E::E(), a.V::.ctor(string), A.y::A(), A.y::A(bool, bool),\n     A.g::A(), A.h::a(string[]) IL_02dc-IL_034f\n", "profiled_date": "2026-08-11", "source": "https://mdf200.itch.io/cspect", "systems": ["sinclair-zx-spectrum-next", "sinclair-zx-spectrum"], "type": "standalone", "upstream": "https://mdf200.itch.io/cspect", "verification": "existence"}


id: cxbx-reloaded
name: Cxbx-Reloaded
type: standalone
classification: embedded_hle
source: https://github.com/Cxbx-Reloaded/Cxbx-Reloaded
upstream: https://github.com/Cxbx-Reloaded/Cxbx-Reloaded
source_commit: 585c49a50af1255ab155099e06f24505f9c5a800
profile_json:
{"core_classification": "embedded_hle", "core_version": "CI-585c49a", "cores": ["cxbx-reloaded", "cxbx"], "display_name": "Microsoft - Xbox / Sega Chihiro (Cxbx-Reloaded)", "emulator": "Cxbx-Reloaded", "exclusion_note": "Five host libraries the code names are not listed. ntdll.dll and the XInput libraries tried in turn, xinput1_4, xinput1_3 and xinput9_1_0, are Windows components resolved by the loader, and cxbxr-emu.dll is the emulator's own build output shipped beside cxbx.exe. xbdm.dll is not opened at all: the name is compared against the import table of the loaded XBE so the debug monitor imports can be thunked to the emulator's own implementations. Two further files belong to the title rather than the system: boot.id, read from the title directory for its region flags, and default.xbe. logo.bmp is only the name offered in the open and save dialogs of the XBE logo editor. ref: src/common/input/XInputPad.cpp:100-120,\n     src/core/kernel/init/CxbxKrnl.cpp:356-365,\n     src/devices/chihiro/MediaBoard.cpp:46-57,\n     src/gui/WndMain.cpp:880-890\n", "files": [{"description": "Chihiro media board flash ROM", "name": "fpr21042_m29w160et.bin", "note": "Checked for existence, opened, and rejected unless it is exactly 2 MB; each failure ends the run with a message naming the file and the EmuMediaBoard folder. Read once, to write out the two SEGABOOT halves when they are absent. It is also the target a Chihiro title returns to when it reboots with an empty launch path.", "path": "EmuMediaBoard/fpr21042_m29w160et.bin", "required": true, "size": 2097152, "source_ref": "src/core/kernel/init/CxbxKrnl.cpp:596-614, src/core/kernel/support/EmuFile.cpp:251, src/core/kernel/exports/EmuKrnlHal.cpp:550-553", "system": "sega-chihiro", "validation": ["size"]}, {"description": "Base board QC microcontroller firmware", "min_size": 7937, "name": "ic10_g24lc64.bin", "note": "Memory mapped read/write at JVS setup, and the run ends when it cannot be opened. Byte 0x1F00 is dereferenced straight after loading, which is the floor the size carries: it holds the board region and is rewritten to USA, export or Japan when the running title's BootID rejects the current value. Titles read it through JvsFirmwareDownload and overwrite it through JvsFirmwareUpload.", "path": "EmuMediaBoard/Chihiro/ic10_g24lc64.bin", "required": true, "source_ref": "src/core/hle/JVS/JVS.cpp:181-188, src/core/hle/JVS/JVS.cpp:241-259, src/core/hle/JVS/JVS.cpp:484-523", "system": "sega-chihiro"}, {"description": "Base board SC microcontroller firmware", "name": "pc20_g24lc64.bin", "note": "Memory mapped read/write at JVS setup, and the run ends when it cannot be opened. Served to titles through JvsScFirmwareDownload and rewritten through JvsScFirmwareUpload.", "path": "EmuMediaBoard/Chihiro/pc20_g24lc64.bin", "required": true, "source_ref": "src/core/hle/JVS/JVS.cpp:182-192, src/core/hle/JVS/JVS.cpp:671-709", "system": "sega-chihiro"}, {"description": "Base board configuration EEPROM", "name": "ic11_24lc024.bin", "note": "Memory mapped read/write at JVS setup, and the run ends when it cannot be opened. Writes from JvsEEPROM_Write are synced back to disk immediately, so cabinet settings a title stores persist across runs.", "path": "EmuMediaBoard/Chihiro/ic11_24lc024.bin", "required": true, "source_ref": "src/core/hle/JVS/JVS.cpp:183-196, src/core/hle/JVS/JVS.cpp:437-482", "system": "sega-chihiro"}, {"description": "Base board backup memory", "has_builtin": true, "name": "backup_ram.bin", "note": "The only one of the four JVS images the emulator will produce itself: when the file is missing it writes 128 KB of zeros and maps that, so a fresh board starts blank. Titles keep bookkeeping and high scores here through JvsBACKUP_Read and JvsBACKUP_Write.", "path": "EmuMediaBoard/Chihiro/backup_ram.bin", "required": false, "size_note": "Created as 128 KB of zeros when absent, then memory mapped", "source_ref": "src/core/hle/JVS/JVS.cpp:184-213, src/core/hle/JVS/JVS.cpp:397-435", "system": "sega-chihiro"}, {"description": "SEGABOOT, old revision", "name": "Partition2.bin", "note": "Written by the emulator from the first megabyte of fpr21042_m29w160et.bin when either half is missing, and mounted as the mbrom0 device. Supplying it does not remove the need for the ROM, whose existence is checked before the extraction block is reached.", "path": "EmuMediaBoard/Partition2.bin", "required": false, "source_ref": "src/core/kernel/init/CxbxKrnl.cpp:616-648, src/core/kernel/support/EmuFile.cpp:252, src/core/kernel/support/EmuMediaBoard.cpp:230-233", "system": "sega-chihiro"}, {"description": "SEGABOOT, current revision", "name": "Partition3.bin", "note": "Written from the second megabyte of fpr21042_m29w160et.bin under the same condition as the old half, mounted as the mbrom1 device, and launched as the XBE that boots the title.", "path": "EmuMediaBoard/Partition3.bin", "required": false, "source_ref": "src/core/kernel/init/CxbxKrnl.cpp:616-653, src/core/kernel/support/EmuFile.cpp:253, src/core/kernel/support/EmuMediaBoard.cpp:230-233", "system": "sega-chihiro"}, {"description": "Xbox dashboard executable", "name": "xboxdash.xbe", "note": "Read from the shell partition of the emulated disk when a title reboots with an empty launch path and when the Open Dashboard menu entry is used. Its absence is handled as the console handles it, with the unrecoverable error screen and the LED sequence that goes with it, the code carrying the dashboard's own reason when the launch data page supplies one. Titles run without it.", "path": "EmuDisk/Partition2/xboxdash.xbe", "required": false, "source_ref": "src/core/kernel/exports/EmuKrnlHal.cpp:546-556, src/gui/WndMain.cpp:2463-2467, src/common/xbe/Xbe.cpp:62-96, src/core/kernel/support/EmuDisk.cpp:269", "system": "microsoft-xbox"}, {"description": "Xbox EEPROM image", "has_builtin": true, "name": "EEPROM.bin", "note": "Opened at startup and mapped read/write; the file is created and filled with defaults when it does not exist, and a file that is not 256 bytes ends the run. Section checksums are recomputed on every load. The hard disk key is taken from it, and the game region it carries becomes the factory region. The GUI exposes an editor over the same file.", "path": "EEPROM.bin", "required": false, "size": 256, "source_ref": "src/common/EmuEEPROM.cpp:93-193, src/common/FilePaths.cpp:125, src/core/kernel/init/CxbxKrnl.cpp:958, src/gui/DlgEepromConfig.cpp:212-230", "system": "microsoft-xbox", "validation": ["size"]}, {"description": "Xbox EEPROM and certificate keys", "name": "keys.bin", "note": "Two 16 byte keys read in order, the EEPROM key then the certificate key, as produced by dump-xbox. A file of any other length is refused with a warning naming the expected length, and an absent file only costs the ability to read save data from a real console. The certificate key derives the LAN, signature and alternate signature keys of the running title; the EEPROM key checks the EEPROM header and is read again by the EEPROM editor to recompute the checksum it writes.", "path": "keys.bin", "required": false, "size": 32, "source_ref": "src/common/FilePaths.cpp:139-172, src/core/kernel/common/types.h:2232, src/core/kernel/init/CxbxKrnl.cpp:113-132, src/common/EmuEEPROM.cpp:184-191, src/gui/DlgEepromConfig.cpp:200-207", "system": "microsoft-xbox", "validation": ["size"]}, {"description": "Dokany user mode library", "name": "dokan2.dll", "note": "Loaded by name with every entry point resolved individually, and the failure message tells the user to install the upstream signed Dokany runtime. It backs the only path that reads a disc image: an .iso or .xiso is mounted to a drive letter and the default.xbe of the mount is opened, so without it only unpacked titles load. The build produces an import library from the Dokany definition file and takes headers from the vendored tree, but ships no runtime of its own.", "required": false, "source_ref": "src/gui/xiso/XisoMount.cpp:36-61, src/gui/WndMain.cpp:2252-2272, projects/dokany/CMakeLists.txt:8-10, projects/cxbx/CMakeLists.txt:17-18"}], "mode": "standalone", "notes": "Windows x86 emulator running Xbox and Sega Chihiro titles. The kernel is\nreimplemented and XBE code executes natively, so no Xbox flash ROM or MCPX\nimage is read. The flash window answers the two addresses titles poll with\nconstants, hardware revision 1.6 among them, and the MCPX device is a PCI stub\nwhose revision comes from the hardware model. A title is opened as an XBE,\neither from an unpacked directory or from an .iso or .xiso mounted to a drive\nletter, in which case the default.xbe of the mount is what gets opened.\nref: src/devices/x86/EmuX86.cpp:162-180,\n     src/devices/MCPXDevice.cpp:36-70,\n     src/devices/Xbox.cpp:48-58,\n     src/devices/Xbox.cpp:132-155,\n     src/gui/WndMain.cpp:89-96,\n     src/gui/WndMain.cpp:2252-2272\n\nEvery path below is relative to the data directory, picked on first run\nbetween the folder holding cxbx.exe, %APPDATA%\\Cxbx-Reloaded and a custom\nlocation. EmuDisk, EmuMediaBoard and EmuMu are created under it at startup.\nref: src/common/Settings.cpp:82,\n     src/common/Settings.cpp:902-937,\n     src/common/Settings.cpp:968-996,\n     src/common/FilePaths.cpp:81-137\n\nA title counts as Chihiro when its XBE type says so or a boot.id sits beside\nit. Launching one directly requires the media board ROM: its absence ends the\nrun. The 2 MB image is cut into two 1 MB halves written as Partition2.bin and\nPartition3.bin, the old and new SEGABOOT, and the new one is launched, which\nthen boots the title. A title returning to firmware with an empty launch path\ngoes back to the same ROM.\nref: src/core/kernel/init/CxbxKrnl.cpp:573-578,\n     src/core/kernel/init/CxbxKrnl.cpp:590-655,\n     src/core/kernel/exports/EmuKrnlHal.cpp:546-556,\n     src/core/kernel/support/EmuFile.cpp:250-253\n\nThe JVS base board dumps are memory mapped read/write once the title is\nChihiro, and each one ends the run when it cannot be opened. Byte 0x1F00 of the\nQC firmware carries the region, rewritten to one the title's BootID accepts so\nthe board does not reject the game. Titles read and write all four images\nthrough the JVS patches at offsets of their own choosing; no size, bound or\nhash check exists anywhere in that path.\nref: src/core/hle/JVS/JVS.cpp:129-145,\n     src/core/hle/JVS/JVS.cpp:174-213,\n     src/core/hle/JVS/JVS.cpp:241-259,\n     src/core/hle/JVS/JVS.cpp:397-435,\n     src/core/kernel/init/CxbxKrnl.cpp:1330-1333\n\nOn the Xbox side the emulated disk holds the dashboard on Partition2. A title\nrebooting with an empty launch path lands there, as does the Open Dashboard\nmenu entry, and an absent dashboard raises the console's own unrecoverable\nerror screen rather than an emulator failure.\nref: src/core/kernel/exports/EmuKrnlHal.cpp:546-556,\n     src/gui/WndMain.cpp:2463-2467,\n     src/common/xbe/Xbe.cpp:62-96,\n     src/core/kernel/support/EmuDisk.cpp:269\n", "profiled_date": "2026-08-11", "source": "https://github.com/Cxbx-Reloaded/Cxbx-Reloaded", "source_commit": "585c49a50af1255ab155099e06f24505f9c5a800", "systems": ["microsoft-xbox", "sega-chihiro"], "type": "standalone", "upstream": "https://github.com/Cxbx-Reloaded/Cxbx-Reloaded"}


id: daphne
name: Daphne
type: standalone + libretro
classification: community_fork
source: https://github.com/libretro/daphne
upstream: https://github.com/mirror/daphne-emu
source_commit: 1586978f7b71f40675f8d0a08d9872ecd2415422
profile_json:
{"core_classification": "community_fork", "core_version": "Git", "cores": ["daphne"], "display_name": "Arcade (Daphne)", "emulator": "Daphne", "exclusion_note": ".info declares no firmware (firmware_count absent). Code confirmed: the core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. All files (ROM ZIPs, framefiles, sound, pics) load from the content directory via g_homedir (libretro.cpp:1153, set to rom_path/..). No shared system BIOS or firmware.\n", "files": [], "notes": "LaserDisc arcade game emulator. Port of Daphne 1.0 (Matt Ownby) to libretro.\nEach game loads its own arcade ROM set from a ZIP file named after the game\n(e.g. lair.zip). ROMs are loaded from a content-relative directory structure\n(homedir/roms/) with CRC32 verification (game.cpp:767-781). The core never\naccesses the RetroArch system directory. Additional per-game data (framefiles,\nsound samples, overlay BMPs) is also loaded relative to the content directory.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/daphne", "source_commit": "1586978f7b71f40675f8d0a08d9872ecd2415422", "systems": ["arcade-laserdisc"], "type": "standalone + libretro", "upstream": "https://github.com/mirror/daphne-emu"}


id: demul
name: Demul
type: standalone
upstream: https://demul.emulation64.com
profile_json:
{"core_version": "0.7", "cores": ["demul"], "display_name": "Sega - Dreamcast/NAOMI/Hikaru (Demul)", "emulator": "Demul", "files": [{"name": "dc_boot.bin", "note": "Dreamcast boot ROM (2 MB). No HLE fallback in Demul.", "required": true, "size": 2097152, "system": "sega-dreamcast"}, {"name": "dc_flash.bin", "note": "Dreamcast flash memory (128 KB). Created by emulator if missing.", "required": false, "size": 131072, "system": "sega-dreamcast"}, {"category": "bios_zip", "name": "naomi.zip", "note": "NAOMI system BIOS archive (MAME format). Contains region-specific BIOS ROMs (EPR-21576 Japan, EPR-21577 USA, EPR-21578 Export, EPR-21579 Korea) plus development and special BIOS variants.\n", "required": true, "system": "sega-naomi"}, {"category": "bios_zip", "name": "naomigd.zip", "note": "NAOMI GD-ROM BIOS. Shares ROMs with naomi.zip (subset of region BIOS variants).", "required": false, "system": "sega-naomi"}, {"category": "bios_zip", "name": "hod2bios.zip", "note": "House of the Dead 2 game-specific BIOS. Japan/USA/Export variants.", "required": false, "system": "sega-naomi"}, {"category": "bios_zip", "name": "f355bios.zip", "note": "Ferrari F355 Challenge game-specific BIOS. Japan/USA/Export variants.", "required": false, "system": "sega-naomi"}, {"category": "bios_zip", "name": "f355dlx.zip", "note": "Ferrari F355 Challenge Deluxe game-specific BIOS. Japan/USA/Export variants.", "required": false, "system": "sega-naomi"}, {"category": "bios_zip", "name": "airlbios.zip", "note": "Airline Pilots Deluxe game-specific BIOS. USA/Export variants.", "required": false, "system": "sega-naomi"}, {"category": "bios_zip", "name": "naomi2.zip", "note": "NAOMI 2 system BIOS archive (MAME format). Contains region-specific BIOS ROMs (EPR-23605 Japan, EPR-23607 USA, EPR-23608 Export, EPR-23609 Korea, EPR-23610 Australia).\n", "required": true, "system": "sega-naomi2"}, {"category": "bios_zip", "name": "hikaru.zip", "note": "Hikaru system BIOS archive (MAME format). Contains EPR-23400a (latest), EPR-23400, EPR-21904 (early), prot_bot (dev/prototype). All 2 MB at IC94.\n", "required": true, "system": "sega-hikaru"}, {"category": "bios_zip", "name": "awbios.zip", "note": "Atomiswave system BIOS archive (MAME format). Contains bios0.ic23 and bios1.ic23 (128 KB each).", "required": true, "system": "sammy-atomiswave"}, {"category": "bios_zip", "name": "segasp.zip", "note": "System SP (Aurora/Spider) BIOS archive (MAME format). Contains EPR-24236a, EPR-24328/a BIOS ROMs, serial EEPROM, and network firmware variants.\n", "required": true, "system": "sega-system-sp"}, {"category": "bios_zip", "hle_fallback": true, "name": "mie.zip", "note": "MIE (Maple-JVS bridge) Z80 MCU firmware (315-6146.bin). HLE mode available; LLE mode requires this archive.", "required": false}, {"category": "bios_zip", "name": "jvs13551.zip", "note": "Sega 837-13551 JVS I/O board firmware. Contains sp5001.bin, sp5001-a.bin, sp5001-b.bin, sp5002-a.bin, 315-6215.bin.\n", "required": true}], "notes": "Closed-source Windows emulator for Sega Dreamcast and related arcade hardware.\nRun via Wine (32-bit, win32 prefix) on Linux platforms (Batocera, RetroBat).\nUses MAME ROM naming conventions for arcade BIOS archives.\n\nBatocera configgen (demulGenerator.py) maps roms0 to the BIOS directory.\nAll BIOS ZIPs are placed directly in bios/ (no subdirectory prefix).\nDemul searches configured ROM paths for both game ROMs and BIOS archives.\n\nGaelco PowerVR and Cave CV1000 (3rd gen) games are self-contained ROM sets\nand do not require separate BIOS archives.\n\nHLE MIE emulation available (changelog: \"full HLE MIE\" mode). LLE mode\nrequires mie.zip with the 315-6146 MCU firmware.\n\nSupported launch modes via -run= parameter:\n  dc, naomi, naomi2, hikaru, atomiswave, gaelco, cave3rd, segasp.\n\nBIOS requirements verified against Batocera configgen, batocera-systems\ndeclarations, MAME ROM set conventions, and community documentation.\nNo source code available for direct verification.\n", "profiled_date": "2026-03-26", "systems": ["sega-dreamcast", "sega-naomi", "sega-naomi2", "sega-hikaru", "sammy-atomiswave", "sega-system-sp", "gaelco-powervr", "cave-cv1000"], "type": "standalone", "upstream": "https://demul.emulation64.com"}


id: desmume
name: DeSmuME
type: libretro
classification: community_fork
source: https://github.com/libretro/desmume
upstream: https://github.com/TASEmulators/desmume
source_commit: ae0f7f51f96d9b5741b47b425505a4a4224b91fa
profile_json:
{"core_classification": "community_fork", "core_version": "SVN", "cores": ["desmume"], "display_name": "Nintendo - DS (DeSmuME)", "emulator": "DeSmuME", "files": [{"description": "ARM7 BIOS", "hle_fallback": true, "name": "bios7.bin", "note": "Native file needed for firmware boot and SWI-from-BIOS accuracy", "required": false, "size": 16384, "source_ref": "desmume/src/NDSSystem.cpp:2178-2182, desmume/src/frontend/libretro/libretro.cpp:763", "system": "nintendo-ds", "validation": ["size"]}, {"description": "ARM9 BIOS", "hle_fallback": true, "name": "bios9.bin", "note": "Native file needed for firmware boot and logo comparison (Pal Park)", "required": false, "size": 4096, "source_ref": "desmume/src/NDSSystem.cpp:2236-2239, desmume/src/frontend/libretro/libretro.cpp:764", "system": "nintendo-ds", "validation": ["size"]}, {"description": "NDS firmware image", "hle_fallback": true, "name": "firmware.bin", "note": "Loaded only if both BIOS files present; needed for boot animation, wifi config, user settings", "required": false, "source_ref": "desmume/src/firmware.cpp:249-280, desmume/src/frontend/libretro/libretro.cpp:765", "system": "nintendo-ds"}], "notes": "Full HLE of ARM7/ARM9 SWI routines; BIOS files optional for most games.\nExternal BIOS enables SWI-from-BIOS mode. Firmware boot requires both\nBIOS files loaded and interpreter mode (JIT incompatible).\nNo DSi support. Core option: desmume_use_external_bios.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/desmume", "source_commit": "ae0f7f51f96d9b5741b47b425505a4a4224b91fa", "systems": ["nintendo-ds"], "type": "libretro", "upstream": "https://github.com/TASEmulators/desmume"}


id: desmume2015
name: DeSmuME 2015
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/desmume2015
upstream: https://github.com/TASEmulators/desmume
source_commit: af397ff3d1f208c27f3922cc8f2b8e08884ba893
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "SVN (2015 snapshot)", "cores": ["desmume2015"], "display_name": "Nintendo - DS (DeSmuME 2015)", "emulator": "DeSmuME 2015", "exclusion_note": ".info declares firmware_count=3 but libretro frontend never enables external BIOS loading (UseExtBIOS defaults false in NDSSystem.h:497, never set in libretro.cpp)", "files": [], "notes": "Frozen 2015 snapshot of DeSmuME. The core emulator code supports external\nBIOS/firmware (PrepareBiosARM7/ARM9 in NDSSystem.cpp:1974-2050), but\nUseExtBIOS defaults to false (NDSSystem.h:497) and the libretro frontend\nnever sets it — no desmume_use_external_bios core option exists in this\nversion. Uses HLE BIOS stubs when external BIOS not loaded.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/desmume2015", "source_commit": "af397ff3d1f208c27f3922cc8f2b8e08884ba893", "systems": ["nintendo-ds"], "type": "libretro", "upstream": "https://github.com/TASEmulators/desmume"}


id: dice
name: DICE
type: libretro
classification: community_fork
source: https://github.com/mittonk/dice-libretro
upstream: https://sourceforge.net/projects/dice/
source_commit: 72d66a67a296b004fa0bb7a57dbab9cfcec462b9
profile_json:
{"analysis": {"bios_required": false, "filesystem_access": false, "game_count": 21, "rom_games": 10, "rom_loading": {"method": "MAME-style ZIP, matched by CRC32 per RomDesc", "source_ref": "chips/rom.cpp:41-218", "zip_handling": "unzip library (unzip/), opened via libretro_zip_filename"}, "romless_games": 11, "system_directory_used": false}, "core_classification": "community_fork", "core_version": "v0.4.2", "cores": ["dice"], "display_name": "Arcade (DICE)", "emulator": "DICE", "files": [], "notes": "Discrete Integrated Circuit Emulator. Emulates early arcade hardware built\nfrom discrete logic components with no CPU. Libretro port by Ken Mitton,\nbased on upstream DICE by Adam B.\n\nGames load as MAME-style ZIP archives matched by CRC32 per ROM chip\n(chips/rom.cpp:41-218). ROM-less games (Pong, Breakout, etc.) use .dmy\ndummy launcher files. The system directory is retrieved but never used\nfor file loading (libretro.cpp:60-62).\n", "profiled_date": "2026-03-23", "source": "https://github.com/mittonk/dice-libretro", "source_commit": "72d66a67a296b004fa0bb7a57dbab9cfcec462b9", "systems": ["discrete-arcade"], "type": "libretro", "upstream": "https://sourceforge.net/projects/dice/"}


id: dinothawr
name: Dinothawr
type: libretro
classification: game_engine
source: https://github.com/libretro/Dinothawr
upstream: https://github.com/libretro/Dinothawr
source_commit: d66dde551be8e68e47c05e88838b4f1c6b114c99
profile_json:
{"core_classification": "game_engine", "core_version": "v1.0", "cores": ["dinothawr"], "data_directories": [{"ref": "dinothawr", "source_ref": "libretro.cpp:270-271"}], "display_name": "Dinothawr", "emulator": "Dinothawr", "files": [], "notes": "Puzzle game by the libretro team (Themaister, Agnes Heyer). Push blocks on ice.\nGame data (TMX levels, sprites, music) needed for the core to work.\n\nTwo loading modes:\n1. Load dinothawr.game as content (data in content directory)\n2. supports_no_game=true: loads from system_dir/dinothawr/\n   ref: libretro.cpp:267-271 —\n     game_path_dir = join(system_dir, \"/\", \"dinothawr\")\n     game_path = join(game_path_dir, \"/\", \"dinothawr.game\")\n\nBuildbot provides Dinothawr.zip via Core System Files Downloader.\nref: buildbot.libretro.com/assets/system/Dinothawr.zip\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/Dinothawr", "source_commit": "d66dde551be8e68e47c05e88838b4f1c6b114c99", "systems": ["dinothawr"], "type": "libretro", "upstream": "https://github.com/libretro/Dinothawr"}


id: directxbox
name: DirectXBox
type: libretro
classification: pure_libretro
source: https://github.com/libretro/libretro-directxbox
source_commit: a157f3c1a68cb40dd74d5a664c0e39a245aaa59c
profile_json:
{"core_classification": "pure_libretro", "core_version": "alpha", "cores": ["directxbox"], "display_name": "Microsoft - Xbox (DirectXbox)", "emulator": "DirectXBox", "files": [{"name": "mcpx_1.0.bin", "note": "Xbox MCPX ROM (secret boot ROM on the southbridge). Contains the initial boot vector that loads the flash BIOS. Overlaid at the last 512 bytes of the 16 MB flash region (0xFFFFFE00-0xFFFFFFFF). Only needed for retail machine types; Debug and Chihiro skip this file.\n", "path": "mcpx_1.0.bin", "required": true, "size": 512, "source_ref": "src/xbox.cpp:186-207, src/libretro/libretro.cpp:202", "validation": ["size"]}, {"name": "cromwell_1024.bin", "note": "Cromwell open-source Xbox BIOS (1024 KB variant). Loaded as the flash ROM and mirrored across the 16 MB flash region at 0xFF000000. Size must be a multiple of 0x10000. This is the only BIOS that currently boots in the emulator. The Microsoft retail BIOS (xbox-3944.bin) is referenced in commented-out code but does not work yet.\n", "path": "cromwell_1024.bin", "required": true, "size": 1048576, "source_ref": "src/xbox.cpp:143-178, src/libretro/libretro.cpp:203", "validation": ["size"]}], "notes": {"machine_types": "xbox_database.cpp defines retail v1.0 through v1.6, debug, and chihiro variants. Each has different TV encoder (Conexant/Focus/XCalibur) and MCPX revision (X2/X3) settings. The core option auto-detects from the loaded BIOS.\n", "microsoft_bios": "The source references xbox-3944.bin as an alternative flash ROM (Microsoft retail BIOS, typically 256 KB). It is commented out in libretro.cpp:204 because ATA and OHCI hardware are not yet implemented, preventing the Microsoft BIOS from completing boot.\n", "status": "Alpha stage. Only Cromwell BIOS boots. No commercial game compatibility. Missing ATA (hard drive), OHCI (USB/controllers), audio, and GPU HW acceleration. The core requires libvirt86 for x86 virtualization.\n"}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/libretro-directxbox", "source_commit": "a157f3c1a68cb40dd74d5a664c0e39a245aaa59c", "systems": ["xbox"], "type": "libretro"}


id: dirksimple
name: DirkSimple
type: standalone + libretro
classification: official_port
source: https://github.com/icculus/DirkSimple
upstream: https://github.com/icculus/DirkSimple
source_commit: 5aea3e2951ed641908a7bd2ca09019614003b5e3
profile_json:
{"core_classification": "official_port", "core_version": "0.2", "cores": ["dirksimple"], "data_directories": [{"ref": "dirksimple", "source_ref": "dirksimple_libretro.c:794"}], "display_name": "Laserdisc arcade game (DirkSimple)", "emulator": "DirkSimple", "files": [], "notes": "DirkSimple by Ryan C. Gordon (icculus). Plays laserdisc arcade games\nvia Lua scripts + Ogg Theora video. Same author wrote both standalone\nand libretro backends (source == upstream).\n\nLibretro port loads from system_dir/DirkSimple/.\nref: dirksimple_libretro.c:782,794 —\n  sysdir from RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY\n  basedir = sysdir + \"/DirkSimple/\"\nDirkSimple_startup(basedir, info->path, ...) at line 799\n\nStandalone loads from SDL_GetBasePath() + data/.\nref: dirksimple_sdl.c:575-577\n\nGame data in data/games/<gamename>/game.lua + assets (PNG, WAV).\nUser provides the OGV laserdisc video as content.\n\nSupported games: Dragon's Lair (lair), Cliff Hanger (cliff).\n10 data files in the repo (game.lua scripts, sprites, sounds, icons).\n\nBuildbot provides DirkSimple.zip via Core System Files Downloader.\n", "profiled_date": "2026-03-23", "source": "https://github.com/icculus/DirkSimple", "source_commit": "5aea3e2951ed641908a7bd2ca09019614003b5e3", "systems": ["laserdisc-arcade"], "type": "standalone + libretro", "upstream": "https://github.com/icculus/DirkSimple"}


id: dolphin
name: Dolphin
type: standalone + libretro
classification: community_fork
source: https://github.com/libretro/dolphin
upstream: https://github.com/dolphin-emu/dolphin
source_commit: b4c88b46ad26227ebde585111de691db1b0a151a
profile_json:
{"core_classification": "community_fork", "core_version": "Git", "cores": ["dolphin"], "data_directories": [{"destination": "Sys", "ref": "dolphin-sys", "source_ref": "Source/Core/Common/CommonPaths.h:128-141"}], "display_name": "Nintendo - GameCube / Wii (Dolphin)", "emulator": "Dolphin", "files": [{"hle_fallback": true, "name": "IPL.bin", "note": "GameCube NTSC-U boot ROM. HLE available but real IPL needed for GC menu boot and accurate fonts", "path": "GC/USA/IPL.bin", "region": ["north-america"], "required": false, "size": 2097152, "source_ref": "Source/Core/Common/CommonPaths.h:139, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:108"}, {"hle_fallback": true, "name": "IPL.bin", "note": "GameCube PAL boot ROM", "path": "GC/EUR/IPL.bin", "region": ["europe"], "required": false, "size": 2097152, "source_ref": "Source/Core/Core/Config/MainSettings.cpp:776-782"}, {"hle_fallback": true, "name": "IPL.bin", "note": "GameCube NTSC-J boot ROM. JAP is the legacy directory name", "path": "GC/JAP/IPL.bin", "region": ["japan"], "required": false, "size": 2097152, "source_ref": "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:185"}, {"adler32_byteswap": true, "hle_fallback": true, "known_hash_adler32": "0x66f334fe", "name": "dsp_rom.bin", "note": "DSP instruction ROM for LLE audio. Free replacement (v0.4) included", "path": "GC/dsp_rom.bin", "required": false, "size": 8192, "source_ref": "Source/Core/Common/CommonPaths.h:136, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:84-117", "validation": ["size"]}, {"adler32_byteswap": true, "hle_fallback": true, "known_hash_adler32": "0xf3b93527", "name": "dsp_coef.bin", "note": "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included", "path": "GC/dsp_coef.bin", "required": false, "size": 4096, "source_ref": "Source/Core/Common/CommonPaths.h:137, Source/Core/Core/DSP/DSPCore.cpp:32-33, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:55-62", "validation": ["size"]}, {"hle_fallback": true, "name": "font_western.bin", "note": "Windows-1252 font for GC/Wii text rendering. Free alternative bundled, real one from IPL dump preferred", "path": "GC/font_western.bin", "required": false, "size": 9589, "source_ref": "Source/Core/Common/CommonPaths.h:133, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:130,202-239"}, {"hle_fallback": true, "name": "font_japanese.bin", "note": "Shift-JIS font for Japanese text. Free alternative bundled, real one from IPL dump preferred", "path": "GC/font_japanese.bin", "required": false, "size": 303693, "source_ref": "Source/Core/Common/CommonPaths.h:134, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:129,234"}, {"name": "segaboot.gcm", "note": "SegaBoot, the Triforce system disc image. Read on every Triforce boot, min(size, 2 MiB) copied into the firmware buffer, nothing validated", "path": "Triforce/segaboot.gcm", "required": true, "source_ref": "Source/Core/Core/HW/DVD/AMMediaboard.cpp:159,512,531-551, Source/Core/Core/HW/DVD/DVDInterface.cpp:292-294, Source/Core/Core/System.h:147", "system": "sega-triforce"}, {"hle_fallback": true, "name": "gba_bios.bin", "note": "GBA BIOS for GC-GBA link feature (uses integrated mGBA). Path configurable in settings", "path": "GBA/gba_bios.bin", "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:145, Source/Core/Core/HW/GBACore.cpp:346-363"}, {"hle_fallback": true, "name": "SYSCONF", "note": "Wii system configuration. Auto-generated by Dolphin, can be imported from NAND backup", "path": "Wii/shared2/sys/SYSCONF", "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:118, Source/Core/Common/FileUtil.cpp:900"}, {"hle_fallback": true, "name": "setting.txt", "note": "Wii region/language settings. Auto-generated by Dolphin during Wii boot emulation", "path": "Wii/title/00000001/00000002/data/setting.txt", "required": false, "size": 256, "source_ref": "Source/Core/Common/CommonPaths.h:153, Source/Core/Core/Boot/Boot_BS2Emu.cpp:384-460"}, {"hle_fallback": true, "name": "nand.bin", "note": "BootMii NAND backup. Can be imported to populate Wii NAND with channels, saves, system menu", "path": null, "required": false, "source_ref": "Source/Core/DiscIO/NANDImporter.cpp:26-39,42-89"}, {"hle_fallback": true, "name": "keys.bin", "note": "OTP/SEEPROM dump (Wii encryption keys). Needed if not appended to nand.bin for NAND import", "path": null, "required": false, "size": 1024, "source_ref": "Source/Core/DiscIO/NANDImporter.cpp:20, Source/Core/DiscIO/NANDImporter.cpp:82-94, Source/Core/DiscIO/NANDImporter.h:46"}, {"hle_fallback": true, "name": "WiiSD.raw", "note": "Virtual SD card image for Wii homebrew. Auto-created by Dolphin, supports SD/SDHC up to 4GB", "path": "Load/WiiSD.raw", "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:150"}, {"hle_fallback": true, "name": "codehandler.bin", "note": "Gecko/Ocarina cheat code handler. Shipped with Dolphin in Sys/, not user-supplied", "path": null, "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:155, Source/Core/Core/GeckoCode.cpp:120"}, {"hle_fallback": true, "mode": "standalone", "name": "Wii System Menu", "note": "Wii System Menu WAD. Installed to NAND via Tools > Install WAD, needed for Wii Menu boot", "path": null, "required": false, "source_ref": "Source/Core/DolphinQt/MainWindow.cpp:1629-1631, Source/Core/DolphinQt/MenuBar.cpp:1218-1232"}, {"hle_fallback": true, "name": "clientca.pem", "note": "SSL client certificate. Auto-extracted from IOS13 content during NAND import", "path": "Wii/clientca.pem", "required": false, "source_ref": "Source/Core/DiscIO/NANDImporter.cpp:239-323"}, {"hle_fallback": true, "name": "clientcakey.pem", "note": "SSL client private key. Auto-extracted from IOS13 content during NAND import", "path": "Wii/clientcakey.pem", "required": false, "source_ref": "Source/Core/DiscIO/NANDImporter.cpp:275"}, {"hle_fallback": true, "name": "rootca.pem", "note": "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import", "path": "Wii/rootca.pem", "required": false, "source_ref": "Source/Core/DiscIO/NANDImporter.cpp:276"}, {"mode": "standalone", "name": "rtl8723a_fw.bin", "note": "Realtek 8723A BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8723a_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:387"}, {"mode": "standalone", "name": "rtl8723b_fw.bin", "note": "Realtek 8723B BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8723b_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:389"}, {"mode": "standalone", "name": "rtl8723d_fw.bin", "note": "Realtek 8723D BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8723d_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:391"}, {"mode": "standalone", "name": "rtl8761a_fw.bin", "note": "Realtek 8761A BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8761a_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:393"}, {"mode": "standalone", "name": "rtl8761bu_fw.bin", "note": "Realtek 8761BU BT firmware for Wiimote passthrough (most common USB dongle)", "path": "Load/Firmware/rtl_bt/rtl8761bu_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:395"}, {"mode": "standalone", "name": "rtl8821a_fw.bin", "note": "Realtek 8821A BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8821a_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:397"}, {"mode": "standalone", "name": "rtl8821c_fw.bin", "note": "Realtek 8821C BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8821c_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:399"}, {"mode": "standalone", "name": "rtl8822b_fw.bin", "note": "Realtek 8822B BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8822b_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:403"}, {"mode": "standalone", "name": "rtl8822cu_fw.bin", "note": "Realtek 8822CU BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8822cu_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:401"}, {"mode": "standalone", "name": "rtl8851bu_fw.bin", "note": "Realtek 8851BU BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8851bu_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:405"}, {"mode": "standalone", "name": "rtl8852au_fw.bin", "note": "Realtek 8852AU BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8852au_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:407"}, {"mode": "standalone", "name": "rtl8852bu_fw.bin", "note": "Realtek 8852BU BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8852bu_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:409"}, {"mode": "standalone", "name": "rtl8852cu_fw.bin", "note": "Realtek 8852CU BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8852cu_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:411"}, {"mode": "standalone", "name": "rtl8852btu_fw.bin", "note": "Realtek 8852BT/8852BE-VT BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8852btu_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:413"}, {"mode": "standalone", "name": "rtl8922au_fw.bin", "note": "Realtek 8922AU BT firmware for Wiimote passthrough", "path": "Load/Firmware/rtl_bt/rtl8922au_fw.bin", "required": false, "source_ref": "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:415"}], "logo": "https://raw.githubusercontent.com/dolphin-emu/dolphin/master/Data/dolphin-emu.svg", "notes": {"bt_passthrough_note": "Bluetooth passthrough allows connecting real Wiimotes via USB Bluetooth adapters. Realtek chipsets (very common) require firmware files in Load/Firmware/rtl_bt/. Dolphin can auto-download these from kernel-firmware/linux-firmware on GitLab. 15 device families supported. Each needs _fw.bin (required) + _config.bin (optional). ref: Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:75-179 (device IDs), 382-420 (firmware names)\n", "dsp_rom_note": "DSP ROMs are verified at load time via Adler32 hash. Official Nintendo hashes: irom=0x66f334fe, drom=0xf3b93527. Multiple free replacement versions exist (v0.1 through v0.4).\n", "font_note": "Fonts can come from three sources: real IPL dump (preferred), standalone font files in Sys/GC/, or bundled free alternatives. The free fonts have different padding that causes text positioning issues in some games.\n", "hle_available": true, "hle_note": "Dolphin provides HLE for GameCube IPL (boot ROM), DSP, and Wii system functions. No BIOS files are strictly required for most games. DSP ROMs (dsp_rom.bin + dsp_coef.bin) are the most impactful optional files - Dolphin ships free replacements but real dumps from hardware provide better audio accuracy in some titles.\n", "ipl_region_note": "IPL.bin is region-specific, placed in GC/<REGION>/IPL.bin. JAP is the legacy directory name, JPN is the modern default. DEV is for development/debug units.\n", "ipl_regions": ["USA", "EUR", "JAP", "JPN", "DEV"], "nand_note": "Wii NAND content (channels, saves, system menu) is managed by Dolphin internally. Users can import a BootMii NAND backup (nand.bin + optional keys.bin) to populate it. Most Wii games do not require a real NAND dump.\n"}, "pack_structure": {"libretro": "dolphin-emu", "standalone": ""}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/dolphin", "source_commit": "b4c88b46ad26227ebde585111de691db1b0a151a", "systems": ["nintendo-gamecube", "nintendo-wii", "sega-triforce"], "type": "standalone + libretro", "upstream": "https://github.com/dolphin-emu/dolphin"}


id: dolphin-mmjr
name: Dolphin MMJR
type: standalone
classification: community_fork
source: https://github.com/acidtech/Dolphin-MMJR
upstream: https://github.com/weihuoya/dolphin
source_commit: 1b095b64857c2eabb49a42cc56ffd9d7881bc263
profile_json:
{"core_classification": "community_fork", "core_version": "11460 - bankaimaster999", "cores": ["dolphin-mmjr"], "display_name": "Nintendo - GameCube / Wii (Dolphin MMJR)", "emulator": "Dolphin MMJR", "exclusion_note": "The NAND importer, which reads nand.bin and writes clientca.pem, clientcakey.pem and rootca.pem, and the signature database totaldb.dsy are reachable only from the Qt front-end, which the Android build does not compile: the APK builds the core libraries and Source/Android/jni, and the JNI surface exposes no NAND import or WAD install. libusb is switched off for Android, so the Bluetooth passthrough firmware paths are out as well. ref: Source/CMakeLists.txt:60-65, Source/Core/CMakeLists.txt:1-16,\n     Source/Core/DolphinQt/MainWindow.cpp:1510, Source/Core/DolphinQt/MenuBar.cpp:1092,\n     Source/Core/DolphinQt/MenuBar.cpp:1156, CMakeLists.txt:630-644\n", "files": [{"description": "GameCube boot ROM, NTSC-U directory", "hle_fallback": true, "name": "IPL.bin", "note": "Read whole into a 2 MiB buffer with no size check, then descrambled from 0x100 for 0x1afe00 bytes. The crc32 gate runs when the IPL itself is booted, and the four non-PAL dumps pass here without complaint.", "path": "GC/USA/IPL.bin", "region": ["north-america"], "required": false, "size": 2097152, "source_ref": "Source/Core/Core/ConfigManager.cpp:861-868, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:99-112, Source/Core/Core/HW/EXI/EXI_DeviceIPL.h:43, Source/Core/Core/Boot/Boot.cpp:296-330", "system": "nintendo-gamecube", "validation": ["crc32"]}, {"description": "GameCube boot ROM, PAL directory", "hle_fallback": true, "name": "IPL.bin", "note": "The two PAL dumps are the ones this directory takes without a mismatch warning.", "path": "GC/EUR/IPL.bin", "region": ["europe"], "required": false, "size": 2097152, "source_ref": "Source/Core/Core/ConfigManager.cpp:835-849, Source/Core/Core/Boot/Boot.cpp:298-337", "system": "nintendo-gamecube", "validation": ["crc32"]}, {"description": "GameCube boot ROM, NTSC-J directory", "hle_fallback": true, "name": "IPL.bin", "note": "JAP is the only Japanese directory name this fork knows. FindIPLDump, which serves the font path, scans USA then EUR then JAP and stops at the first hit.", "path": "GC/JAP/IPL.bin", "region": ["japan"], "required": false, "size": 2097152, "source_ref": "Source/Core/Common/CommonPaths.h:32-34, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:174-186", "system": "nintendo-gamecube", "validation": ["crc32"]}, {"description": "Windows-1252 font, loaded at 0x1fcf00", "hle_fallback": true, "name": "font_western.bin", "note": "Read from GC/ in the Sys directory, with no user directory fallback. Skipped in favour of the IPL dump whenever one is found.", "path": null, "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:105, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:126, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:199-240"}, {"description": "Shift JIS font, loaded at 0x1aff00", "hle_fallback": true, "name": "font_japanese.bin", "note": "Read from GC/ in the Sys directory, with no user directory fallback. Skipped in favour of the IPL dump whenever one is found.", "path": null, "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:106, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:125, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:199-240"}, {"adler32_byteswap": true, "description": "DSP instruction ROM", "hle_fallback": true, "known_hash_adler32": "0x66f334fe", "name": "dsp_rom.bin", "note": "DSP LLE only, and LLE aborts when the file is absent or not 8192 bytes. The adler32 is taken over the byte-swapped image and the value here is the Nintendo pair; five replacement pairs are also accepted.", "path": "GC/dsp_rom.bin", "required": false, "size": 8192, "source_ref": "Source/Core/Common/CommonPaths.h:108, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:120-152, Source/Core/Core/DSP/DSPCore.h:35, Source/Core/Core/DSP/DSPCore.cpp:38-80", "validation": ["size"]}, {"adler32_byteswap": true, "description": "DSP coefficient ROM", "hle_fallback": true, "known_hash_adler32": "0xf3b93527", "name": "dsp_coef.bin", "note": "Read by DSP LLE alongside the instruction ROM, and by the AX ucode under HLE for polyphase resampling, which drops any file that is not 0x1000 bytes and plays on without it.", "path": "GC/dsp_coef.bin", "required": false, "size": 4096, "source_ref": "Source/Core/Common/CommonPaths.h:109, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:120-152, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:45-70, Source/Core/Core/DSP/DSPCore.h:49", "validation": ["size"]}, {"description": "Gecko code handler", "name": "codehandler.bin", "note": "Read from the root of the Sys directory when cheats are enabled, and written into guest memory between the installer bounds; too large a file is refused and cheats stay off.", "path": null, "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:124, Source/Core/Core/GeckoCode.cpp:121-136"}, {"description": "BootMii key dump, console keys and identity", "hle_fallback": true, "name": "keys.bin", "note": "Read at every key store construction, so on every Wii title. Supplies the console private key and signature, the MS and CA identifiers, the NAND key and HMAC and the backup key. A short read leaves the built-in keys in place, the structure being fixed at 0x400 bytes.", "path": "Wii/keys.bin", "required": false, "size": 1024, "source_ref": "Source/Core/Core/IOS/IOSC.cpp:94, Source/Core/Core/IOS/IOSC.cpp:136-140, Source/Core/Core/IOS/IOSC.cpp:559-584", "system": "nintendo-wii", "validation": ["size"]}, {"description": "Wii system configuration", "hle_fallback": true, "name": "SYSCONF", "note": "Opened through the emulated filesystem and accepted only at 0x4000 bytes; anything else is replaced by a freshly generated one.", "path": "Wii/shared2/sys/SYSCONF", "required": false, "size": 16384, "source_ref": "Source/Core/Common/CommonPaths.h:90, Source/Core/Core/SysConf.cpp:20, Source/Core/Core/SysConf.cpp:55-66", "system": "nintendo-wii", "validation": ["size"]}, {"description": "Wii region and language settings", "hle_fallback": true, "name": "setting.txt", "note": "Read for its serial number at Wii boot, then deleted and written again from the emulated region settings. The read fills a fixed 0x100 byte buffer, so a shorter file yields nothing.", "path": "Wii/title/00000001/00000002/data/setting.txt", "required": false, "size": 256, "source_ref": "Source/Core/Common/CommonPaths.h:122, Source/Core/Common/SettingsHandler.h:22-27, Source/Core/Core/Boot/Boot_BS2Emu.cpp:228-256", "system": "nintendo-wii", "validation": ["size"]}, {"description": "Wii SD card image", "hle_fallback": true, "name": "sd.raw", "note": "Opened read-write when the SD device is opened; a 128 MB image is created when the file is missing.", "path": "Wii/sd.raw", "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:119, Source/Core/Common/FileUtil.cpp:802, Source/Core/Core/IOS/SDIO/SDIOSlot0.cpp:60-79", "system": "nintendo-wii"}, {"aliases": ["titles.txt"], "description": "user title database", "name": "wiitdb.txt", "note": "One title id equals name pair per line, ids of four characters and up. titles.txt is read only when wiitdb.txt yields nothing. Overlays the per-language databases shipped in the Sys directory.", "path": "Load/wiitdb.txt", "required": false, "source_ref": "Source/Core/Core/TitleDatabase.cpp:26-48, Source/Core/Core/TitleDatabase.cpp:50-63, Source/Core/Core/TitleDatabase.cpp:86-94"}, {"description": "MIOS symbol map", "name": "mios-ipl.map", "note": "Read from Maps/ in the user directory when MIOS starts, and a successful load re-applies the HLE function patches against the symbols it names.", "path": "Maps/mios-ipl.map", "required": false, "source_ref": "Source/Core/Core/IOS/MIOS.cpp:47, Source/Core/Core/IOS/MIOS.cpp:55-66"}, {"description": "symbol map for game id GFZE01", "name": "GFZE01.map", "note": "Reached by the per-title lookup, which reads Maps/<game id>.map from the user directory then the Sys directory. Ships in Maps/ inside the Sys directory.", "path": null, "required": false, "source_ref": "Source/Core/Core/Boot/Boot.cpp:253-290"}, {"description": "symbol map for game id GMBE8P", "name": "GMBE8P.map", "note": "Reached by the per-title lookup, which reads Maps/<game id>.map from the user directory then the Sys directory. Ships in Maps/ inside the Sys directory.", "path": null, "required": false, "source_ref": "Source/Core/Core/Boot/Boot.cpp:253-290"}], "mode": "standalone", "notes": "Android-only Dolphin fork continuing the MMJ line, published as the org.mm.jr\npackage. The repositories it released from are gone, including the\nDolphin-MMJR1 link in its own README; this reading is taken from a surviving\ncopy that carries the release build metadata of the app, applicationId\norg.mm.jr and versionCode 15808.\nref: Source/Android/app/build.gradle:23-29,\n     Source/Android/app/release/output-metadata.json\n\nTwo roots. The user directory is dolphin-mmjr at the root of external\nstorage. The Sys directory is extracted from the APK assets into the app's\ninternal files directory, and the first run after a versionCode change\ndeletes it and extracts it again, so nothing placed there survives an update.\nPaths below are relative to the user directory; entries with no path are read\nonly from the Sys directory and name their location in their note.\nref: Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java:93-134,\n     Source/Core/Common/CommonPaths.h:22-24, Source/Core/Common/FileUtil.cpp:756-807\n\nThe GameCube boot ROM is looked up as GC/<REGION>/IPL.bin, the region\ndirectory being NTSC-J to JAP, NTSC-U to USA and PAL to EUR, in the user\ndirectory first and the Sys directory second. Booting the IPL itself hashes\nthe whole file with crc32 and warns on an unknown dump, and again when a PAL\ndump answers a non-PAL boot. SkipIPL defaults to true, so games start without\nit.\nref: Source/Core/Core/ConfigManager.cpp:835-849, Source/Core/Core/ConfigManager.cpp:861-868,\n     Source/Core/Core/Boot/Boot.cpp:295-337, Source/Core/Core/Config/MainSettings.cpp:18\n\nFonts follow the IPL. When a dump is present the Shift JIS and Windows-1252\nfonts are read out of it at offsets 0x1aff00 and 0x1fcf00, for 0x4a24d and\n0x2575 bytes; otherwise the standalone font files are loaded whole, and the\nbundled ones have different padding from the console fonts.\nref: Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:99-127,\n     Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:159-172,\n     Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:199-240\n\nDSP HLE is the default and reads dsp_coef.bin alone, for polyphase resampling\ncoefficients, skipping any file that is not 0x1000 bytes. DSP LLE, reached by\nsetting DSPHLE to False in Dolphin.ini, loads both ROMs from GC/ in the user\ndirectory then Sys/GC/, rejects either at the wrong size and refuses to start\nwhen one is missing. Both are byte-swapped into memory and the pair is then\nhashed with adler32 against six known combinations.\nref: Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:120-138,\n     Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:140-176,\n     Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:45-58,\n     Source/Core/Core/DSP/DSPCore.cpp:38-105, Source/Core/Core/HW/DSP.cpp:190\n\nWii emulation reads keys.bin from the NAND root every time the key store is\nbuilt, and keeps the built-in keys when it is absent. SYSCONF is read through\nthe emulated filesystem and rebuilt unless it is exactly 0x4000 bytes,\nsetting.txt is read for its serial number then deleted and written again, and\nthe WiiConnect24 files shipped in Sys/Wii are copied into the NAND without\noverwriting what is there. A missing SD card image is created at 128 MB.\nref: Source/Core/Core/IOS/IOSC.cpp:94, Source/Core/Core/IOS/IOSC.cpp:136-140,\n     Source/Core/Core/IOS/IOSC.cpp:559-584, Source/Core/Core/SysConf.cpp:55-66,\n     Source/Core/Core/Boot/Boot_BS2Emu.cpp:228-256, Source/Core/Core/WiiRoot.cpp:217-227,\n     Source/Core/Core/IOS/SDIO/SDIOSlot0.cpp:60-79\n\nEvery boot looks for a symbol map named after the running game ID, in Maps/\nthen Sys/Maps/, and reloads it whenever the running title changes. The game\nID comes from the disc metadata, not from a debugger setting.\nref: Source/Core/Core/Boot/Boot.cpp:253-290, Source/Core/Core/ConfigManager.cpp:698-720,\n     Source/Core/Core/ConfigManager.cpp:742-754\n", "profiled_date": "2026-08-11", "source": "https://github.com/acidtech/Dolphin-MMJR", "source_commit": "1b095b64857c2eabb49a42cc56ffd9d7881bc263", "systems": ["nintendo-gamecube", "nintendo-wii"], "type": "standalone", "upstream": "https://github.com/weihuoya/dolphin", "valid_bios_crc32": {"ipl_ntsc": [{"crc32": "6DAC1F2A", "name": "NTSC v1.0"}, {"crc32": "D5E6FEEA", "name": "NTSC v1.1"}, {"crc32": "86573808", "name": "NTSC v1.2"}, {"crc32": "667D0B64", "name": "MPAL v1.1 (Brazil)"}], "ipl_pal": [{"crc32": "4F319F43", "name": "PAL v1.0"}, {"crc32": "AD1B7F16", "name": "PAL v1.2"}]}}


id: dolphin-mmjr2
name: Dolphin MMJR2
type: standalone
classification: community_fork
source: https://github.com/nachoverdon/Dolphin-MMJR2
upstream: https://github.com/dolphin-emu/dolphin
source_commit: 4d0fdb8eea616320e967408cf5547c72a95196f3
profile_json:
{"core_classification": "community_fork", "core_version": "2.0-18025", "cores": ["dolphin-mmjr2"], "display_name": "Nintendo - GameCube / Wii (Dolphin MMJR2)", "emulator": "Dolphin MMJR2", "exclusion_note": "gba_bios.bin has no reader in this build: HW/GBACore.cpp is compiled only under USE_MGBA, which the root CMakeLists forces off whenever the Qt front-end is off, and the Android branch turns Qt off. The path override is itself behind HAS_LIBMGBA. The signature database totaldb.dsy is reached only from the Qt menu bar, which the Android build does not compile. libusb is switched off for Android, so the Bluetooth passthrough firmware paths are out as well. Load/Textures, Load/Riivolution, Load/GraphicMods, the per-game inis in Sys/GameSettings, the post-processing shaders in Sys/Shaders and the per-title symbol maps under Maps/ are read by directory scan under a game id or a user-chosen name, so they carry no fixed filename. ref: CMakeLists.txt:495, CMakeLists.txt:943-945,\n     Source/Core/Core/CMakeLists.txt:652-660,\n     Source/Core/Core/HW/GBACore.cpp:202, Source/Core/UICommon/UICommon.cpp:106-110,\n     Source/Core/DolphinQt/MenuBar.cpp:1212, CMakeLists.txt:842-843\n", "files": [{"description": "GameCube boot ROM, NTSC-U directory", "hle_fallback": true, "name": "IPL.bin", "note": "Read whole into a 2 MiB buffer with no size check, then descrambled from 0x100 for 0x1afe00 bytes. The crc32 gate runs when the IPL itself is booted and only warns; the four non-PAL dumps, the Brazilian MPAL one included, pass here without complaint.", "path": "GC/USA/IPL.bin", "region": ["north-america"], "required": false, "size": 2097152, "source_ref": "Source/Core/Core/Config/MainSettings.cpp:594-600, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:105-113, Source/Core/Core/HW/EXI/EXI_DeviceIPL.h:43, Source/Core/Core/Boot/Boot.cpp:408-442, Source/Core/Core/Boot/Boot.cpp:444-449", "system": "nintendo-gamecube", "validation": ["crc32"]}, {"description": "GameCube boot ROM, PAL directory", "hle_fallback": true, "name": "IPL.bin", "note": "The two PAL dumps are the ones this directory takes without a mismatch warning.", "path": "GC/EUR/IPL.bin", "region": ["europe"], "required": false, "size": 2097152, "source_ref": "Source/Core/Core/Config/MainSettings.cpp:580-581, Source/Core/Core/Boot/Boot.cpp:444-449", "system": "nintendo-gamecube", "validation": ["crc32"]}, {"description": "GameCube boot ROM, NTSC-J directory", "hle_fallback": true, "name": "IPL.bin", "note": "JPN is defined alongside JAP but the boot ROM callers use the legacy default, so JAP is the directory read. FindIPLDump, which serves the font path, scans USA then EUR then JAP and stops at the first hit.", "path": "GC/JAP/IPL.bin", "region": ["japan"], "required": false, "size": 2097152, "source_ref": "Source/Core/Common/CommonPaths.h:34-35, Source/Core/Core/Config/MainSettings.cpp:574-575, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:175-187", "system": "nintendo-gamecube", "validation": ["crc32"]}, {"description": "Windows-1252 font, loaded at 0x1fcf00", "hle_fallback": true, "name": "font_western.bin", "note": "Read from GC/ in the Sys directory, with no user directory fallback. Skipped in favour of the IPL dump whenever one is found.", "path": null, "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:117, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:130, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:200-241"}, {"description": "Shift JIS font, loaded at 0x1aff00", "hle_fallback": true, "name": "font_japanese.bin", "note": "Read from GC/ in the Sys directory, with no user directory fallback. Skipped in favour of the IPL dump whenever one is found.", "path": null, "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:118, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:129, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:200-241"}, {"adler32_byteswap": true, "description": "DSP instruction ROM", "hle_fallback": true, "known_hash_adler32": "0x66f334fe", "name": "dsp_rom.bin", "note": "DSP LLE only, and a file that is absent or not 8192 bytes fails initialisation, which aborts the emulation thread. The adler32 is taken over the byte-swapped image and the value here is the Nintendo pair; six replacement pairs are also accepted.", "path": "GC/dsp_rom.bin", "required": false, "size": 8192, "source_ref": "Source/Core/Common/CommonPaths.h:120, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:107-120, Source/Core/Core/DSP/DSPCore.h:44, Source/Core/Core/DSP/DSPCore.cpp:28-71", "validation": ["size"]}, {"adler32_byteswap": true, "description": "DSP coefficient ROM", "hle_fallback": true, "known_hash_adler32": "0xf3b93527", "name": "dsp_coef.bin", "note": "Read by DSP LLE alongside the instruction ROM, and by the AX ucode under HLE for polyphase resampling, which drops any file that is not 0x1000 bytes and plays on without it.", "path": "GC/dsp_coef.bin", "required": false, "size": 4096, "source_ref": "Source/Core/Common/CommonPaths.h:121, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:107-120, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69, Source/Core/Core/DSP/DSPCore.h:58", "validation": ["size"]}, {"description": "Gecko code handler", "name": "codehandler.bin", "note": "Read from the root of the Sys directory when cheats are enabled, and written into guest memory between the installer bounds; too large a file is refused and cheats stay off.", "path": null, "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:139, Source/Core/Core/GeckoCode.cpp:120-134, Source/Core/Core/GeckoCode.cpp:142-144"}, {"description": "BootMii key dump, console keys and identity", "hle_fallback": true, "name": "keys.bin", "note": "Read at every key store construction, so on every Wii title. Supplies the console private key and signature, the MS and CA identifiers, the NAND key and HMAC and the backup key. A short read leaves the built-in keys in place, the structure being fixed at 0x400 bytes. NAND import writes this file from the keys appended to the image.", "path": "Wii/keys.bin", "required": false, "size": 1024, "source_ref": "Source/Core/Core/IOS/IOSC.cpp:92, Source/Core/Core/IOS/IOSC.cpp:211, Source/Core/Core/IOS/IOSC.cpp:623-649, Source/Core/DiscIO/NANDImporter.cpp:258-267", "system": "nintendo-wii", "validation": ["size"]}, {"description": "Wii system configuration", "hle_fallback": true, "name": "SYSCONF", "note": "Opened through the emulated filesystem and accepted only at 0x4000 bytes; anything else is replaced by a freshly generated one.", "path": "Wii/shared2/sys/SYSCONF", "required": false, "size": 16384, "source_ref": "Source/Core/Common/CommonPaths.h:102, Source/Core/Core/SysConf.cpp:19, Source/Core/Core/SysConf.cpp:54-65", "system": "nintendo-wii", "validation": ["size"]}, {"description": "Wii region and language settings", "hle_fallback": true, "name": "setting.txt", "note": "Read for its serial number and model at Wii boot, then written again from the emulated region settings. The read fills a fixed 0x100 byte buffer, so a shorter file yields nothing.", "path": "Wii/title/00000001/00000002/data/setting.txt", "required": false, "size": 256, "source_ref": "Source/Core/Common/CommonPaths.h:137, Source/Core/Common/SettingsHandler.h:21-26, Source/Core/Core/Boot/Boot_BS2Emu.cpp:341-353", "system": "nintendo-wii", "validation": ["size"]}, {"description": "Wii SD card image", "hle_fallback": true, "name": "WiiSD.raw", "note": "Opened read-write when the SD device is opened; a 128 MB image is created when the file is missing. The configured override is empty by default, so the file stays under Load/.", "path": "Load/WiiSD.raw", "required": false, "source_ref": "Source/Core/Common/CommonPaths.h:134, Source/Core/Common/FileUtil.cpp:998, Source/Core/Core/Config/MainSettings.cpp:289, Source/Core/Core/IOS/SDIO/SDIOSlot0.cpp:90-107", "system": "nintendo-wii"}, {"description": "console SSL client certificate", "hle_fallback": true, "name": "clientca.pem", "note": "Read from the NAND root when a title asks for the built-in client certificate, and refused when the sha256 does not match the value in the source. One panic alert per IOS instance covers this file and the key together. NAND import carves it out of the IOS13 content by its DER header.", "path": "Wii/clientca.pem", "required": false, "sha256": "229ec678525e060588e8ea23e5459ec14af3c2ebb7b9e69ec46b0faf011730d9", "source_ref": "Source/Core/Core/IOS/Network/SSL.cpp:135-138, Source/Core/Core/IOS/Network/SSL.cpp:148-181, Source/Core/Core/IOS/Network/SSL.cpp:383-390, Source/Core/DiscIO/NANDImporter.cpp:224", "system": "nintendo-wii", "validation": ["sha256"]}, {"description": "console SSL client private key", "hle_fallback": true, "name": "clientcakey.pem", "note": "Read alongside the client certificate and parsed as the private key for it; either one failing leaves the connection without a client certificate.", "path": "Wii/clientcakey.pem", "required": false, "sha256": "723be9b32c3afb83a4a3757adf352529e90c0ad6fad52509963ba8942ae625df", "source_ref": "Source/Core/Core/IOS/Network/SSL.cpp:139-142, Source/Core/Core/IOS/Network/SSL.cpp:383-395, Source/Core/DiscIO/NANDImporter.cpp:225", "system": "nintendo-wii", "validation": ["sha256"]}, {"description": "console SSL root CA certificate", "hle_fallback": true, "name": "rootca.pem", "note": "Read when a title asks for the built-in root CA, on the same sha256 check as the client pair.", "path": "Wii/rootca.pem", "required": false, "sha256": "c5b0f8dfcec6b9ed2ac38b8bc69a4db7c209dc177d243c8df2bddf9e39171e5f", "source_ref": "Source/Core/Core/IOS/Network/SSL.cpp:143-146, Source/Core/Core/IOS/Network/SSL.cpp:449-455, Source/Core/DiscIO/NANDImporter.cpp:226", "system": "nintendo-wii", "validation": ["sha256"]}, {"description": "BootMii NAND backup", "name": "nand.bin", "note": "Chosen through the app's import entry, not read from a fixed location. Accepted at the bare image size or that plus the 0x400 byte key block, and refused at any other. The pages are read 0x800 at a time with the 0x40 byte ECC block skipped. Import writes keys.bin and the three certificates, then unpacks the filesystem.", "path": null, "required": false, "size": [553648128, 553649152], "source_ref": "Source/Android/jni/WiiUtils.cpp:97-116, Source/Core/DiscIO/NANDImporter.cpp:19, Source/Core/DiscIO/NANDImporter.cpp:26-40, Source/Core/DiscIO/NANDImporter.cpp:42-72", "system": "nintendo-wii", "validation": ["size"]}, {"description": "Mii database imported into the emulated Wii Remote", "name": "mii.bin", "note": "Read from the NAND root when an emulated Wii Remote is reset, and copied into both Mii blocks of its EEPROM. Absent, the EEPROM keeps its default contents.", "path": "Wii/mii.bin", "required": false, "source_ref": "Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:156-165", "system": "nintendo-wii"}, {"description": "WiiConnect24 account configuration", "name": "nwc24msg.cfg", "note": "Read as one packed structure, so a shorter file fails the read and a default configuration is generated and written back. A file that reads is then checked for the WcCf magic, its own checksum, an id generation under 0x20 and version 8, each mismatch logged.", "path": "Wii/shared2/wc24/nwc24msg.cfg", "required": false, "size": 1024, "source_ref": "Source/Core/Core/IOS/Network/KD/NWC24Config.cpp:17, Source/Core/Core/IOS/Network/KD/NWC24Config.cpp:24-38, Source/Core/Core/IOS/Network/KD/NWC24Config.cpp:90-117, Source/Core/Core/IOS/Network/KD/NWC24Config.h:87-109", "system": "nintendo-wii", "validation": ["size"]}, {"description": "WiiConnect24 download task list", "name": "nwc24dl.bin", "note": "Read as one packed structure of a 128 byte header plus 120 records and 120 entries, so a shorter file fails the read and leaves the list empty. A file that reads is checked for the WcDl magic and version 1.", "path": "Wii/shared2/wc24/nwc24dl.bin", "required": false, "size": 63488, "source_ref": "Source/Core/Core/IOS/Network/KD/NWC24DL.cpp:16, Source/Core/Core/IOS/Network/KD/NWC24DL.cpp:23-32, Source/Core/Core/IOS/Network/KD/NWC24DL.cpp:34-50, Source/Core/Core/IOS/Network/KD/NWC24DL.h:43, Source/Core/Core/IOS/Network/KD/NWC24DL.h:111-116", "system": "nintendo-wii", "validation": ["size"]}, {"description": "WiiConnect24 friend list", "name": "nwc24fl.bin", "note": "Placed in the NAND by the Sys/Wii copy and read from there by the running title. Titles such as Mario Kart Wii expect the WiiConnect24 files to exist even on a first launch, which is why the copy happens without the system menu ever running.", "path": "Wii/shared2/wc24/nwc24fl.bin", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322, Source/Core/Core/WiiRoot.cpp:330-335", "system": "nintendo-wii"}, {"description": "WiiConnect24 friend list backup", "name": "nwc24fls.bin", "note": "Placed in the NAND by the Sys/Wii copy, which never overwrites a file the NAND already holds.", "path": "Wii/shared2/wc24/nwc24fls.bin", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322, Source/Core/Core/WiiRoot.cpp:334", "system": "nintendo-wii"}, {"description": "WiiConnect24 account configuration backup", "name": "nwc24msg.cbk", "note": "Placed in the NAND by the Sys/Wii copy, which never overwrites a file the NAND already holds.", "path": "Wii/shared2/wc24/nwc24msg.cbk", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322, Source/Core/Core/WiiRoot.cpp:334", "system": "nintendo-wii"}, {"description": "WiiConnect24 miscellaneous state", "name": "misc.bin", "note": "Placed in the NAND by the Sys/Wii copy. The time device carries a note about writing it but no code path does.", "path": "Wii/shared2/wc24/misc.bin", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322, Source/Core/Core/IOS/Network/KD/NetKDTime.cpp:34", "system": "nintendo-wii"}, {"description": "WiiConnect24 receive mailbox index", "name": "wc24recv.ctl", "note": "Placed in the NAND by the Sys/Wii copy, which recurses into mbox and never overwrites a file the NAND already holds.", "path": "Wii/shared2/wc24/mbox/wc24recv.ctl", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322", "system": "nintendo-wii"}, {"description": "WiiConnect24 receive mailbox", "name": "wc24recv.mbx", "note": "Placed in the NAND by the Sys/Wii copy. The bundled file is a stub; the note shipped beside it gives 0x700000 as the size on a console.", "path": "Wii/shared2/wc24/mbox/wc24recv.mbx", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322, Data/Sys/Wii/shared2/wc24/mbox/Readme.txt", "system": "nintendo-wii"}, {"description": "WiiConnect24 send mailbox index", "name": "wc24send.ctl", "note": "Placed in the NAND by the Sys/Wii copy, which recurses into mbox and never overwrites a file the NAND already holds.", "path": "Wii/shared2/wc24/mbox/wc24send.ctl", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322", "system": "nintendo-wii"}, {"description": "WiiConnect24 send mailbox", "name": "wc24send.mbx", "note": "Placed in the NAND by the Sys/Wii copy. The bundled file is a stub; the note shipped beside it gives 0x200000 as the size on a console.", "path": "Wii/shared2/wc24/mbox/wc24send.mbx", "required": false, "source_ref": "Source/Core/Core/WiiRoot.cpp:288-322, Data/Sys/Wii/shared2/wc24/mbox/Readme.txt", "system": "nintendo-wii"}, {"description": "note on the truncated mailboxes, copied into the NAND", "name": "Readme.txt", "note": "The Sys/Wii copy walks the directory and takes every entry, so this file lands in the NAND with the mailboxes. It records the console sizes of the two mbx files. The hash names the file carried in the source tree, the only form it has, and is not a check the code performs; without it the name alone matches any readme.", "path": "Wii/shared2/wc24/mbox/Readme.txt", "required": false, "sha256": "e5a888912968050c6c1d46d1c364c324684e1d15aaa62cfe36cf7fce2c687b21", "size": 103, "source_ref": "Source/Core/Core/WiiRoot.cpp:291-319, Data/Sys/Wii/shared2/wc24/mbox/Readme.txt", "system": "nintendo-wii"}, {"aliases": ["titles.txt"], "description": "user title database", "name": "wiitdb.txt", "note": "One title id equals name pair per line, ids of four characters and up. titles.txt is read only when wiitdb.txt yields nothing. Overlays the per-language databases shipped in the Sys directory, which cover ten languages; the Portuguese and Russian files also present there are never registered.", "path": "Load/wiitdb.txt", "required": false, "source_ref": "Source/Core/Core/TitleDatabase.cpp:29-51, Source/Core/Core/TitleDatabase.cpp:54-58, Source/Core/Core/TitleDatabase.cpp:63-79"}, {"description": "MIOS symbol map", "name": "mios-ipl.map", "note": "Read from Maps/ in the user directory when MIOS starts, and a successful load re-applies the HLE function patches against the symbols it names.", "path": "Maps/mios-ipl.map", "required": false, "source_ref": "Source/Core/Core/IOS/MIOS.cpp:67-72"}], "mode": "standalone", "notes": "Android-only Dolphin fork published as the org.dolphinemu.mmjr package. The\nrepositories it was developed and released from are gone; this reading is\ntaken from a surviving copy carrying the whole maintainer commit line, up to\nthe last one, which sets the version string to 2.0-18025. The tree is a\nselective merge of Dolphin Official carrying that label rather than a\ncheckout of it: at Dolphin 5.0-18025 the memory subsystem has already moved\nbehind Core::System, and here it has not, so no single Dolphin revision\nmatches and no upstream pin is declared.\nref: Source/Android/app/build.gradle:32, Source/Android/app/build.gradle:135\n\nTwo roots. The user directory is mmjr-revamp at the root of external storage.\nThe Sys directory is extracted from the APK assets into the app's internal\nfiles directory, and a change of git revision deletes it and extracts it\nagain, so nothing placed there survives an update. The build drops Resources\nand Themes from the assets copy. Paths below are relative to the user\ndirectory; entries with no path are read only from the Sys directory and name\ntheir location in their note.\nref: Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java:103,\n     Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java:138-155,\n     Source/Core/Common/CommonPaths.h:23, Source/Android/jni/CMakeLists.txt:37-42\n\nThe GameCube boot ROM is looked up as GC/<REGION>/IPL.bin, in the user\ndirectory first and the Sys directory second. The region directory is USA for\nNTSC-U, EUR for PAL and JAP for NTSC-J: JPN also exists but only the memory\ncard folder path asks for it, every other caller takes the legacy default.\nBooting the IPL itself hashes the whole file with crc32 and warns on an\nunknown dump, then warns again when the dump and the boot region disagree on\nPAL. SkipIPL defaults to true, so games start without it.\nref: Source/Core/Common/CommonPaths.h:34-35,\n     Source/Core/Core/Config/MainSettings.cpp:567-592,\n     Source/Core/Core/Config/MainSettings.cpp:594-600,\n     Source/Core/Core/Config/MainSettings.cpp:675-723,\n     Source/Core/Core/Boot/Boot.cpp:323-327, Source/Core/Core/Boot/Boot.cpp:408-442,\n     Source/Core/Core/Boot/Boot.cpp:444-449,\n     Source/Core/Core/Config/MainSettings.cpp:35\n\nFonts follow the IPL. When a dump is present the Shift JIS and Windows-1252\nfonts are read out of it at offsets 0x1aff00 and 0x1fcf00, for 0x4a24d and\n0x2575 bytes; otherwise the standalone font files are loaded whole, and the\nbundled ones have different padding from the console fonts.\nref: Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:102-131,\n     Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:175-187,\n     Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:200-241\n\nDSP HLE is the default and reads dsp_coef.bin alone, for polyphase resampling\ncoefficients, skipping any file that is not 0x1000 bytes. DSP LLE, reached by\nsetting DSPHLE to False, loads both ROMs from GC/ in the user directory then\nSys/GC/, rejects either at the wrong size, and a rejection aborts the\nemulation thread. Both are byte-swapped into memory and the pair is then\nhashed with adler32 against seven known combinations.\nref: Source/Core/Core/Config/MainSettings.cpp:40,\n     Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105,\n     Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:107-120,\n     Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69,\n     Source/Core/Core/DSP/DSPCore.cpp:28-71, Source/Core/Core/Core.cpp:556-559\n\nWii emulation reads keys.bin from the NAND root every time the key store is\nbuilt, and keeps the built-in keys when it is absent. SYSCONF is read through\nthe emulated filesystem and rebuilt unless it is exactly 0x4000 bytes, and\nsetting.txt is read for its serial number then written again from the\nemulated region settings. A missing SD card image is created at 128 MB. The\nthree SSL files are hashed with sha256 against values held in the source and\nrefused on a mismatch, once per session.\nref: Source/Core/Core/IOS/IOSC.cpp:211, Source/Core/Core/IOS/IOSC.cpp:623-649,\n     Source/Core/Core/SysConf.cpp:19, Source/Core/Core/SysConf.cpp:54-65,\n     Source/Core/Core/Boot/Boot_BS2Emu.cpp:341-352,\n     Source/Core/Core/IOS/SDIO/SDIOSlot0.cpp:90-107,\n     Source/Core/Core/IOS/Network/SSL.cpp:135-181\n\nThe WiiConnect24 tree is copied out of Sys/Wii into the NAND at every Wii\nboot, one file at a time, and a file already present in the NAND is left\nalone. Copies placed under Wii/shared2/wc24 are therefore the ones that\nsurvive, and the shipped blanks only fill what is still missing. Dolphin\nitself reads nwc24msg.cfg and nwc24dl.bin back out of the NAND; the rest are\nthere because titles expect them.\nref: Source/Core/Core/WiiRoot.cpp:288-322, Source/Core/Core/WiiRoot.cpp:330-335,\n     Source/Core/Core/IOS/Network/KD/NWC24Config.cpp:24-38,\n     Source/Core/Core/IOS/Network/KD/NWC24DL.cpp:23-32\n\nNAND import is compiled into the Android build and wired to both launchers. A\nBootMii image writes keys.bin and the three certificates into the NAND root,\nthe certificates being carved out of the IOS13 content by searching for their\nDER headers. The keys have to be appended to the image: the callback that\nwould ask for a separate OTP dump answers with an empty path here.\nref: Source/Android/jni/WiiUtils.cpp:97-116,\n     Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java:240,\n     Source/Core/DiscIO/NANDImporter.cpp:26-40,\n     Source/Core/DiscIO/NANDImporter.cpp:189-256,\n     Source/Core/DiscIO/NANDImporter.cpp:258-267\n\nEvery boot looks for a symbol map named after the running game ID, in Maps/\nin the user directory alone, and reloads it whenever the running title\nchanges. The game ID comes from the disc or TMD metadata, not from a debugger\nsetting. No map ships with the build.\nref: Source/Core/Core/Boot/Boot.cpp:373-399,\n     Source/Core/Core/ConfigManager.cpp:153-162,\n     Source/Core/Core/ConfigManager.cpp:189-199\n", "profiled_date": "2026-08-11", "source": "https://github.com/nachoverdon/Dolphin-MMJR2", "source_commit": "4d0fdb8eea616320e967408cf5547c72a95196f3", "systems": ["nintendo-gamecube", "nintendo-wii"], "type": "standalone", "upstream": "https://github.com/dolphin-emu/dolphin", "valid_bios_crc32": {"ipl_ntsc": [{"crc32": "6DAC1F2A", "name": "NTSC v1.0"}, {"crc32": "D5E6FEEA", "name": "NTSC v1.1"}, {"crc32": "86573808", "name": "NTSC v1.2"}, {"crc32": "667D0B64", "name": "MPAL v1.1 (Brazil)"}], "ipl_pal": [{"crc32": "4F319F43", "name": "PAL v1.0"}, {"crc32": "AD1B7F16", "name": "PAL v1.2"}]}}


id: dolphin_launcher
name: Dolphin Launcher
type: launcher
classification: launcher
source: https://github.com/RobLoach/libretro-dolphin-launcher
upstream: https://github.com/dolphin-emu/dolphin
source_commit: 6d72f3093d33461821e4f7fde6d3308187e644b9
profile_json:
{"core_classification": "launcher", "core_version": "1.2.0", "cores": ["dolphin_launcher"], "display_name": "Nintendo - GameCube / Wii (Dolphin Launcher)", "emulator": "Dolphin Launcher", "exclusion_note": "stub core calls standalone Dolphin — all BIOS in Dolphin's own directory", "files": [], "notes": "Launcher stub that passes games to standalone Dolphin via system() calls.\nTries dolphin-emu-nogui, falls back to dolphin-emu, then Flatpak\norg.DolphinEmu.dolphin-emu. Waits for Dolphin to exit, then signals\nRETRO_ENVIRONMENT_SHUTDOWN. Requires Dolphin installed on the host.\nAll BIOS/firmware files are managed by the standalone Dolphin install.\n", "profiled_date": "2026-03-23", "source": "https://github.com/RobLoach/libretro-dolphin-launcher", "source_commit": "6d72f3093d33461821e4f7fde6d3308187e644b9", "systems": ["nintendo-gamecube", "nintendo-wii"], "type": "launcher", "upstream": "https://github.com/dolphin-emu/dolphin"}


id: dosbox
name: DOSBox
type: libretro
classification: community_fork
source: https://github.com/libretro/dosbox-libretro
upstream: https://sourceforge.net/projects/dosbox/
source_commit: 4024bf0048c261db58ef98cb5e16de291c429f4e
profile_json:
{"core_classification": "community_fork", "core_version": "0.74", "cores": ["dosbox"], "display_name": "DOS (DOSBox)", "emulator": "DOSBox", "files": [{"description": "MT-32 Control v1.04", "hle_fallback": true, "mode": "libretro", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5a5cb5a77d7d55ee69657c2f870416daed52dea7", "size": 65536, "source_ref": "src/midi/midi_mt32.h:92, src/midi/munt/ROMInfo.cpp:30", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.05", "hle_fallback": true, "mode": "libretro", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "e17a3a6d265bf1fa150312061134293d2b58288c", "size": 65536, "source_ref": "src/midi/midi_mt32.h:92, src/midi/munt/ROMInfo.cpp:31", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.06", "hle_fallback": true, "mode": "libretro", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "a553481f4e2794c10cfe597fef154eef0d8257de", "size": 65536, "source_ref": "src/midi/midi_mt32.h:92, src/midi/munt/ROMInfo.cpp:32", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.07", "hle_fallback": true, "mode": "libretro", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987", "size": 65536, "source_ref": "src/midi/midi_mt32.h:92, src/midi/munt/ROMInfo.cpp:33", "validation": ["sha1", "size"]}, {"description": "MT-32 Control BlueRidge", "hle_fallback": true, "mode": "libretro", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92", "size": 65536, "source_ref": "src/midi/midi_mt32.h:92, src/midi/munt/ROMInfo.cpp:34", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.00", "hle_fallback": true, "mode": "libretro", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "73683d585cd6948cc19547942ca0e14a0319456d", "size": 65536, "source_ref": "src/midi/midi_mt32.h:92, src/midi/munt/ROMInfo.cpp:36", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.02", "hle_fallback": true, "mode": "libretro", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8", "size": 65536, "source_ref": "src/midi/midi_mt32.h:92, src/midi/munt/ROMInfo.cpp:37", "validation": ["sha1", "size"]}, {"description": "MT-32 PCM ROM", "hle_fallback": true, "mode": "libretro", "name": "MT32_PCM.ROM", "required": false, "sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252", "size": 524288, "source_ref": "src/midi/midi_mt32.h:99, src/midi/munt/ROMInfo.cpp:39", "validation": ["sha1", "size"]}, {"description": "CM-32L/CM-64/LAPC-I PCM ROM", "hle_fallback": true, "mode": "libretro", "name": "MT32_PCM.ROM", "required": false, "sha1": "289cc298ad532b702461bfc738009d9ebe8025ea", "size": 1048576, "source_ref": "src/midi/midi_mt32.h:99, src/midi/munt/ROMInfo.cpp:40", "validation": ["sha1", "size"]}], "notes": "Based on DOSBox 0.74 snapshot. MUNT MT-32 emulation added by libretro port.\nUpstream DOSBox 0.74 has no MUNT — only OS-level MIDI (ALSA, CoreMIDI, Win32).\nHardware MIDI drivers removed, replaced with retro_midi_interface passthrough.\nMT-32 activated via mididevice=mt32 in dosbox config section [midi].\nOlder MUNT version: no MT-32 v2.x ROMs, no CM-32LN support.\nBoth ROMs loaded by fixed filename from system directory root.\nref: midi_mt32.h:82-106\nKeyboard layouts and codepages embedded in binary.\nref: dos_keyboard_layout_data.h, dos_codepages.h\n.info declares firmware_count=0 but code loads 2 files (MUNT ROMs).\ndosbox-libretro.conf optional config searched in system_directory/DOSbox/.\nref: libretro.cpp:751\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/dosbox-libretro", "source_commit": "4024bf0048c261db58ef98cb5e16de291c429f4e", "systems": ["dos"], "type": "libretro", "upstream": "https://sourceforge.net/projects/dosbox/"}


id: dosbox-pure-unleashed
name: DOSBox Pure Unleashed
type: standalone
classification: official_port
source: https://github.com/schellingb/dosbox-pure-unleashed
upstream: https://github.com/schellingb/dosbox-pure
source_commit: 4a11412248ca4c862751a7d9e6818023795031e9
profile_json:
{"core_classification": "official_port", "core_version": "1.0-preview6", "cores": ["dosbox-pure-unleashed", "dosboxpure"], "display_name": "DOS (DOSBox Pure Unleashed)", "emulator": "DOSBox Pure Unleashed", "files": [{"description": "MT-32 Control v1.04", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5a5cb5a77d7d55ee69657c2f870416daed52dea7", "size": 65536, "source_ref": "src/gui/mt32emu.h:5112, src/gui/mt32emu.h:5129", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.05", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "e17a3a6d265bf1fa150312061134293d2b58288c", "size": 65536, "source_ref": "src/gui/mt32emu.h:5113, src/gui/mt32emu.h:5130", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.06", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "a553481f4e2794c10cfe597fef154eef0d8257de", "size": 65536, "source_ref": "src/gui/mt32emu.h:5114, src/gui/mt32emu.h:5131", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.07", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987", "size": 65536, "source_ref": "src/gui/mt32emu.h:5115, src/gui/mt32emu.h:5132", "validation": ["sha1", "size"]}, {"description": "MT-32 Control BlueRidge", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92", "size": 65536, "source_ref": "src/gui/mt32emu.h:5116, src/gui/mt32emu.h:5133", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.03", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5837064c9df4741a55f7c4d8787ac158dff2d3ce", "size": 131072, "source_ref": "src/gui/mt32emu.h:5118, src/gui/mt32emu.h:5135", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.04", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2c16432b6c73dd2a3947cba950a0f4c19d6180eb", "size": 131072, "source_ref": "src/gui/mt32emu.h:5119, src/gui/mt32emu.h:5136", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.06", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2869cf4c235d671668cfcb62415e2ce8323ad4ed", "size": 131072, "source_ref": "src/gui/mt32emu.h:5120, src/gui/mt32emu.h:5137", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.07", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "47b52adefedaec475c925e54340e37673c11707c", "size": 131072, "source_ref": "src/gui/mt32emu.h:5121, src/gui/mt32emu.h:5138", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.00", "hle_fallback": true, "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "73683d585cd6948cc19547942ca0e14a0319456d", "size": 65536, "source_ref": "src/gui/mt32emu.h:5122, src/gui/mt32emu.h:5139", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.02", "hle_fallback": true, "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8", "size": 65536, "source_ref": "src/gui/mt32emu.h:5123, src/gui/mt32emu.h:5140", "validation": ["sha1", "size"]}, {"description": "CM-32LN/CM-500/LAPC-N Control v1.00", "hle_fallback": true, "name": "CM32LN_CONTROL.ROM", "required": false, "sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077", "size": 65536, "source_ref": "src/gui/mt32emu.h:5124, src/gui/mt32emu.h:5141", "validation": ["sha1", "size"]}, {"description": "MT-32 PCM ROM", "hle_fallback": true, "name": "MT32_PCM.ROM", "note": "accepted by every MT-32 control ROM, v1.x and v2.x (pcmCount 128)", "required": false, "sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252", "size": 524288, "source_ref": "src/gui/mt32emu.h:5126, src/gui/mt32emu.h:5143", "validation": ["sha1", "size"]}, {"aliases": ["CM32LN_PCM.ROM"], "description": "CM-32L/CM-64/LAPC-I PCM ROM", "hle_fallback": true, "name": "CM32L_PCM.ROM", "note": "accepted by the CM-32L and CM-32LN control ROMs (pcmCount 256). The alias covers the name derived from CM32LN_CONTROL.ROM.\n", "required": false, "sha1": "289cc298ad532b702461bfc738009d9ebe8025ea", "size": 1048576, "source_ref": "src/gui/mt32emu.h:5127, src/gui/mt32emu.h:5144", "validation": ["sha1", "size"]}, {"description": "General MIDI SoundFont (any .sf2/.sf3 accepted)", "hle_fallback": true, "name": "DOSBOX.SF2", "note": "Any .SF2 or .SF3 in the system directory is listed in the MIDI option. DOSBOX.SF2 is the fixed name looked up on the mounted C: drive as a per game override.\n", "required": false, "source_ref": "dosbox_pure_libretro.cpp:1407,2805"}], "logo": "https://raw.githubusercontent.com/schellingb/dosbox-pure-unleashed/main/images/logo.png", "mode": "standalone", "notes": "Desktop build of DOSBox Pure by the same author. The repository holds only\nthe platform layer (main.cpp, vfs_implementation.cpp) and compiles the\nemulation core from a sibling checkout of schellingb/dosbox-pure with\n-D__LIBRETRO__ -DDBP_STANDALONE, using ZillaLib for video, input and audio.\nref: Makefile:7,9-14,34\n\nNo BIOS. Windows 3.x and 9x run as guest operating systems installed into\nthe emulated DOS machine, not as separate emulated hardware.\n\nSystem directory: the program keeps DOSBoxPure.cfg in a base directory and\ncreates saves and system folders next to it. Base directory is\n%APPDATA%\\DOSBoxPure on Windows when the user creates that folder, else the\ndirectory of the executable; $HOME/.config/DOSBoxPure on Linux and\n$HOME/Library/Application Support/DOSBoxPure on macOS, else the working\ndirectory. The system folder can be redirected with the path_system key in\nDOSBoxPure.cfg. It is returned to the core as RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.\nref: main.cpp:1985-2045,973-974\n\nSystem directory scan (recursive, DBP_ScanSystem):\n  *.SF2 and *.SF3 listed as General MIDI SoundFonts, any file whose last\n  four characters are \".SF\" plus one.\n  *_CONTROL.ROM listed as Roland MT-32/CM-32L control ROMs.\n  ref: dosbox_pure_libretro.cpp:1380-1412\n  Both feed the Audio > MIDI SoundFont option, prefixed with the system\n  directory path at apply time.\n  ref: dosbox_pure_libretro.cpp:2495\n  With no MIDI file selected, mpu401 is set to none and games fall back to\n  their OPL or Sound Blaster music driver. A General MIDI over OPL\n  synthesizer is built in and opens on midiconfig=adlib.\n  ref: dosbox_pure_libretro.cpp:2497, midi_opl.h:46-49\n\nMT-32 pairing: the PCM ROM is not scanned. Its name is derived from the\ncontrol ROM path by replacing CONTROL with PCM, preserving the case of both\nletters, so MT32_CONTROL.ROM resolves MT32_PCM.ROM. Open fails unless both\nare found.\nref: midi_mt32.h:182-201,194-195\nZIP archives are accepted and picked by size instead of name: 65536 or\n131072 for control, 524288 or 1048576 for PCM.\nref: midi_mt32.h:163\nBundled MUNT (header-only mt32emu.h) validates size and SHA1 against a\n14 entry table and rejects anything else, failing Synth::open.\nref: mt32emu.h:5185,2979-2989,3013-3020\nEach control ROM fixes the PCM size it accepts through its pcmCount: 128\nrequires the 524288 byte MT-32 PCM ROM, 256 requires the 1048576 byte\nCM-32L PCM ROM. The MT-32 v2.x control ROMs carry pcmCount 128 and so pair\nwith the MT-32 PCM ROM.\nref: mt32emu.h:2586-2598,3167,3024-3029\n\nSoundFonts are parsed by TinySoundFont with no size or hash check. SF3 ogg\ncompressed samples decode through the bundled stb_vorbis.\nref: midi_tsf.h:22,65,96-105\n\nPer game override: a DOSBOX.SF2, or an MT32_PCM.ROM together with an\nMT32_CONTROL.ROM, found on the mounted C: drive replaces the option value\nand is marked fixed. The control ROM is matched through its 8.3 forms\nMT32TROL.ROM inside ZIPs and MT32_C~1.ROM on local file systems.\nref: dosbox_pure_libretro.cpp:2803-2813\nMIDI ZIPs are looked up in the content directory before the system directory.\nref: dosbox_pure_libretro.cpp:906-914\n\nKeyboard layouts and codepages are compiled in, external keyboard.sys,\nkeybrd2.sys, keybrd3.sys and EGA*.CPI loading is disabled.\nref: include/config.h:58, dos_keyboard_layout.cpp:729-819\n\nOther system directory entries carry no fixed identity and are not listed\nas files. Hard disk images (*.IMG, *.IMA, *.VHD of at least 7 MB and a\nmultiple of 512 bytes) are created by the Install New Operating System\nfeature and booted as C:. *.DOSZ archives are shells the user assembles,\nunderlaid below C: and started through WINDOWS.BAT, AUTOEXEC.BAT or\nWINDOWS\\WIN.COM. DOSBoxPureMidiCache.txt is written by the emulator when a\nscan exceeds two seconds and read back to skip later scans.\nref: dosbox_pure_libretro.cpp:1413-1424,1425-1446,1452-1466,\n     dosbox_pure_run.h:187-210,289-297\n", "profiled_date": "2026-08-08", "source": "https://github.com/schellingb/dosbox-pure-unleashed", "source_commit": "4a11412248ca4c862751a7d9e6818023795031e9", "systems": ["dos"], "type": "standalone", "upstream": "https://github.com/schellingb/dosbox-pure", "upstream_commit": "7f6e8fb7385fa446d1444d671063268520bf9b54", "verification": "sha1"}


id: dosbox-staging
name: DOSBox Staging
type: standalone
classification: enhanced_fork
source: https://github.com/dosbox-staging/dosbox-staging
upstream: https://github.com/dosbox-staging/dosbox-staging
source_commit: cd81dcbc72773a4bd559b305c8b6ad3196cd09dc
profile_json:
{"core_classification": "enhanced_fork", "core_version": "0.84.0-alpha", "cores": ["dosbox-staging", "dosbox_staging"], "display_name": "DOS (DOSBox Staging)", "emulator": "DOSBox Staging", "files": [{"description": "MT-32 Control v1.04", "name": "ctrl_mt32_1_04.rom", "path": "mt32-roms/ctrl_mt32_1_04.rom", "required": false, "sha1": "5a5cb5a77d7d55ee69657c2f870416daed52dea7", "size": 65536, "source_ref": "src/midi/mt32.cpp:110, src/midi/mt32.cpp:154-160, munt ROMInfo.cpp:59, munt ROMInfo.cpp:89", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.05", "name": "ctrl_mt32_1_05.rom", "path": "mt32-roms/ctrl_mt32_1_05.rom", "required": false, "sha1": "e17a3a6d265bf1fa150312061134293d2b58288c", "size": 65536, "source_ref": "src/midi/mt32.cpp:114, src/midi/mt32.cpp:162-168, munt ROMInfo.cpp:62, munt ROMInfo.cpp:92", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.06", "name": "ctrl_mt32_1_06.rom", "path": "mt32-roms/ctrl_mt32_1_06.rom", "required": false, "sha1": "a553481f4e2794c10cfe597fef154eef0d8257de", "size": 65536, "source_ref": "src/midi/mt32.cpp:118, src/midi/mt32.cpp:170-176, munt ROMInfo.cpp:65, munt ROMInfo.cpp:95", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.07", "name": "ctrl_mt32_1_07.rom", "path": "mt32-roms/ctrl_mt32_1_07.rom", "required": false, "sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987", "size": 65536, "source_ref": "src/midi/mt32.cpp:122, src/midi/mt32.cpp:178-184, munt ROMInfo.cpp:68, munt ROMInfo.cpp:98", "validation": ["sha1", "size"]}, {"description": "MT-32 Control BlueRidge", "name": "ctrl_mt32_bluer.rom", "path": "mt32-roms/ctrl_mt32_bluer.rom", "required": false, "sha1": "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92", "size": 65536, "source_ref": "src/midi/mt32.cpp:126, src/midi/mt32.cpp:186-192, munt ROMInfo.cpp:71, munt ROMInfo.cpp:101", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.03", "name": "ctrl_mt32_2_03.rom", "path": "mt32-roms/ctrl_mt32_2_03.rom", "required": false, "sha1": "5837064c9df4741a55f7c4d8787ac158dff2d3ce", "size": 131072, "source_ref": "src/midi/mt32.cpp:130, src/midi/mt32.cpp:194-200, munt ROMInfo.cpp:73, munt ROMInfo.cpp:103", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.04", "name": "ctrl_mt32_2_04.rom", "path": "mt32-roms/ctrl_mt32_2_04.rom", "required": false, "sha1": "2c16432b6c73dd2a3947cba950a0f4c19d6180eb", "size": 131072, "source_ref": "src/midi/mt32.cpp:132, src/midi/mt32.cpp:202-208, munt ROMInfo.cpp:74, munt ROMInfo.cpp:104", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.06", "name": "ctrl_mt32_2_06.rom", "path": "mt32-roms/ctrl_mt32_2_06.rom", "required": false, "sha1": "2869cf4c235d671668cfcb62415e2ce8323ad4ed", "size": 131072, "source_ref": "src/midi/mt32.cpp:134, src/midi/mt32.cpp:210-216, munt ROMInfo.cpp:75, munt ROMInfo.cpp:105", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.07", "name": "ctrl_mt32_2_07.rom", "path": "mt32-roms/ctrl_mt32_2_07.rom", "required": false, "sha1": "47b52adefedaec475c925e54340e37673c11707c", "size": 131072, "source_ref": "src/midi/mt32.cpp:136, src/midi/mt32.cpp:218-224, munt ROMInfo.cpp:76, munt ROMInfo.cpp:106", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.00", "name": "ctrl_cm32l_1_00.rom", "path": "mt32-roms/ctrl_cm32l_1_00.rom", "required": false, "sha1": "73683d585cd6948cc19547942ca0e14a0319456d", "size": 65536, "source_ref": "src/midi/mt32.cpp:143, src/midi/mt32.cpp:226-232, munt ROMInfo.cpp:77, munt ROMInfo.cpp:107", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.02", "name": "ctrl_cm32l_1_02.rom", "path": "mt32-roms/ctrl_cm32l_1_02.rom", "required": false, "sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8", "size": 65536, "source_ref": "src/midi/mt32.cpp:144, src/midi/mt32.cpp:234-240, munt ROMInfo.cpp:78, munt ROMInfo.cpp:108", "validation": ["sha1", "size"]}, {"description": "CM-32LN/CM-500/LAPC-N Control v1.00", "name": "ctrl_cm32ln_1_00.rom", "path": "mt32-roms/ctrl_cm32ln_1_00.rom", "required": false, "sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077", "size": 65536, "source_ref": "src/midi/mt32.cpp:145, src/midi/mt32.cpp:242-248, munt ROMInfo.cpp:79, munt ROMInfo.cpp:109", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.04, even bytes", "name": "ctrl_mt32_1_04_a.rom", "path": "mt32-roms/ctrl_mt32_1_04_a.rom", "required": false, "sha1": "9cd4858014c4e8a9dff96053f784bfaac1092a2e", "size": 32768, "source_ref": "src/midi/mt32.cpp:111, src/midi/mt32.cpp:154-160, munt ROMInfo.cpp:57, munt ROMInfo.cpp:87", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.04, odd bytes", "name": "ctrl_mt32_1_04_b.rom", "path": "mt32-roms/ctrl_mt32_1_04_b.rom", "required": false, "sha1": "fe8db469b5bfeb37edb269fd47e3ce6d91014652", "size": 32768, "source_ref": "src/midi/mt32.cpp:112, src/midi/mt32.cpp:154-160, munt ROMInfo.cpp:58, munt ROMInfo.cpp:88", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.05, even bytes", "name": "ctrl_mt32_1_05_a.rom", "path": "mt32-roms/ctrl_mt32_1_05_a.rom", "required": false, "sha1": "57a09d80d2f7ca5b9734edbe9645e6e700f83701", "size": 32768, "source_ref": "src/midi/mt32.cpp:115, src/midi/mt32.cpp:162-168, munt ROMInfo.cpp:60, munt ROMInfo.cpp:90", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.05, odd bytes", "name": "ctrl_mt32_1_05_b.rom", "path": "mt32-roms/ctrl_mt32_1_05_b.rom", "required": false, "sha1": "52e3c6666db9ef962591a8ee99be0cde17f3a6b6", "size": 32768, "source_ref": "src/midi/mt32.cpp:116, src/midi/mt32.cpp:162-168, munt ROMInfo.cpp:61, munt ROMInfo.cpp:91", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.06, even bytes", "name": "ctrl_mt32_1_06_a.rom", "path": "mt32-roms/ctrl_mt32_1_06_a.rom", "required": false, "sha1": "cc83bf23cee533097fb4c7e2c116e43b50ebacc8", "size": 32768, "source_ref": "src/midi/mt32.cpp:119, src/midi/mt32.cpp:170-176, munt ROMInfo.cpp:63, munt ROMInfo.cpp:93", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.06, odd bytes", "name": "ctrl_mt32_1_06_b.rom", "path": "mt32-roms/ctrl_mt32_1_06_b.rom", "required": false, "sha1": "bf4f15666bc46679579498386704893b630c1171", "size": 32768, "source_ref": "src/midi/mt32.cpp:120, src/midi/mt32.cpp:170-176, munt ROMInfo.cpp:64, munt ROMInfo.cpp:94", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.07, even bytes", "name": "ctrl_mt32_1_07_a.rom", "path": "mt32-roms/ctrl_mt32_1_07_a.rom", "required": false, "sha1": "13f06b38f0d9e0fc050b6503ab777bb938603260", "size": 32768, "source_ref": "src/midi/mt32.cpp:123, src/midi/mt32.cpp:178-184, munt ROMInfo.cpp:66, munt ROMInfo.cpp:96", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.07, odd bytes", "name": "ctrl_mt32_1_07_b.rom", "path": "mt32-roms/ctrl_mt32_1_07_b.rom", "required": false, "sha1": "c55e165487d71fa88bd8c5e9c083bc456c1a89aa", "size": 32768, "source_ref": "src/midi/mt32.cpp:124, src/midi/mt32.cpp:178-184, munt ROMInfo.cpp:67, munt ROMInfo.cpp:97", "validation": ["sha1", "size"]}, {"description": "MT-32 Control BlueRidge, even bytes", "name": "ctrl_mt32_bluer_a.rom", "path": "mt32-roms/ctrl_mt32_bluer_a.rom", "required": false, "sha1": "11a6ae5d8b6ee328b371af7f1e40b82125aa6b4d", "size": 32768, "source_ref": "src/midi/mt32.cpp:127, src/midi/mt32.cpp:186-192, munt ROMInfo.cpp:69, munt ROMInfo.cpp:99", "validation": ["sha1", "size"]}, {"description": "MT-32 Control BlueRidge, odd bytes", "name": "ctrl_mt32_bluer_b.rom", "path": "mt32-roms/ctrl_mt32_bluer_b.rom", "required": false, "sha1": "e0934320d7cbb5edfaa29e0d01ae835ef620085b", "size": 32768, "source_ref": "src/midi/mt32.cpp:128, src/midi/mt32.cpp:186-192, munt ROMInfo.cpp:70, munt ROMInfo.cpp:100", "validation": ["sha1", "size"]}, {"description": "MT-32 PCM ROM", "name": "pcm_mt32.rom", "note": "also serves as the first half of the CM-32L PCM ROM, paired with pcm_cm32l_h.rom\n", "path": "mt32-roms/pcm_mt32.rom", "required": false, "sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252", "size": 524288, "source_ref": "src/midi/mt32.cpp:138, src/midi/mt32.cpp:151, munt ROMInfo.cpp:83, munt ROMInfo.cpp:113, munt ROMInfo.cpp:115", "validation": ["sha1", "size"]}, {"description": "MT-32 PCM ROM, first half", "name": "pcm_mt32_l.rom", "path": "mt32-roms/pcm_mt32_l.rom", "required": false, "sha1": "3a1e19b0cd4036623fd1d1d11f5f25995585962b", "size": 262144, "source_ref": "src/midi/mt32.cpp:139, munt ROMInfo.cpp:81, munt ROMInfo.cpp:111", "validation": ["sha1", "size"]}, {"description": "MT-32 PCM ROM, second half", "name": "pcm_mt32_h.rom", "path": "mt32-roms/pcm_mt32_h.rom", "required": false, "sha1": "2cadb99d21a6a4a6f5b61b6218d16e9b43f61d01", "size": 262144, "source_ref": "src/midi/mt32.cpp:140, munt ROMInfo.cpp:82, munt ROMInfo.cpp:112", "validation": ["sha1", "size"]}, {"description": "CM-32L/CM-64/LAPC-I PCM ROM", "name": "pcm_cm32l.rom", "path": "mt32-roms/pcm_cm32l.rom", "required": false, "sha1": "289cc298ad532b702461bfc738009d9ebe8025ea", "size": 1048576, "source_ref": "src/midi/mt32.cpp:147, src/midi/mt32.cpp:226-248, munt ROMInfo.cpp:85, munt ROMInfo.cpp:117", "validation": ["sha1", "size"]}, {"description": "CM-32L/CM-64/LAPC-I PCM ROM, second half", "name": "pcm_cm32l_h.rom", "path": "mt32-roms/pcm_cm32l_h.rom", "required": false, "sha1": "3ad889fde5db5b6437cbc2eb6e305312fec3df93", "size": 524288, "source_ref": "src/midi/mt32.cpp:148, munt ROMInfo.cpp:84, munt ROMInfo.cpp:116", "validation": ["sha1", "size"]}, {"description": "SC-55 wave ROM A (R15209276)", "max_size": 2097152, "name": "sc55_waverom1.bin", "path": "soundcanvas-roms/SC-55-v1.21/sc55_waverom1.bin", "required": false, "sha256": "5655509a531804f97ea2d7ef05b8fec20ebf46216b389a84c44169257a4d2007", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:340, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:83", "validation": ["sha256", "size"]}, {"description": "SC-55 wave ROM B (R15209277)", "max_size": 2097152, "name": "sc55_waverom2.bin", "path": "soundcanvas-roms/SC-55-v1.21/sc55_waverom2.bin", "required": false, "sha256": "c655b159792d999b90df9e4fa782cf56411ba1eaa0bb3ac2bdaf09e1391006b1", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:342, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:84", "validation": ["sha256", "size"]}, {"description": "SC-55 wave ROM C (R15209281)", "max_size": 1048576, "name": "sc55_waverom3.bin", "path": "soundcanvas-roms/SC-55-v1.21/sc55_waverom3.bin", "required": false, "sha256": "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:344, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:85", "validation": ["sha256", "size"]}, {"description": "SC-55 v1.00 MCU ROM (R15199748)", "max_size": 32768, "name": "sc55_rom1.bin", "path": "soundcanvas-roms/SC-55-v1.00/sc55_rom1.bin", "required": false, "sha256": "b4ecf44bc0520322b0d114d397951d3bf92ca6fa51d0d27b2407df58a6be2efe", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:336, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216", "validation": ["sha256", "size"]}, {"description": "SC-55 v1.00 program ROM (R15449258)", "max_size": 524288, "name": "sc55_rom2.bin", "path": "soundcanvas-roms/SC-55-v1.00/sc55_rom2.bin", "required": false, "sha256": "014e2e21ea30de7a1e4f1cdea14dd9a719960535e257a9e40e98dbb1a5870226", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:338, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217", "validation": ["sha256", "size"]}, {"description": "SC-55 v1.10 MCU ROM (R15199736)", "max_size": 32768, "name": "sc55_rom1.bin", "path": "soundcanvas-roms/SC-55-v1.10/sc55_rom1.bin", "required": false, "sha256": "2fe88ec39f3ef4b1de8cdf74527419467975c47f7aacfcd07605e01d54bd89b5", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:351, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216", "validation": ["sha256", "size"]}, {"description": "SC-55 v1.10 program ROM (R15209275)", "max_size": 524288, "name": "sc55_rom2.bin", "path": "soundcanvas-roms/SC-55-v1.10/sc55_rom2.bin", "required": false, "sha256": "ec064d6c4fc70ec990911089d966043cb819fba0e26e6f6afdd0a05e5301b91b", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:353, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217", "validation": ["sha256", "size"]}, {"description": "SC-55 v1.20 and v1.21 MCU ROM (R15199778)", "max_size": 32768, "name": "sc55_rom1.bin", "note": "same dump in the SC-55-v1.20 and SC-55-v1.21 directories", "path": "soundcanvas-roms/SC-55-v1.20/sc55_rom1.bin", "required": false, "sha256": "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:366, Nuked-SC55-CLAP 381, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216", "validation": ["sha256", "size"]}, {"description": "SC-55 v1.20 program ROM (R15209337)", "max_size": 524288, "name": "sc55_rom2.bin", "path": "soundcanvas-roms/SC-55-v1.20/sc55_rom2.bin", "required": false, "sha256": "22ce6ca59e6332143b335525e81fab501ea6fccce4b7e2f3bfc2cc8bf6612ff6", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:368, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217", "validation": ["sha256", "size"]}, {"description": "SC-55 v1.21 program ROM (R15209363)", "max_size": 524288, "name": "sc55_rom2.bin", "path": "soundcanvas-roms/SC-55-v1.21/sc55_rom2.bin", "required": false, "sha256": "effc6132d68f7e300aaef915ccdd08aba93606c22d23e580daf9ea6617913af1", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:383, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217", "validation": ["sha256", "size"]}, {"description": "SC-55 v2.00 MCU ROM (R15199799)", "max_size": 32768, "name": "sc55_rom1.bin", "path": "soundcanvas-roms/SC-55-v2.00/sc55_rom1.bin", "required": false, "sha256": "24a65c97cdbaa847d6f59193523ce63c73394b4b693a6517ee79441f2fb8a3ee", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:396, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216", "validation": ["sha256", "size"]}, {"description": "SC-55 v2.00 program ROM (R15209387)", "max_size": 524288, "name": "sc55_rom2.bin", "path": "soundcanvas-roms/SC-55-v2.00/sc55_rom2.bin", "required": false, "sha256": "f5dac35d450ab986570a209dff3816eec75cee669e161f54b51224b467dd0bcc", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:398, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 v1.01 MCU ROM (R15199858)", "max_size": 32768, "name": "rom1.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom1.bin", "required": false, "sha256": "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:295, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 v1.01 program ROM (R00233567)", "max_size": 524288, "name": "rom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin", "required": false, "sha256": "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:297, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 v1.01 sub-MCU ROM (R15199880)", "max_size": 4096, "name": "rom_sm.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom_sm.bin", "required": false, "sha256": "b0b5f865a403f7308b4be8d0ed3ba2ed1c22db881b8a8326769dea222f6431d8", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:299, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP submcu.h:62", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 wave ROM 16M (R15209359)", "max_size": 2097152, "name": "waverom1.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/waverom1.bin", "required": false, "sha256": "c6429e21b9b3a02fbd68ef0b2053668433bee0bccd537a71841bc70b8874243b", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:301, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:83", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 wave ROM 8M (R15279813)", "max_size": 2097152, "name": "waverom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/waverom2.bin", "required": false, "sha256": "5b753f6cef4cfc7fcafe1430fecbb94a739b874e55356246a46abe24097ee491", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:303, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:84", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 program ROM, strict SC-55 tones, SC-55 v1.21 drums", "max_size": 524288, "name": "rom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin", "required": false, "sha256": "64f8c9daf1021cf86ea4ddf03a29b81b5ea0c18e74f462833023436388bb9dc4", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:553", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 program ROM, strict SC-55 tones, SC-55 v2.00 drums", "max_size": 524288, "name": "rom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin", "required": false, "sha256": "14d14778caf46ffa9e3d608aa8e9c1a60c32bd4a536c26af3b2e1d81784c60f9", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:555", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 program ROM, SC-55 tones, SC-55 v1.21 drums", "max_size": 524288, "name": "rom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin", "required": false, "sha256": "10b3f09485a74bb014f1a940d5c67f380c7979b62891d540d788154c83f17430", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:557", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 program ROM, SC-55 tones, SC-55 v2.00 drums", "max_size": 524288, "name": "rom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin", "required": false, "sha256": "a2c720be1ab9115930d27f821a413c0366b7bf0c4ddfe0dadc5086136a1a4345", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:559", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 program ROM, SC-55mkII tones, SC-55 v1.21 drums", "max_size": 524288, "name": "rom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin", "required": false, "sha256": "16cec615da10089beffe6de5129ba8ba33fa1bf017a5e6b78ad1d6d15cf4708e", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:561", "validation": ["sha256", "size"]}, {"description": "SC-55mk2 program ROM, SC-55mkII tones, SC-55 v2.00 drums", "max_size": 524288, "name": "rom2.bin", "path": "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin", "required": false, "sha256": "c22bf7d34a3406530924d750b007bbdb470f3216c65086edb6e53023383ee907", "source_ref": "Nuked-SC55-CLAP rom_io.cpp:563", "validation": ["sha256", "size"]}, {"aliases": ["GeneralUser-GS.sf2", "FluidR3_GM.sf2", "Fluid_R3_GM_GS.sf2", "4gmgsmt-sf2_04-compat.sf2", "4GMGSMT.SF2", "synthgs-sf2_04-compat.sf2"], "description": "General MIDI SoundFont", "name": "default.sf2", "note": "any SoundFont loads; GeneralUser GS, Fluid R3, the AWE32 4MB GM/GS/MT bank and the Trevor0402 SC-55 SoundFont are recognised by filename or RIFF INFO name and get their own reverb, chorus and filter presets\n", "path": "soundfonts/default.sf2", "required": false, "source_ref": "src/midi/fluidsynth.cpp:672-689, src/midi/fluidsynth.cpp:816-883, src/midi/fluidsynth.cpp:1229-1242"}, {"description": "IBM PCjr system ROM", "min_size": 57344, "name": "system.rom", "note": "read during PCjr cartridge boot from the current DOS drive, then from the host working directory; bytes 0x3000 to 0xDFFF are copied to physical F3000. A short read leaves the region untouched and the cartridge still boots\n", "required": false, "source_ref": "src/dos/programs/boot.cpp:379-397, src/dos/programs/boot.cpp:83-124", "validation": ["size"]}, {"description": "IBM BASIC ROM image mapped at F600:0", "name": "IBM PC Cassette BASIC ROM", "note": "accepted when the file is exactly 32768 bytes, starts with E9 8F 7E and carries the string IBM at offset 0x4CD4\n", "required": false, "size": 32768, "source_ref": "src/dos/programs/loadrom.cpp:56-80, src/dos/programs/loadrom.cpp:95", "validation": ["size"]}, {"description": "Option ROM image mapped at C000:0 and initialised", "max_size": 32768, "min_size": 16384, "name": "Video BIOS ROM", "note": "accepted when the file is 16384 bytes or larger, starts with 55 AA, has byte 3 masked to E8 and carries the string IBM at offset 0x1E; needs an EGA or better machine type\n", "required": false, "source_ref": "src/dos/programs/loadrom.cpp:56-75, src/dos/programs/loadrom.cpp:88-93", "validation": ["size"]}], "mode": "standalone", "notes": "Continuation of DOSBox on a C++23 codebase, SDL3, libmt32emu and FluidSynth\nfrom vcpkg. The machine setting selects a video adapter (hercules, cga,\ncga_mono, ega, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb,\nvesa_oldvbe) or a machine (pcjr, tandy).\nref: src/dosbox.cpp:1317-1329, vcpkg.json\n\nNo system BIOS: the PC BIOS, video BIOS fonts, keyboard layouts and codepage\ntables are implemented in code.\nref: int10_memory.cpp:160, dos_keyboard_layout_data.h\n\nMIDI devices that need external data are mt32, soundcanvas and fluidsynth.\nA device that fails to initialise throws, MIDI_Init warns and retries with\nmididevice = port, then disables MIDI output. Emulation continues either way.\nref: midi.cpp:794-850\n\nMT-32/CM-32L: libmt32emu identifies every candidate by file size then SHA1,\nso file names carry no meaning; a directory scan caches which ROM ids each\ndirectory holds and logs anything unrecognised.\nref: mt32_lasynth_model.cpp:36-97, munt ROMInfo.cpp:206-213\nA model needs one control ROM and one PCM ROM, supplied either as a full\nimage (addROMFile) or as the two chip dumps merged in memory\n(mergeAndAddROMFiles): control halves are byte-interleaved, PCM halves are\nconcatenated.\nref: mt32_lasynth_model.cpp:114-151, munt ROMInfo.cpp:312-331\nmodel = auto resolves the first available of cm32l_102, cm32l_100,\ncm32ln_100, mt32_107, mt32_106, mt32_105, mt32_104, mt32_bluer, mt32_207,\nmt32_206, mt32_204, mt32_203; the aliases cm32l, mt32, mt32_old and mt32_new\nrestrict that list. MIXER /LISTMIDI prints what was found.\nref: mt32.cpp:278-331, 504-557\nSearch order is romdir, then mt32-roms in the configuration directory, then\nthe platform locations (C:\\mt32-rom-data on Windows;\n~/Library/Audio/Sounds/MT32-Roms and /usr/{local/,}share/mt32-rom-data on\nmacOS; $XDG_DATA_HOME/dosbox/mt32-roms, $XDG_DATA_HOME/mt32-rom-data,\n$XDG_DATA_DIRS/mt32-rom-data and $XDG_CONFIG_HOME/dosbox/mt32-roms on Linux).\nA relative romdir resolves against the working directory, so a game folder\ncan carry its own set.\nref: mt32.cpp:385-396, 416-485\n\nSound Canvas: the SC-55 is emulated by the Nuked SC55 CLAP plugin, loaded\nfrom a plugins directory next to the executable, in the configuration\ndirectory or under the XDG data directories. DOSBox Staging resolves the ROM\ndirectory candidates, canonicalises the ones that exist and exports them as\nSOUNDCANVAS_ROM_PATH; the plugin appends the per-model subdirectory, hashes\nevery file under 4 MB it finds there and matches SHA256 against its table.\nref: soundcanvas.cpp:326-373, support.cpp:351-379,\n     Nuked-SC55-CLAP nuked_sc55.cpp:117-215,\n     Nuked-SC55-CLAP rom_loader.cpp:32-63,\n     Nuked-SC55-CLAP rom_io.cpp:271-564\nsoundcanvas_model = auto resolves sc55_121, sc55_120, sc55_110, sc55_100,\nsc55_200, sc55mk2_101, sc55mk2_100 in that order by matching plugin names.\nThe plugin publishes six descriptors: SC-55 v1.00, v1.10, v1.20, v1.21,\nv2.00 and SC-55mk2 v1.01.\nref: soundcanvas.cpp:55-71, 80-147, Nuked-SC55-CLAP plugin.cpp:23-90\n\nFluidSynth: the soundfont setting names a file, tried as given and with .sf2\nappended, in soundfont_dir, then soundfonts in the configuration directory,\nthen the platform locations. fluid_synth_sfload is the only check. The\nSoundFont name from the RIFF INFO chunk and the file stem select reverb,\nchorus and filter presets for four known banks.\nref: fluidsynth.cpp:107-230, 672-689, 816-883, 1229-1252\n\nBundled data ships with the program and is read from the resources directory\nnext to the executable: FreeDOS codepages and keyboard layouts, translations,\nshaders and shader presets, CGA colour presets, drive noise samples, the\nmounted Y: drive utilities, the web interface and the manual pages.\nref: support.cpp:300-320, dos_code_page.cpp:1828, dos_keyboard_layout.cpp:70,\n     messages.cpp:1073, shader_manager.cpp:236,404, int10_modes.cpp:2302,\n     disk_noise.cpp:187, autoexec.cpp:759\n\nBIOSTEST.COM loads an arbitrary BIOS image at F000:0 and is compiled only\nwhen the debugger is enabled, which is off by default.\nref: src/dos/CMakeLists.txt:81-83, biostest.h\n", "profiled_date": "2026-08-08", "source": "https://github.com/dosbox-staging/dosbox-staging", "source_commit": "cd81dcbc72773a4bd559b305c8b6ad3196cd09dc", "systems": ["dos", "ibm-pc", "ibm-pcjr", "tandy-1000"], "type": "standalone", "upstream": "https://github.com/dosbox-staging/dosbox-staging"}


id: dosbox-x
name: DOSBox-X
type: standalone
classification: enhanced_fork
source: https://github.com/joncampbell123/dosbox-x
upstream: https://github.com/joncampbell123/dosbox-x
source_commit: 6cad735d685406bd4ef2a0b60a4613569e211fd8
profile_json:
{"core_classification": "enhanced_fork", "core_version": "2026.08.02", "cores": ["dosbox-x", "dosboxx"], "display_name": "DOS (DOSBox-X)", "emulator": "DOSBox-X", "files": [{"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v1.04", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5a5cb5a77d7d55ee69657c2f870416daed52dea7", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:59, src/libs/mt32/ROMInfo.cpp:89", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v1.05", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "e17a3a6d265bf1fa150312061134293d2b58288c", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:62, src/libs/mt32/ROMInfo.cpp:92", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v1.06", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "a553481f4e2794c10cfe597fef154eef0d8257de", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:65, src/libs/mt32/ROMInfo.cpp:95", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v1.07", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:68, src/libs/mt32/ROMInfo.cpp:98", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control BlueRidge", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:71, src/libs/mt32/ROMInfo.cpp:101", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v2.03", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5837064c9df4741a55f7c4d8787ac158dff2d3ce", "size": 131072, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:73, src/libs/mt32/ROMInfo.cpp:103", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v2.04", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2c16432b6c73dd2a3947cba950a0f4c19d6180eb", "size": 131072, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:74, src/libs/mt32/ROMInfo.cpp:104", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v2.06", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2869cf4c235d671668cfcb62415e2ce8323ad4ed", "size": 131072, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:75, src/libs/mt32/ROMInfo.cpp:105", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_CONTROL.ROM"], "description": "MT-32 Control v2.07", "name": "MT32_CONTROL.ROM", "required": false, "sha1": "47b52adefedaec475c925e54340e37673c11707c", "size": 131072, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:76, src/libs/mt32/ROMInfo.cpp:106", "validation": ["sha1", "size"]}, {"aliases": ["MT32_CONTROL.ROM"], "description": "CM-32L/LAPC-I Control v1.00", "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "73683d585cd6948cc19547942ca0e14a0319456d", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:77, src/libs/mt32/ROMInfo.cpp:107", "validation": ["sha1", "size"]}, {"aliases": ["MT32_CONTROL.ROM"], "description": "CM-32L/LAPC-I Control v1.02", "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:78, src/libs/mt32/ROMInfo.cpp:108", "validation": ["sha1", "size"]}, {"aliases": ["MT32_CONTROL.ROM"], "description": "CM-32LN/CM-500/LAPC-N Control v1.00", "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077", "size": 65536, "source_ref": "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:79, src/libs/mt32/ROMInfo.cpp:109", "validation": ["sha1", "size"]}, {"aliases": ["CM32L_PCM.ROM"], "description": "MT-32 PCM ROM", "name": "MT32_PCM.ROM", "required": false, "sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252", "size": 524288, "source_ref": "src/gui/midi_mt32.h:93-105, src/libs/mt32/ROMInfo.cpp:83, src/libs/mt32/ROMInfo.cpp:113", "validation": ["sha1", "size"]}, {"aliases": ["MT32_PCM.ROM"], "description": "CM-32L/CM-64/LAPC-I PCM ROM", "name": "CM32L_PCM.ROM", "required": false, "sha1": "289cc298ad532b702461bfc738009d9ebe8025ea", "size": 1048576, "source_ref": "src/gui/midi_mt32.h:93-105, src/libs/mt32/ROMInfo.cpp:85, src/libs/mt32/ROMInfo.cpp:117", "validation": ["sha1", "size"]}, {"aliases": ["FluidR3_GM.sf2", "GeneralUser_GS.sf2"], "description": "General MIDI SoundFont", "name": "default.sf2", "note": "any SF2 or SF3 file loads; fluid.soundfont names it and fluid_synth_sfload is the only check\n", "required": false, "source_ref": "src/gui/midi_synth.h:346-384, src/gui/midi_synth.h:462-473, src/dosbox.cpp:3710"}, {"description": "PC-98 character generator ROM, T98Tools layout", "hle_fallback": true, "name": "FONT.ROM", "note": "256 8x8 cells at 0x0, 256 8x16 cells at 0x800, 96 by 92 16x16 cells at 0x1800; a file of any other length is rejected. Enabled by pc-98 try font rom, on by default\n", "required": false, "size": 288768, "source_ref": "src/ints/int10.cpp:1487-1549, src/dosbox.cpp:2477-2478", "validation": ["size"]}, {"description": "PC-98 character generator, Anex86 bitmap", "hle_fallback": true, "name": "ANEX86.BMP", "note": "2048 by 2048 monochrome Windows bitmap, biSize 40, one plane, one bit per pixel, no compression, inverse colour scheme; the first row is the 8x16 single-width set and the rest is 16x16 full-width. Also reachable through the pc-98 anex86 font setting, which is tried before FONT.ROM\n", "required": false, "source_ref": "src/ints/int10.cpp:1555-1647, src/dosbox.cpp:2481-2484"}, {"description": "PC-98 character generator, free generated bitmap", "hle_fallback": true, "name": "FREECG98.BMP", "note": "same bitmap layout as ANEX86.BMP and tried after it; ships in the resource directory\n", "required": false, "source_ref": "src/ints/int10.cpp:1577-1580, src/Makefile.am:17"}, {"aliases": ["wqy_12pt.pcf"], "description": "WenQuanYi 16-pixel bitmap font", "name": "wqy_12pt.bdf", "note": "ships in the resource directory", "required": false, "source_ref": "src/ints/int_dosv.cpp:1197-1218, src/Makefile.am:19"}, {"aliases": ["wqy_11pt.pcf"], "description": "WenQuanYi 14-pixel bitmap font", "name": "wqy_11pt.bdf", "note": "ships in the resource directory", "required": false, "source_ref": "src/ints/int_dosv.cpp:1296-1316, src/Makefile.am:18"}, {"description": "CJK fixed-width TrueType font", "hle_fallback": true, "name": "SarasaGothicFixed.ttf", "note": "tried by the TTF output on PC-98 and on double-byte code pages when ttf.font is unset, and by the printer when the selected typeface file is missing; ships in the resource directory\n", "required": false, "source_ref": "src/output/output_ttf.cpp:655-668, src/hardware/parport/printer.cpp:354-380, src/Makefile.am:21"}, {"description": "Printer Roman typeface", "name": "roman.ttf", "note": "also the fallback typeface for any unmapped LQ selection", "path": "FONTS/roman.ttf", "required": false, "source_ref": "src/hardware/parport/printer.cpp:320-321, src/hardware/parport/printer.cpp:336-337, src/dosbox.cpp:4597"}, {"description": "Printer Sans Serif typeface", "name": "sansserif.ttf", "path": "FONTS/sansserif.ttf", "required": false, "source_ref": "src/hardware/parport/printer.cpp:323-324, src/dosbox.cpp:4597"}, {"description": "Printer Courier typeface", "name": "courier.ttf", "path": "FONTS/courier.ttf", "required": false, "source_ref": "src/hardware/parport/printer.cpp:326-327, src/dosbox.cpp:4597"}, {"description": "Printer Script typeface", "name": "script.ttf", "path": "FONTS/script.ttf", "required": false, "source_ref": "src/hardware/parport/printer.cpp:329-330, src/dosbox.cpp:4597"}, {"description": "Printer OCR-A typeface", "name": "ocra.ttf", "note": "serves both the OCR-A and OCR-B selections", "path": "FONTS/ocra.ttf", "required": false, "source_ref": "src/hardware/parport/printer.cpp:332-334, src/dosbox.cpp:4597"}, {"description": "PC-9801-26K/86 FM board BIOS", "hle_fallback": true, "min_size": 16384, "name": "SOUND.ROM", "note": "16 KB read into CC000h from the working directory only, when pc-98 sound bios and pc-98 load sound bios rom file are both set\n", "required": false, "source_ref": "src/hardware/pc98_fm.cpp:367-385, src/dosbox.cpp:2378-2386", "validation": ["size"]}, {"description": "Tseng ET4000 video BIOS", "max_size": 65536, "min_size": 1024, "name": "et4000.bin", "note": "default file name for machine = svga_et4000", "required": false, "source_ref": "src/dosbox.cpp:938-982, src/dosbox.cpp:2745-2757", "validation": ["size"]}, {"description": "S3 Trio64 video BIOS", "max_size": 65536, "min_size": 1024, "name": "TRIO64 (Ver. 1.5-07) [VGA] (S3 Incorporated).bin", "note": "default file name for machine = svga_s3", "required": false, "source_ref": "src/dosbox.cpp:943-945, src/dosbox.cpp:2745-2757", "validation": ["size"]}, {"description": "Option ROM image mapped at C000:0 and initialised", "max_size": 32768, "min_size": 16384, "name": "Video BIOS option ROM", "note": "read by LOADROM.COM from a mounted local drive; accepted when the file starts with 55 AA, byte 3 masked with 0xFC equals 0xE8 and the string IBM appears at offset 0x1E, and the machine is EGA or better\n", "required": false, "source_ref": "src/dos/dos_programs.cpp:3523-3549, src/dos/dos_programs.cpp:3560-3565", "validation": ["size"]}, {"description": "IBM 5150 Cassette BASIC ROM", "max_size": 65536, "min_size": 32768, "name": "IBMROMBASIC-F6000h-1982-10-27.ROM", "note": "the ibm rom basic setting maps it just below the ROM BIOS and accepts 32 KB to 64 KB in 4 KB steps; LOADROM.COM maps the same image at F600:0 when it is exactly 32768 bytes, starts with E9 8F 7E and carries the string IBM at offset 0x4CD4\n", "required": false, "source_ref": "src/ints/bios.cpp:13074-13094, src/dos/dos_programs.cpp:3550-3554, src/dosbox.cpp:1931-1933", "validation": ["size"]}, {"description": "IBM PCjr system ROM", "min_size": 57344, "name": "system.rom", "note": "read during PCjr cartridge boot; bytes 0x3000 to 0xDFFF are copied to physical F3000. A short read leaves the region untouched and the cartridge still boots\n", "required": false, "source_ref": "src/dos/dos_programs.cpp:3061-3070", "validation": ["size"]}, {"description": "PC/AT or PC-98 BIOS ROM image booted by BOOT -bios", "name": "System BIOS image", "note": "loaded at the top of the first megabyte, rounded up to a paragraph and truncated to 128 KB, or to 96 KB on PC-98; a larger image is clamped rather than rejected\n", "required": false, "source_ref": "src/dos/dos_programs.cpp:2244-2293"}, {"description": "PC-98 Initial Firmware Test BIOS", "max_size": 32768, "name": "ITF.ROM", "note": "served through the port 43Dh bank switch alongside a BOOT -bios image; <image>.itf.rom is tried before the bare name so one directory can hold several\n", "required": false, "source_ref": "src/dos/dos_programs.cpp:2295-2326", "validation": ["size"]}], "mode": "standalone", "notes": "Fork of DOSBox SVN with its own DOS kernel. The machine setting picks the\nemulated hardware: mda, cga and its composite variants, hercules,\nhercules_plus, hercules_incolor, hercules_color, tandy, pcjr, amstrad,\nolivetti/m24/att6300, pc3270, ega, ega200, jega, mcga, vgaonly, the S3,\nTseng, Paradise and ATI SVGA cards, the vesa variants, and pc98/pc9801/pc9821.\nfm_towns is marked STUB in the same list.\nref: dosbox.cpp:1526-1562\n\nNo system BIOS: the PC BIOS, VGA BIOS, video fonts, keyboard layouts, codepage\ntables, the Z: drive utilities including GLIDE2X.OVL, and the TTF text font are\ncompiled in.\nref: int10_memory.cpp, dos_keyboard_layout_data.h, dos_codepages.h,\n     src/builtin/glide2x.cpp:2861, output_ttf.cpp:664\n\nFiles named without a directory are searched in the working directory, the\nprogram directory, the user configuration directory and the resource\ndirectory. On Linux the configuration directory is $XDG_CONFIG_HOME/dosbox-x\nor ~/.config/dosbox-x, and the resource directory is $XDG_DATA_HOME/dosbox-x,\nthen /usr/local/share/dosbox-x, then /usr/share/dosbox-x. Windows uses\nC:\\DOSBox-X.\nref: int10.cpp:1442-1485, cross.cpp:120-167\n\nMT-32: libmt32emu is built from src/libs/mt32. Only four file names are ever\nopened, and each candidate is identified by exact file size then SHA1, so the\nname says nothing about the contents. addROMFile matches against the full\nimage list only, which rejects the interleaved chip dumps.\nref: midi_mt32.h:74-109, c_interface.cpp:442-462, ROMInfo.cpp:206-215\nmt32.model = auto opens CM32L_CONTROL.ROM then MT32_CONTROL.ROM, and\nCM32L_PCM.ROM then MT32_PCM.ROM; cm32l keeps only the CM32L names, mt32 only\nthe MT32 names. The directory is mt32.romdir, then the working directory, then\nthe resource directory, then the configuration directory. A missing pair logs\nthe accepted file names and disables the device.\nref: midi_mt32.h:246-275, dosbox.cpp:3571-3576\n\nFluidSynth reads fluid.soundfont; fluid_synth_sfload is the only check. With\nthe setting empty it probes /usr/share/soundfonts/default.sf2,\n/usr/share/sounds/sf2/FluidR3_GM.sf2 and GeneralUser_GS.sf2 on Linux, and\nC:\\soundfonts\\default.sf2 then the two same names under C:\\DOSBox-X on Windows.\nref: midi_synth.h:342-384, 462-480\n\nPC-98 character generator, tried in order: FONT.ROM as generated by T98Tools,\nthen the FONTX2 files named by pc-98 fontx sbcs and pc-98 fontx dbcs, then the\nfile named by pc-98 anex86 font or ANEX86.BMP followed by FREECG98.BMP, then\nthe built-in FREECG single-byte font and the built-in Japanese double-byte\nfont. Each stage fills only what the previous one left empty.\nref: int10.cpp:1882-1893, 1652-1675\n\nPC-98 sound board BIOS: with pc-98 sound bios set, SOUND.ROM is read from the\nworking directory into CC000h. Without it a callback Sound BIOS is installed\nat CEE0:0000 answering INT D2h.\nref: pc98_fm.cpp:367-385, 416-434\n\nDOS/V and CJK text: fontxsbcs, fontxsbcs16, fontxsbcs24, fontxdbcs,\nfontxdbcs14 and fontxdbcs24 name font files. LoadFontxFile reads a FONTX2\nheader, otherwise tries BDF and PCF, otherwise accepts a raw bitmap font\nidentified by its size, which covers ASC16 and ASCFONT.15 from UCDOS and ETen\nChinese DOS, ASC24, HZK14, HZK16, HZK24 and STDFONT.15 and STDFONT.24.\nUnset settings fall back to the built-in font data.\nref: int_dosv.cpp:654-749, 1631-1710, dosbox.cpp:2533-2568\n\nBOOT -bios loads a BIOS image at the top of the first megabyte, truncated to\n128 KB, or 96 KB on PC-98 where it also looks for <image>.itf.rom, <image>.ITF.ROM,\nitf.rom and ITF.ROM to serve the bank switched Initial Firmware Test region\nthrough port 43Dh.\nref: dos_programs.cpp:2244-2332\n\nBIOSTEST.COM loads an image of up to 64 KB at F000:0 and restarts the CPU at\nthe reset vector; it is compiled only when the debugger is enabled. The\nsettings call binary on reset and call binary on boot load blobs of up to\n128 KB into the ROM BIOS area for CPU testing.\nref: dos_programs.cpp:3581-3640, bios.cpp:13142-13215\n\nGlide passthrough loads glide2x.dll, libglide2x.so or libglide2x.dylib.\nref: glide.cpp:353-359, dosbox.cpp:3471-3473\n\nttf.font, ttf.fontbold, ttf.fontital and ttf.fontboit name a TTF, OTF, FON or\nTTC font resolved through the same search order plus the system font\ndirectories. Unset, the TTF output uses the built-in font, except on PC-98 or\na double-byte code page where SarasaGothicFixed.ttf is tried first.\nref: output_ttf.cpp:318-473, 653-668\n\nShipped in the resource directory: FREECG98.BMP, wqy_11pt.bdf, wqy_12pt.bdf,\nNouveau_IBM.ttf, SarasaGothicFixed.ttf and the two reference configuration\nfiles.\nref: src/Makefile.am:14-22\n\nOverrides for data that is compiled in: the boot logo PNG, the mapper file,\nthe customcodepage translation table, .kl layout files and the KEYBOARD.SYS\nto KEYBRD4.SYS libraries read from a mounted drive, the glshaders directory\nand the .lng translations.\nref: bios.cpp:11389-11398, sdlmain.cpp:7001-7008,\n     dos.cpp:4397-4420, dos_keyboard_layout.cpp:300-340,\n     render.cpp:1538-1545, messages.cpp:294-320\n", "profiled_date": "2026-08-08", "source": "https://github.com/joncampbell123/dosbox-x", "source_commit": "6cad735d685406bd4ef2a0b60a4613569e211fd8", "systems": ["dos", "ibm-pc", "ibm-pcjr", "tandy-1000", "pc-98"], "type": "standalone", "upstream": "https://github.com/joncampbell123/dosbox-x"}


id: dosbox_core
name: DOSBox-core
type: libretro
classification: community_fork
source: https://github.com/libretro/dosbox-core
upstream: https://sourceforge.net/projects/dosbox/
source_commit: 7bcf083e8309660e2c598d6f7d5982d3851f2178
profile_json:
{"core_classification": "community_fork", "core_version": "SVN", "cores": ["dosbox_core"], "display_name": "DOS (DOSBox-core)", "emulator": "DOSBox-core", "files": [{"description": "MT-32 Control v1.04", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5a5cb5a77d7d55ee69657c2f870416daed52dea7", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:58"}, {"description": "MT-32 Control v1.05", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "e17a3a6d265bf1fa150312061134293d2b58288c", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:61"}, {"description": "MT-32 Control v1.06", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "a553481f4e2794c10cfe597fef154eef0d8257de", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:64"}, {"description": "MT-32 Control v1.07", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "note": "version referenced in .info file (md5: 5626206284b22c2734f3e9efefcd2675)", "required": false, "sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:67"}, {"description": "MT-32 Control BlueRidge", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:70"}, {"description": "MT-32 Control v2.04", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2c16432b6c73dd2a3947cba950a0f4c19d6180eb", "size": 131072, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:72"}, {"description": "MT-32 Control v2.06", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2869cf4c235d671668cfcb62415e2ce8323ad4ed", "size": 131072, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:73"}, {"description": "MT-32 Control v2.07", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "47b52adefedaec475c925e54340e37673c11707c", "size": 131072, "source_ref": "src/gui/midi_mt32.cpp:55, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:74"}, {"description": "CM-32L/LAPC-I Control v1.00", "hle_fallback": true, "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "73683d585cd6948cc19547942ca0e14a0319456d", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:53, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:75"}, {"description": "CM-32L/LAPC-I Control v1.02", "hle_fallback": true, "name": "CM32L_CONTROL.ROM", "note": "version referenced in .info file (md5: bfff32b6144c1d706109accb6e6b1113)", "required": false, "sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:53, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:76"}, {"description": "CM-32LN/CM-500/LAPC-N Control v1.00", "hle_fallback": true, "name": "CM32L_CONTROL.ROM", "note": "MUNT recognizes this ROM when named CM32L_CONTROL.ROM", "required": false, "sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077", "size": 65536, "source_ref": "src/gui/midi_mt32.cpp:53, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:77"}, {"description": "MT-32 PCM ROM", "hle_fallback": true, "name": "MT32_PCM.ROM", "note": "pairs with any MT-32 v1.x control ROM (md5: 89e42e386e82e0cacb4a2704a03706ca)", "required": false, "sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252", "size": 524288, "source_ref": "src/gui/midi_mt32.cpp:66, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:81"}, {"description": "CM-32L/CM-64/LAPC-I PCM ROM", "hle_fallback": true, "name": "CM32L_PCM.ROM", "note": "pairs with MT-32 v2.x or CM-32L control ROMs (md5: 08cdcfa0ed93e9cb16afa76e6ac5f0a4)", "required": false, "sha1": "289cc298ad532b702461bfc738009d9ebe8025ea", "size": 1048576, "source_ref": "src/gui/midi_mt32.cpp:64, libretro/deps/munt/mt32emu/src/ROMInfo.cpp:85"}, {"description": "BASS audio library (Linux)", "hle_fallback": true, "name": "libbass.so", "note": "proprietary library from un4seen.com, not a ROM", "required": false, "source_ref": "libretro/src/midi_bassmidi.cpp:238"}, {"description": "BASSMIDI addon library (Linux)", "hle_fallback": true, "name": "libbassmidi.so", "note": "proprietary library from un4seen.com, not a ROM", "required": false, "source_ref": "libretro/src/midi_bassmidi.cpp:239"}, {"description": "BASS audio library (Windows)", "hle_fallback": true, "name": "bass.dll", "note": "proprietary library from un4seen.com, not a ROM", "required": false, "source_ref": "libretro/src/midi_bassmidi.cpp:232"}, {"description": "BASSMIDI addon library (Windows)", "hle_fallback": true, "name": "bassmidi.dll", "note": "proprietary library from un4seen.com, not a ROM", "required": false, "source_ref": "libretro/src/midi_bassmidi.cpp:233"}, {"description": "BASS audio library (macOS)", "hle_fallback": true, "name": "libbass.dylib", "note": "proprietary library from un4seen.com, not a ROM", "required": false, "source_ref": "libretro/src/midi_bassmidi.cpp:235"}, {"description": "BASSMIDI addon library (macOS)", "hle_fallback": true, "name": "libbassmidi.dylib", "note": "proprietary library from un4seen.com, not a ROM", "required": false, "source_ref": "libretro/src/midi_bassmidi.cpp:236"}], "notes": "No BIOS required. MT-32 and SoundFont support is optional for MIDI music.\nMT-32 ROMs loaded by exact filename from system directory.\nmt32.romdir = system_dir (libretro.cpp:652). CM-32L is default type.\nref: src/gui/midi_mt32.cpp:35,51-66\nMUNT identifies ROMs by SHA1+size (ROMInfo.cpp:171-180).\nFluidSynth reads .sf2/.sf3/.dls/.gig from system/soundfonts/.\nref: libretro/src/libretro.cpp:1086-1097\nBASSMIDI reads .sf2/.sfz from system/soundfonts/, requires BASS +\nBASSMIDI shared libs in system dir (dlopen'd at runtime).\nref: libretro/src/midi_bassmidi.cpp:232-254\n.info declares firmware_count=10 (4 ROMs + 6 BASS libs).\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/dosbox-core", "source_commit": "7bcf083e8309660e2c598d6f7d5982d3851f2178", "systems": ["dos"], "type": "libretro", "upstream": "https://sourceforge.net/projects/dosbox/"}


id: dosbox_pure
name: DOSBox Pure
type: standalone + libretro
classification: enhanced_fork
source: https://github.com/libretro/dosbox-pure
upstream: https://github.com/schellingb/dosbox-pure
source_commit: a4a0bab7f8931433588f2fcad9045c85b277373d
profile_json:
{"core_classification": "enhanced_fork", "core_version": "1.0-preview5", "cores": ["dosbox_pure"], "display_name": "DOS (DOSBox-Pure)", "emulator": "DOSBox Pure", "files": [{"description": "MT-32 Control v1.04", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5a5cb5a77d7d55ee69657c2f870416daed52dea7", "size": 65536, "source_ref": "src/gui/mt32emu.h:5112, src/gui/mt32emu.h:5129", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.05", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "e17a3a6d265bf1fa150312061134293d2b58288c", "size": 65536, "source_ref": "src/gui/mt32emu.h:5113, src/gui/mt32emu.h:5130", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.06", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "a553481f4e2794c10cfe597fef154eef0d8257de", "size": 65536, "source_ref": "src/gui/mt32emu.h:5114, src/gui/mt32emu.h:5131", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v1.07", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987", "size": 65536, "source_ref": "src/gui/mt32emu.h:5115, src/gui/mt32emu.h:5132", "validation": ["sha1", "size"]}, {"description": "MT-32 Control BlueRidge", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92", "size": 65536, "source_ref": "src/gui/mt32emu.h:5116, src/gui/mt32emu.h:5133", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.03 (new MT-32)", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "5837064c9df4741a55f7c4d8787ac158dff2d3ce", "size": 131072, "source_ref": "src/gui/mt32emu.h:5118, src/gui/mt32emu.h:5135", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.04", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2c16432b6c73dd2a3947cba950a0f4c19d6180eb", "size": 131072, "source_ref": "src/gui/mt32emu.h:5119, src/gui/mt32emu.h:5136", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.06", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "2869cf4c235d671668cfcb62415e2ce8323ad4ed", "size": 131072, "source_ref": "src/gui/mt32emu.h:5120, src/gui/mt32emu.h:5137", "validation": ["sha1", "size"]}, {"description": "MT-32 Control v2.07", "hle_fallback": true, "name": "MT32_CONTROL.ROM", "required": false, "sha1": "47b52adefedaec475c925e54340e37673c11707c", "size": 131072, "source_ref": "src/gui/mt32emu.h:5121, src/gui/mt32emu.h:5138", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.00", "hle_fallback": true, "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "73683d585cd6948cc19547942ca0e14a0319456d", "size": 65536, "source_ref": "src/gui/mt32emu.h:5122, src/gui/mt32emu.h:5139", "validation": ["sha1", "size"]}, {"description": "CM-32L/LAPC-I Control v1.02", "hle_fallback": true, "name": "CM32L_CONTROL.ROM", "required": false, "sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8", "size": 65536, "source_ref": "src/gui/mt32emu.h:5123, src/gui/mt32emu.h:5140", "validation": ["sha1", "size"]}, {"description": "CM-32LN/CM-500/LAPC-N Control v1.00", "hle_fallback": true, "name": "CM32LN_CONTROL.ROM", "required": false, "sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077", "size": 65536, "source_ref": "src/gui/mt32emu.h:5124, src/gui/mt32emu.h:5141", "validation": ["sha1", "size"]}, {"description": "MT-32 PCM ROM", "hle_fallback": true, "name": "MT32_PCM.ROM", "note": "accepted by every MT-32 control ROM, v1.x and v2.x. Each control ROM fixes the PCM size it accepts through its pcmCount: 128 requires this 524288 byte image. ref: mt32emu.h:2586-2598,3167,3025\n", "required": false, "sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252", "size": 524288, "source_ref": "src/gui/mt32emu.h:5126, src/gui/mt32emu.h:5143", "validation": ["sha1", "size"]}, {"aliases": ["CM32LN_PCM.ROM"], "description": "CM-32L/CM-64/LAPC-I PCM ROM", "hle_fallback": true, "name": "CM32L_PCM.ROM", "note": "accepted by the CM-32L and CM-32LN control ROMs, which carry pcmCount 256 and require this 1048576 byte image. The alias covers the name derived from CM32LN_CONTROL.ROM. ref: mt32emu.h:2586-2598,3167,3025, midi_mt32.h:194-195\n", "required": false, "sha1": "289cc298ad532b702461bfc738009d9ebe8025ea", "size": 1048576, "source_ref": "src/gui/mt32emu.h:5127, src/gui/mt32emu.h:5144", "validation": ["sha1", "size"]}, {"description": "General MIDI SoundFont (any .sf2/.sf3 accepted)", "hle_fallback": true, "name": "DOSBOX.SF2", "note": "Any .SF2 or .SF3 file in the system directory works. The core lists all found SoundFonts in the MIDI config dropdown. DOSBOX.SF2 is the conventional name and is also auto-detected when placed inside game content on C: drive.\n", "required": false, "source_ref": "dosbox_pure_libretro.cpp:1410 (scan classifies .SF* as a SoundFont), dosbox_pure_libretro.cpp:2492-2495 (path taken from the system directory), dosbox_pure_libretro.cpp:2803-2805 (auto-detected on the mounted C: drive)"}], "logo": "https://raw.githubusercontent.com/schellingb/dosbox-pure/main/images/logo.png", "notes": "No BIOS required. MT-32 and SoundFont support is optional for MIDI music.\n\nROM scanning (both modes):\n  Recursive scan of system directory for *_CONTROL.ROM and *.SF2/*.SF3.\n  ref: dosbox_pure_libretro.cpp:1399-1410\n  MT-32 requires matched pair: *_CONTROL.ROM + *_PCM.ROM (PCM name derived\n  from CONTROL name by replacing CONTROL with PCM, preserving case).\n  ref: midi_mt32.h:189-199\n  ZIP archives also supported — scanned for files by size (65536/131072 =\n  control, 524288/1048576 = PCM), not by name.\n  ref: midi_mt32.h:160-166\n  Files can also be on mounted C: drive (DOSBOX.SF2, MT32_CONTROL.ROM).\n  ref: dosbox_pure_libretro.cpp:2803-2805\n  Cache file DOSBoxPureMidiCache.txt written when scan >2s.\n  ref: dosbox_pure_libretro.cpp:1425-1445\n\nBundled MUNT (header-only mt32emu.h) for MT-32 emulation.\nSHA1+size validation at load: unrecognized ROMs rejected (Synth::open fails).\nref: mt32emu.h:2982-2988,3016-3019,5183-5187\n12 full control ROMs + 2 PCM ROMs supported (no split ROMs in this MUNT).\nTinySoundFont (tsf.h) for SF2/SF3 playback.\nNo firmware entries in .info file — all MIDI files optional.\n\nDBP_STANDALONE build mode exists (same MIDI logic, different I/O layer).\nref: dosbox_pure_libretro.cpp:81,1590,2302\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/dosbox-pure", "source_commit": "a4a0bab7f8931433588f2fcad9045c85b277373d", "systems": ["dos"], "type": "standalone + libretro", "upstream": "https://github.com/schellingb/dosbox-pure", "verification": "sha1"}


id: dosbox_svn
name: DOSBox-SVN
type: libretro
classification: community_fork
source: https://github.com/libretro/dosbox-svn
upstream: https://sourceforge.net/projects/dosbox/
source_commit: 53ca2f6303a652d129321cfc521f000cd7ec5531
profile_json:
{"core_classification": "community_fork", "core_version": "SVN", "cores": ["dosbox_svn"], "display_name": "DOS (DOSBox-SVN)", "emulator": "DOSBox-SVN", "exclusion_note": "system_directory set but never used for file loading", "files": [], "notes": "Same codebase as dosbox_svn_ce, builds against a fake SDL shim\n(WITH_FAKE_SDL=1) instead of real SDL, for broader platform compat.\nref: libretro/Makefile.libretro, libretro/fakesdl/\n\nNo MT-32 emulation. src/midi/munt referenced in Makefile.common:15\ndoes not exist, no MUNT submodule. MIDI is hardware-only\n(ALSA, CoreAudio, CoreMIDI, Win32, OSS) + retro_midi_interface.\nref: src/gui/midi.cpp\n\nsystem_directory set and logged (libretro.cpp:1399-1401), never used\nto load files. Config uses retro_save_directory (cross.cpp:61-71).\nKeyboard layouts and codepages embedded in binary.\nref: dos_keyboard_layout_data.h, dos_codepages.h\n\n.info firmware_count=0, matches code.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/dosbox-svn", "source_commit": "53ca2f6303a652d129321cfc521f000cd7ec5531", "systems": ["dos"], "type": "libretro", "upstream": "https://sourceforge.net/projects/dosbox/"}


id: dosbox_svn_ce
name: DOSBox-SVN CE
type: libretro
classification: community_fork
source: https://github.com/libretro/dosbox-svn
upstream: https://sourceforge.net/projects/dosbox/
source_commit: 53ca2f6303a652d129321cfc521f000cd7ec5531
profile_json:
{"core_classification": "community_fork", "core_version": "SVN CE", "cores": ["dosbox_svn_ce"], "display_name": "DOS (DOSBox-SVN CE)", "emulator": "DOSBox-SVN CE", "exclusion_note": "system_directory set but never used for file loading", "files": [], "notes": "Same codebase as dosbox_svn, builds against real SDL 1.2 + SDL_net\ninstead of the fake SDL shim (WITH_FAKE_SDL not set).\nref: libretro/Makefile.libretro:238\n\nNo MT-32 emulation. src/midi/munt referenced in Makefile.common:15\ndoes not exist, no MUNT submodule. MIDI is hardware-only\n(ALSA, CoreAudio, CoreMIDI, Win32, OSS) + retro_midi_interface.\nref: src/gui/midi.cpp\n\nsystem_directory set and logged (libretro.cpp:1399-1401), never used\nto load files. Config uses retro_save_directory (cross.cpp:61-73).\nKeyboard layouts and codepages embedded in binary.\nref: dos_keyboard_layout_data.h, dos_codepages.h\n\n.info firmware_count=0, matches code.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/dosbox-svn", "source_commit": "53ca2f6303a652d129321cfc521f000cd7ec5531", "systems": ["dos"], "type": "libretro", "upstream": "https://sourceforge.net/projects/dosbox/"}


id: doublecherrygb
name: DoubleCherryGB
type: libretro
classification: enhanced_fork
source: https://github.com/TimOelrichs/doublecherryGB-libretro
upstream: https://github.com/libertyernie/tgbdual
source_commit: 2e7a8bd5442ad7b2cb98ea07dbb5000ac95193e9
profile_json:
{"core_classification": "enhanced_fork", "core_version": "v0.18.1", "cores": ["DoubleCherryGB"], "display_name": "Nintendo - Game Boy / Color (DoubleCherryGB)", "emulator": "DoubleCherryGB", "files": [], "notes": "Game Boy / Game Boy Color emulator forked from TGB Dual (Hii, 2000-2004)\nvia the libretro port tgbdual. Adds multi-Game Boy emulation with link\ncable support for up to 16 players, DMG-07 4-Player Adapter emulation,\ninfrared peripherals, and built-in Pokemon distribution events.\n\nNo boot ROM support. cpu::reset() sets PC=0x100 and post-boot register\nvalues directly (AF=0x01B0 DMG, 0x11B0 CGB). The core does not access\nthe system directory and loads no external firmware files.\n", "profiled_date": "2026-03-22", "source": "https://github.com/TimOelrichs/doublecherryGB-libretro", "source_commit": "2e7a8bd5442ad7b2cb98ea07dbb5000ac95193e9", "systems": ["nintendo-gb", "nintendo-gbc"], "type": "libretro", "upstream": "https://github.com/libertyernie/tgbdual"}


id: doukutsu_rs
name: doukutsu-rs
type: standalone + libretro
classification: game_engine
source: https://github.com/DrGlaucous/doukutsu-rs-nm
upstream: https://github.com/doukutsu-rs/doukutsu-rs
source_commit: 51e64c2e9615bcd476034c69b58927877fe73494
profile_json:
{"core_classification": "game_engine", "core_version": "1.2.0 - 0.101.0", "cores": ["doukutsu_rs"], "display_name": "Cave Story (drs)", "emulator": "doukutsu-rs", "exclusion_note": "game data loaded relative to content path, not from system directory", "files": [], "notes": "No BIOS or firmware files required in the system directory.\nThe core reads game data from a data/ subfolder next to the loaded content.\nUsers must provide the Cave Story freeware game files (Doukutsu.exe and its\ndata/ directory) or a Cave Story+ installation as the content to load.\nAll engine-internal resources (fonts, wavetables, controller mappings) are\nbuilt into the core binary.\n", "profiled_date": "2026-03-23", "source": "https://github.com/DrGlaucous/doukutsu-rs-nm", "source_commit": "51e64c2e9615bcd476034c69b58927877fe73494", "systems": ["cavestory"], "type": "standalone + libretro", "upstream": "https://github.com/doukutsu-rs/doukutsu-rs"}


id: drastic
name: DraStic
type: standalone
classification: other
source: https://archive.org/details/dra-stic-ds-emulator-r-2.6.0.4a
upstream: closed-source
profile_json:
{"author": "Exophase (Gilead Kutnick)", "core_classification": "other", "core_version": "r2.6.0.4a", "cores": ["drastic"], "display_name": "Nintendo - DS (DraStic)", "emulator": "DraStic", "exclusion_note": "fonts/orbitron.ttf and keymaps/Shield.dkm ship in the Android package and nothing opens them: neither string appears in the classes dex of the official apk nor in any of the native libraries, and the menus draw from a font compiled into the binary. Left out with them are the files DraStic authors itself and reads back, which are emulator state rather than system files: drastic.cfg and the per-directory drastic.cf2, the config/<name>.cfg profiles, savestates/<name>_<slot>.dss, the backup/<name>.dsv and .sav in-game saves, input_record/<name>.ir, the icon and file info caches, unzip_cache and unzipped_rom.nds, crash_dump.txt, the profiler dumps under profiles, and the drastic_mapped_memory.dat and drastic_mapped_memory_vram.dat scratch files of the memory mapper. ref: official apk classes dex, libdrastic_arm64.so, drastic r2.5.2.2 0x11a938,\n     drastic r2.5.2.2 0x11aca8, drastic r2.5.2.2 0x11b440, drastic r2.5.2.2 0x11b650,\n     drastic r2.5.2.2 0x11edd8, drastic r2.5.2.2 0x120190, drastic r2.5.2.2 0x1201b0,\n     drastic r2.5.2.2 0x1202d0, drastic r2.5.2.2 0x1217f0, drastic r2.5.2.2 0x121868,\n     drastic r2.5.2.2 0x1249f8, drastic r2.5.2.2 0x124b08\n", "files": [{"aliases": ["NDS_Bios9.bin", "bios9.bin", "biosnds9.rom"], "description": "Nintendo DS ARM9 BIOS", "name": "nds_bios_arm9.bin", "note": "First candidate for the ARM9 slot. Booting continues on the free replacement when it is absent, and the slot ending empty is fatal.", "path": "system/nds_bios_arm9.bin", "required": false, "size": 4096, "source_ref": "drastic r2.5.2.2 initialize_memory 0x1c398-0x1c3b0, drastic r2.5.2.2 load_system_file 0xea80-0xebe4, libdrastic_arm64.so 0x2b6d0-0x2b6ec", "system": "nintendo-ds", "validation": ["size"]}, {"bundled": true, "description": "DraStic free ARM9 BIOS replacement", "name": "drastic_bios_arm9.bin", "note": "Second candidate for the ARM9 slot, written by Exophase from public documentation and released under a BSD licence. Installed from the package assets on first run.", "path": "system/drastic_bios_arm9.bin", "required": false, "size": 4096, "source_ref": "drastic r2.5.2.2 initialize_memory 0x1c4b0-0x1c4d4, libdrastic_arm64.so 0x2b6f0-0x2b708, DraSticActivity.smali:4084-4090, drastic_bios_readme.txt:1-31", "system": "nintendo-ds", "validation": ["size"]}, {"aliases": ["NDS_Bios7.bin", "bios7.bin", "biosnds7.rom"], "description": "Nintendo DS ARM7 BIOS", "name": "nds_bios_arm7.bin", "note": "First candidate for the ARM7 slot, and the only image carrying the Blowfish key table at offset 0x30 that the card secure area is decrypted with.", "path": "system/nds_bios_arm7.bin", "required": false, "size": 16384, "source_ref": "drastic r2.5.2.2 initialize_memory 0x1c3bc-0x1c3d4, drastic r2.5.2.2 gamecard_load_program 0x6fb98-0x6fbac, libdrastic_arm64.so 0x2b724-0x2b73c", "system": "nintendo-ds", "validation": ["size"]}, {"bundled": true, "description": "DraStic free ARM7 BIOS replacement", "name": "drastic_bios_arm7.bin", "note": "Second candidate for the ARM7 slot. Offset 0x30 is zero filled, so cards whose secure area is encrypted do not decrypt under it.", "path": "system/drastic_bios_arm7.bin", "required": false, "size": 16384, "source_ref": "drastic r2.5.2.2 initialize_memory 0x1c508-0x1c52c, libdrastic_arm64.so 0x2b740-0x2b758, DraSticActivity.smali:4078-4083", "system": "nintendo-ds", "validation": ["size"]}, {"aliases": ["NDS_Lite_Firmware.bin", "dsfirmware.bin", "firmware.bin"], "description": "Nintendo DS firmware", "hle_fallback": true, "name": "nds_firmware.bin", "note": "Absent, the region is zeroed and patch_firmware_header_data writes a header, a console identity and a user settings block into it, so the emulator boots either way. r2.6.0.4a reads nds_firmware_modified.bin before this.", "path": "system/nds_firmware.bin", "required": false, "size": 262144, "source_ref": "drastic r2.5.2.2 initialize_memory 0x1c3e0-0x1c3f8, drastic r2.5.2.2 initialize_memory 0x1c560-0x1c578, drastic r2.5.2.2 patch_firmware_header_data 0x1b920, libdrastic_arm64.so 0x2b794-0x2b7c4", "system": "nintendo-ds", "validation": ["size"]}, {"description": "firmware image edited in the emulator", "hle_fallback": true, "name": "nds_firmware_modified.bin", "note": "Read before nds_firmware.bin in r2.6.0.4a and absent from r2.5.2.2.", "path": "system/nds_firmware_modified.bin", "required": false, "size": 262144, "source_ref": "libdrastic_arm64.so 0x2b768-0x2b790, libdrastic_arm64.so 0x774e0-0x7751c", "system": "nintendo-ds", "unsourceable": "written by the firmware editor of r2.6.0.4a from the emulated user settings, so no dump of it exists", "validation": ["size"]}, {"bundled": true, "category": "game_data", "description": "save type database, one entry per title", "name": "game_database.xml", "note": "Parsed from the root of the data directory. A failed open logs an error and the session continues without it. Installed from the package assets on first run.", "path": "game_database.xml", "required": false, "source_ref": "drastic r2.5.2.2 initialize_gamecard 0x709bc-0x70a00, drastic r2.5.2.2 initialize_game_database 0x73180, drastic r2.5.2.2 initialize_game_database 0x73d24-0x73d38, DraSticActivity.smali:5459", "system": "nintendo-ds"}, {"category": "game_data", "description": "user save type database", "name": "game_database_user.xml", "note": "Read after game_database.xml in r2.6.0.4a and absent from r2.5.2.2.", "path": "game_database_user.xml", "required": false, "source_ref": "libdrastic_arm64.so 0x76af8-0x76b28", "system": "nintendo-ds", "unsourceable": "user overlay of the save type database, authored per collection"}, {"bundled": true, "category": "game_data", "description": "Action Replay cheat library", "name": "usrcheat.dat", "note": "Read from the root of the data directory and written back when a cheat is toggled, so the file carries the enabled state. Installed from the package assets on first run.", "path": "usrcheat.dat", "required": false, "source_ref": "drastic r2.5.2.2 initialize_gamecard 0x70a0c-0x70a30, libdrastic_arm64.so 0x76b34-0x76b58, DraSticActivity.smali:5974", "system": "nintendo-ds"}, {"bundled": true, "category": "game_data", "description": "source archive of the free BIOS replacement", "name": "drastic_bios.zip", "note": "Copied to the root of the data directory on first run and never read back. Holds bios_common.S, a Makefile, the BSD licence notice and the two built images.", "path": "drastic_bios.zip", "required": false, "source_ref": "DraSticActivity.smali:5189-5200, drastic_bios_readme.txt:1-31"}, {"bundled": true, "category": "game_data", "description": "default screen layout", "name": "LC_default.dat", "note": "Android only. Copied out of the package assets into config on first run, and offered from there by the layout list, which filters that directory on the .dat extension.", "path": "config/LC_default.dat", "required": false, "source_ref": "DraSticActivity.smali:4052-4066, DraSticActivity.smali:4830-4925"}, {"bundled": true, "category": "game_data", "description": "post-processing chain definition", "name": "<name>.dfx", "note": "Android only. Names the passes, the texture inputs and the headers of one chain, all resolved relative to its own path. The package ships None, Linear, Quilez, Scale2X, Scanline, HQ2X, FXAA, FXAA HQ and SMAA.", "path": "shaders/<name>.dfx", "required": false, "source_ref": "DraSticActivity.smali:5619-5624, assets/shaders/_shader_format_.txt:11-21"}, {"bundled": true, "category": "game_data", "description": "GLSL stage source named by a chain", "name": "<name>.dsd", "note": "Android only. Named by the shader entry of a pass, and carrying the vertex and fragment code for it, together with the .h and .hlsl files the include tags pull in. A stage that fails to compile leaves a <name>dsd.log beside it.", "path": "shaders/<name>.dsd", "required": false, "source_ref": "assets/shaders/_shader_format_.txt:8-9, assets/shaders/_shader_format_.txt:36-40, assets/shaders/_shader_format_.txt:59-72, assets/shaders/_shader_format_.txt:75-98"}, {"bundled": true, "category": "game_data", "description": "lookup texture named by a chain", "name": "<name>.raw", "note": "Android only. Loaded when a texture tag names a file instead of the framebuffer or an FBO, with the dimensions and the format taken from the tag. SMAA is the one shipped chain that names any, taking smaa/AreaTexRGB.raw and smaa/SearchTexRGB.raw; the package also carries the non-RGB pair of the same two tables, which no shipped chain names.", "path": "shaders/<name>.raw", "required": false, "source_ref": "assets/shaders/_shader_format_.txt:42-56, assets/shaders/SMAA.dfx:1-6"}, {"bundled": true, "category": "game_data", "description": "on-screen controller skin", "name": "<name>.zip", "note": "Android only. Installed from the package assets, which carry Simple, Simple-II and Neon.", "path": "virtual_controller/<name>.zip", "required": false, "source_ref": "DraSticActivity.smali:5645, DraSticActivity.smali:5834"}, {"category": "game_data", "description": "default microphone input", "name": "microphone.wav", "note": "Read when no per-title file answers, and logged as the default fake microphone audio file.", "path": "microphone/microphone.wav", "required": false, "source_ref": "drastic r2.5.2.2 reset_spu 0x6dc30-0x6dc5c", "system": "nintendo-ds", "unsourceable": "audio the user records to stand in for the console microphone"}, {"category": "game_data", "description": "per-title microphone input", "name": "<game>.wav", "note": "Tried before microphone.wav and named after the running title.", "path": "microphone/<game>.wav", "required": false, "source_ref": "drastic r2.5.2.2 reset_spu 0x6dba8-0x6dbe8", "system": "nintendo-ds"}, {"category": "game_data", "description": "fallback Lua script", "name": "default.lua", "note": "Loaded at game start when no per-title script answers, then handed the load-game callback.", "path": "scripts/default.lua", "required": false, "source_ref": "drastic r2.5.2.2 load_nds 0x70054-0x70094", "unsourceable": "script the user writes against the built-in Lua 5.3 interpreter"}, {"category": "game_data", "description": "per-title Lua script", "name": "<game>.lua", "note": "Tried before default.lua and named after the running title.", "path": "scripts/<game>.lua", "required": false, "source_ref": "drastic r2.5.2.2 load_nds 0x6ff78-0x6ffd0"}, {"category": "game_data", "description": "custom cheat file", "name": "<game>.cht", "note": "Plain text, one bracketed cheat name per block followed by its codes, a trailing plus marking the cheat active. Read on top of the entries usrcheat.dat holds and written back when a cheat is toggled.", "path": "cheats/<game>.cht", "required": false, "source_ref": "drastic r2.5.2.2 load_custom_cheats 0x817b4, drastic r2.5.2.2 save_custom_cheats 0x81d24, drastic_readme.txt:789-812", "system": "nintendo-ds"}, {"category": "game_data", "description": "slot 2 cartridge image", "name": "<game>.gba", "note": "Loaded into the slot 2 cart window, with its save read from slot2/<game>.sav beside it.", "path": "slot2/<game>.gba", "required": false, "source_ref": "drastic r2.5.2.2 gamecard_load_gba 0x6ec98, drastic r2.5.2.2 gamecard_load_gba 0x6eda0", "system": "nintendo-ds", "unsourceable": "Game Boy Advance cartridge the title reads for bonus content"}, {"category": "game_data", "description": "R4 flashcart disk image", "name": "drastic_dldi.img", "note": "Opened read-write when a homebrew title is recognised and mounted as the fat:/ device. Absent, the message is logged and the title runs without a card.", "path": "drastic_dldi.img", "required": false, "source_ref": "drastic r2.5.2.2 gamecard_initialize_homebrew 0x6e4e0-0x6e518, drastic r2.5.2.2 gamecard_initialize_homebrew 0x6e5a4", "system": "nintendo-ds", "unsourceable": "FAT image the user builds for the emulated flashcart"}, {"category": "game_data", "description": "boot splash, first of two", "name": "drastic_logo_0.raw", "note": "Read from the root of the data directory in one 120000 byte request, so a shorter file is rejected. One of the two indices is picked at random and a missing file skips the splash.", "path": "drastic_logo_0.raw", "required": false, "size": 120000, "source_ref": "drastic r2.5.2.2 load_logo 0x7fad0-0x7fb78", "validation": ["size"]}, {"category": "game_data", "description": "boot splash, second of two", "name": "drastic_logo_1.raw", "note": "Same read as index 0.", "path": "drastic_logo_1.raw", "required": false, "size": 120000, "source_ref": "drastic r2.5.2.2 load_logo 0x7fad0-0x7fb78", "validation": ["size"]}], "mode": "standalone", "notes": "Nintendo DS emulator by Exophase, closed source and distributed as a binary.\nTwo releases are read here and they name the same files: the Android build\nr2.6.0.4a build 109, package com.dsemu.drastic, apk md5\n7df979ef9420c5053b27c838e6a7e20c, whose loader is\nlib/arm64-v8a/libdrastic_arm64.so and whose installer is the smali of\nDraSticActivity; and the Linux AArch64 build r2.5.2.2, md5\n17550db727f3b59d36b57746ad1944be, which ships unstripped with 2731 named\nfunctions and is cited by function name. r2.5.2.2 predates the firmware editor\nand the user database, and that is the whole of the divergence. Every\nreference below is an address in one of the two binaries or a line in the\napktool decode of the Android one.\nref: libdrastic_arm64.so, drastic r2.5.2.2 (DWARF comp_dir\n     /home/odroid/nds_emu/src/linux_odroid64), DraSticActivity.smali\n\nOne root holds everything. On Android it is a directory named DraStic at the\nroot of shared storage; on Linux it is the working directory. Startup creates\nbackup, savestates, config, unzip_cache, system, input_record, cheats, slot2,\nmicrophone and scripts below it, and the Android build adds backgrounds,\nicon_cache, users, shaders and virtual_controller. Paths below are relative to\nthat root.\nref: drastic r2.5.2.2 initialize_system_directories 0xf780,\n     drastic r2.5.2.2 0x11ac08-0x11ac80, drastic r2.5.2.2 initialize_system 0xf9e8,\n     DraSticPathCache.smali:44-56, DraSticActivity.smali:4373-4429,\n     DraSticActivity.smali:4187, DraSticActivity.smali:4482\n\nload_system_file builds <root>/system/<name>, opens it read only, measures it\nby seeking to the end, refuses any length other than the one its caller asks\nfor with \"System file %s is the wrong size (should be %d bytes, is %d)\", then\nreads it whole. Size is the only test; no hash is computed on any file.\nref: drastic r2.5.2.2 load_system_file 0xea80-0xebe4,\n     libdrastic_arm64.so 0x1b4d4-0x1b510\n\nEach BIOS slot has two candidates. The ARM9 slot takes nds_bios_arm9.bin, and\non failure logs \"Can't find Nintendo ARM9 BIOS. Trying free DraStic ARM9\nBIOS.\" and takes drastic_bios_arm9.bin; the ARM7 slot does the same with\nnds_bios_arm7.bin then drastic_bios_arm7.bin. A slot left empty returns -1\nfrom initialize_memory, and initialize_system answers that with the on-screen\nwarning naming the two Nintendo files and their sizes, the line \"FATAL: Could\nnot load system files.\" and quit. Neither name in a slot is required on its\nown, both slots are. Taking the replacement sets a bit per slot, which is what\nsavestates record so that a state made under one pair does not load under the\nother.\nref: drastic r2.5.2.2 initialize_memory 0x1c398-0x1c3d4,\n     drastic r2.5.2.2 initialize_memory 0x1c4b0-0x1c52c,\n     drastic r2.5.2.2 initialize_system 0xf940-0xf944,\n     drastic r2.5.2.2 initialize_system 0xf9f8-0xfa10,\n     drastic r2.5.2.2 menu_bios_warning 0x801e0-0x80238,\n     libdrastic_arm64.so 0x2b6d0-0x2b764\n\nFirmware is answered in code when no file loads: the 256 KB region is zeroed\nand patch_firmware_header_data writes the header, the console identity and the\nuser settings block into it. r2.5.2.2 reads nds_firmware.bin alone; r2.6.0.4a\nreads nds_firmware_modified.bin first, which is what its firmware editor\nwrites back, and falls through to nds_firmware.bin.\nref: drastic r2.5.2.2 initialize_memory 0x1c3e0-0x1c3f8,\n     drastic r2.5.2.2 initialize_memory 0x1c560-0x1c578,\n     drastic r2.5.2.2 patch_firmware_header_data 0x1b920,\n     libdrastic_arm64.so 0x2b768-0x2b7c4, libdrastic_arm64.so 0x774e0-0x7751c\n\nThe Nintendo ARM7 image still decides one thing. gamecard_load_program passes\nthe 0x1048 bytes at ARM7 BIOS offset 0x30 to gamecard_decrypt_secure_region as\nthe Blowfish key table, and a secure area that does not decrypt to the id\nencryObj is reported and left alone. The free ARM7 replacement holds zeroes\nthere, so encrypted cards need the dumped image.\nref: drastic r2.5.2.2 gamecard_load_program 0x6fb98-0x6fbac,\n     drastic r2.5.2.2 gamecard_decrypt_secure_region 0x6e2c0-0x6e38c,\n     drastic r2.5.2.2 initialize_memory 0x1c3bc-0x1c3c8\n\nTwo databases sit at the root. game_database.xml carries the save type per\ntitle and a failed open only logs \"Error: could not load game database file\n%s.\"; r2.6.0.4a reads game_database_user.xml after it as a user overlay.\nusrcheat.dat is the Action Replay library, read by load_cheat_directory.\nref: drastic r2.5.2.2 initialize_gamecard 0x709bc-0x70a30,\n     drastic r2.5.2.2 initialize_game_database 0x73180,\n     drastic r2.5.2.2 initialize_game_database 0x73d24-0x73d38,\n     libdrastic_arm64.so 0x76ab8-0x76b58\n\nThe Android package carries its own copies of the files it needs and lays them\ndown on first run: the two free BIOS images into system, the default layout\ninto config, game_database.xml, usrcheat.dat and the BSD-licensed source\narchive of the free BIOS at the root, and the shaders and virtual_controller\ntrees whole. Nothing already present is overwritten.\nref: DraSticActivity.smali:4052-4090, DraSticActivity.smali:5189-5200,\n     DraSticActivity.smali:5459, DraSticActivity.smali:5619-5624,\n     DraSticActivity.smali:5645, DraSticActivity.smali:5834,\n     DraSticActivity.smali:5974\n\nA .dfx names the passes of a post-processing chain and pulls its GLSL stages,\nits included headers and its lookup textures from paths relative to itself.\nNine chains ship: None, Linear, Quilez, Scale2X, Scanline, HQ2X, FXAA, FXAA HQ\nand SMAA, the last two reading .raw lookup textures.\nref: assets/shaders/_shader_format_.txt:12-58, assets/shaders/SMAA.dfx:1-6\n\nPer-title inputs are read beside the ROM name. reset_spu answers the\nmicrophone with microphone/<game>.wav then microphone/microphone.wav, load_nds\nruns scripts/<game>.lua then scripts/default.lua through the built-in Lua\n5.3, load_custom_cheats reads cheats/<game>.cht on top of the library, and\ngamecard_load_gba fills the slot 2 cart from slot2/<game>.gba with its save\nbeside it. Homebrew turns on R4 flashcart emulation and opens\ndrastic_dldi.img read-write for the fat:/ device, logging \"Couldn't load\ndrastic_dldi.img: \" and carrying on without one.\nref: drastic r2.5.2.2 reset_spu 0x6dba8-0x6dc5c,\n     drastic r2.5.2.2 load_nds 0x6ff78-0x6ffd0, drastic r2.5.2.2 load_nds 0x70054-0x70094,\n     drastic r2.5.2.2 load_custom_cheats 0x817b4,\n     drastic r2.5.2.2 gamecard_load_gba 0x6ec98, drastic r2.5.2.2 gamecard_load_gba 0x6eda0,\n     drastic r2.5.2.2 gamecard_initialize_homebrew 0x6e4e0-0x6e518,\n     drastic r2.5.2.2 gamecard_initialize_homebrew 0x6e5a4\n\nThe Linux build alone draws a splash, reading drastic_logo_0.raw or\ndrastic_logo_1.raw at 120000 bytes each, one of the two picked at random.\nref: drastic r2.5.2.2 load_logo 0x7fad0-0x7fb78\n", "profiled_date": "2026-08-11", "source": "https://archive.org/details/dra-stic-ds-emulator-r-2.6.0.4a", "systems": ["nintendo-ds"], "type": "standalone", "upstream": "closed-source"}


id: dreamm
name: DREAMM
type: standalone
classification: other
source: https://dreamm.aarongiles.com/
upstream: https://dreamm.aarongiles.com/
profile_json:
{"core_classification": "other", "core_version": "4.0", "cores": ["dreamm"], "display_name": "LucasArts (DREAMM)", "emulator": "DREAMM", "files": [{"crc32": "4c91fa96", "description": "Roland MT-32 v1.04 control ROM", "name": "mt32_ctrl_1_04.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_04.rom", "required": false, "sha1": "5a5cb5a77d7d55ee69657c2f870416daed52dea7", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23dafc8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "a93b65f2", "description": "Roland MT-32 v1.04 control ROM, chip A", "name": "mt32_ctrl_1_04_a.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_04_a.rom", "required": false, "sha1": "9cd4858014c4e8a9dff96053f784bfaac1092a2e", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23dafd8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "b5ee2192", "description": "Roland MT-32 v1.04 control ROM, chip B", "name": "mt32_ctrl_1_04_b.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_04_b.rom", "required": false, "sha1": "fe8db469b5bfeb37edb269fd47e3ce6d91014652", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23dafe8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "e6bb2b77", "description": "Roland MT-32 v1.05 control ROM", "name": "mt32_ctrl_1_05.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_05.rom", "required": false, "sha1": "e17a3a6d265bf1fa150312061134293d2b58288c", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23daff8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "3281216c", "description": "Roland MT-32 v1.05 control ROM, chip A", "name": "mt32_ctrl_1_05_a.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_05_a.rom", "required": false, "sha1": "57a09d80d2f7ca5b9734edbe9645e6e700f83701", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db008, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "e06d8020", "description": "Roland MT-32 v1.05 control ROM, chip B", "name": "mt32_ctrl_1_05_b.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_05_b.rom", "required": false, "sha1": "52e3c6666db9ef962591a8ee99be0cde17f3a6b6", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db018, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "d63319e8", "description": "Roland MT-32 v1.06 control ROM", "name": "mt32_ctrl_1_06.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_06.rom", "required": false, "sha1": "a553481f4e2794c10cfe597fef154eef0d8257de", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db028, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "29369ae1", "description": "Roland MT-32 v1.06 control ROM, chip A", "name": "mt32_ctrl_1_06_a.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_06_a.rom", "required": false, "sha1": "cc83bf23cee533097fb4c7e2c116e43b50ebacc8", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db038, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "4d495d98", "description": "Roland MT-32 v1.06 control ROM, chip B", "name": "mt32_ctrl_1_06_b.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_06_b.rom", "required": false, "sha1": "bf4f15666bc46679579498386704893b630c1171", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db048, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "a7c1531b", "description": "Roland MT-32 v1.07 control ROM", "name": "mt32_ctrl_1_07.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_07.rom", "required": false, "sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db058, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "67fd8968", "description": "Roland MT-32 v1.07 control ROM, chip A", "name": "mt32_ctrl_1_07_a.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_07_a.rom", "required": false, "sha1": "13f06b38f0d9e0fc050b6503ab777bb938603260", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db068, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "60f45882", "description": "Roland MT-32 v1.07 control ROM, chip B", "name": "mt32_ctrl_1_07_b.rom", "path": "sounddata/mt32emu/mt32_ctrl_1_07_b.rom", "required": false, "sha1": "c55e165487d71fa88bd8c5e9c083bc456c1a89aa", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db078, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "627b9a51", "description": "Roland MT-32 Blue Ridge Enhanced control ROM", "name": "mt32_ctrl_bluer.rom", "path": "sounddata/mt32emu/mt32_ctrl_bluer.rom", "required": false, "sha1": "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db0b8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "d75fc3d9", "description": "Roland MT-32 Blue Ridge Enhanced control ROM, chip A", "name": "mt32_ctrl_bluer_a.rom", "path": "sounddata/mt32emu/mt32_ctrl_bluer_a.rom", "required": false, "sha1": "11a6ae5d8b6ee328b371af7f1e40b82125aa6b4d", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db0c8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "5816476f", "description": "Roland MT-32 Blue Ridge Enhanced control ROM, chip B", "name": "mt32_ctrl_bluer_b.rom", "path": "sounddata/mt32emu/mt32_ctrl_bluer_b.rom", "required": false, "sha1": "e0934320d7cbb5edfaa29e0d01ae835ef620085b", "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db0d8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"description": "Roland MT-32 v2.03 control ROM", "name": "mt32_ctrl_2_03.rom", "path": "sounddata/mt32emu/mt32_ctrl_2_03.rom", "required": false, "sha1": "5837064c9df4741a55f7c4d8787ac158dff2d3ce", "size": 131072, "source_ref": "DREAMM 4.0 linux-x64: set table 0x23db5a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "sha1"]}, {"crc32": "59a49d5c", "description": "Roland MT-32 v2.04 control ROM", "name": "mt32_ctrl_2_04.rom", "path": "sounddata/mt32emu/mt32_ctrl_2_04.rom", "required": false, "sha1": "2c16432b6c73dd2a3947cba950a0f4c19d6180eb", "size": 131072, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db088, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "94815415", "description": "Roland MT-32 v2.06 control ROM", "name": "mt32_ctrl_2_06.rom", "path": "sounddata/mt32emu/mt32_ctrl_2_06.rom", "required": false, "sha1": "2869cf4c235d671668cfcb62415e2ce8323ad4ed", "size": 131072, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db098, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "a016b607", "description": "Roland MT-32 v2.07 control ROM", "name": "mt32_ctrl_2_07.rom", "path": "sounddata/mt32emu/mt32_ctrl_2_07.rom", "required": false, "sha1": "47b52adefedaec475c925e54340e37673c11707c", "size": 131072, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db0a8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "ee62022f", "description": "Roland CM-32L v1.00 control ROM", "name": "cm32l_ctrl_1_00.rom", "path": "sounddata/mt32emu/cm32l_ctrl_1_00.rom", "required": false, "sha1": "73683d585cd6948cc19547942ca0e14a0319456d", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23daf88, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "b998047e", "description": "Roland CM-32L v1.02 control ROM", "name": "cm32l_ctrl_1_02.rom", "path": "sounddata/mt32emu/cm32l_ctrl_1_02.rom", "required": false, "sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23daf98, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "4a3bb4ef", "description": "Roland CM-32LN v1.00 control ROM", "name": "cm32ln_ctrl_1_00.rom", "path": "sounddata/mt32emu/cm32ln_ctrl_1_00.rom", "required": false, "sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077", "size": 65536, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23daf78, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "573e31cc", "description": "Roland MT-32 PCM ROM", "name": "mt32_pcm.rom", "path": "sounddata/mt32emu/mt32_pcm.rom", "required": false, "sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252", "size": 524288, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db0e8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "dd9deac3", "description": "Roland MT-32 PCM ROM, low half", "name": "mt32_pcm_l.rom", "path": "sounddata/mt32emu/mt32_pcm_l.rom", "required": false, "sha1": "3a1e19b0cd4036623fd1d1d11f5f25995585962b", "size": 262144, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db108, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "4ee6506c", "description": "Roland MT-32 PCM ROM, high half", "name": "mt32_pcm_h.rom", "path": "sounddata/mt32emu/mt32_pcm_h.rom", "required": false, "sha1": "2cadb99d21a6a4a6f5b61b6218d16e9b43f61d01", "size": 262144, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db0f8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "4b961eba", "description": "Roland CM-32L PCM ROM", "name": "cm32l_pcm.rom", "path": "sounddata/mt32emu/cm32l_pcm.rom", "required": false, "sha1": "289cc298ad532b702461bfc738009d9ebe8025ea", "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23dafa8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "8e9ea06e", "description": "Roland CM-32L PCM ROM, high half", "name": "cm32l_pcm_h.rom", "path": "sounddata/mt32emu/cm32l_pcm_h.rom", "required": false, "sha1": "3ad889fde5db5b6437cbc2eb6e305312fec3df93", "size": 524288, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23dafb8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table", "validation": ["size", "crc32", "sha1"]}, {"crc32": "d072c251", "description": "Roland SC-55 v1.00 program ROM (ROM1)", "name": "sc55_rom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_rom1.bin", "required": false, "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db118", "validation": ["size", "crc32"]}, {"crc32": "dbaaae8f", "description": "Roland SC-55 v1.00 program ROM (ROM2)", "name": "sc55_rom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_rom2.bin", "required": false, "size": 262144, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db128", "validation": ["size", "crc32"]}, {"crc32": "1ac774d3", "description": "Roland SC-55 v1.00 wave ROM (WAVEROM1)", "name": "sc55_waverom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom1.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db138", "validation": ["size", "crc32"]}, {"crc32": "8dcc592a", "description": "Roland SC-55 v1.00 wave ROM (WAVEROM2)", "name": "sc55_waverom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom2.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db148", "validation": ["size", "crc32"]}, {"crc32": "e21ebc04", "description": "Roland SC-55 v1.00 wave ROM (WAVEROM3)", "name": "sc55_waverom3.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom3.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db158", "validation": ["size", "crc32"]}, {"crc32": "4ed0d171", "description": "Roland SC-55 v1.20 program ROM (ROM1)", "name": "sc55_rom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_rom1.bin", "required": false, "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db168", "validation": ["size", "crc32"]}, {"crc32": "ebd488fd", "description": "Roland SC-55 v1.20 program ROM (ROM2)", "name": "sc55_rom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_rom2.bin", "required": false, "size": 262144, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db178", "validation": ["size", "crc32"]}, {"crc32": "1ac774d3", "description": "Roland SC-55 v1.20 wave ROM (WAVEROM1)", "name": "sc55_waverom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_waverom1.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db188", "validation": ["size", "crc32"]}, {"crc32": "8dcc592a", "description": "Roland SC-55 v1.20 wave ROM (WAVEROM2)", "name": "sc55_waverom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_waverom2.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db198", "validation": ["size", "crc32"]}, {"crc32": "e21ebc04", "description": "Roland SC-55 v1.20 wave ROM (WAVEROM3)", "name": "sc55_waverom3.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_waverom3.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db1a8", "validation": ["size", "crc32"]}, {"crc32": "4ed0d171", "description": "Roland SC-55 v1.21 program ROM (ROM1)", "name": "sc55_rom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_rom1.bin", "required": false, "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db1b8", "validation": ["size", "crc32"]}, {"crc32": "2dc58549", "description": "Roland SC-55 v1.21 program ROM (ROM2)", "name": "sc55_rom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_rom2.bin", "required": false, "size": 262144, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db1c8", "validation": ["size", "crc32"]}, {"crc32": "1ac774d3", "description": "Roland SC-55 v1.21 wave ROM (WAVEROM1)", "name": "sc55_waverom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_waverom1.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db1d8", "validation": ["size", "crc32"]}, {"crc32": "8dcc592a", "description": "Roland SC-55 v1.21 wave ROM (WAVEROM2)", "name": "sc55_waverom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_waverom2.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db1e8", "validation": ["size", "crc32"]}, {"crc32": "e21ebc04", "description": "Roland SC-55 v1.21 wave ROM (WAVEROM3)", "name": "sc55_waverom3.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_waverom3.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db1f8", "validation": ["size", "crc32"]}, {"crc32": "a160da90", "description": "Roland SC-55 v2.00 program ROM (ROM1)", "name": "sc55_rom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_rom1.bin", "required": false, "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db208", "validation": ["size", "crc32"]}, {"crc32": "1768cc18", "description": "Roland SC-55 v2.00 program ROM (ROM2)", "name": "sc55_rom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_rom2.bin", "required": false, "size": 262144, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db218", "validation": ["size", "crc32"]}, {"crc32": "1ac774d3", "description": "Roland SC-55 v2.00 wave ROM (WAVEROM1)", "name": "sc55_waverom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_waverom1.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db228", "validation": ["size", "crc32"]}, {"crc32": "8dcc592a", "description": "Roland SC-55 v2.00 wave ROM (WAVEROM2)", "name": "sc55_waverom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_waverom2.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db238", "validation": ["size", "crc32"]}, {"crc32": "e21ebc04", "description": "Roland SC-55 v2.00 wave ROM (WAVEROM3)", "name": "sc55_waverom3.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_waverom3.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db248", "validation": ["size", "crc32"]}, {"crc32": "9b66631f", "description": "Roland SC-55mk2 v1.01 program ROM (ROM1)", "name": "rom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom1.bin", "required": false, "size": 32768, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db258", "validation": ["size", "crc32"]}, {"crc32": "fcee1e8e", "description": "Roland SC-55mk2 v1.01 program ROM (ROM2)", "name": "rom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom2.bin", "required": false, "size": 524288, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db268", "validation": ["size", "crc32"]}, {"crc32": "702c0a82", "description": "Roland SC-55mk2 v1.01 sub-MCU ROM (SMROM)", "name": "rom_sm.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom_sm.bin", "required": false, "size": 4096, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db278", "validation": ["size", "crc32"]}, {"crc32": "1519d3b3", "description": "Roland SC-55mk2 v1.01 wave ROM (WAVEROM1)", "name": "waverom1.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/waverom1.bin", "required": false, "size": 2097152, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db288", "validation": ["size", "crc32"]}, {"crc32": "0f826c7f", "description": "Roland SC-55mk2 v1.01 wave ROM (WAVEROM2)", "name": "waverom2.bin", "path": "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/waverom2.bin", "required": false, "size": 1048576, "source_ref": "DREAMM 4.0 linux-x64: ROM manifest 0x23db298", "validation": ["size", "crc32"]}], "mode": "standalone", "notes": "Closed-source emulator by Aaron Giles for LucasArts, Lucasfilm Games and\nLucas Learning titles, shipped as a single executable for Windows, macOS and\nLinux on x64 and ARM64. The game database is compiled in: 67 definitions\ncovering 1013 variants, keyed on machine = pc, fmtowns or tandy and\nosenv = dos, windows or fmtowns. Windows titles run on a reimplemented Win16\nand Win32 layer carried inside the executable. The game directory is passed\non the command line and the title is detected from its contents.\nref: DREAMM 4.0 linux-x64, appended zip game/*.dreamm\n\nSupport files live in the SDL preference path for organisation\n\"Aaron Giles\" and application \"DREAMM\":\n%APPDATA%\\Aaron Giles\\DREAMM on Windows,\n~/Library/Application Support/Aaron Giles/DREAMM on macOS,\n$XDG_DATA_HOME/Aaron Giles/DREAMM on Linux. Paths below are relative to that\ndirectory. Startup writes config.json and creates install, gamedelta,\nscreenshots, logs and sounddata.\nref: SDL_GetPrefPath; strace of DREAMM 4.0 linux-x64 with a clean HOME\n\nAudio hardware is set per game and per variant: speaker, cms, adlib, sb16,\ntandy, mt32 and gmidi. MT-32 and General MIDI output can go to an external\nMIDI device, to the OPL MIDI generator or to a SoundFont, so no ROM file is\nneeded to play any title. ROMs add the two hardware synthesiser options.\nref: game/*.dreamm audiohw; \"Expected one of 'speaker', 'cms', 'adlib',\n     'sb16', 'mt32', or 'gmidi' in audiohw\"\n\nMT-32 and CM-32L are emulated by a bundled munt build, unpacked at runtime\nto sounddata/mt32emu-dreamm.so and driven through mt32emu_get_service_i.\nTwelve ROM sets are declared in a table of twelve 64-byte records holding\ndisplay name, id, control ROM full image, control chips A and B, PCM full\nimage and PCM low and high halves: MT-32 v1.04, v1.05, v1.06, v1.07, Blue\nRidge Enhanced, v2.03, v2.04, v2.06, v2.07, CM-32L v1.00, CM-32L v1.02 and\nCM-32LN v1.00. A set is offered once a control ROM is present as the full\nimage or as both chips, and a PCM ROM is present as the full image or as\nboth halves. The CM-32L sets name cm32l_pcm.rom as the full image,\nmt32_pcm_l.rom as the low half and cm32l_pcm_h.rom as the high half. munt\nidentifies each file by size then SHA1 before opening the synth.\nref: set table 0x23db4a8, id lookup 0x164d050, availability 0x164d2a8;\n     munt ROMInfo.cpp:206-214 ROMInfo::getROMInfo\n\nThe SC-55 is emulated by the Nuked SC-55 CLAP plug-in, unpacked to\nsounddata/Nuked-SC55.clap, which reads one model directory under\nNuked-SC55-Resources/ROMs. Five models are probed at startup: SC-55 v1.00,\nv1.20, v1.21, v2.00 and SC-55mk2 v1.01. The plug-in identifies a set by\nhashing the directory contents, so its own loader does not depend on the\nfile names.\nref: strace of DREAMM 4.0 linux-x64; Nuked-SC55-CLAP nuked_sc55.cpp:145-212\n     GetRomBasePaths and Init, rom_loader.cpp:31-80 DetectRomsetsByHash\n\nBoth families install by dropping files on the Manage Sound Fonts & ROMs\nscreen, or by copying them into sounddata by hand. A dropped file is matched\nagainst a 51-entry manifest of {crc32, size, name} sorted by name: one path\nresolves a file by name and checks its size then its CRC32, the other maps a\nsize and CRC32 back to the destination paths listed below. The manifest\nsizes agree with the bundled munt ROM table. mt32_ctrl_2_03.rom is named by\nthe v2.03 set but has no manifest entry, so it loads from sounddata and\ncannot be installed by drag and drop.\nref: manifest 0x23daf78, name match 0x16456a0, reverse lookup 0x1645880;\n     \"To install Sound Fonts (.sf2 files) or ROMs for Roland MIDI emulation,\n     drop them onto this screen.\"\n\nSoundFonts are read from sounddata as well: the directory is scanned at\nstartup and every .sf2 found becomes a MIDI output option for both MT-32 and\nGMIDI. No name and no hash is compiled in and the file keeps the name it\narrived with, so none is listed below.\nref: sounddata scan; \"Error loading soundfont '{}': {}\", \"Font file '{}'\n     seems to be an MT-32 set, not compatible with GMIDI\"\n\nEverything else the emulator reads is appended to the executable and\nunpacked at runtime: the game definitions and their icons, the copy\nprotection artwork, gamecontrollerdb.txt, the shaders, the UI fonts and\nimages, the two synthesiser plug-ins, and the Win16 and Win32 system files,\nfonts and sounds.\nref: appended zip, 488 entries\n", "profiled_date": "2026-08-08", "source": "https://dreamm.aarongiles.com/", "systems": ["dos", "ibm-pc", "tandy-1000", "fmtowns"], "type": "standalone", "upstream": "https://dreamm.aarongiles.com/"}


id: droidarcadia
name: DroidArcadia
type: standalone
classification: embedded_hle
source: https://amigan.1emu.net/releases/
upstream: https://amigan.1emu.net/releases/
profile_json:
{"author": "James Jacobs (Amigan Software)", "core_classification": "embedded_hle", "core_version": "4.60", "cores": ["droidarcadia", "com.amigan.droidarcadia"], "display_name": "Emerson Arcadia 2001 / Interton VC 4000 (DroidArcadia)", "emulator": "DroidArcadia", "exclusion_note": "Nothing to obtain. The app reads back only what it writes in its own private storage, each read wrapped in a catch that continues when the file is absent: DroidArcadia.ini for settings, DroidArcadia.hgh for the high score table, and Autosave.cos with Quicksave.cos for save states. Screenshots go out to /sdcard/Pictures/DroidArcadia and are never read back, and RetroAchievements traffic, login and badge and game images alike, is decoded in memory. The apk carries no assets directory and no raw resource, so no payload is unpacked on first run either. ref: MainActivity.java:1123,1184,1242,1312,1340,1415,\n     OptionsActivity.java:224-235,682,742, RAActivity.java:237-238,268-269,\n     NetworkUtil.java:17-38\n", "files": [], "mode": "standalone", "notes": "Android build of the Signetics 2650 emulator line by James Jacobs, published\nas package com.amigan.droidarcadia. A game arrives as a content URI declared\nby the manifest under MIME type application/octet-stream or application/zip,\na zip yielding its first member only, and the read stops at 32768 bytes. This\nreading is taken from the author's own source archive DroidArcadia-src.rar\n4.60, md5 5f88d8b01493a2430d2f9c94da69bf8a, and confirmed against the\npublished DroidArcadia.apk, md5 a72cf2f5e2b213577f3e185aa58f7e21.\nref: app/src/main/cpp/da.h:3-5, app/src/main/AndroidManifest.xml:21-37,\n     app/build.gradle:22-28, MainActivity.java:1502-1558,\n     res/values/strings.xml:5-6\n\nFifteen memory maps over five machines: Interton VC 4000 types A to D,\nElektor TV Games Computer basic and expanded, Emerson Arcadia 2001 types G\n(Emerson), H (Tele-Fever) and I (Palladium), and the coin-ops Astro Wars,\nGalaxia, Laser Battle and Lazarian (Zaccaria) with Malzak 1 and 2 (Kitronix).\nref: android.c:245-261, da.h:445-467\n\nEvery ROM those machines run is a const array compiled into\nlibdroidarcadia.so and copied into memory when the machine is set up:\na_bios[348] for the\nArcadia boot stub, i_bios[287] for the Interton one, e_bios_philips[2048] and\ne_bios_hobbymodule[2048] for the two Elektor monitor ROMs, galaxia_game,\nastrowars_game, lb_game and lz_game for the Zaccaria coin-ops, m1_bios and\nm2_bios for the Malzak pair. The first sixteen bytes of all ten arrays are\npresent in the arm64 library of the published apk.\nref: android.c:588-596, arcadia.h:279 with arcadia.c:426, interton.h:1 with\n     interton.c:36, elektor.h:1,131 with elektor.c:95-103,\n     zaccaria.h:1,644,1599,3653 with zaccaria.c:243,325,423,436,\n     malzak.h:1,558 with malzak.c:363,373\n\nThe native side never opens a file. It receives the game as a byte array over\nJNI and parses it in memory: a cartridge is matched on size and CRC32 against\nthe games.h table, and the bios field of the matched entry carries the Arcadia\nregion and picks which of the two Elektor monitor ROMs is installed.\nRetroAchievements identification is handed that same memory with the file path\nargument left NULL, so the file reader of the bundled rcheevos is never\nreached. A coin-op is stepped to through the machine button rather than\nloaded, and a raw binary aimed at Zaccaria or Malzak hardware is refused.\nref: android.c:877-894, android.c:2166-2192, android.c:2082-2096,\n     android.c:1010-1013, android.c:4592-4631, elektor.c:95-103,\n     OptionsActivity.java:455-465\n", "profiled_date": "2026-08-11", "source": "https://amigan.1emu.net/releases/", "systems": ["emerson-arcadia-2001", "interton-vc4000", "elektor-tv-games-computer", "arcade"], "type": "standalone", "upstream": "https://amigan.1emu.net/releases/"}


