feat: 4-source verified emulator profiles (A-E cores)

33 emulator profiles created or updated with systematic
verification against libretro docs, .info, core source,
and original emulator source code.

New profiles: bsnes-jg, bsnes2014, bsnes_cplusplus98,
bsnes_hd_beta, bsnes_mercury, citra2018, citra_canary.

Key fixes:
- dosbox_svn/svn_ce: not aliases of dosbox_core (no MUNT)
- beetle_psx: alt_names renamed to aliases (field bug)
- dolphin: added 15 Realtek BT firmware for Wiimote passthrough
- dosbox_core: added CM-32LN, 13 split ROM pairs for standalone
- duckstation: type standalone+libretro, 106 BIOS verified
- snes9x/np2kai: formal aliases for alternate filenames
This commit is contained in:
Abdessamad Derraz
2026-03-19 08:09:34 +01:00
parent 86dbdf28e5
commit 71b127efb5
33 changed files with 1400 additions and 260 deletions
+78 -16
View File
@@ -1,28 +1,90 @@
emulator: Azahar emulator: Azahar
type: alias type: standalone + libretro
alias_of: citra
source: "https://github.com/azahar-emu/azahar" source: "https://github.com/azahar-emu/azahar"
upstream: "https://github.com/azahar-emu/azahar" upstream: "https://github.com/azahar-emu/azahar"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "Git" core_version: "Git"
display_name: "Nintendo - 3DS (Azahar)" display_name: "Nintendo - 3DS (Azahar)"
cores: [azahar]
systems:
- nintendo-3ds
notes: | notes: |
Azahar is the successor to Citra (via Lime3DS). Same codebase, same Azahar is the successor to Citra (via Lime3DS). Different codebase
BIOS/firmware requirements. See emulators/citra.yml for the full file list. from libretro/citra — has additional files not in the old Citra.
Data dir: azahar-emu (legacy: citra-emu, lime3ds-emu).
ref: src/common/common_paths.h:41-47
Key difference: data directory changed from citra-emu/lime3ds-emu to Key file: keys.txt (NOT aes_keys.txt like libretro/citra).
azahar-emu. Legacy dirs are still scanned as fallback. ref: src/common/common_paths.h:83
ref: azahar/src/common/common_paths.h:41-47
Files needed (all optional, HLE fallback for most): Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
sysdata/keys.txt, sysdata/boot9.bin, sysdata/sector0x96.bin, ref: src/citra_libretro/environment.cpp:194
sysdata/shared_font.bin, sysdata/seeddb.bin, sysdata/otp.bin,
nand/private/movable.sed, nand/rw/sys/SecureInfo_A,
nand/rw/sys/LocalFriendCodeSeed_B
.info has firmware_count=0 but core uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY .info has firmware_count=0 but core uses system_dir for files.
(src/citra_libretro/environment.cpp:194) to locate system files.
files: [] files:
# all files documented in emulators/citra.yml — same codebase # --- sysdata/ ---
- name: keys.txt
path: sysdata/keys.txt
system: nintendo-3ds
required: false
note: "AES keys (named keys.txt in Azahar, aes_keys.txt in old Citra)"
source_ref: "src/common/common_paths.h:83, src/core/hw/aes/key.cpp:291"
- name: boot9.bin
path: sysdata/boot9.bin
system: nintendo-3ds
required: false
source_ref: "src/common/common_paths.h:84"
- name: sector0x96.bin
path: sysdata/sector0x96.bin
system: nintendo-3ds
required: false
source_ref: "src/common/common_paths.h:85"
- name: shared_font.bin
path: sysdata/shared_font.bin
system: nintendo-3ds
required: false
note: "HLE fallback if missing"
source_ref: "src/common/common_paths.h:82"
- name: seeddb.bin
path: sysdata/seeddb.bin
system: nintendo-3ds
required: false
note: "game seed database for 9.6+ titles"
source_ref: "src/core/file_sys/seed_db.cpp:15"
# --- Azahar-only (not in libretro/citra) ---
# These require src/core/hw/unique_data.cpp which only exists in Azahar
- name: otp.bin
path: sysdata/otp.bin
system: nintendo-3ds
required: false
note: "OTP data for key derivation. Azahar-only."
source_ref: "src/core/hw/unique_data.cpp:214"
- name: movable.sed
path: nand/private/movable.sed
system: nintendo-3ds
required: false
note: "console-unique key seed. Azahar-only."
source_ref: "src/core/hw/unique_data.cpp:218"
- name: SecureInfo_A
path: nand/rw/sys/SecureInfo_A
system: nintendo-3ds
required: false
note: "console serial/region. Azahar-only."
source_ref: "src/core/hw/unique_data.cpp:206"
- name: LocalFriendCodeSeed_B
path: nand/rw/sys/LocalFriendCodeSeed_B
system: nintendo-3ds
required: false
note: "friend code generation. Azahar-only."
source_ref: "src/core/hw/unique_data.cpp:210"
+5 -5
View File
@@ -26,7 +26,7 @@ files:
sha1: "b05def971d8ec59f346f2d9ac21fb742e3eb6917" sha1: "b05def971d8ec59f346f2d9ac21fb742e3eb6917"
md5: "8dd7d5296a650fac7319bce665a6a53c" md5: "8dd7d5296a650fac7319bce665a6a53c"
source_ref: "libretro.cpp:252-256" source_ref: "libretro.cpp:252-256"
alt_names: ["SCPH5500.bin", "SCPH-5500.bin"] aliases: ["SCPH5500.bin", "SCPH-5500.bin"]
# -- Region: North America (REGION_NA) -- # -- Region: North America (REGION_NA) --
@@ -37,7 +37,7 @@ files:
sha1: "0555c6fae8906f3f09baf5988f00e55f88e9f30b" sha1: "0555c6fae8906f3f09baf5988f00e55f88e9f30b"
md5: "490f666e1afb15b7362b406ed1cea246" md5: "490f666e1afb15b7362b406ed1cea246"
source_ref: "libretro.cpp:258-270" source_ref: "libretro.cpp:258-270"
alt_names: aliases:
- "SCPH5501.bin" - "SCPH5501.bin"
- "SCPH-5501.bin" - "SCPH-5501.bin"
- "scph5503.bin" - "scph5503.bin"
@@ -56,7 +56,7 @@ files:
sha1: "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0" sha1: "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"
md5: "32736f17079d0b2b7024407c39bd3050" md5: "32736f17079d0b2b7024407c39bd3050"
source_ref: "libretro.cpp:272-282" source_ref: "libretro.cpp:272-282"
alt_names: aliases:
- "SCPH5502.bin" - "SCPH5502.bin"
- "SCPH-5502.bin" - "SCPH-5502.bin"
- "scph5552.bin" - "scph5552.bin"
@@ -72,7 +72,7 @@ files:
sha1: "96880d1ca92a016ff054be5159bb06fe03cb4e14" sha1: "96880d1ca92a016ff054be5159bb06fe03cb4e14"
md5: "c53ca5908936d412331790f4426c6c33" md5: "c53ca5908936d412331790f4426c6c33"
source_ref: "libretro.cpp:190-196" source_ref: "libretro.cpp:190-196"
alt_names: ["PSXONPSP660.bin"] aliases: ["PSXONPSP660.bin"]
notes: "override_bios=1 (psxonpsp option). Falls back to region BIOS if not found." notes: "override_bios=1 (psxonpsp option). Falls back to region BIOS if not found."
- name: "ps1_rom.bin" - name: "ps1_rom.bin"
@@ -82,5 +82,5 @@ files:
sha1: "c40146361eb8cf670b19fdc9759190257803cab7" sha1: "c40146361eb8cf670b19fdc9759190257803cab7"
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b" md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
source_ref: "libretro.cpp:198-204" source_ref: "libretro.cpp:198-204"
alt_names: ["PS1_ROM.bin"] aliases: ["PS1_ROM.bin"]
notes: "override_bios=2 (ps1_rom option). Falls back to region BIOS if not found." notes: "override_bios=2 (ps1_rom option). Falls back to region BIOS if not found."
+14 -13
View File
@@ -14,16 +14,17 @@ notes: |
to libretro by Ryphecha. It is a lightweight, accuracy-focused NES core. to libretro by Ryphecha. It is a lightweight, accuracy-focused NES core.
The core loads cartridge data entirely through retro_load_game with The core loads cartridge data entirely through retro_load_game with
need_fullpath=false (libretro.cpp:129). ROM data is passed as a memory need_fullpath=false (libretro/libretro.cpp:129). ROM data is passed as a
buffer and parsed by Cartridge::load (cartridge.cpp:18-31), which detects memory buffer and parsed by Cartridge::load (nes/cartridge/cartridge.cpp:18-31),
iNES headers (16-byte offset) and delegates to Board::load for mapper setup. which detects iNES headers (16-byte offset) and delegates to Board::load.
The PPU generates its palette from a hardcoded color table in libretro.cpp The PPU generates its palette from a hardcoded color table in
(lines 20-37) with emphasis factor tables. No external palette file is loaded. libretro/libretro.cpp:20-37 with emphasis factor tables. No external
palette file is loaded.
System::init (system.cpp:62-66) only sets up the interface pointer and System::init (nes/system/system.cpp:62-66) only sets up the interface
default input devices. No system ROM, BIOS, or firmware is loaded at any pointer and default input devices. No system ROM, BIOS, or firmware is
stage of initialization or cartridge loading. loaded at any stage of initialization or cartridge loading.
The core does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and has no The core does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and has no
file I/O for BIOS or firmware. FDS (Famicom Disk System) is not supported, file I/O for BIOS or firmware. FDS (Famicom Disk System) is not supported,
@@ -35,11 +36,11 @@ files: []
analysis: analysis:
bios_search: bios_search:
retro_load_game: "libretro.cpp:181-211 - loads cartridge data only, no BIOS" retro_load_game: "libretro/libretro.cpp:181-211 - loads cartridge data only, no BIOS"
cartridge_load: "cartridge.cpp:18-31 - parses iNES header + ROM data" cartridge_load: "nes/cartridge/cartridge.cpp:18-31 - parses iNES header + ROM data"
system_init: "system.cpp:62-66 - sets interface pointer, no ROM loading" system_init: "nes/system/system.cpp:62-66 - sets interface pointer, no ROM loading"
system_power: "system.cpp:43-50 - powers subsystems, no file I/O" system_power: "nes/system/system.cpp:43-50 - powers subsystems, no file I/O"
interface_init: "interface.cpp:17-20 - stores derived pointer, calls system.init" interface_init: "nes/interface/interface.cpp - stores derived pointer, calls system.init"
supported_mappers: supported_mappers:
- NROM - NROM
- SxROM (MMC1) - SxROM (MMC1)
+73 -56
View File
@@ -1,6 +1,7 @@
emulator: Boytacean emulator: Boytacean
type: libretro type: standalone + libretro
source: "https://github.com/joamag/boytacean" source: "https://github.com/joamag/boytacean"
upstream: "https://github.com/joamag/boytacean"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "0.10.13" core_version: "0.10.13"
display_name: "Nintendo - Game Boy / Color (Boytacean)" display_name: "Nintendo - Game Boy / Color (Boytacean)"
@@ -11,65 +12,81 @@ systems:
- nintendo-gbc - nintendo-gbc
notes: | notes: |
Boytacean is a Game Boy / Game Boy Color emulator written in Rust by Joao Magalhaes. Boytacean is a Game Boy / Game Boy Color emulator written in Rust.
No external BIOS or boot ROM files are needed.
The core ships with multiple boot ROMs compiled directly into the binary as static Libretro: boot ROMs compiled into binary as static byte arrays in
byte arrays in src/data.rs. For DMG mode the default is "DMG Bootix" (an open-source src/data.rs. load_boot_static() copies from arrays. No filesystem
boot ROM forked from SameBoy's Bootix project, 256 bytes). For CGB mode the default access, no RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. No external files.
is "CGB Boytacean" (a custom open-source CGB boot ROM, 2304 bytes). The original ref: frontends/libretro/src/core.rs:402 instance.load(true)
Nintendo DMG, SGB, and CGB boot ROMs are also embedded as static arrays (DMG_BOOT,
SGB_BOOT, CGB_BOOT) but the defaults use the open-source replacements.
The libretro frontend (frontends/libretro/src/core.rs) calls instance.load(true) in Standalone (SDL): loads boot ROMs from ./res/boot/*.bin via
retro_load_game(), which routes through load_dmg() or load_cgb() depending on the load_boot_path() at gb.rs:1363-1368. 8 boot ROM files shipped in repo.
cartridge header. These call load_boot_static() which copies one of the embedded byte ref: frontends/sdl/src/main.rs, src/gb.rs:1341
arrays into MMU memory. There is no RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY call, no
filesystem access for boot ROMs, and no core option to load external boot ROM files.
The .info file (boytacean_libretro.info) lists no firmware entries. Boot ROM defaults:
- DMG: BootRom::DmgBootix (gb.rs:1352) - open-source, 256 bytes
- CGB: BootRom::CgbBoytacean (gb.rs:1355) - open-source, 2304 bytes
Boot ROM selection defaults: files:
- DMG: BootRom::DmgBootix (gb.rs:1389) - open-source, 256 bytes # Standalone mode loads from res/boot/ — libretro embeds all as arrays
- CGB: BootRom::CgbBoytacean (gb.rs:1398) - open-source, 2304 bytes - name: dmg_boot.bin
system: nintendo-gb
required: false
mode: standalone
size: 256
note: "Original Nintendo DMG boot ROM"
source_ref: "gb.rs:1363, data.rs:14 (embedded as DMG_BOOT)"
All boot ROM source code lives in src/boot/, forked from SameBoy and assembled - name: sgb_boot.bin
with rgbds. The compiled binaries are then converted to Rust const arrays in data.rs. system: nintendo-gb
required: false
mode: standalone
size: 256
note: "Super Game Boy boot ROM"
source_ref: "gb.rs:1364, data.rs:29 (embedded as SGB_BOOT)"
files: [] - name: dmg_bootix.bin
system: nintendo-gb
required: false
mode: standalone
size: 256
note: "Open-source DMG boot ROM from Bootix (default)"
source_ref: "gb.rs:1365, data.rs:44 (embedded as DMG_BOOTIX)"
analysis: - name: mgb_bootix.bin
embedded_boot_roms: system: nintendo-gb
dmg_boot: required: false
constant: DMG_BOOT mode: standalone
size: 256 size: 256
description: "Original Nintendo DMG boot ROM (embedded, not default)" note: "Open-source MGB (Pocket) boot ROM from Bootix"
source_ref: "data.rs:14-27" source_ref: "gb.rs:1366, data.rs:59 (embedded as MGB_BOOTIX)"
sgb_boot:
constant: SGB_BOOT - name: cgb_boot.bin
size: 256 system: nintendo-gbc
description: "Super Game Boy boot ROM (embedded, not default)" required: false
source_ref: "data.rs:29-42" mode: standalone
dmg_bootix: size: 2304
constant: DMG_BOOTIX note: "Original Nintendo CGB boot ROM"
size: 256 source_ref: "gb.rs:1367, data.rs:74 (embedded as CGB_BOOT)"
description: "Open-source DMG boot ROM from Bootix project (default for DMG)"
source_ref: "data.rs:44-57" - name: cgb_boytacean.bin
mgb_bootix: system: nintendo-gbc
constant: MGB_BOOTIX required: false
size: 256 mode: standalone
description: "Open-source MGB (Game Boy Pocket) boot ROM from Bootix project" size: 2304
source_ref: "data.rs:59-72" note: "Custom open-source CGB boot ROM (default)"
cgb_boot: source_ref: "gb.rs:1368, data.rs:177 (embedded as CGB_BOYTACEAN)"
constant: CGB_BOOT
size: 2304 - name: dmg_pyboy.bin
description: "Original Nintendo CGB boot ROM (embedded, not default)" system: nintendo-gb
source_ref: "data.rs:74-175" required: false
cgb_boytacean: mode: standalone
constant: CGB_BOYTACEAN note: "PyBoy DMG boot ROM variant (in res/boot/, not embedded in data.rs)"
size: 2304 source_ref: "res/boot/dmg_pyboy.bin"
description: "Custom open-source CGB boot ROM (default for CGB)"
source_ref: "data.rs:177-275" - name: cgb_pyboy.bin
filesystem_access: false system: nintendo-gbc
system_directory_used: false required: false
boot_rom_source: "src/boot/ (assembly, forked from SameBoy)" mode: standalone
note: "PyBoy CGB boot ROM variant (in res/boot/, not embedded in data.rs)"
source_ref: "res/boot/cgb_pyboy.bin"
+120
View File
@@ -0,0 +1,120 @@
emulator: bsnes-jg
type: libretro
source: "https://github.com/libretro/bsnes-jg"
upstream: "https://github.com/libretro/bsnes-jg"
profiled_date: "2026-03-18"
core_version: "2.0.0"
display_name: "Nintendo - SNES / SFC (bsnes-jg)"
cores: [bsnes-jg]
systems:
- nintendo-snes
- nintendo-sgb
- nintendo-satellaview
- nintendo-sufami-turbo
notes: |
bsnes-jg is a fork of bsnes v115 by Rupert Carmichael, rewritten for
C++ standard library. Coprocessor firmware loaded from system_dir via
openFileCallback. SGB boot ROMs and CX4/HitachiDSP data ROM embedded.
BML game databases embedded as C++ string literals.
ref: libretro/libretro.cpp:722 RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
ref: libretro/libretro.cpp:428-470 firmware path construction (sysdir + filename)
ref: src/cartridge.cpp:774-786 openFileCallback for DSP/ST .program.rom/.data.rom
ref: src/coprocessor/icd.cpp:249,260 SGB1/SGB2 boot ROMs embedded
ref: src/cartridge.cpp:62 HitachiDSP static data ROM embedded (3072 bytes)
ref: libretro/libretro.cpp:30-33,410-416 BML databases embedded
files:
# SNES coprocessor firmware — loaded from system_dir, all optional
# Games using these coprocessors won't work without the firmware
# but most SNES games don't use coprocessors
- name: dsp1.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:428-429"
- name: dsp1.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:431-432"
- name: dsp1b.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:434-435"
- name: dsp1b.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:437-438"
- name: dsp2.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:440-441"
- name: dsp2.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:443-444"
- name: dsp3.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:446-447"
- name: dsp3.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:450-451"
- name: dsp4.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp:455"
- name: dsp4.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp"
- name: st010.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp"
- name: st010.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp"
- name: st011.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp"
- name: st011.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp"
- name: st018.program.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp"
- name: st018.data.rom
system: nintendo-snes
required: false
source_ref: "libretro/libretro.cpp"
# Embedded (no external file needed):
# SGB1BootROM[256] — src/coprocessor/icd.cpp:249
# SGB2BootROM[256] — src/coprocessor/icd.cpp:260
# hitachidspStaticDataROM[3072] — src/cartridge.cpp:62
# boards_bml — libretro/boards_bml.hpp
# SuperFamicom_bml — libretro/SuperFamicom_bml.hpp
# BSMemory_bml — libretro/BSMemory_bml.hpp
# SufamiTurbo_bml — libretro/SufamiTurbo_bml.hpp
+3 -2
View File
@@ -161,8 +161,9 @@ files:
- name: "BS-X.bin" - name: "BS-X.bin"
required: true required: true
note: "BS-X Satellaview BIOS ROM. Required for .bs format Satellaview games" md5: fed4d8242cfbed61343d53d48432aced
source_ref: "target-libretro/libretro.cpp:948, target-libretro/program.cpp:790-799" note: "BS-X Satellaview BIOS ROM. Required for .bs games. .info md5=fed4d824, repo has 96cf17bf (Rev 1 vs original)"
source_ref: "target-libretro/libretro.cpp:948"
notes: notes:
hle_available: true hle_available: true
+122
View File
@@ -0,0 +1,122 @@
emulator: bsnes 2014
type: libretro
source: "https://github.com/libretro/bsnes2014"
upstream: "https://github.com/bsnes-emu/bsnes"
profiled_date: "2026-03-18"
core_version: "v094"
display_name: "Nintendo - SNES / SFC (bsnes 2014)"
cores: [bsnes2014_accuracy, bsnes2014_balanced, bsnes2014_performance]
systems:
- nintendo-snes
- nintendo-sgb
- nintendo-satellaview
- nintendo-sufami-turbo
notes: |
bsnes 2014 is based on bsnes v094. Three build profiles:
accuracy (dot-based PPU), balanced, performance (scanline PPU).
All 3 profiles use the same 18 firmware files. Profiles differ only
in PPU implementation (sfc/profile-*.hpp: CPU/SMP/DSP/PPU alternates),
not in coprocessor support. CX4/Hitachi compiled in all profiles.
.info says performance has 17 (no cx4) — this is wrong, verified in
sfc/profile-performance.hpp which only changes CPU/SMP/DSP/PPU.
Unlike modern bsnes (v115+), v094 does NOT have HLE fallback for
coprocessors. CX4 is NOT embedded — cx4.data.rom is required
externally. SGB boot ROM is NOT embedded — sgb.boot.rom required.
Firmware loaded from system_dir via file::exists() + mmapstream.
ref: target-libretro/libretro.cpp — penviron(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY)
ref: ananke/heuristics/super-famicom.hpp — firmware name definitions
ref: ananke/super-famicom.cpp:120 — sgb.boot.rom copy
files:
# DSP coprocessor split ROMs (program + data)
- name: dsp1.program.rom
system: nintendo-snes
required: false
source_ref: "ananke/heuristics/super-famicom.hpp:381"
- name: dsp1.data.rom
system: nintendo-snes
required: false
source_ref: "ananke/heuristics/super-famicom.hpp:382"
- name: dsp1b.program.rom
system: nintendo-snes
required: false
source_ref: "ananke/heuristics/super-famicom.hpp:381"
- name: dsp1b.data.rom
system: nintendo-snes
required: false
source_ref: "ananke/heuristics/super-famicom.hpp:382"
- name: dsp2.program.rom
system: nintendo-snes
required: false
- name: dsp2.data.rom
system: nintendo-snes
required: false
- name: dsp3.program.rom
system: nintendo-snes
required: false
note: "no HLE fallback in v094 — required for SD Gundam GX"
- name: dsp3.data.rom
system: nintendo-snes
required: false
- name: dsp4.program.rom
system: nintendo-snes
required: false
- name: dsp4.data.rom
system: nintendo-snes
required: false
# CX4 (Hitachi) — NOT embedded in v094 unlike bsnes v115+
- name: cx4.data.rom
system: nintendo-snes
required: false
size: 3072
note: "Capcom CX4 coprocessor data. Required for Mega Man X2/X3. Used in all 3 profiles (.info performance is wrong). NOT embedded in v094."
source_ref: "ananke/heuristics/super-famicom.hpp:146"
# Seta coprocessors
- name: st010.program.rom
system: nintendo-snes
required: false
- name: st010.data.rom
system: nintendo-snes
required: false
- name: st011.program.rom
system: nintendo-snes
required: false
note: "no HLE fallback — required for Hayazashi Nidan Morita Shougi"
- name: st011.data.rom
system: nintendo-snes
required: false
- name: st018.program.rom
system: nintendo-snes
required: false
note: "ARM coprocessor. Required for Hayazashi Nidan Morita Shougi 2"
source_ref: "ananke/heuristics/super-famicom.hpp:475-476"
- name: st018.data.rom
system: nintendo-snes
required: false
# SGB boot ROM — NOT embedded in v094 unlike bsnes-jg/v115+
- name: sgb.boot.rom
system: nintendo-sgb
required: false
size: 256
note: "SGB boot ROM (256 bytes). NOT embedded in v094. Present in all 3 profiles."
source_ref: "ananke/heuristics/super-famicom.hpp:133, ananke/super-famicom.cpp:120"
+36
View File
@@ -0,0 +1,36 @@
emulator: bsnes C++98
type: libretro
source: "https://github.com/libretro/bsnes-libretro-cplusplus98"
upstream: "https://github.com/bsnes-emu/bsnes"
profiled_date: "2026-03-18"
core_version: "v085 (Performance)"
display_name: "Nintendo - SNES / SFC (bsnes C++98 (v085))"
cores: [bsnes_cplusplus98]
systems:
- nintendo-snes
notes: |
bsnes C++98 is bsnes v085 downgraded to C++98 for old compilers.
Performance profile only. is_experimental=true.
Firmware loading differs from newer bsnes versions:
- NEC DSP (dsp1/2/3/4) and Hitachi DSP (cx4) firmware loaded from
the SAME DIRECTORY as the ROM, not from system_dir.
- Path: dir(interface->path(Slot::Base, ".dsp")) + firmware_name
ref: snes/cartridge/markup.cpp:231
- interface->path() returns basename + hint
ref: snes/libretro/libretro.cpp path() method
- Firmware name comes from the game's XML/BML markup (root["firmware"])
NOT fixed names like dsp1.program.rom
- Files are COMBINED (program+data in one file), not split
ref: snes/cartridge/markup.cpp:243-244 reads promsize*3 + dromsize*2
.info has firmware_count=0 because firmware is loaded from ROM dir,
not from system_dir — RetroArch can't pre-populate them.
The core warns "NEC DSP firmware X is missing" if not found but
continues without the coprocessor (games using it won't work).
files: []
# firmware loaded from ROM directory, not system directory
# no files to declare for system_dir placement
+114
View File
@@ -0,0 +1,114 @@
emulator: bsnes-hd beta
type: libretro
source: "https://github.com/DerKoun/bsnes-hd"
upstream: "https://github.com/bsnes-emu/bsnes"
profiled_date: "2026-03-18"
core_version: "v10.6"
# .info says v112.v12 but repo shows Version = "10.6", SerializerVersion = "114.2"
display_name: "Nintendo - SNES / SFC (bsnes-hd beta)"
cores: [bsnes_hd_beta]
systems:
- nintendo-snes
- nintendo-sgb
- nintendo-satellaview
- nintendo-sufami-turbo
notes: |
bsnes-hd beta is bsnes ~v114 by DerKoun with widescreen and
increased color depth. Same firmware as bsnes v115.
repo Version="10.6", SerializerVersion="114.2"
ref: bsnes/emulator/emulator.hpp:34,40
SGB boot ROMs embedded in binary (icd/boot-roms.cpp:1,12).
SGB1.sfc/SGB2.sfc are SGB cartridge ROMs (not boot ROMs).
HLE available for DSP1/2/4, ST010, CX4 — LLE firmware optional.
DSP3, ST011, ST018 have no HLE — LLE firmware required for those.
ref: bsnes/sfc/coprocessor/icd/boot-roms.cpp:1,12
ref: bsnes/sfc/coprocessor/icd/icd.cpp:87,90
ref: bsnes/heuristics/super-famicom.cpp:115
files:
# Split DSP coprocessor firmware
- name: dsp1.program.rom
system: nintendo-snes
required: false
- name: dsp1.data.rom
system: nintendo-snes
required: false
- name: dsp1b.program.rom
system: nintendo-snes
required: false
- name: dsp1b.data.rom
system: nintendo-snes
required: false
- name: dsp2.program.rom
system: nintendo-snes
required: false
- name: dsp2.data.rom
system: nintendo-snes
required: false
- name: dsp3.program.rom
system: nintendo-snes
required: false
note: "no HLE — required for SD Gundam GX"
- name: dsp3.data.rom
system: nintendo-snes
required: false
- name: dsp4.program.rom
system: nintendo-snes
required: false
- name: dsp4.data.rom
system: nintendo-snes
required: false
# CX4 (Hitachi)
- name: cx4.data.rom
system: nintendo-snes
required: false
size: 3072
note: "HLE available — LLE optional for Mega Man X2/X3"
# Seta coprocessors
- name: st010.program.rom
system: nintendo-snes
required: false
- name: st010.data.rom
system: nintendo-snes
required: false
- name: st011.program.rom
system: nintendo-snes
required: false
note: "no HLE — required for Hayazashi Nidan Morita Shougi"
- name: st011.data.rom
system: nintendo-snes
required: false
- name: st018.program.rom
system: nintendo-snes
required: false
note: "no HLE — required for Hayazashi Nidan Morita Shougi 2"
- name: st018.data.rom
system: nintendo-snes
required: false
# SGB cartridge ROMs (NOT boot ROMs — boot ROMs are embedded)
# sgb_bios variable set by core option bsnes_sgb_bios (libretro.cpp:280-285)
- name: SGB1.sfc
system: nintendo-sgb
required: false
md5: b15ddb15721c657d82c5bab6db982ee9
note: "SGB1 cartridge ROM. Boot ROM embedded in icd/boot-roms.cpp:1"
source_ref: "libretro.cpp:1022,1040"
- name: SGB2.sfc
system: nintendo-sgb
required: false
md5: 8ecd73eb4edf7ed7e81aef1be80031d5
note: "SGB2 cartridge ROM. Boot ROM embedded in icd/boot-roms.cpp:12"
source_ref: "libretro.cpp:1022,1040"
# Satellaview BIOS — required for .bs files
- name: BS-X.bin
system: nintendo-satellaview
required: false
note: "Satellaview BIOS. Required when loading .bs files. Core returns false if missing."
source_ref: "libretro.cpp:1054-1060"
+101
View File
@@ -0,0 +1,101 @@
emulator: bsnes-mercury
type: libretro
source: "https://github.com/libretro/bsnes-mercury"
upstream: "https://github.com/bsnes-emu/bsnes"
profiled_date: "2026-03-18"
core_version: "v094 (Mercury)"
display_name: "Nintendo - SNES / SFC (bsnes-mercury)"
cores: [bsnes_mercury_accuracy, bsnes_mercury_balanced, bsnes_mercury_performance]
systems:
- nintendo-snes
- nintendo-sgb
- nintendo-satellaview
- nintendo-sufami-turbo
notes: |
bsnes-mercury is bsnes v094 with Mercury optimizations: HLE for DSP
and Hitachi coprocessors, firmware_appended support, overclocking.
Three profiles: accuracy, balanced, performance (PPU differs, not firmware).
.info says performance has 17 fw (no cx4) but the code compiles CX4 LLE
in all profiles — cx4.data.rom works in performance too. The .info is wrong.
Core option bsnes_chip_hle (default LLE) controls HLE/LLE at runtime.
ref: target-libretro/libretro.cpp altImplementation(), "bsnes_chip_hle"
Same firmware loading as bsnes2014: system_dir via file::exists +
mmapstream. No BS-X auto-load from system_dir (subsystem only).
ref: target-libretro/libretro.cpp:245-254
HLE fallback for DSP1/1B/2/4, Hitachi/CX4, ST010.
ref: sfc/cartridge/markup.cpp:351,404,618
firmware_appended: firmware can be appended to end of ROM file.
ref: ananke/heuristics/super-famicom.hpp:83
SGB boot ROM NOT embedded (sgb.boot.rom from system_dir).
CX4 NOT embedded (cx4.data.rom from system_dir).
files:
# Same 18 files as bsnes2014 accuracy — see bsnes2014.yml for details
# DSP1-4 split (program+data), CX4, ST010-018, sgb.boot.rom
- name: dsp1.program.rom
system: nintendo-snes
required: false
- name: dsp1.data.rom
system: nintendo-snes
required: false
- name: dsp1b.program.rom
system: nintendo-snes
required: false
- name: dsp1b.data.rom
system: nintendo-snes
required: false
- name: dsp2.program.rom
system: nintendo-snes
required: false
- name: dsp2.data.rom
system: nintendo-snes
required: false
- name: dsp3.program.rom
system: nintendo-snes
required: false
note: "no HLE — required for SD Gundam GX"
- name: dsp3.data.rom
system: nintendo-snes
required: false
- name: dsp4.program.rom
system: nintendo-snes
required: false
- name: dsp4.data.rom
system: nintendo-snes
required: false
- name: cx4.data.rom
system: nintendo-snes
required: false
size: 3072
note: "HLE available via Mercury — LLE optional"
source_ref: "ananke/heuristics/super-famicom.hpp:146"
- name: st010.program.rom
system: nintendo-snes
required: false
- name: st010.data.rom
system: nintendo-snes
required: false
- name: st011.program.rom
system: nintendo-snes
required: false
note: "no HLE — required for Hayazashi Nidan Morita Shougi"
- name: st011.data.rom
system: nintendo-snes
required: false
- name: st018.program.rom
system: nintendo-snes
required: false
- name: st018.data.rom
system: nintendo-snes
required: false
- name: sgb.boot.rom
system: nintendo-sgb
required: false
size: 256
note: "SGB boot ROM. NOT embedded in v094."
source_ref: "ananke/heuristics/super-famicom.hpp:133"
+2 -1
View File
@@ -1,6 +1,7 @@
emulator: Cannonball emulator: Cannonball
type: libretro type: standalone + libretro
source: "https://github.com/libretro/cannonball" source: "https://github.com/libretro/cannonball"
upstream: "https://github.com/djyt/cannonball"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "1.0" core_version: "1.0"
display_name: "Cannonball" display_name: "Cannonball"
+45 -2
View File
@@ -1,6 +1,7 @@
emulator: Caprice32 emulator: Caprice32
type: libretro type: standalone + libretro
source: "https://github.com/libretro/libretro-cap32" source: "https://github.com/libretro/libretro-cap32"
upstream: "https://github.com/ColinPitrat/caprice32"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "v4.2.0" core_version: "v4.2.0"
display_name: "Amstrad - CPC/GX4000 (Caprice32)" display_name: "Amstrad - CPC/GX4000 (Caprice32)"
@@ -42,7 +43,49 @@ notes: |
CP/M support loads a pre-built snapshot (cpm.h) into memory via CP/M support loads a pre-built snapshot (cpm.h) into memory via
snapshot_load_mem() in slots.c:87. snapshot_load_mem() in slots.c:87.
files: [] files:
# Standalone loads from rom_path/ — libretro embeds all as C arrays
# ref: ColinPitrat/caprice32/src/cap32.cpp:1006-1007,1159-1171
- name: cpc464.rom
system: amstrad-cpc
required: true
mode: standalone
size: 32768
note: "CPC 464 OS + BASIC 1.0"
source_ref: "caprice32/src/cap32.cpp:1006, rom/cpc464.rom"
- name: cpc664.rom
system: amstrad-cpc
required: false
mode: standalone
size: 32768
note: "CPC 664 OS + BASIC 1.0"
source_ref: "caprice32/rom/cpc664.rom"
- name: cpc6128.rom
system: amstrad-cpc
required: false
mode: standalone
size: 32768
note: "CPC 6128 OS + BASIC 1.1"
source_ref: "caprice32/rom/cpc6128.rom"
- name: amsdos.rom
system: amstrad-cpc
required: false
mode: standalone
size: 16384
note: "AMSDOS disc ROM (sideways slot 7)"
source_ref: "caprice32/src/cap32.cpp:1166"
- name: system.cpr
system: amstrad-cpc
required: false
mode: standalone
note: "CPC+ system cartridge"
source_ref: "caprice32/rom/system.cpr"
- name: MF2.rom
system: amstrad-cpc
required: false
mode: standalone
note: "Multiface 2 ROM"
source_ref: "caprice32/rom/MF2.rom"
platform_details: platform_details:
bios_mapping: bios_mapping:
+32 -5
View File
@@ -1,8 +1,35 @@
emulator: "cdi2015" emulator: CDi 2015
type: alias type: libretro
alias_of: "same_cdi" source: "https://github.com/libretro/mame2015-libretro"
upstream: "https://github.com/mamedev/mame"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "0.160" core_version: "0.160"
display_name: "Philips CDi (CDi 2015)" display_name: "Philips CDi (CDi 2015)"
note: "This core uses the same BIOS/firmware as same_cdi. See emulators/same_cdi.yml for details." cores: [cdi2015]
files: [] systems:
- philips-cdi
notes: |
MAME 0.160 compiled with SUBTARGET=cdi (CDi driver only).
ref: libretro-super/rules.d/core-rules.sh — SUBTARGET=cdi
source: libretro/mame2015-libretro
Loads cdimono1.zip from system_dir.
ref: src/osd/retro/retromain.c:1989 —
sprintf(tmp_dir, "%s%ccdimono1.zip", retro_system_directory, slash)
If not found as ZIP, falls back to system_dir as rompath.
ref: src/osd/retro/retromain.c:1991
ROM_START(cdimono1) in src/mame/drivers/cdi.c:421 defines:
cdi200.rom (0x80000, CRC 279683ca, SHA1 53360a1f21ddac952e95306ced64186a3fc0b93e)
cdic.bin (MCU, undumped)
slave.bin (MCU, undumped)
The ZIP contains the MAME romset for cdimono1 — user provides it.
files:
- name: cdimono1.zip
system: philips-cdi
required: true
note: "MAME cdimono1 romset ZIP. Contains cdi200.rom + MCU dumps."
source_ref: "src/osd/retro/retromain.c:1989, src/mame/drivers/cdi.c:421"
+26 -6
View File
@@ -1,9 +1,29 @@
emulator: "chimerasnes" emulator: ChimeraSNES
type: alias type: libretro
alias_of: "snes9x" source: "https://github.com/jamsilva/chimerasnes"
upstream: "https://github.com/snes9xgit/snes9x"
profiled_date: "2026-03-18"
core_version: "" core_version: ""
display_name: "Nintendo - SNES / SFC (ChimeraSNES)" display_name: "Nintendo - SNES / SFC (ChimeraSNES)"
profiled_date: "2026-03-18" cores: [chimerasnes]
display_name: "Nintendo - SNES / SFC (ChimeraSNES)" systems:
note: "This core uses the same BIOS/firmware as snes9x. See emulators/snes9x.yml for details." - nintendo-snes
notes: |
Fork of Snes9x ~2005, optimized for slow hardware.
NOT identical to snes9x — different firmware behavior.
All coprocessor data is HLE with static ROM tables embedded:
DSP1: DSP1ROM[1024] in source/dsp1.c:6
DSP3: DSP3_DataROM[1024] in source/dsp3.c:7
No external DSP/ST/CX4 firmware files needed.
BS-X: path constructed in source/bsx.c:873 as romdir/BS-X.bios
(relative to ROM directory, NOT system_dir). No
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY for firmware loading.
firmware_count absent in .info (= 0). Confirmed in source.
files: [] files: []
# all coprocessors HLE with embedded data
# BS-X.bios loaded from ROM directory, not system_dir
+26 -46
View File
@@ -1,49 +1,53 @@
emulator: Citra / Lime3DS / Azahar emulator: Citra
type: standalone + libretro type: standalone + libretro
source: "https://github.com/azahar-emu/azahar" source: "https://github.com/libretro/citra"
logo: "https://raw.githubusercontent.com/wheremyfoodat/citra/master/dist/citra.svg" upstream: "https://github.com/citra-emu/citra"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "Git" core_version: "Git"
display_name: "Nintendo - 3DS (Citra)" display_name: "Nintendo - 3DS (Citra)"
cores: [citra]
systems: [nintendo-3ds] systems: [nintendo-3ds]
notes: | notes: |
Citra (now Azahar, formerly Lime3DS) uses HLE for most system services, Citra 3DS emulator (pre-Azahar). Data dir: citra-emu.
so many files are optional. AES keys are the most important for decrypting HLE for most services — files optional. AES keys most important.
games and system data. Shared font has a built-in fallback. File locations: sysdata/ for keys/boot/font/seeddb,
File locations relative to user dir: sysdata/ for keys/boot/font/otp/seeddb,
nand/ for NAND filesystem, nand/private/ for movable.sed. nand/ for NAND filesystem, nand/private/ for movable.sed.
Legacy data dirs: citra-emu, lime3ds-emu -> azahar-emu. ref: src/common/common_paths.h:67-70
Key file: aes_keys.txt (NOT keys.txt — that's Azahar).
ref: src/common/common_paths.h:68
Azahar fork: see emulators/azahar.yml (uses keys.txt, data dir azahar-emu).
citra_canary: same repo, see emulators/citra_canary.yml.
files: files:
# --- sysdata/ directory --- # --- sysdata/ directory ---
- name: "keys.txt" - name: "aes_keys.txt"
path: "sysdata/keys.txt" path: "sysdata/aes_keys.txt"
description: "AES encryption keys" description: "AES encryption keys"
required: false required: false
source_ref: "src/common/common_paths.h:83, src/core/hw/aes/key.cpp:291" source_ref: "src/common/common_paths.h:68, src/core/hw/aes/key.cpp LoadPresetKeys()"
notes: "Contains AES key slots (X/Y/N types) for game decryption; has built-in encrypted fallback keys (key.cpp:300-306)" notes: "Named aes_keys.txt in libretro/citra (keys.txt in Azahar)"
- name: "boot9.bin" - name: "boot9.bin"
path: "sysdata/boot9.bin" path: "sysdata/boot9.bin"
description: "ARM9 bootrom" description: "ARM9 bootrom"
required: false required: false
source_ref: "src/common/common_paths.h:84" source_ref: "src/common/common_paths.h:69"
notes: "3DS ARM9 boot ROM; used for hardware key derivation"
- name: "sector0x96.bin" - name: "sector0x96.bin"
path: "sysdata/sector0x96.bin" path: "sysdata/sector0x96.bin"
description: "Secret sector from NAND" description: "Secret sector from NAND"
required: false required: false
source_ref: "src/common/common_paths.h:85" source_ref: "src/common/common_paths.h:70"
notes: "OTP-encrypted sector 0x96 from 3DS NAND; used for key derivation"
- name: "shared_font.bin" - name: "shared_font.bin"
path: "sysdata/shared_font.bin" path: "sysdata/shared_font.bin"
description: "System shared font" description: "System shared font"
required: false required: false
source_ref: "src/common/common_paths.h:82, src/core/hle/service/apt/apt.cpp:284" source_ref: "src/common/common_paths.h:67"
notes: "Fallback if NAND system archive not available; built-in font data also exists (archive_ncch.cpp:28,189)" notes: "HLE fallback if missing"
- name: "seeddb.bin" - name: "seeddb.bin"
path: "sysdata/seeddb.bin" path: "sysdata/seeddb.bin"
@@ -52,34 +56,10 @@ files:
source_ref: "src/core/file_sys/seed_db.cpp:15" source_ref: "src/core/file_sys/seed_db.cpp:15"
notes: "Required for some seed-encrypted games (9.6+ titles)" notes: "Required for some seed-encrypted games (9.6+ titles)"
- name: "otp.bin" # otp.bin, movable.sed, SecureInfo_A, LocalFriendCodeSeed_B
path: "sysdata/otp.bin" # do NOT exist in libretro/citra — they are Azahar-only features
description: "One-time programmable memory dump" # (src/core/hw/unique_data.cpp exists in azahar, not in libretro/citra)
required: false # See emulators/azahar.yml for those files.
source_ref: "src/core/hw/unique_data.cpp:214"
notes: "Console-unique OTP data; used for hardware key derivation"
# --- nand/ directory ---
- name: "movable.sed"
path: "nand/private/movable.sed"
description: "Movable unique key"
required: false
source_ref: "src/core/hw/unique_data.cpp:218"
notes: "Console-unique key seed for SD/NAND encryption; signature verified at load (unique_data.cpp:197)"
- name: "SecureInfo_A"
path: "nand/rw/sys/SecureInfo_A"
description: "Console serial and region info"
required: false
source_ref: "src/core/hw/unique_data.cpp:206"
notes: "Contains console serial number and region data"
- name: "LocalFriendCodeSeed_B"
path: "nand/rw/sys/LocalFriendCodeSeed_B"
description: "Friend code seed"
required: false
source_ref: "src/core/hw/unique_data.cpp:210"
notes: "Used for friend code generation"
# --- NAND system archives (installed titles) --- # --- NAND system archives (installed titles) ---
- name: "shared font (system archive)" - name: "shared font (system archive)"
+43
View File
@@ -0,0 +1,43 @@
emulator: Citra 2018
type: libretro
source: "https://github.com/libretro/citra2018"
upstream: "https://github.com/citra-emu/citra"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Nintendo - 3DS (Citra 2018)"
cores: [citra2018]
systems:
- nintendo-3ds
notes: |
Citra 2018 is a 2018 snapshot of the Citra 3DS emulator.
Older than current Azahar/Citra — fewer firmware files.
Data dir: citra-emu (not azahar-emu).
ref: src/common/common_paths.h:24
Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
ref: src/citra_libretro/environment.cpp:107
Loads from sysdata/:
aes_keys.txt (not keys.txt like current Citra)
shared_font.bin
ref: src/core/hw/aes/key.cpp:72-73, src/core/hle/service/apt/apt.cpp:174
Does NOT load (added in later versions):
boot9.bin, sector0x96.bin, seeddb.bin, otp.bin,
movable.sed, SecureInfo_A, LocalFriendCodeSeed_B
firmware_count absent in .info (= 0). Files are optional (HLE).
files:
- name: aes_keys.txt
system: nintendo-3ds
required: false
note: "AES encryption keys (named aes_keys.txt, not keys.txt like current Citra)"
source_ref: "src/core/hw/aes/key.cpp:72-73"
- name: shared_font.bin
system: nintendo-3ds
required: false
note: "system shared font, HLE fallback if missing"
source_ref: "src/core/hle/service/apt/apt.cpp:174"
+62
View File
@@ -0,0 +1,62 @@
emulator: Citra Canary
type: libretro
source: "https://github.com/libretro/citra"
upstream: "https://github.com/citra-emu/citra"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Nintendo - 3DS (Citra Canary/Experimental)"
cores: [citra_canary]
systems:
- nintendo-3ds
notes: |
Same repo as citra (libretro/citra master branch). Canary = experimental.
Data dir: citra-emu (not azahar-emu — this is pre-Azahar Citra).
ref: src/common/common_paths.h
Key file: aes_keys.txt (NOT keys.txt like Azahar).
ref: src/common/common_paths.h:68
Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
ref: src/citra_libretro/environment.cpp:149
Files in sysdata/:
aes_keys.txt — AES encryption keys (common_paths.h:68)
boot9.bin — ARM9 bootrom (common_paths.h:69)
sector0x96.bin — secret NAND sector (common_paths.h:70)
shared_font.bin — system shared font, HLE fallback (common_paths.h:67)
seeddb.bin — game seed database (file_sys/seed_db.cpp:15)
NOTE: citra.yml profiles Azahar which uses keys.txt (not aes_keys.txt).
This core uses the pre-Azahar naming convention.
files:
- name: aes_keys.txt
system: nintendo-3ds
required: false
note: "AES keys (named aes_keys.txt in pre-Azahar Citra)"
source_ref: "src/common/common_paths.h:68, src/core/hw/aes/key.cpp"
- name: boot9.bin
system: nintendo-3ds
required: false
note: "ARM9 bootrom for key derivation"
source_ref: "src/common/common_paths.h:69"
- name: sector0x96.bin
system: nintendo-3ds
required: false
note: "OTP-encrypted NAND sector for key derivation"
source_ref: "src/common/common_paths.h:70"
- name: shared_font.bin
system: nintendo-3ds
required: false
note: "system shared font, HLE fallback if missing"
source_ref: "src/common/common_paths.h:67"
- name: seeddb.bin
system: nintendo-3ds
required: false
note: "game seed database for seed-encrypted games (9.6+ titles)"
source_ref: "src/core/file_sys/seed_db.cpp:15"
+3 -2
View File
@@ -1,6 +1,7 @@
emulator: ClownMDEmu emulator: ClownMDEmu
type: libretro type: standalone + libretro
source: "https://github.com/libretro/clownmdemu-libretro" source: "https://github.com/Clownacy/clownmdemu-libretro"
upstream: "https://github.com/Clownacy/clownmdemu"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "Git" core_version: "Git"
display_name: "Sega - MD/CD (ClownMDEmu)" display_name: "Sega - MD/CD (ClownMDEmu)"
+2 -1
View File
@@ -1,6 +1,7 @@
emulator: Daphne emulator: Daphne
type: libretro type: standalone + libretro
source: "https://github.com/libretro/daphne" source: "https://github.com/libretro/daphne"
upstream: "https://github.com/DirtBagXon/hypseus-singe"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "Git" core_version: "Git"
display_name: "Arcade (Daphne)" display_name: "Arcade (Daphne)"
+20 -5
View File
@@ -6,9 +6,24 @@ core_version: "v1.0"
display_name: "Dinothawr" display_name: "Dinothawr"
cores: [dinothawr] cores: [dinothawr]
systems: [] systems: []
notes: |
Puzzle game by the libretro team. Push blocks on ice.
Game data (TMX levels, sprites, music) needed for the core to work.
Two loading modes:
1. Load dinothawr.game as content (data in content directory)
2. supports_no_game=true: loads from system_dir/dinothawr/
ref: libretro.cpp:267-271 —
game_path_dir = join(system_dir, "/", "dinothawr")
game_path = join(game_path_dir, "/", "dinothawr.game")
Buildbot provides Dinothawr.zip via Core System Files Downloader.
ref: buildbot.libretro.com/assets/system/Dinothawr.zip
data_directories:
- ref: dinothawr
source_ref: "libretro.cpp:270-271"
files: [] files: []
notes: > # no BIOS/firmware — game data loaded via data_directories or content
Puzzle game developed by the libretro team as a reference libretro core.
Push blocks on ice to solve puzzles. Game data (maps, sprites, music)
ships in the libretro repo and is loaded as content.
No BIOS, firmware, or system directory files required.
+38 -5
View File
@@ -1,8 +1,41 @@
emulator: "dirksimple" emulator: DirkSimple
type: alias type: standalone + libretro
alias_of: "daphne" source: "https://github.com/icculus/DirkSimple"
profiled_date: "2026-03-18" upstream: "https://github.com/icculus/DirkSimple"
profiled_date: "2026-03-19"
core_version: "0.2" core_version: "0.2"
display_name: "Laserdisc arcade game (DirkSimple)" display_name: "Laserdisc arcade game (DirkSimple)"
note: "This core uses the same BIOS/firmware as daphne. See emulators/daphne.yml for details." cores: [dirksimple]
systems:
- laserdisc-arcade
notes: |
DirkSimple by Ryan C. Gordon (icculus). Plays laserdisc arcade games
via Lua scripts + Ogg Theora video. NOT related to Daphne — completely
different architecture.
Libretro port loads from system_dir/DirkSimple/.
ref: dirksimple_libretro.c:782,795 —
sysdir from RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
basedir = sysdir + "/DirkSimple/"
DirkSimple_startup(basedir, info->path, ...) at line 798
Standalone loads from data/ in the binary's directory.
ref: README.md — "data directory must be included in same directory as binary"
Game data in data/games/<gamename>/game.lua + assets (PNG, WAV).
User provides the OGV laserdisc video as content.
Supported games: Dragon's Lair (lair), Cliff Hanger (cliff).
10 data files in the repo (game.lua scripts, sprites, sounds).
Buildbot provides DirkSimple.zip via Core System Files Downloader.
ref: buildbot.libretro.com/assets/system/DirkSimple.zip
data_directories:
- ref: dirksimple
source_ref: "dirksimple_libretro.c:795"
files: [] files: []
# no BIOS/firmware — game data via data_directories
# user provides OGV video as content
+119
View File
@@ -156,6 +156,118 @@ files:
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import" note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:238" source_ref: "Source/Core/DiscIO/NANDImporter.cpp:238"
# -- Realtek Bluetooth firmware (Wiimote passthrough) --
# Required for real Wiimote connectivity via USB Bluetooth adapters with Realtek chipsets.
# Dolphin can auto-download these from gitlab.com/kernel-firmware/linux-firmware.
# Placed in Load/Firmware/rtl_bt/ (standalone) or User/Load/Firmware/rtl_bt/ (libretro save dir).
# Each device needs _fw.bin (required) and _config.bin (optional, some devices).
# ref: Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:382-425,427-481
- name: "rtl8723a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723a_fw.bin"
required: false
mode: standalone
note: "Realtek 8723A BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:387"
- name: "rtl8723b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723b_fw.bin"
required: false
mode: standalone
note: "Realtek 8723B BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:389"
- name: "rtl8723d_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723d_fw.bin"
required: false
mode: standalone
note: "Realtek 8723D BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:391"
- name: "rtl8761a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761a_fw.bin"
required: false
mode: standalone
note: "Realtek 8761A BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:393"
- name: "rtl8761bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8761BU BT firmware for Wiimote passthrough (most common USB dongle)"
source_ref: "RealtekFirmwareLoader.cpp:395"
- name: "rtl8821a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821a_fw.bin"
required: false
mode: standalone
note: "Realtek 8821A BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:397"
- name: "rtl8821c_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821c_fw.bin"
required: false
mode: standalone
note: "Realtek 8821C BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:399"
- name: "rtl8822b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822b_fw.bin"
required: false
mode: standalone
note: "Realtek 8822B BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:403"
- name: "rtl8822cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8822CU BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:401"
- name: "rtl8851bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8851bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8851BU BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:405"
- name: "rtl8852au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852au_fw.bin"
required: false
mode: standalone
note: "Realtek 8852AU BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:407"
- name: "rtl8852bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BU BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:409"
- name: "rtl8852cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852CU BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:411"
- name: "rtl8852btu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852btu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BT/8852BE-VT BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:413"
- name: "rtl8922au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8922au_fw.bin"
required: false
mode: standalone
note: "Realtek 8922AU BT firmware for Wiimote passthrough"
source_ref: "RealtekFirmwareLoader.cpp:415"
notes: notes:
hle_available: true hle_available: true
hle_note: > hle_note: >
@@ -184,3 +296,10 @@ notes:
Wii NAND content (channels, saves, system menu) is managed by Dolphin internally. 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. 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. Most Wii games do not require a real NAND dump.
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 (8723A/B/D, 8761A/BU, 8821A/C, 8822B/CU, 8851BU,
8852AU/BU/CU/BTU, 8922AU). Each needs _fw.bin (required) + _config.bin (optional).
ref: RealtekFirmwareLoader.cpp:75-179 (device IDs), 382-420 (firmware names)
+150 -14
View File
@@ -1,25 +1,37 @@
emulator: DOSBox-core emulator: DOSBox-core
type: libretro type: standalone + libretro
source: "https://github.com/libretro/dosbox-core" source: "https://github.com/libretro/dosbox-core"
profiled_date: "2026-03-18" upstream: "https://github.com/dosbox-staging/dosbox-staging"
profiled_date: "2026-03-19"
core_version: "SVN" core_version: "SVN"
display_name: "DOS (DOSBox-core)" display_name: "DOS (DOSBox-core)"
cores: [dosbox_core] cores: [dosbox_core]
systems: [dos] systems: [dos]
verification: sha1 verification: sha1
notes: > notes: |
No BIOS required. MT-32 and SoundFont support is optional for MIDI music. No BIOS required. MT-32 and SoundFont support is optional for MIDI music.
Unlike DOSBox Pure, this core expects MT-32 ROMs with exact filenames
directly in the system directory (no recursive scan, no ZIP support). Libretro mode:
The mt32.romdir config option is set to the system directory by the MT-32 ROMs loaded by exact filename from system directory.
libretro frontend. CM-32L is the default emulated hardware type. mt32.romdir = system_dir (libretro.cpp:652). CM-32L is default type.
FluidSynth support reads .sf2/.sf3/.dls/.gig from system/soundfonts/. ref: src/gui/midi_mt32.cpp:35,51-66
BASSMIDI support reads .sf2/.sfz from system/soundfonts/ but also FluidSynth reads .sf2/.sf3/.dls/.gig from system/soundfonts/.
requires the BASS and BASSMIDI shared libraries (downloaded separately ref: libretro/src/libretro.cpp:1086-1097
from https://www.un4seen.com) placed in the system directory. BASSMIDI reads .sf2/.sfz from system/soundfonts/, requires BASS +
Uses bundled MUNT (mt32emu) for MT-32 emulation, bundled FluidSynth BASSMIDI shared libs in system dir (dlopen'd at runtime).
for SF2 playback. BASSMIDI is optional and loaded at runtime via dlopen. ref: libretro/src/midi_bassmidi.cpp:232-254
The .info file declares firmware_count=10 (4 ROMs + 6 BASS libs). .info declares firmware_count=10 (4 ROMs + 6 BASS libs).
Standalone mode (DOSBox Staging):
MT-32 ROMs identified by SHA1 hash (MUNT), not filename. Any file in
mt32-roms/ dir scanned and matched. Split ROM pairs supported (_a+_b).
ref: dosbox-staging src/midi/mt32.cpp:109-148 (ROM defs), 470-484 (dir scan)
Default dir: config_dir/mt32-roms/ (dosbox.h:173)
Models: MT-32 v1.04-1.07, BlueRidge, v2.03-2.07, CM-32L v1.00-1.02, CM-32LN v1.00
Sound Canvas (SC-55/SC-155/SC-88) emulation with soundcanvas-roms/ dir.
ref: src/midi/soundcanvas.cpp, dosbox.h:174
SoundFonts in config_dir/soundfonts/ (dosbox.h:175)
ref: src/midi/fluidsynth.cpp:68-69,211
files: files:
# -- MT-32 Control ROM -- # -- MT-32 Control ROM --
@@ -128,6 +140,130 @@ files:
source_ref: "midi_mt32.cpp:64, dosbox_core_libretro.info:firmware3" source_ref: "midi_mt32.cpp:64, dosbox_core_libretro.info:firmware3"
notes: "pairs with MT-32 v2.x or CM-32L control ROMs (md5: 08cdcfa0ed93e9cb16afa76e6ac5f0a4)" notes: "pairs with MT-32 v2.x or CM-32L control ROMs (md5: 08cdcfa0ed93e9cb16afa76e6ac5f0a4)"
# -- CM-32LN / CM-500 / LAPC-N Control ROM (standalone) --
# Supported by MUNT (ROMInfo.cpp:77) but dosbox-core libretro only loads
# MT32_CONTROL.ROM or CM32L_CONTROL.ROM by exact name. Standalone DOSBox
# Staging identifies this ROM by SHA1 hash scan.
- name: "CM32LN_CONTROL.ROM"
description: "CM-32LN/CM-500/LAPC-N Control v1.00"
required: false
size: 65536
sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077"
mode: standalone
source_ref: "ROMInfo.cpp:77, dosbox-staging src/midi/mt32.cpp:145,242"
# -- Split ROM pairs (standalone mode) --
# MUNT supports split Control ROMs (_a + _b, 32KB each, interleaved) and
# split PCM ROMs (_l + _h, half-size each, appended).
# Only useful in standalone mode with SHA1 scan. Libretro mode needs full ROMs.
# ref: ROMInfo.cpp:56-70 (control splits), 79-84 (PCM splits)
- name: "MT-32 Control v1.04 half A"
description: "MT-32 Control v1.04 split (Mux0)"
required: false
size: 32768
sha1: "9cd4858014c4e8a9dff96053f784bfaac1092a2e"
mode: standalone
source_ref: "ROMInfo.cpp:56"
- name: "MT-32 Control v1.04 half B"
description: "MT-32 Control v1.04 split (Mux1)"
required: false
size: 32768
sha1: "fe8db469b5bfeb37edb269fd47e3ce6d91014652"
mode: standalone
source_ref: "ROMInfo.cpp:57"
- name: "MT-32 Control v1.05 half A"
description: "MT-32 Control v1.05 split (Mux0)"
required: false
size: 32768
sha1: "57a09d80d2f7ca5b9734edbe9645e6e700f83701"
mode: standalone
source_ref: "ROMInfo.cpp:59"
- name: "MT-32 Control v1.05 half B"
description: "MT-32 Control v1.05 split (Mux1)"
required: false
size: 32768
sha1: "52e3c6666db9ef962591a8ee99be0cde17f3a6b6"
mode: standalone
source_ref: "ROMInfo.cpp:60"
- name: "MT-32 Control v1.06 half A"
description: "MT-32 Control v1.06 split (Mux0)"
required: false
size: 32768
sha1: "cc83bf23cee533097fb4c7e2c116e43b50ebacc8"
mode: standalone
source_ref: "ROMInfo.cpp:62"
- name: "MT-32 Control v1.06 half B"
description: "MT-32 Control v1.06 split (Mux1)"
required: false
size: 32768
sha1: "bf4f15666bc46679579498386704893b630c1171"
mode: standalone
source_ref: "ROMInfo.cpp:63"
- name: "MT-32 Control v1.07 half A"
description: "MT-32 Control v1.07 split (Mux0)"
required: false
size: 32768
sha1: "13f06b38f0d9e0fc050b6503ab777bb938603260"
mode: standalone
source_ref: "ROMInfo.cpp:65"
- name: "MT-32 Control v1.07 half B"
description: "MT-32 Control v1.07 split (Mux1)"
required: false
size: 32768
sha1: "c55e165487d71fa88bd8c5e9c083bc456c1a89aa"
mode: standalone
source_ref: "ROMInfo.cpp:66"
- name: "MT-32 Control BlueRidge half A"
description: "MT-32 Control BlueRidge split (Mux0)"
required: false
size: 32768
sha1: "11a6ae5d8b6ee328b371af7f1e40b82125aa6b4d"
mode: standalone
source_ref: "ROMInfo.cpp:68"
- name: "MT-32 Control BlueRidge half B"
description: "MT-32 Control BlueRidge split (Mux1)"
required: false
size: 32768
sha1: "e0934320d7cbb5edfaa29e0d01ae835ef620085b"
mode: standalone
source_ref: "ROMInfo.cpp:69"
- name: "MT-32 PCM ROM low half"
description: "MT-32 PCM ROM first half (262144 bytes)"
required: false
size: 262144
sha1: "3a1e19b0cd4036623fd1d1d11f5f25995585962b"
mode: standalone
source_ref: "ROMInfo.cpp:79"
- name: "MT-32 PCM ROM high half"
description: "MT-32 PCM ROM second half (262144 bytes)"
required: false
size: 262144
sha1: "2cadb99d21a6a4a6f5b61b6218d16e9b43f61d01"
mode: standalone
source_ref: "ROMInfo.cpp:80"
- name: "CM-32L PCM ROM high half"
description: "CM-32L/CM-64/LAPC-I PCM upper half (524288 bytes)"
required: false
size: 524288
sha1: "3ad889fde5db5b6437cbc2eb6e305312fec3df93"
mode: standalone
note: "lower half is identical to full MT-32 PCM ROM"
source_ref: "ROMInfo.cpp:84"
# -- BASS shared libraries (BASSMIDI driver) -- # -- BASS shared libraries (BASSMIDI driver) --
# Downloaded from https://www.un4seen.com, placed in system directory. # Downloaded from https://www.un4seen.com, placed in system directory.
# Loaded at runtime via dlopen. Not redistributable ROMs. # Loaded at runtime via dlopen. Not redistributable ROMs.
+42 -26
View File
@@ -1,24 +1,40 @@
emulator: DOSBox Pure emulator: DOSBox Pure
type: libretro type: standalone + libretro
source: "https://github.com/libretro/dosbox-pure" source: "https://github.com/libretro/dosbox-pure"
upstream: "https://github.com/schellingb/dosbox-pure"
logo: "https://raw.githubusercontent.com/schellingb/dosbox-pure/main/images/logo.png" logo: "https://raw.githubusercontent.com/schellingb/dosbox-pure/main/images/logo.png"
profiled_date: "2026-03-18" profiled_date: "2026-03-19"
core_version: "0.9.9" core_version: "0.9.9"
display_name: "DOS (DOSBox-Pure)" display_name: "DOS (DOSBox-Pure)"
cores: [dosbox_pure] cores: [dosbox_pure]
systems: [dos] systems: [dos]
verification: sha1 verification: sha1
notes: > notes: |
No BIOS required. MT-32 and SoundFont support is optional for MIDI music. No BIOS required. MT-32 and SoundFont support is optional for MIDI music.
The core scans the RetroArch system directory (and subdirectories) for files
ending in _CONTROL.ROM (MT-32/CM-32L) and .SF2/.SF3 (General MIDI SoundFont). ROM scanning (both modes):
MT-32 requires a matched pair: *_CONTROL.ROM + *_PCM.ROM in the same directory. Recursive scan of system directory for *_CONTROL.ROM and *.SF2/*.SF3.
Files can also be placed inside the game content as DOSBOX.SF2 or MT32_CONTROL.ROM ref: dosbox_pure_libretro.cpp:1367-1378
+ MT32_PCM.ROM on the mounted C: drive. ZIP archives containing both ROMs are MT-32 requires matched pair: *_CONTROL.ROM + *_PCM.ROM (PCM name derived
also supported (identified by file size, not name). A cache file from CONTROL name by replacing CONTROL with PCM, preserving case).
DOSBoxPureMidiCache.txt is written to system dir when scan takes >2s. ref: dosbox_pure_libretro.cpp:182-199
Uses bundled MUNT (mt32emu) for MT-32 emulation, TinySoundFont for SF2 playback. ZIP archives also supported — scanned for files by size (65536/131072 =
No firmware entries in the .info file - all MIDI files are optional enhancements. control, 524288/1048576 = PCM), not by name.
ref: midi_mt32.h:160-166
Files can also be on mounted C: drive (DOSBOX.SF2, MT32_CONTROL.ROM).
ref: dosbox_pure_libretro.cpp:2760-2762
Cache file DOSBoxPureMidiCache.txt written when scan >2s.
ref: dosbox_pure_libretro.cpp:1393-1413
Bundled MUNT (header-only mt32emu.h) for MT-32 emulation.
SHA1-based ROM identification (mt32emu.h:5112-5127,5185).
13 full control ROMs + 2 PCM ROMs supported (no split ROMs in this MUNT).
Includes MT-32 v2.03 (not in dosbox-core's MUNT).
TinySoundFont (tsf.h) for SF2/SF3 playback.
No firmware entries in .info file — all MIDI files optional.
DBP_STANDALONE build mode exists (same MIDI logic, different I/O layer).
ref: dosbox_pure_libretro.cpp:81,1558,2270
files: files:
# -- MT-32 Control ROMs (64 KB) -- # -- MT-32 Control ROMs (64 KB) --
@@ -28,35 +44,35 @@ files:
required: false required: false
size: 65536 size: 65536
sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7" sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7"
source_ref: "mt32emu.h:CTRL_MT32_V1_04" source_ref: "mt32emu.h:5112,5129"
- name: "MT32_CONTROL.ROM" - name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.05" description: "MT-32 Control v1.05"
required: false required: false
size: 65536 size: 65536
sha1: "e17a3a6d265bf1fa150312061134293d2b58288c" sha1: "e17a3a6d265bf1fa150312061134293d2b58288c"
source_ref: "mt32emu.h:CTRL_MT32_V1_05" source_ref: "mt32emu.h:5113,5130"
- name: "MT32_CONTROL.ROM" - name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.06" description: "MT-32 Control v1.06"
required: false required: false
size: 65536 size: 65536
sha1: "a553481f4e2794c10cfe597fef154eef0d8257de" sha1: "a553481f4e2794c10cfe597fef154eef0d8257de"
source_ref: "mt32emu.h:CTRL_MT32_V1_06" source_ref: "mt32emu.h:5114,5131"
- name: "MT32_CONTROL.ROM" - name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.07" description: "MT-32 Control v1.07"
required: false required: false
size: 65536 size: 65536
sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987" sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987"
source_ref: "mt32emu.h:CTRL_MT32_V1_07" source_ref: "mt32emu.h:5115,5132"
- name: "MT32_CONTROL.ROM" - name: "MT32_CONTROL.ROM"
description: "MT-32 Control BlueRidge" description: "MT-32 Control BlueRidge"
required: false required: false
size: 65536 size: 65536
sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92" sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92"
source_ref: "mt32emu.h:CTRL_MT32_BLUER" source_ref: "mt32emu.h:5116,5133"
# -- MT-32 v2.x Control ROMs (128 KB) -- # -- MT-32 v2.x Control ROMs (128 KB) --
@@ -65,28 +81,28 @@ files:
required: false required: false
size: 131072 size: 131072
sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce" sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce"
source_ref: "mt32emu.h:CTRL_MT32_V2_03" source_ref: "mt32emu.h:5118,5135"
- name: "MT32_CONTROL.ROM" - name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.04" description: "MT-32 Control v2.04"
required: false required: false
size: 131072 size: 131072
sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb" sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb"
source_ref: "mt32emu.h:CTRL_MT32_V2_04" source_ref: "mt32emu.h:5119,5136"
- name: "MT32_CONTROL.ROM" - name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.06" description: "MT-32 Control v2.06"
required: false required: false
size: 131072 size: 131072
sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed" sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed"
source_ref: "mt32emu.h:CTRL_MT32_V2_06" source_ref: "mt32emu.h:5120,5137"
- name: "MT32_CONTROL.ROM" - name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.07" description: "MT-32 Control v2.07"
required: false required: false
size: 131072 size: 131072
sha1: "47b52adefedaec475c925e54340e37673c11707c" sha1: "47b52adefedaec475c925e54340e37673c11707c"
source_ref: "mt32emu.h:CTRL_MT32_V2_07" source_ref: "mt32emu.h:5121,5138"
# -- CM-32L / LAPC-I Control ROMs (64 KB) -- # -- CM-32L / LAPC-I Control ROMs (64 KB) --
@@ -95,14 +111,14 @@ files:
required: false required: false
size: 65536 size: 65536
sha1: "73683d585cd6948cc19547942ca0e14a0319456d" sha1: "73683d585cd6948cc19547942ca0e14a0319456d"
source_ref: "mt32emu.h:CTRL_CM32L_V1_00" source_ref: "mt32emu.h:5122,5139"
- name: "CM32L_CONTROL.ROM" - name: "CM32L_CONTROL.ROM"
description: "CM-32L/LAPC-I Control v1.02" description: "CM-32L/LAPC-I Control v1.02"
required: false required: false
size: 65536 size: 65536
sha1: "a439fbb390da38cada95a7cbb1d6ca199cd66ef8" sha1: "a439fbb390da38cada95a7cbb1d6ca199cd66ef8"
source_ref: "mt32emu.h:CTRL_CM32L_V1_02" source_ref: "mt32emu.h:5123,5140"
# -- CM-32LN / CM-500 / LAPC-N Control ROM (64 KB) -- # -- CM-32LN / CM-500 / LAPC-N Control ROM (64 KB) --
@@ -111,7 +127,7 @@ files:
required: false required: false
size: 65536 size: 65536
sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077" sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077"
source_ref: "mt32emu.h:CTRL_CM32LN_V1_00" source_ref: "mt32emu.h:5124,5141"
# -- PCM ROMs -- # -- PCM ROMs --
@@ -120,7 +136,7 @@ files:
required: false required: false
size: 524288 size: 524288
sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252" sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252"
source_ref: "mt32emu.h:PCM_MT32" source_ref: "mt32emu.h:5126,5143"
notes: "pairs with any MT-32 v1.x control ROM" notes: "pairs with any MT-32 v1.x control ROM"
- name: "CM32L_PCM.ROM" - name: "CM32L_PCM.ROM"
@@ -128,7 +144,7 @@ files:
required: false required: false
size: 1048576 size: 1048576
sha1: "289cc298ad532b702461bfc738009d9ebe8025ea" sha1: "289cc298ad532b702461bfc738009d9ebe8025ea"
source_ref: "mt32emu.h:PCM_CM32L" source_ref: "mt32emu.h:5127,5144"
notes: "pairs with MT-32 v2.x or CM-32L control ROMs. Lower half aliases MT-32 PCM." notes: "pairs with MT-32 v2.x or CM-32L control ROMs. Lower half aliases MT-32 PCM."
# -- General MIDI SoundFont -- # -- General MIDI SoundFont --
+24 -5
View File
@@ -1,8 +1,27 @@
emulator: "dosbox_svn" emulator: DOSBox-SVN
type: alias type: libretro
alias_of: "dosbox_core" source: "https://github.com/libretro/dosbox-svn"
profiled_date: "2026-03-18" upstream: "https://sourceforge.net/projects/dosbox/"
profiled_date: "2026-03-19"
core_version: "SVN" core_version: "SVN"
display_name: "DOS (DOSBox-SVN)" display_name: "DOS (DOSBox-SVN)"
note: "This core uses the same BIOS/firmware as dosbox_core. See emulators/dosbox_core.yml for details." cores: [dosbox_svn]
systems: [dos]
notes: |
DOSBox-SVN is the same codebase as dosbox_svn_ce but builds with a fake
SDL shim (WITH_FAKE_SDL=1) instead of real SDL, for broader platform compat.
ref: libretro/Makefile.libretro, libretro/fakesdl/
No MT-32 emulation — no MUNT bundled, no mt32emu, no FluidSynth, no BASS.
The src/midi/munt directory referenced in Makefile.common does not exist.
MIDI output is hardware-only via fake SDL stubs.
ref: src/gui/midi.cpp
system_directory is read (libretro.cpp:1399) but only logged, never used
to load any files.
NOT an alias of dosbox_core — completely different MIDI capabilities.
dosbox_core has MUNT + FluidSynth + BASSMIDI. This core has none.
files: [] files: []
# No BIOS, firmware, ROMs, or system files of any kind.
+26 -5
View File
@@ -1,8 +1,29 @@
emulator: "dosbox_svn_ce" emulator: DOSBox-SVN CE
type: alias type: libretro
alias_of: "dosbox_core" source: "https://github.com/libretro/dosbox-svn"
profiled_date: "2026-03-18" upstream: "https://sourceforge.net/projects/dosbox/"
profiled_date: "2026-03-19"
core_version: "SVN CE" core_version: "SVN CE"
display_name: "DOS (DOSBox-SVN CE)" display_name: "DOS (DOSBox-SVN CE)"
note: "This core uses the same BIOS/firmware as dosbox_core. See emulators/dosbox_core.yml for details." cores: [dosbox_svn_ce]
systems: [dos]
notes: |
DOSBox-SVN CE (Community Edition) is the same codebase as dosbox_svn but
builds against real SDL 1.2 + SDL_net instead of the fake SDL shim.
ref: libretro/Makefile.libretro (WITH_FAKE_SDL flag)
No MT-32 emulation — no MUNT bundled, no mt32emu, no FluidSynth, no BASS.
The src/midi/munt directory referenced in Makefile.common does not exist.
MIDI output is hardware-only (ALSA, CoreAudio, CoreMIDI, Win32, OSS).
ref: src/gui/midi.cpp, src/gui/midi_alsa.h, midi_coreaudio.h, etc.
system_directory is read (libretro.cpp:1399) but only logged, never used
to load any files.
NOT an alias of dosbox_core — completely different MIDI capabilities.
dosbox_core has MUNT + FluidSynth + BASSMIDI. This core has none.
Requires libsdl1.2 and libsdl-net1.2 at runtime (.info notes).
files: [] files: []
# No BIOS, firmware, ROMs, or system files of any kind.
+5 -4
View File
@@ -1,7 +1,8 @@
emulator: "doukutsu-rs" emulator: doukutsu-rs
type: libretro type: standalone + libretro
source: "https://github.com/DrGlaucous/doukutsu-rs-libretro" source: "https://github.com/DrGlaucous/doukutsu-rs-nm"
profiled_date: "2026-03-18" upstream: "https://github.com/doukutsu-rs/doukutsu-rs"
profiled_date: "2026-03-19"
core_version: "1.2.0 - 0.101.0" core_version: "1.2.0 - 0.101.0"
display_name: "Cave Story (drs)" display_name: "Cave Story (drs)"
cores: cores:
+26 -10
View File
@@ -1,20 +1,36 @@
emulator: DuckStation emulator: DuckStation
type: standalone type: standalone + libretro
source: "https://github.com/stenzek/duckstation" source: "https://github.com/stenzek/duckstation"
logo: "https://raw.githubusercontent.com/stenzek/duckstation/master/data/resources/images/duck.png" logo: "https://raw.githubusercontent.com/stenzek/duckstation/master/data/resources/images/duck.png"
profiled_date: "2026-03-18" profiled_date: "2026-03-19"
core_version: "v0.1" core_version: "v0.1"
display_name: "Sony - PlayStation (DuckStation)" display_name: "Sony - PlayStation (DuckStation)"
cores: [duckstation]
systems: [sony-playstation] systems: [sony-playstation]
bios_size: 524288 # 0x80000 (512 KB), also accepts PS2 (4 MB) and PS3 BIOS bios_size: 524288 # 0x80000 (512 KB), also accepts PS2 (4 MB) and PS3 (0x3E66F0)
verification: md5 verification: md5
notes: > notes: |
DuckStation auto-detects BIOS by MD5 hash. It accepts PS1, PS2 and PS3 BIOS images DuckStation auto-detects BIOS by MD5 hash from a flat scan of the BIOS directory.
(only the first 512 KB are mapped). Each image has a priority score - lower is better. ref: src/core/bios.cpp:459-481 (FindBIOSImagesInDirectory — scans all files by size)
Images with region_check=true enforce region matching for disc booting. ref: src/core/bios.cpp:208 (MD5Digest::HashData identification)
PS2 BIOS images are deprioritized (priority >= 100) due to requiring dynamic fast boot patches.
Late PAL revisions are further deprioritized due to additional regional checks. Accepts PS1 (512 KB), PS2 (4 MB), and PS3 (0x3E66F0) BIOS images.
OpenBIOS is detected by signature at offset 0x78, not by hash. ref: src/core/bios.h:24-26 (BIOS_SIZE, BIOS_SIZE_PS2, BIOS_SIZE_PS3)
Only the first 512 KB are mapped (bios.cpp:212).
105 known BIOS entries (24 PS1 + 80 PS2 + 1 KDL-22PX300) identified by MD5.
ref: src/core/bios.cpp:34-139 (s_image_info_by_hash)
Each image has: region, region_check, fast_boot_patch type, priority score.
Lower priority = preferred. PS2 deprioritized (>= 100) for dynamic fast boot.
Late PAL deprioritized (>= 150) due to additional regional checks.
OpenBIOS detected by signature at offset 0x78, not by hash.
ref: src/core/bios.cpp:142-147
Standalone: BIOS dir = EmuFolders::Bios (configurable, default bios/).
ref: src/core/bios.cpp:375,380
Libretro: BIOS dir = RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (flat).
The libretro core was removed by the author (license change to non-commercial).
The .info file and buildbot builds still exist from community forks.
files: files:
# -- PS1 BIOS images (priority <= 20, preferred) -- # -- PS1 BIOS images (priority <= 20, preferred) --
+3 -2
View File
@@ -1,7 +1,8 @@
emulator: EasyRPG Player emulator: EasyRPG Player
type: libretro type: standalone + libretro
source: "https://github.com/libretro/easyrpg-libretro" source: "https://github.com/libretro/easyrpg-libretro"
profiled_date: "2026-03-18" upstream: "https://github.com/EasyRPG/Player"
profiled_date: "2026-03-19"
core_version: "0.8.1.0" core_version: "0.8.1.0"
display_name: "RPG Maker 2000/2003 (EasyRPG)" display_name: "RPG Maker 2000/2003 (EasyRPG)"
cores: cores:
+25 -16
View File
@@ -1,25 +1,34 @@
emulator: ECWolf emulator: ECWolf
type: libretro type: standalone + libretro
source: "https://github.com/libretro/ecwolf" source: "https://github.com/libretro/ecwolf"
profiled_date: "2026-03-18" upstream: "https://bitbucket.org/ecwolf/ecwolf"
core_version: "" profiled_date: "2026-03-19"
display_name: "Wolfenstein 3D (ECWolf)" core_version: "1.4.1"
display_name: "Wolfenstein 3D (ECWolf)" display_name: "Wolfenstein 3D (ECWolf)"
cores: [ecwolf] cores: [ecwolf]
systems: [wolfenstein3d] systems: [wolfenstein3d]
verification: md5 verification: md5
notes: > notes: |
Wolfenstein 3D source port. Plays Wolf3D (wl6/wl1), Spear of Destiny (sod/sdm), Wolfenstein 3D source port by Braden Obrzut. Plays Wolf3D (wl6/wl1),
Super 3D Noah's Ark (n3d), and community pk3 mods. The core requires ecwolf.pk3 Spear of Destiny (sod/sdm), Super 3D Noah's Ark (n3d), and community pk3 mods.
in the system directory - this is the engine data package built from wadsrc/static/
containing IWADINFO definitions, palettes, sprites, map configs, and lump remappers. Requires ecwolf.pk3 — engine data package built from wadsrc/static/.
Game data files (vswap, gamemaps, vgagraph, audiot) are loaded from the content Contains IWADINFO (game detection rules), palettes, sprites, map configs,
directory, not the system directory. The core auto-detects the game variant by DECORATE actor definitions, MAPINFO, SNDINFO, fonts, and localization strings.
scanning lump contents against IWADINFO MustContain rules. Spear of Destiny Without this file: "Could not open ecwolf.pk3!" fatal error.
mission packs (sd2/sd3) and Mac Wolfenstein variants are also supported. ref: version.h:12 (MAIN_PK3), wl_iwad.cpp:642-657 (load + fatal)
Blake Stone and Rise of the Triad support is flagged as Preview.
The SelectGame path searches: content directory, system directory, BaseDataPaths Libretro: ecwolf.pk3 searched in system_dir.
config, then platform-specific paths (Steam, GOG installs on desktop). ref: libretro/libretro.cpp:831-832 (sysDir passed to SelectGame)
Standalone: ecwolf.pk3 searched in progdir (binary directory).
ref: wl_main.cpp:1289 (progdir passed to SelectGame)
Also: INSTALL_PREFIX/share/ecwolf/ on Linux (wl_iwad.cpp:648)
Game data files (vswap, gamemaps, vgagraph, audiot) loaded from content
directory, not system directory. Auto-detects game variant by scanning
lump contents against IWADINFO MustContain rules.
Blake Stone and Rise of the Triad support flagged as Preview.
files: files:
- name: "ecwolf.pk3" - name: "ecwolf.pk3"
+3 -3
View File
@@ -1,10 +1,10 @@
emulator: EmuSCV emulator: EmuSCV
type: libretro type: standalone + libretro
source: "https://github.com/wzcwzc/emuscv" source: "https://github.com/wzcwzc/emuscv"
profiled_date: "2026-03-18" upstream: "https://github.com/wzcwzc/emuscv"
profiled_date: "2026-03-19"
core_version: "" core_version: ""
display_name: "EPOCH/YENO Super Cassette Vision" display_name: "EPOCH/YENO Super Cassette Vision"
display_name: "EPOCH/YENO Super Cassette Vision"
cores: cores:
- emuscv - emuscv
systems: systems:
+10 -9
View File
@@ -57,10 +57,11 @@ files:
- name: "font.bmp" - name: "font.bmp"
path: "np2kai/font.bmp" path: "np2kai/font.bmp"
required: false required: false
aliases: ["FONT.ROM", "font.rom", "FONT.BMP"]
note: > note: >
PC-98 font bitmap (288 KB). Required for correct Japanese kanji display. PC-98 font bitmap (288 KB). Required for correct Japanese kanji display.
The core also accepts FONT.ROM (V98 format). Without this file, Without this file, only basic ASCII characters render correctly using
only basic ASCII characters render correctly using built-in data. built-in data.
source_ref: "sdl/libretro/libretro.c:1813, font/fontdata.c:11-14" source_ref: "sdl/libretro/libretro.c:1813, font/fontdata.c:11-14"
# -- Sound BIOS ROM -- # -- Sound BIOS ROM --
@@ -115,8 +116,9 @@ files:
- name: "2608_rim.wav" - name: "2608_rim.wav"
path: "np2kai/2608_rim.wav" path: "np2kai/2608_rim.wav"
required: false required: false
note: "YM2608 OPNA rhythm sample: rim shot" aliases: ["2608_RYM.WAV"]
source_ref: "sound/rhythmc.c:16" note: "YM2608 OPNA rhythm sample: rim shot. fmgen also accepts 2608_RYM.WAV"
source_ref: "sound/rhythmc.c:16, sound/fmgen/fmgen_opna.cpp:1413-1443"
# -- IDE BIOS ROM -- # -- IDE BIOS ROM --
# Loaded by ideio.c:1913-1931. Tried in order: ide.rom, d8000.rom, # Loaded by ideio.c:1913-1931. Tried in order: ide.rom, d8000.rom,
@@ -125,11 +127,10 @@ files:
- name: "ide.rom" - name: "ide.rom"
path: "np2kai/ide.rom" path: "np2kai/ide.rom"
required: false required: false
aliases: ["d8000.rom", "bank3.bin", "bios9821.rom"]
note: > note: >
IDE controller BIOS ROM (8 KB). Required for real IDE BIOS emulation IDE controller BIOS ROM (8 KB). Required for real IDE BIOS emulation
(HDD boot from IDE). The core also checks d8000.rom, bank3.bin, (HDD boot from IDE). Without this, a simulated IDE BIOS is used.
and bios9821.rom as fallback filenames. Without this, a simulated
IDE BIOS is used.
source_ref: "cbus/ideio.c:1913-1931" source_ref: "cbus/ideio.c:1913-1931"
# -- SCSI BIOS ROM -- # -- SCSI BIOS ROM --
@@ -148,10 +149,10 @@ files:
- name: "pci.rom" - name: "pci.rom"
path: "np2kai/pci.rom" path: "np2kai/pci.rom"
required: false required: false
aliases: ["bank0.bin"]
note: > note: >
PCI BIOS ROM (32 KB). For PC-9821 PCI bus emulation. PCI BIOS ROM (32 KB). For PC-9821 PCI bus emulation.
The core also checks bank0.bin as fallback. Without this, Without this, the built-in PCI BIOS simulator is used.
the built-in PCI BIOS simulator is used.
source_ref: "io/pcidev.c:360-382" source_ref: "io/pcidev.c:360-382"
# -- GPIB BIOS ROM -- # -- GPIB BIOS ROM --
+2 -1
View File
@@ -89,7 +89,8 @@ files:
md5: "fed4d8242cfbed61343d53d48432aced" md5: "fed4d8242cfbed61343d53d48432aced"
sha1: "604556b2e62860af18db5a77f2956ebc75450020" sha1: "604556b2e62860af18db5a77f2956ebc75450020"
source_ref: "libretro.cpp:1209 (LoadBIOS, 'BS-X.bin'), bsx.cpp:1209-1215 (BSX_LoadBIOS)" source_ref: "libretro.cpp:1209 (LoadBIOS, 'BS-X.bin'), bsx.cpp:1209-1215 (BSX_LoadBIOS)"
notes: "Needed for Satellaview (.bs) game support. Core also accepts BS-X.bios as filename. Without this file, BS-X games will fail to load." aliases: ["BS-X.bios"]
notes: "Needed for Satellaview (.bs) game support. Without this file, BS-X games will fail to load."
# -- Sufami Turbo BIOS -- # -- Sufami Turbo BIOS --
# Required by: snes9x, snes9x2010 # Required by: snes9x, snes9x2010