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

View File

@@ -1,28 +1,90 @@
emulator: Azahar
type: alias
alias_of: citra
type: standalone + libretro
source: "https://github.com/azahar-emu/azahar"
upstream: "https://github.com/azahar-emu/azahar"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Nintendo - 3DS (Azahar)"
cores: [azahar]
systems:
- nintendo-3ds
notes: |
Azahar is the successor to Citra (via Lime3DS). Same codebase, same
BIOS/firmware requirements. See emulators/citra.yml for the full file list.
Azahar is the successor to Citra (via Lime3DS). Different codebase
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
azahar-emu. Legacy dirs are still scanned as fallback.
ref: azahar/src/common/common_paths.h:41-47
Key file: keys.txt (NOT aes_keys.txt like libretro/citra).
ref: src/common/common_paths.h:83
Files needed (all optional, HLE fallback for most):
sysdata/keys.txt, sysdata/boot9.bin, sysdata/sector0x96.bin,
sysdata/shared_font.bin, sysdata/seeddb.bin, sysdata/otp.bin,
nand/private/movable.sed, nand/rw/sys/SecureInfo_A,
nand/rw/sys/LocalFriendCodeSeed_B
Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
ref: src/citra_libretro/environment.cpp:194
.info has firmware_count=0 but core uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
(src/citra_libretro/environment.cpp:194) to locate system files.
.info has firmware_count=0 but core uses system_dir for files.
files: []
# all files documented in emulators/citra.yml — same codebase
files:
# --- 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"

View File

@@ -26,7 +26,7 @@ files:
sha1: "b05def971d8ec59f346f2d9ac21fb742e3eb6917"
md5: "8dd7d5296a650fac7319bce665a6a53c"
source_ref: "libretro.cpp:252-256"
alt_names: ["SCPH5500.bin", "SCPH-5500.bin"]
aliases: ["SCPH5500.bin", "SCPH-5500.bin"]
# -- Region: North America (REGION_NA) --
@@ -37,7 +37,7 @@ files:
sha1: "0555c6fae8906f3f09baf5988f00e55f88e9f30b"
md5: "490f666e1afb15b7362b406ed1cea246"
source_ref: "libretro.cpp:258-270"
alt_names:
aliases:
- "SCPH5501.bin"
- "SCPH-5501.bin"
- "scph5503.bin"
@@ -56,7 +56,7 @@ files:
sha1: "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"
md5: "32736f17079d0b2b7024407c39bd3050"
source_ref: "libretro.cpp:272-282"
alt_names:
aliases:
- "SCPH5502.bin"
- "SCPH-5502.bin"
- "scph5552.bin"
@@ -72,7 +72,7 @@ files:
sha1: "96880d1ca92a016ff054be5159bb06fe03cb4e14"
md5: "c53ca5908936d412331790f4426c6c33"
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."
- name: "ps1_rom.bin"
@@ -82,5 +82,5 @@ files:
sha1: "c40146361eb8cf670b19fdc9759190257803cab7"
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
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."

View File

@@ -14,16 +14,17 @@ notes: |
to libretro by Ryphecha. It is a lightweight, accuracy-focused NES core.
The core loads cartridge data entirely through retro_load_game with
need_fullpath=false (libretro.cpp:129). ROM data is passed as a memory
buffer and parsed by Cartridge::load (cartridge.cpp:18-31), which detects
iNES headers (16-byte offset) and delegates to Board::load for mapper setup.
need_fullpath=false (libretro/libretro.cpp:129). ROM data is passed as a
memory buffer and parsed by Cartridge::load (nes/cartridge/cartridge.cpp:18-31),
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
(lines 20-37) with emphasis factor tables. No external palette file is loaded.
The PPU generates its palette from a hardcoded color table in
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
default input devices. No system ROM, BIOS, or firmware is loaded at any
stage of initialization or cartridge loading.
System::init (nes/system/system.cpp:62-66) only sets up the interface
pointer and default input devices. No system ROM, BIOS, or firmware is
loaded at any stage of initialization or cartridge loading.
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,
@@ -35,11 +36,11 @@ files: []
analysis:
bios_search:
retro_load_game: "libretro.cpp:181-211 - loads cartridge data only, no BIOS"
cartridge_load: "cartridge.cpp:18-31 - parses iNES header + ROM data"
system_init: "system.cpp:62-66 - sets interface pointer, no ROM loading"
system_power: "system.cpp:43-50 - powers subsystems, no file I/O"
interface_init: "interface.cpp:17-20 - stores derived pointer, calls system.init"
retro_load_game: "libretro/libretro.cpp:181-211 - loads cartridge data only, no BIOS"
cartridge_load: "nes/cartridge/cartridge.cpp:18-31 - parses iNES header + ROM data"
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"
interface_init: "nes/interface/interface.cpp - stores derived pointer, calls system.init"
supported_mappers:
- NROM
- SxROM (MMC1)

View File

@@ -1,6 +1,7 @@
emulator: Boytacean
type: libretro
type: standalone + libretro
source: "https://github.com/joamag/boytacean"
upstream: "https://github.com/joamag/boytacean"
profiled_date: "2026-03-18"
core_version: "0.10.13"
display_name: "Nintendo - Game Boy / Color (Boytacean)"
@@ -11,65 +12,81 @@ systems:
- nintendo-gbc
notes: |
Boytacean is a Game Boy / Game Boy Color emulator written in Rust by Joao Magalhaes.
No external BIOS or boot ROM files are needed.
Boytacean is a Game Boy / Game Boy Color emulator written in Rust.
The core ships with multiple boot ROMs compiled directly into the binary as static
byte arrays in src/data.rs. For DMG mode the default is "DMG Bootix" (an open-source
boot ROM forked from SameBoy's Bootix project, 256 bytes). For CGB mode the default
is "CGB Boytacean" (a custom open-source CGB boot ROM, 2304 bytes). The original
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.
Libretro: boot ROMs compiled into binary as static byte arrays in
src/data.rs. load_boot_static() copies from arrays. No filesystem
access, no RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. No external files.
ref: frontends/libretro/src/core.rs:402 instance.load(true)
The libretro frontend (frontends/libretro/src/core.rs) calls instance.load(true) in
retro_load_game(), which routes through load_dmg() or load_cgb() depending on the
cartridge header. These call load_boot_static() which copies one of the embedded byte
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.
Standalone (SDL): loads boot ROMs from ./res/boot/*.bin via
load_boot_path() at gb.rs:1363-1368. 8 boot ROM files shipped in repo.
ref: frontends/sdl/src/main.rs, src/gb.rs:1341
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:
- DMG: BootRom::DmgBootix (gb.rs:1389) - open-source, 256 bytes
- CGB: BootRom::CgbBoytacean (gb.rs:1398) - open-source, 2304 bytes
files:
# Standalone mode loads from res/boot/ — libretro embeds all as arrays
- 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
with rgbds. The compiled binaries are then converted to Rust const arrays in data.rs.
- name: sgb_boot.bin
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:
embedded_boot_roms:
dmg_boot:
constant: DMG_BOOT
size: 256
description: "Original Nintendo DMG boot ROM (embedded, not default)"
source_ref: "data.rs:14-27"
sgb_boot:
constant: SGB_BOOT
size: 256
description: "Super Game Boy boot ROM (embedded, not default)"
source_ref: "data.rs:29-42"
dmg_bootix:
constant: DMG_BOOTIX
size: 256
description: "Open-source DMG boot ROM from Bootix project (default for DMG)"
source_ref: "data.rs:44-57"
mgb_bootix:
constant: MGB_BOOTIX
size: 256
description: "Open-source MGB (Game Boy Pocket) boot ROM from Bootix project"
source_ref: "data.rs:59-72"
cgb_boot:
constant: CGB_BOOT
size: 2304
description: "Original Nintendo CGB boot ROM (embedded, not default)"
source_ref: "data.rs:74-175"
cgb_boytacean:
constant: CGB_BOYTACEAN
size: 2304
description: "Custom open-source CGB boot ROM (default for CGB)"
source_ref: "data.rs:177-275"
filesystem_access: false
system_directory_used: false
boot_rom_source: "src/boot/ (assembly, forked from SameBoy)"
- name: mgb_bootix.bin
system: nintendo-gb
required: false
mode: standalone
size: 256
note: "Open-source MGB (Pocket) boot ROM from Bootix"
source_ref: "gb.rs:1366, data.rs:59 (embedded as MGB_BOOTIX)"
- name: cgb_boot.bin
system: nintendo-gbc
required: false
mode: standalone
size: 2304
note: "Original Nintendo CGB boot ROM"
source_ref: "gb.rs:1367, data.rs:74 (embedded as CGB_BOOT)"
- name: cgb_boytacean.bin
system: nintendo-gbc
required: false
mode: standalone
size: 2304
note: "Custom open-source CGB boot ROM (default)"
source_ref: "gb.rs:1368, data.rs:177 (embedded as CGB_BOYTACEAN)"
- name: dmg_pyboy.bin
system: nintendo-gb
required: false
mode: standalone
note: "PyBoy DMG boot ROM variant (in res/boot/, not embedded in data.rs)"
source_ref: "res/boot/dmg_pyboy.bin"
- name: cgb_pyboy.bin
system: nintendo-gbc
required: false
mode: standalone
note: "PyBoy CGB boot ROM variant (in res/boot/, not embedded in data.rs)"
source_ref: "res/boot/cgb_pyboy.bin"

120
emulators/bsnes-jg.yml Normal file
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

View File

@@ -161,8 +161,9 @@ files:
- name: "BS-X.bin"
required: true
note: "BS-X Satellaview BIOS ROM. Required for .bs format Satellaview games"
source_ref: "target-libretro/libretro.cpp:948, target-libretro/program.cpp:790-799"
md5: fed4d8242cfbed61343d53d48432aced
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:
hle_available: true

122
emulators/bsnes2014.yml Normal file
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"

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
emulators/bsnes_hd_beta.yml Normal file
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
emulators/bsnes_mercury.yml Normal file
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"

View File

@@ -1,6 +1,7 @@
emulator: Cannonball
type: libretro
type: standalone + libretro
source: "https://github.com/libretro/cannonball"
upstream: "https://github.com/djyt/cannonball"
profiled_date: "2026-03-18"
core_version: "1.0"
display_name: "Cannonball"

View File

@@ -1,6 +1,7 @@
emulator: Caprice32
type: libretro
type: standalone + libretro
source: "https://github.com/libretro/libretro-cap32"
upstream: "https://github.com/ColinPitrat/caprice32"
profiled_date: "2026-03-18"
core_version: "v4.2.0"
display_name: "Amstrad - CPC/GX4000 (Caprice32)"
@@ -42,7 +43,49 @@ notes: |
CP/M support loads a pre-built snapshot (cpm.h) into memory via
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:
bios_mapping:

View File

@@ -1,8 +1,35 @@
emulator: "cdi2015"
type: alias
alias_of: "same_cdi"
emulator: CDi 2015
type: libretro
source: "https://github.com/libretro/mame2015-libretro"
upstream: "https://github.com/mamedev/mame"
profiled_date: "2026-03-18"
core_version: "0.160"
display_name: "Philips CDi (CDi 2015)"
note: "This core uses the same BIOS/firmware as same_cdi. See emulators/same_cdi.yml for details."
files: []
cores: [cdi2015]
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"

View File

@@ -1,9 +1,29 @@
emulator: "chimerasnes"
type: alias
alias_of: "snes9x"
emulator: ChimeraSNES
type: libretro
source: "https://github.com/jamsilva/chimerasnes"
upstream: "https://github.com/snes9xgit/snes9x"
profiled_date: "2026-03-18"
core_version: ""
display_name: "Nintendo - SNES / SFC (ChimeraSNES)"
profiled_date: "2026-03-18"
display_name: "Nintendo - SNES / SFC (ChimeraSNES)"
note: "This core uses the same BIOS/firmware as snes9x. See emulators/snes9x.yml for details."
cores: [chimerasnes]
systems:
- 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: []
# all coprocessors HLE with embedded data
# BS-X.bios loaded from ROM directory, not system_dir

View File

@@ -1,49 +1,53 @@
emulator: Citra / Lime3DS / Azahar
emulator: Citra
type: standalone + libretro
source: "https://github.com/azahar-emu/azahar"
logo: "https://raw.githubusercontent.com/wheremyfoodat/citra/master/dist/citra.svg"
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)"
cores: [citra]
systems: [nintendo-3ds]
notes: |
Citra (now Azahar, formerly Lime3DS) uses HLE for most system services,
so many files are optional. AES keys are the most important for decrypting
games and system data. Shared font has a built-in fallback.
File locations relative to user dir: sysdata/ for keys/boot/font/otp/seeddb,
Citra 3DS emulator (pre-Azahar). Data dir: citra-emu.
HLE for most services — files optional. AES keys most important.
File locations: sysdata/ for keys/boot/font/seeddb,
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:
# --- sysdata/ directory ---
- name: "keys.txt"
path: "sysdata/keys.txt"
- name: "aes_keys.txt"
path: "sysdata/aes_keys.txt"
description: "AES encryption keys"
required: false
source_ref: "src/common/common_paths.h:83, src/core/hw/aes/key.cpp:291"
notes: "Contains AES key slots (X/Y/N types) for game decryption; has built-in encrypted fallback keys (key.cpp:300-306)"
source_ref: "src/common/common_paths.h:68, src/core/hw/aes/key.cpp LoadPresetKeys()"
notes: "Named aes_keys.txt in libretro/citra (keys.txt in Azahar)"
- name: "boot9.bin"
path: "sysdata/boot9.bin"
description: "ARM9 bootrom"
required: false
source_ref: "src/common/common_paths.h:84"
notes: "3DS ARM9 boot ROM; used for hardware key derivation"
source_ref: "src/common/common_paths.h:69"
- name: "sector0x96.bin"
path: "sysdata/sector0x96.bin"
description: "Secret sector from NAND"
required: false
source_ref: "src/common/common_paths.h:85"
notes: "OTP-encrypted sector 0x96 from 3DS NAND; used for key derivation"
source_ref: "src/common/common_paths.h:70"
- name: "shared_font.bin"
path: "sysdata/shared_font.bin"
description: "System shared font"
required: false
source_ref: "src/common/common_paths.h:82, src/core/hle/service/apt/apt.cpp:284"
notes: "Fallback if NAND system archive not available; built-in font data also exists (archive_ncch.cpp:28,189)"
source_ref: "src/common/common_paths.h:67"
notes: "HLE fallback if missing"
- name: "seeddb.bin"
path: "sysdata/seeddb.bin"
@@ -52,34 +56,10 @@ files:
source_ref: "src/core/file_sys/seed_db.cpp:15"
notes: "Required for some seed-encrypted games (9.6+ titles)"
- name: "otp.bin"
path: "sysdata/otp.bin"
description: "One-time programmable memory dump"
required: false
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"
# otp.bin, movable.sed, SecureInfo_A, LocalFriendCodeSeed_B
# do NOT exist in libretro/citra — they are Azahar-only features
# (src/core/hw/unique_data.cpp exists in azahar, not in libretro/citra)
# See emulators/azahar.yml for those files.
# --- NAND system archives (installed titles) ---
- name: "shared font (system archive)"

43
emulators/citra2018.yml Normal file
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"

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"

View File

@@ -1,6 +1,7 @@
emulator: ClownMDEmu
type: libretro
source: "https://github.com/libretro/clownmdemu-libretro"
type: standalone + libretro
source: "https://github.com/Clownacy/clownmdemu-libretro"
upstream: "https://github.com/Clownacy/clownmdemu"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Sega - MD/CD (ClownMDEmu)"

View File

@@ -1,6 +1,7 @@
emulator: Daphne
type: libretro
type: standalone + libretro
source: "https://github.com/libretro/daphne"
upstream: "https://github.com/DirtBagXon/hypseus-singe"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Arcade (Daphne)"

View File

@@ -6,9 +6,24 @@ core_version: "v1.0"
display_name: "Dinothawr"
cores: [dinothawr]
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: []
notes: >
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.
# no BIOS/firmware — game data loaded via data_directories or content

View File

@@ -1,8 +1,41 @@
emulator: "dirksimple"
type: alias
alias_of: "daphne"
profiled_date: "2026-03-18"
emulator: DirkSimple
type: standalone + libretro
source: "https://github.com/icculus/DirkSimple"
upstream: "https://github.com/icculus/DirkSimple"
profiled_date: "2026-03-19"
core_version: "0.2"
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: []
# no BIOS/firmware — game data via data_directories
# user provides OGV video as content

View File

@@ -156,6 +156,118 @@ files:
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
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:
hle_available: true
hle_note: >
@@ -184,3 +296,10 @@ notes:
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.
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)

View File

@@ -1,25 +1,37 @@
emulator: DOSBox-core
type: libretro
type: standalone + libretro
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"
display_name: "DOS (DOSBox-core)"
cores: [dosbox_core]
systems: [dos]
verification: sha1
notes: >
notes: |
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).
The mt32.romdir config option is set to the system directory by the
libretro frontend. CM-32L is the default emulated hardware type.
FluidSynth support reads .sf2/.sf3/.dls/.gig from system/soundfonts/.
BASSMIDI support reads .sf2/.sfz from system/soundfonts/ but also
requires the BASS and BASSMIDI shared libraries (downloaded separately
from https://www.un4seen.com) placed in the system directory.
Uses bundled MUNT (mt32emu) for MT-32 emulation, bundled FluidSynth
for SF2 playback. BASSMIDI is optional and loaded at runtime via dlopen.
The .info file declares firmware_count=10 (4 ROMs + 6 BASS libs).
Libretro mode:
MT-32 ROMs loaded by exact filename from system directory.
mt32.romdir = system_dir (libretro.cpp:652). CM-32L is default type.
ref: src/gui/midi_mt32.cpp:35,51-66
FluidSynth reads .sf2/.sf3/.dls/.gig from system/soundfonts/.
ref: libretro/src/libretro.cpp:1086-1097
BASSMIDI reads .sf2/.sfz from system/soundfonts/, requires BASS +
BASSMIDI shared libs in system dir (dlopen'd at runtime).
ref: libretro/src/midi_bassmidi.cpp:232-254
.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:
# -- MT-32 Control ROM --
@@ -128,6 +140,130 @@ files:
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)"
# -- 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) --
# Downloaded from https://www.un4seen.com, placed in system directory.
# Loaded at runtime via dlopen. Not redistributable ROMs.

View File

@@ -1,24 +1,40 @@
emulator: DOSBox Pure
type: libretro
type: standalone + libretro
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"
profiled_date: "2026-03-18"
profiled_date: "2026-03-19"
core_version: "0.9.9"
display_name: "DOS (DOSBox-Pure)"
cores: [dosbox_pure]
systems: [dos]
verification: sha1
notes: >
notes: |
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).
MT-32 requires a matched pair: *_CONTROL.ROM + *_PCM.ROM in the same directory.
Files can also be placed inside the game content as DOSBOX.SF2 or MT32_CONTROL.ROM
+ MT32_PCM.ROM on the mounted C: drive. ZIP archives containing both ROMs are
also supported (identified by file size, not name). A cache file
DOSBoxPureMidiCache.txt is written to system dir when scan takes >2s.
Uses bundled MUNT (mt32emu) for MT-32 emulation, TinySoundFont for SF2 playback.
No firmware entries in the .info file - all MIDI files are optional enhancements.
ROM scanning (both modes):
Recursive scan of system directory for *_CONTROL.ROM and *.SF2/*.SF3.
ref: dosbox_pure_libretro.cpp:1367-1378
MT-32 requires matched pair: *_CONTROL.ROM + *_PCM.ROM (PCM name derived
from CONTROL name by replacing CONTROL with PCM, preserving case).
ref: dosbox_pure_libretro.cpp:182-199
ZIP archives also supported — scanned for files by size (65536/131072 =
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:
# -- MT-32 Control ROMs (64 KB) --
@@ -28,35 +44,35 @@ files:
required: false
size: 65536
sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7"
source_ref: "mt32emu.h:CTRL_MT32_V1_04"
source_ref: "mt32emu.h:5112,5129"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.05"
required: false
size: 65536
sha1: "e17a3a6d265bf1fa150312061134293d2b58288c"
source_ref: "mt32emu.h:CTRL_MT32_V1_05"
source_ref: "mt32emu.h:5113,5130"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.06"
required: false
size: 65536
sha1: "a553481f4e2794c10cfe597fef154eef0d8257de"
source_ref: "mt32emu.h:CTRL_MT32_V1_06"
source_ref: "mt32emu.h:5114,5131"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.07"
required: false
size: 65536
sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987"
source_ref: "mt32emu.h:CTRL_MT32_V1_07"
source_ref: "mt32emu.h:5115,5132"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control BlueRidge"
required: false
size: 65536
sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92"
source_ref: "mt32emu.h:CTRL_MT32_BLUER"
source_ref: "mt32emu.h:5116,5133"
# -- MT-32 v2.x Control ROMs (128 KB) --
@@ -65,28 +81,28 @@ files:
required: false
size: 131072
sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce"
source_ref: "mt32emu.h:CTRL_MT32_V2_03"
source_ref: "mt32emu.h:5118,5135"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.04"
required: false
size: 131072
sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb"
source_ref: "mt32emu.h:CTRL_MT32_V2_04"
source_ref: "mt32emu.h:5119,5136"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.06"
required: false
size: 131072
sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed"
source_ref: "mt32emu.h:CTRL_MT32_V2_06"
source_ref: "mt32emu.h:5120,5137"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.07"
required: false
size: 131072
sha1: "47b52adefedaec475c925e54340e37673c11707c"
source_ref: "mt32emu.h:CTRL_MT32_V2_07"
source_ref: "mt32emu.h:5121,5138"
# -- CM-32L / LAPC-I Control ROMs (64 KB) --
@@ -95,14 +111,14 @@ files:
required: false
size: 65536
sha1: "73683d585cd6948cc19547942ca0e14a0319456d"
source_ref: "mt32emu.h:CTRL_CM32L_V1_00"
source_ref: "mt32emu.h:5122,5139"
- name: "CM32L_CONTROL.ROM"
description: "CM-32L/LAPC-I Control v1.02"
required: false
size: 65536
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) --
@@ -111,7 +127,7 @@ files:
required: false
size: 65536
sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077"
source_ref: "mt32emu.h:CTRL_CM32LN_V1_00"
source_ref: "mt32emu.h:5124,5141"
# -- PCM ROMs --
@@ -120,7 +136,7 @@ files:
required: false
size: 524288
sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252"
source_ref: "mt32emu.h:PCM_MT32"
source_ref: "mt32emu.h:5126,5143"
notes: "pairs with any MT-32 v1.x control ROM"
- name: "CM32L_PCM.ROM"
@@ -128,7 +144,7 @@ files:
required: false
size: 1048576
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."
# -- General MIDI SoundFont --

View File

@@ -1,8 +1,27 @@
emulator: "dosbox_svn"
type: alias
alias_of: "dosbox_core"
profiled_date: "2026-03-18"
emulator: DOSBox-SVN
type: libretro
source: "https://github.com/libretro/dosbox-svn"
upstream: "https://sourceforge.net/projects/dosbox/"
profiled_date: "2026-03-19"
core_version: "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: []
# No BIOS, firmware, ROMs, or system files of any kind.

View File

@@ -1,8 +1,29 @@
emulator: "dosbox_svn_ce"
type: alias
alias_of: "dosbox_core"
profiled_date: "2026-03-18"
emulator: DOSBox-SVN CE
type: libretro
source: "https://github.com/libretro/dosbox-svn"
upstream: "https://sourceforge.net/projects/dosbox/"
profiled_date: "2026-03-19"
core_version: "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: []
# No BIOS, firmware, ROMs, or system files of any kind.

View File

@@ -1,7 +1,8 @@
emulator: "doukutsu-rs"
type: libretro
source: "https://github.com/DrGlaucous/doukutsu-rs-libretro"
profiled_date: "2026-03-18"
emulator: doukutsu-rs
type: standalone + libretro
source: "https://github.com/DrGlaucous/doukutsu-rs-nm"
upstream: "https://github.com/doukutsu-rs/doukutsu-rs"
profiled_date: "2026-03-19"
core_version: "1.2.0 - 0.101.0"
display_name: "Cave Story (drs)"
cores:

View File

@@ -1,20 +1,36 @@
emulator: DuckStation
type: standalone
type: standalone + libretro
source: "https://github.com/stenzek/duckstation"
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"
display_name: "Sony - PlayStation (DuckStation)"
cores: [duckstation]
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
notes: >
DuckStation auto-detects BIOS by MD5 hash. It accepts PS1, PS2 and PS3 BIOS images
(only the first 512 KB are mapped). Each image has a priority score - lower is better.
Images with region_check=true enforce region matching for disc booting.
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.
OpenBIOS is detected by signature at offset 0x78, not by hash.
notes: |
DuckStation auto-detects BIOS by MD5 hash from a flat scan of the BIOS directory.
ref: src/core/bios.cpp:459-481 (FindBIOSImagesInDirectory — scans all files by size)
ref: src/core/bios.cpp:208 (MD5Digest::HashData identification)
Accepts PS1 (512 KB), PS2 (4 MB), and PS3 (0x3E66F0) BIOS images.
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:
# -- PS1 BIOS images (priority <= 20, preferred) --

View File

@@ -1,7 +1,8 @@
emulator: EasyRPG Player
type: libretro
type: standalone + 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"
display_name: "RPG Maker 2000/2003 (EasyRPG)"
cores:

View File

@@ -1,25 +1,34 @@
emulator: ECWolf
type: libretro
type: standalone + libretro
source: "https://github.com/libretro/ecwolf"
profiled_date: "2026-03-18"
core_version: ""
display_name: "Wolfenstein 3D (ECWolf)"
upstream: "https://bitbucket.org/ecwolf/ecwolf"
profiled_date: "2026-03-19"
core_version: "1.4.1"
display_name: "Wolfenstein 3D (ECWolf)"
cores: [ecwolf]
systems: [wolfenstein3d]
verification: md5
notes: >
Wolfenstein 3D source port. Plays Wolf3D (wl6/wl1), Spear of Destiny (sod/sdm),
Super 3D Noah's Ark (n3d), and community pk3 mods. The core requires ecwolf.pk3
in the system directory - this is the engine data package built from wadsrc/static/
containing IWADINFO definitions, palettes, sprites, map configs, and lump remappers.
Game data files (vswap, gamemaps, vgagraph, audiot) are loaded from the content
directory, not the system directory. The core auto-detects the game variant by
scanning lump contents against IWADINFO MustContain rules. Spear of Destiny
mission packs (sd2/sd3) and Mac Wolfenstein variants are also supported.
Blake Stone and Rise of the Triad support is flagged as Preview.
The SelectGame path searches: content directory, system directory, BaseDataPaths
config, then platform-specific paths (Steam, GOG installs on desktop).
notes: |
Wolfenstein 3D source port by Braden Obrzut. Plays Wolf3D (wl6/wl1),
Spear of Destiny (sod/sdm), Super 3D Noah's Ark (n3d), and community pk3 mods.
Requires ecwolf.pk3 — engine data package built from wadsrc/static/.
Contains IWADINFO (game detection rules), palettes, sprites, map configs,
DECORATE actor definitions, MAPINFO, SNDINFO, fonts, and localization strings.
Without this file: "Could not open ecwolf.pk3!" fatal error.
ref: version.h:12 (MAIN_PK3), wl_iwad.cpp:642-657 (load + fatal)
Libretro: ecwolf.pk3 searched in system_dir.
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:
- name: "ecwolf.pk3"

View File

@@ -1,10 +1,10 @@
emulator: EmuSCV
type: libretro
type: standalone + libretro
source: "https://github.com/wzcwzc/emuscv"
profiled_date: "2026-03-18"
upstream: "https://github.com/wzcwzc/emuscv"
profiled_date: "2026-03-19"
core_version: ""
display_name: "EPOCH/YENO Super Cassette Vision"
display_name: "EPOCH/YENO Super Cassette Vision"
cores:
- emuscv
systems:

View File

@@ -57,10 +57,11 @@ files:
- name: "font.bmp"
path: "np2kai/font.bmp"
required: false
aliases: ["FONT.ROM", "font.rom", "FONT.BMP"]
note: >
PC-98 font bitmap (288 KB). Required for correct Japanese kanji display.
The core also accepts FONT.ROM (V98 format). Without this file,
only basic ASCII characters render correctly using built-in data.
Without this file, only basic ASCII characters render correctly using
built-in data.
source_ref: "sdl/libretro/libretro.c:1813, font/fontdata.c:11-14"
# -- Sound BIOS ROM --
@@ -115,8 +116,9 @@ files:
- name: "2608_rim.wav"
path: "np2kai/2608_rim.wav"
required: false
note: "YM2608 OPNA rhythm sample: rim shot"
source_ref: "sound/rhythmc.c:16"
aliases: ["2608_RYM.WAV"]
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 --
# Loaded by ideio.c:1913-1931. Tried in order: ide.rom, d8000.rom,
@@ -125,11 +127,10 @@ files:
- name: "ide.rom"
path: "np2kai/ide.rom"
required: false
aliases: ["d8000.rom", "bank3.bin", "bios9821.rom"]
note: >
IDE controller BIOS ROM (8 KB). Required for real IDE BIOS emulation
(HDD boot from IDE). The core also checks d8000.rom, bank3.bin,
and bios9821.rom as fallback filenames. Without this, a simulated
IDE BIOS is used.
(HDD boot from IDE). Without this, a simulated IDE BIOS is used.
source_ref: "cbus/ideio.c:1913-1931"
# -- SCSI BIOS ROM --
@@ -148,10 +149,10 @@ files:
- name: "pci.rom"
path: "np2kai/pci.rom"
required: false
aliases: ["bank0.bin"]
note: >
PCI BIOS ROM (32 KB). For PC-9821 PCI bus emulation.
The core also checks bank0.bin as fallback. Without this,
the built-in PCI BIOS simulator is used.
Without this, the built-in PCI BIOS simulator is used.
source_ref: "io/pcidev.c:360-382"
# -- GPIB BIOS ROM --

View File

@@ -89,7 +89,8 @@ files:
md5: "fed4d8242cfbed61343d53d48432aced"
sha1: "604556b2e62860af18db5a77f2956ebc75450020"
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 --
# Required by: snes9x, snes9x2010