21 Commits

Author SHA1 Message Date
Abdessamad Derraz
58f3006d20 docs: add core_version, display_name to all 260 emulator profiles
Every profile now has:
- profiled_date: date of source code analysis
- core_version: version from libretro-core-info .info files
- display_name: human-readable name from .info files

260/260 profiles complete. 294/294 libretro cores covered.
Standalone emulators (cemu, rpcs3, xemu, vita3k) versioned manually.
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
d929424988 feat: add profiled_date to all YAMLs, create 56 alias profiles
- Added profiled_date field to all 204 existing profiles for update tracking
- Created 56 alias profiles for cores that share BIOS with a parent
  (e.g., mednafen_psx -> beetle_psx, fbalpha2012 -> fbneo)

260 total profiles covering all 294 libretro cores (204 unique + 56 alias).
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
62262db6ac feat: complete 294/294 libretro core profiling
Final batch: stonesoup, vitaquake3+vitavoyager, uw8, uxn, wasm4,
tempgba, retro8, moonlight, ffmpeg, imageviewer, mpv, remotejoy,
puzzlescript, lutro, mojozork, simcp (SAM Coupe, ROM built-in),
romcleaner, redbook, onsyuri, mcsoftserve, x64sdl (VICE alias)

204 total emulator/core profiles covering ALL 294 libretro cores.
Every core analyzed from source code. Complete museum documentation.
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
b43d71e113 feat: add emulator profiles (119-series batch 6 partial)
dolphin_launcher (stub launcher), oberon (RISC, bootloader embedded),
17 test cores (00_example through vidtest), 17 game/utility cores
(2048 through vaporspec), bennugd, boytacean, emux_chip8, fake08,
jaxe, lowresnx, opentyrian, openlara, squirreljme, vitaquake2, xrick

182 total profiles. 6 agents failed (API 500), will retry.
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
a5553def94 feat: add 10 emulator profiles (119-series batch 5)
boytacean (GB Rust, 6 boot ROMs embedded), emux_chip8 (no BIOS),
fake08 (PICO-8, Lua runtime compiled in), jaxe (CHIP-8, fonts hardcoded),
lowresnx (fantasy console), opentyrian (Tyrian freeware data),
openlara (Tomb Raider engine, game data), squirreljme (J2ME, 8 JARs),
vitaquake2 (Quake 2, 4 variants), xrick (data.zip sound pack)

145 total profiles.
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
31501211de feat: add 10 emulator profiles (119-series batch 4)
bennugd (game engine, no BIOS), cruzes (puzzle game, no BIOS),
dice (discrete arcade, no BIOS), ishiiruka (Dolphin fork, same BIOS),
mkxp_z (RPG Maker, 3 RTP dirs), onscripter (VN engine, no BIOS),
qemu (55 firmware files! SeaBIOS/VGA/iPXE/OpenBIOS/OpenSBI),
rustation (PS1 Rust, 22 BIOS by SHA-256), rvvm (RISC-V, OpenSBI),
reminiscence (Flashback engine, game data only)

135 total profiles.
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
6a778a09a3 feat: add 10 emulator profiles (119-series batch 3)
arduous (Arduboy AVR sim, no BIOS), boom3 (Doom 3, game data only),
directxbox (Xbox, mcpx + cromwell), doukutsu_rs (Cave Story, no BIOS),
meteor (GBA, full HLE), nxengine (Cave Story, Doukutsu.exe + data/),
tgbdual (Game Boy link, HLE), tic80 (fantasy console),
virtualxt (IBM XT, open BIOS embedded), sdlpal (Sword & Fairy, 13 .mkf)

125 total profiles.
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
ebc8e4413f feat: add 10 emulator profiles (119-series batch 2)
freeintv_ts_overlay (same BIOS as FreeIntv), bnes (NES, no BIOS),
clownmdemu (Mega Drive, open-source MCD boot ROM embedded),
m2000 (Philips P2000T, all embedded), mesen (NES, FDS + StudyBox BIOS),
race (NGP, HLE with disabled BIOS loader), vemulator (VMU, HLE only),
gw (Game & Watch, Lua simulator), pd777 (Cassette Vision, no BIOS),
play (PS2, full HLE, LoadBIOS commented out)

115 total profiles.
2026-03-18 05:20:05 +01:00
Abdessamad Derraz
a77477cbe8 feat: add 10 emulator profiles (119-series batch 1)
81 (ZX81, embedded), DoubleCherryGB (GB dual, no BIOS),
amiarcadia (Arcadia 2001, no BIOS), applewin (Apple II, 26 embedded),
ardens (Arduboy, 6 bootloaders embedded), daphne (LaserDisc, no BIOS),
pcem (IBM PC, 75+ machine/video/sound ROMs), panda3ds (3DS, optional keys),
easyrpg (RPG Maker, soundfont + RTP), frodo (C64, 4 ROMs embedded)

105 total profiles.
2026-03-18 05:20:05 +01:00
github-actions[bot]
9a69b49eac regenerate database and docs 2026-03-17 19:10:52 +00:00
Abdessamad Derraz
ff82f64cb6 feat: complete all emulator profiles, 95 engines total
Final batch: scummvm (55 files, MT-32/engine data/themes/shaders),
gearcoleco (colecovision.rom), geargrafx (4 syscard variants),
gearlynx (lynxboot.img), dosbox_core (MT-32 + BASS libs),
geolith (Neo Geo FPGA, aes.zip/neogeo.zip), retrodream (DC boot+flash),
noods (NDS, full HLE), freej2me (JAR), jollycv (coleco+creativision),
fixgb (gbc_bios), numero (TI-83), smsplus (SMS/GG/CV), vircon32

95 profiles covering every libretro core with firmware requirements.
Cross-reference: 803 undeclared files, 249 in repo, 554 to source.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
60d9d38d69 feat: complete emulator profiling, 81 engines (final batch)
mame2003_plus (16 BIOS ZIPs, MAME 0.78 naming), mame2010 (51 ZIPs),
mame2016 (37 ZIPs incl Lindbergh), hbmame (MAME 0.220, no custom BIOS),
tyrquake (no BIOS), cannonball (29 OutRun ROMs with CRC32),
uzem (open source, no BIOS), vecx (ROM embedded), emuscv (UPD7801G),
b2 (BBC Micro standalone, ROMs bundled)

81 total emulator profiles covering all libretro cores with firmware.
Cross-reference: 731 undeclared files, 186 already in repo.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
99581d8aba feat: add 10 emulator profiles (batch 6)
gpsp (GBA, open BIOS fallback), ecwolf (ecwolf.pk3),
prboom (prboom.wad), x1 (Sharp X1, 5 files in xmil/),
minivmac (MacII.ROM/MacIIx.ROM), theodore (Thomson, all embedded),
crocods (CPC 6128, all embedded), vba_next (GBA, HLE fallback),
same_cdi (CD-i, 3 MAME ZIPs + 2 undeclared), beetle_lynx (lynxboot.img)

71 total profiles. Cross-reference: 690 undeclared, 186 in repo.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
4bc7085c1c feat: add 10 emulator profiles (batch 5)
snes9x (BS-X + STBIOS, HLE coprocessors), mupen64plus (64DD IPL),
pcsx_rearmed (7 BIOS + dynamic scan fallback), stella (no BIOS),
fmsx (12 MSX ROMs), virtualjaguar (6 BIOS embedded),
sameboy (8 boot ROM types, all built-in), beetle_vb (no BIOS),
handy (lynxboot.img 512B), pokemini (bios.min + FreeBIOS fallback)

61 total profiles. Cross-reference: 667 undeclared, 182 in repo.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
9eede1c957 feat: add 10 emulator profiles (batch 4)
blastem (MD, no BIOS needed), dosbox_pure (14 MT-32 ROMs + SF2),
desmume (NDS, 3 files all HLE), cap32 (CPC, all embedded),
mu (Palm OS, 5 ROMs), bk (Elektronika BK, 9 Soviet ROMs),
gearsystem (SMS/GG, 2 optional boot ROMs),
beetle_ngp (Neo Geo Pocket, pure HLE), beetle_wswan (WonderSwan, pure HLE),
galaksija (Yugoslav computer, all embedded)

51 total profiles. Cross-reference: 658 undeclared, 177 in repo.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
8768aed7aa feat: add 10 emulator profiles (batch 3)
freechaf (Channel F, 3 ROMs), freeintv (Intellivision, exec+grom),
ep128emu (Enterprise/TVC/CPC/ZX, 22 ROMs all built-in),
kronos (Saturn + 14 ST-V blobs), gambatte (GB/GBC boot ROMs),
mgba (GBA/GB/GBC/SGB, 10 CRC32 revisions), nestopia (FDS + NstDatabase),
px68k (X68000, 6 ROMs in keropi/), fuse (ZX Spectrum, 17 machines),
o2em (Odyssey2/Videopac, 4 BIOS by CRC32)

41 total profiles. Cross-reference: 644 undeclared, 167 in repo.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
639ff69d6c feat: add 10 emulator profiles (batch 2)
a5200, prosystem (Atari 7800), atari800 (400/800/XL/XE),
vice (C64/C128/VIC-20/Plus4/PET - 10 cores, all ROMs embedded),
neocd (Neo Geo CD, 12 BIOS variants), beetle_pce (PC Engine, 6 files),
beetle_pcfx (PC-FX), np2kai (PC-9801, 14 files + YM2608 samples),
quasi88 (PC-8801, 13 ROMs + 3 hidden fonts), opera (3DO, 10 BIOS + 3 kanji)

31 total profiles. Cross-reference: 572 undeclared, 148 in repo.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
f6a44c9409 feat: add 10 emulator profiles (batch 1 P1)
genesis_plus_gx (12 files), picodrive (18 files), fbneo (19 systems),
hatari (TOS ROMs), bluemsx (60+ MSX/ColecoVision/SG-1000),
fceumm (FDS/Game Genie), bsnes (20 coprocessor ROMs),
beetle_psx (5 BIOS + aliases), beetle_saturn (5 files),
puae (14 Kickstart ROMs, 3 naming conventions)

21 total emulator profiles. Cross-reference: 436 undeclared files,
120 already in repo, 316 to source.
2026-03-17 20:08:27 +01:00
Abdessamad Derraz
9052a6b750 feat: add emulator profiles and cross-reference engine (tier 2)
New two-tier architecture:
- Tier 1: Platform configs (what the UI checks) - unchanged
- Tier 2: Emulator profiles (what the code actually loads)

11 emulator profiles from source code analysis:
  cemu, citra, dolphin, duckstation, flycast,
  melonds, pcsx2, ppsspp, rpcs3, vita3k, xemu

Each profile documents every file the emulator loads with
source code references (file:line), hashes, and notes.

New scripts/cross_reference.py computes gaps between what
platforms declare and what emulators need.

Current gap: 200 undeclared files, 24 already in repo.
DuckStation alone recognizes 105 PS1/PS2 BIOS variants.

generate_pack.py gains --include-extras flag (future use).
_registry.yml maps platforms to their emulators.
2026-03-17 20:08:27 +01:00
github-actions[bot]
a38c86cf1e regenerate database and docs 2026-03-17 16:53:26 +00:00
Abdessamad Derraz
e82a498124 feat: update sc3000 to basic iii v1.1, regenerate db and readme
Replace sc3000.rom with BASIC Level III v1.1 (Japan) from MAME 0.270+
software list (SHA1 737a06b3, closer to Batocera target).

Batocera 679/680, Recalbox 346/346, all others 100%.
2026-03-17 17:51:11 +01:00
267 changed files with 22445 additions and 18 deletions

View File

@@ -2,7 +2,7 @@
Complete, verified collection of BIOS, firmware, and system files for retrogaming emulators - RetroArch, Batocera, Recalbox, Lakka, RetroPie, and more. Every file checked against official checksums from [libretro System.dat](https://github.com/libretro/libretro-database), [batocera-systems](https://github.com/batocera-linux/batocera.linux), and [Recalbox es_bios.xml](https://gitlab.com/recalbox/recalbox).
> **5352** files | **3540.1 MB** | Last updated: 2026-03-17T16:25:33Z
> **5352** files | **3540.1 MB** | Last updated: 2026-03-17T19:10:45Z
>
> PlayStation, PS2, Nintendo DS, Game Boy, GBA, Dreamcast, Saturn, Neo Geo, Mega CD, PC Engine, MSX, Amiga, Atari ST, ZX Spectrum, Arcade (MAME/FBNeo), and 50+ systems.
@@ -156,7 +156,7 @@ python scripts/generate_pack.py --all --include-archived --output-dir ~/Download
| Sega/Master System | 2 | 16.0 KB |
| Sega/Mega CD | 5 | 1024.0 KB |
| Sega/Mega Drive | 6 | 2.3 MB |
| Sega/SC-3000 | 1 | 22.3 KB |
| Sega/SC-3000 | 1 | 20.8 KB |
| Sega/Saturn | 12 | 11.2 MB |
| Sega/Triforce | 2 | 4.0 MB |
| Sharp/MZ | 6 | 504.6 KB |
@@ -9370,10 +9370,10 @@ These are large asset packs required by specific cores. They are included in the
### Sega/SC-3000
- **[sc3000.zip](bios/Sega/SC-3000/sc3000.zip)** (22,881 bytes)
- SHA1: `ac7ac52c22f22bf499ecc5ead6afeddfb1fc9ffd`
- MD5: `b5d6782fb57775bf2a5e06889cfae58d`
- CRC32: `7a1b9d80`
- **[sc3000.zip](bios/Sega/SC-3000/sc3000.zip)** (21,348 bytes)
- SHA1: `12de390be2595ad17015310085eaec57ad2b953f`
- MD5: `48e8821fb9087ab60a2a3b1465ee5124`
- CRC32: `62fb7d82`
### Sega/Saturn
@@ -11104,4 +11104,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on submitting BIOS files.
This repository provides BIOS files for personal backup and archival purposes.
*Auto-generated on 2026-03-17T16:25:33Z*
*Auto-generated on 2026-03-17T19:10:45Z*

Binary file not shown.

View File

@@ -1,7 +1,7 @@
{
"generated_at": "2026-03-17T16:25:33Z",
"generated_at": "2026-03-17T19:10:45Z",
"total_files": 5352,
"total_size": 3712114662,
"total_size": 3712113129,
"files": {
"520d3d1b5897800af47f92efd2444a26b7a7dead": {
"path": "bios/3DO Company/3DO/3do_arcade_saot.bin",
@@ -44913,14 +44913,14 @@
"sha256": "e184f5982a99c6ebf7799383f16a8624221755786056a3573944598283a4b8cf",
"crc32": "4dcfd55c"
},
"ac7ac52c22f22bf499ecc5ead6afeddfb1fc9ffd": {
"12de390be2595ad17015310085eaec57ad2b953f": {
"path": "bios/Sega/SC-3000/sc3000.zip",
"name": "sc3000.zip",
"size": 22881,
"sha1": "ac7ac52c22f22bf499ecc5ead6afeddfb1fc9ffd",
"md5": "b5d6782fb57775bf2a5e06889cfae58d",
"sha256": "eebf770fb1426dc6a2f7a0ce084cedb8aed7a8a904ee006c98344ced7526915f",
"crc32": "7a1b9d80"
"size": 21348,
"sha1": "12de390be2595ad17015310085eaec57ad2b953f",
"md5": "48e8821fb9087ab60a2a3b1465ee5124",
"sha256": "942ca934f6d43bc81677d3355cf8c795322661c8784b58e78d62951b6a033c2b",
"crc32": "62fb7d82"
},
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc": {
"path": "bios/Sega/Saturn/.variants/hisaturn_v103.bin",
@@ -53164,7 +53164,7 @@
"ff4a3572475236e859e3e9ac5c87d1f1": "02c287d10da6de579af7a4ce73b134bbdf23c970",
"4ea493ea4e9f6c9ebfccbdb15110367e": "88d6499d874dcb5721ff58d76fe1b9af811192e3",
"b4e76e416b887f4e7413ba76fa735f16": "70429f1d80503a0632f603bf762fe0bbaa881d22",
"b5d6782fb57775bf2a5e06889cfae58d": "ac7ac52c22f22bf499ecc5ead6afeddfb1fc9ffd",
"48e8821fb9087ab60a2a3b1465ee5124": "12de390be2595ad17015310085eaec57ad2b953f",
"0306c0e408d6682dd2d86324bd4ac661": "8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc",
"9992f2761b0f6e83b3e923451ab8057b": "999ed28cfbf18103a4963b0d3797af3dcf67db05",
"37e9746f4491aa2df9a83729d1a93620": "fefb403a7e91bdaf75ffd8a94c2a1f0ef4ece740",
@@ -66949,7 +66949,7 @@
"70429f1d80503a0632f603bf762fe0bbaa881d22"
],
"sc3000.zip": [
"ac7ac52c22f22bf499ecc5ead6afeddfb1fc9ffd"
"12de390be2595ad17015310085eaec57ad2b953f"
],
"hisaturn_v103.bin": [
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc"
@@ -74133,7 +74133,7 @@
"c94e8c8b": "02c287d10da6de579af7a4ce73b134bbdf23c970",
"0658f691": "88d6499d874dcb5721ff58d76fe1b9af811192e3",
"4dcfd55c": "70429f1d80503a0632f603bf762fe0bbaa881d22",
"7a1b9d80": "ac7ac52c22f22bf499ecc5ead6afeddfb1fc9ffd",
"62fb7d82": "12de390be2595ad17015310085eaec57ad2b953f",
"6abfefea": "8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc",
"0ab1c9ec": "999ed28cfbf18103a4963b0d3797af3dcf67db05",
"94c90a92": "fefb403a7e91bdaf75ffd8a94c2a1f0ef4ece740",

18
emulators/00_example.yml Normal file
View File

@@ -0,0 +1,18 @@
emulator: "00_example"
type: test
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
core_version: "1.0"
display_name: "Example Core"
cores:
- 00_example
systems: []
notes: |
Test/example core from libretro-samples. Minimal "hello world" libretro
implementation demonstrating the core API contract (retro_init, retro_run,
retro_load_game, etc.). Renders a simple color pattern to the framebuffer.
No system files, BIOS, or firmware required. Not an emulator.
files: []

13
emulators/2048.yml Normal file
View File

@@ -0,0 +1,13 @@
emulator: "2048"
type: game
source: "https://github.com/libretro/libretro-2048"
profiled_date: "2026-03-18"
core_version: "1.0"
display_name: "2048"
cores: [2048]
systems: []
files: []
notes: >
Libretro port of the 2048 sliding puzzle game by Gabriele Cirulli.
Self-contained core with all assets compiled into the binary.
No content file, BIOS, or system directory files required.

14
emulators/3dengine.yml Normal file
View File

@@ -0,0 +1,14 @@
emulator: 3DEngine
type: utility
source: "https://github.com/libretro/libretro-3dengine"
profiled_date: "2026-03-18"
core_version: "v1"
display_name: "Test Core - 3D Engine"
cores: [3dengine]
systems: []
files: []
notes: >
Tech demo rendering a 3D scene using software rasterization.
Demonstrates libretro hardware-accelerated rendering capabilities.
Self-contained core with all geometry and textures built in.
No content file, BIOS, or system directory files required.

52
emulators/81.yml Normal file
View File

@@ -0,0 +1,52 @@
emulator: EightyOne
type: libretro
source: "https://github.com/libretro/81-libretro"
profiled_date: "2026-03-18"
core_version: "1.0a"
display_name: "Sinclair - ZX 81 (EightyOne)"
cores:
- 81
systems:
- sinclair-zx81
notes: |
EightyOne is a Sinclair ZX81 emulator ported to libretro. Also supports
ZX80, Jupiter ACE, TS1500, Lambda, R470, TK85, and ZX97LE machines, but
the libretro port hardcodes MACHINEZX81 in retro_load_game (libretro.cpp:393).
ROM loading is in snap.c:487-512. The memory_load() function matches the
requested ROM filename against a compiled-in table and copies from embedded
byte arrays generated by xxd -i at build time (Makefile.libretro:519-522).
Only two ROMs are embedded: zx81.rom (the ZX81 8K BASIC ROM) and dkchr.rom
(dK'tronics character ROM). Any other ROM name logs an error and returns 0.
The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, never opens
files from the filesystem for ROM data, and need_fullpath is set to false
(libretro.cpp:308). All ROM data is baked into the compiled .so/.dll.
No external BIOS or firmware files are needed.
files: []
analysis:
embedded_roms:
zx81_rom:
variable: bin_ROM_zx81_rom
source_file: "bin/ROM/zx81.rom"
build_step: "xxd -i -> C array"
source_ref: "snap.c:489-498"
dkchr_rom:
variable: bin_ROM_dkchr_rom
source_file: "bin/ROM/dkchr.rom"
build_step: "xxd -i -> C array"
source_ref: "snap.c:499-508"
machine_roms:
notes: |
eo.c sets CurRom based on machine type. The libretro port forces
MACHINEZX81 (eo.c:39-41), so CurRom is always zx81.ROM81 which
defaults to "zx81.rom". Other machine ROMs (zx80, ace, ts1500,
lambda, zx97le, ringo470, tk85) are referenced but only zx81.rom
and dkchr.rom are embedded. Selecting other machines would log
"ROM not found" and load nothing.
filesystem_access: false
system_directory_used: false

50
emulators/a5200.yml Normal file
View File

@@ -0,0 +1,50 @@
emulator: a5200
type: libretro
source: "https://github.com/libretro/a5200"
profiled_date: "2026-03-18"
core_version: "2.0.2"
display_name: "Atari - 5200 (a5200)"
cores:
- a5200
systems:
- atari-5200
# a5200 is a dedicated Atari 5200 emulator forked from Atari800/Atari++ codebase.
# It loads the official 5200 OS ROM from <system_dir>/5200.rom (2048 bytes, mapped
# to memory at 0xF800-0xFFFF via MEMORY_InitialiseMachine).
#
# If 5200.rom is missing or the user selects "internal" via core option "a5200_bios",
# the core falls back to Altirra 5200 OS, an open-source replacement compiled from
# Altirra-3.20-test4 (altirra_5200_os.c). The fallback has reduced compatibility
# compared to the original Atari OS ROM.
#
# BIOS loading (libretro.c:409-500):
# 1. check_bios_variable() reads core option "a5200_bios" (official/internal)
# 2. load_bios() attempts to read <system_dir>/5200.rom (0x800 bytes)
# 3. On failure or "internal" selected: memcpy from ROM_altirra_5200_os fallback
#
# Cartridge detection (atari.c:169-236):
# Auto-detects cart type from header bytes and size. ROM database in cartridge.c
# maps MD5 hashes to cart types (standard 8K/16K/32K/40K, bounty bob, super cart).
files:
- name: "5200.rom"
path: "5200.rom"
size: 2048
required: false
note: >
Atari 5200 OS ROM. Provides the built-in OS routines used by all 5200
cartridges. Without it, the core uses the Altirra open-source replacement
which has lower compatibility with some games. Core option "a5200_bios"
controls whether to use this file or the internal fallback.
source_ref: "libretro/libretro.c:58-59, libretro/libretro.c:409-500, emu/memory.c:46"
notes:
altirra_fallback: >
The built-in Altirra 5200 OS (from altirra_5200_os.c, 0x800 bytes) is a free
replacement that works for most games but some titles require the original ROM
for full compatibility. The core displays a notification when falling back.
cart_db: >
cartridge.c contains an MD5-based ROM database for automatic cart type detection
(standard, EE banked, bounty bob, super cart variants). Unknown ROMs are detected
by size heuristic.

View File

@@ -0,0 +1,19 @@
emulator: advanced_tests
type: test
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
core_version: "v1"
display_name: "Test Core - Advanced Test"
cores:
- advanced_tests
systems: []
notes: |
Advanced test core from libretro-samples. Exercises extended libretro API
features: subsystems, memory descriptors, serialization, multi-disk control,
and other optional environment callbacks. Used by frontend developers to
validate their implementations.
No system files, BIOS, or firmware required. Not an emulator.
files: []

38
emulators/amiarcadia.yml Normal file
View File

@@ -0,0 +1,38 @@
emulator: amiarcadia
type: libretro
source: "https://amigan.yatho.com/"
profiled_date: "2026-03-18"
core_version: "4.42"
display_name: "Arcadia 2001 / Interton VC 4000 (AmiArcadia)"
cores:
- amiarcadia
systems:
- emerson-arcadia-2001
- interton-vc4000
- elektor-tv-games-computer
# AmiArcadia is a libretro port of James Jacobs' emulator for Signetics
# 2636 PVI / 2637 UVI + 2650 CPU-based systems: Emerson Arcadia 2001 and
# clones (Bandai, Grandstand, Schmid, Hanimex, Leisurevision, etc.),
# Interton VC 4000 family (Voltmace, Rowtron, Fountain, etc.), Elektor
# TV Games Computer, and Zaccaria/Malzak coin-op arcade machines.
#
# The core does NOT require any BIOS or system ROM files.
# firmware_count = 0 in amiarcadia_libretro.info confirms this.
#
# ROM identification:
# The core auto-identifies known game ROMs by CRC32 and configures the
# correct machine type, memory map, and game-specific settings. For
# unknown ROMs, the user selects machine type via the "Machine" core
# option (Arcadia / Interton).
#
# Supported extensions: .bin, .tvc
#
# Source ref: libretro-core-info/amiarcadia_libretro.info (firmware_count = 0)
# Docs: https://docs.libretro.com/library/amiarcadia/
notes: |
No BIOS files required. The emulator has no external firmware dependencies.
Game ROMs are identified by CRC32 for automatic machine configuration.
bios_files: []

14
emulators/anarch.yml Normal file
View File

@@ -0,0 +1,14 @@
emulator: Anarch
type: game
source: "https://github.com/libretro/anern"
profiled_date: "2026-03-18"
core_version: "1.1d"
display_name: "Anarch"
cores: [anarch]
systems: []
files: []
notes: >
Libretro port of Anarch, a public domain suckless FPS game by Miloslav Ciz.
Entirely self-contained with all levels, textures, and sounds compiled
into the binary using procedural generation and hardcoded data tables.
No content file, BIOS, or system directory files required.

223
emulators/applewin.yml Normal file
View File

@@ -0,0 +1,223 @@
emulator: AppleWin
type: libretro
source: "https://github.com/audetto/AppleWin"
profiled_date: "2026-03-18"
core_version: "1.30.21.0"
display_name: "Apple II (AppleWin)"
cores:
- applewin
systems:
- apple-ii
notes: |
AppleWin is an Apple II/IIe/II+ emulator. The libretro port embeds all
ROM images directly into the compiled binary via a CMake resource system
(resource/CMakeLists.txt -> apple2roms static library -> apple2roms_data.h).
The GNUFrame::GetResourceData() function serves ROMs from this compiled-in
map. No external BIOS/firmware files are needed.
The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and the official
applewin_libretro.info has zero firmware entries.
Supported machine types (via core option applewin_machine):
Enhanced Apple //e, Apple ][ (Original), Apple ][+, Apple ][ J-Plus,
Apple //e, Pravets 82, Pravets 8M, Pravets 8A, Base64A, TK3000 //e
Supported extensions: bin, do, dsk, nib, po, gz, woz, zip, 2mg, 2img,
iie, apl, hdv, yaml, m3u
supports_no_game: true (can boot without content)
files: []
analysis:
embedded_roms:
build_system: "CMake add_resources() in resource/CMakeLists.txt"
storage: "apple2roms static library linked into core binary"
accessor: "GNUFrame::GetResourceData() -> apple2roms::data map"
source_ref: "source/frontends/common2/gnuframe.cpp:83"
system_roms:
- id: IDR_APPLE2_ROM
filename: Apple2.rom
size: 12288
md5: 3c406514b9806a7c57ee65fb0b0c39b4
sha1: 09288be705464b608ff190519ab008d3dfcd1b05
note: "Apple ][ original ROM (12 KB)"
- id: IDR_APPLE2_PLUS_ROM
filename: Apple2_Plus.rom
size: 12288
md5: 572b3005a4fa49bc54917b069b82c1ab
sha1: 33a24f5489ba9195b44be77d9afb2252594cb5c7
note: "Apple ][+ ROM (12 KB)"
- id: IDR_APPLE2_JPLUS_ROM
filename: Apple2_JPlus.rom
size: 12288
md5: f3e8237eca3809bec2a42b984a1332a8
sha1: ad200b3263d08e7235d0871c8595963a07adc905
note: "Apple ][ J-Plus ROM (12 KB)"
- id: IDR_APPLE2E_ROM
filename: Apple2e.rom
size: 16384
md5: 346bc782c6a08a531c460e33bc03daf4
sha1: 61fa9254628e5bb7236fb474006116d67684d747
note: "Apple //e ROM (16 KB)"
- id: IDR_APPLE2E_ENHANCED_ROM
filename: Apple2e_Enhanced.rom
size: 16384
md5: 38063e08c778503fc03ecebb979769e9
sha1: b8ea90abe135a0031065e01697c4a3a20d51198b
note: "Enhanced Apple //e ROM (16 KB, default machine type)"
- id: IDR_PRAVETS_82_ROM
filename: PRAVETS82.ROM
size: 12288
md5: c619b7edfcf021f3b8fd20d9386676ba
sha1: 8bd7ced83e209a15e9b19a05a5ef4b8e996dc1a5
note: "Pravets 82 ROM (12 KB)"
- id: IDR_PRAVETS_8M_ROM
filename: PRAVETS8M.ROM
size: 12288
md5: 76c79535f7cf77973e2c711aa977a124
sha1: f1b4ff018acf95f3355f0d575b66a188d728b687
note: "Pravets 8M ROM (12 KB)"
- id: IDR_PRAVETS_8C_ROM
filename: PRAVETS8C.ROM
size: 16384
md5: 1896d7b98dd940c89f7c8ea899b71006
sha1: c976fe56e57706c161f513a82ba3e0d8cda83904
note: "Pravets 8A/8C ROM (16 KB)"
- id: IDR_TK3000_2E_ROM
filename: TK3000e.rom
size: 16384
md5: 8d84b614b545d4eec8799d3f325332cb
sha1: f163e5753c18ff0e812a448e8da406f102600edf
note: "TK3000 //e ROM (16 KB)"
- id: IDR_BASE_64A_ROM
filename: Base64A.rom
size: 49152
md5: 352fdbcae14c6a8c0398822c7a273309
sha1: f1c779af480b5bda2bdd03950c1201a5c5143bea
note: "Base64A ROM (48 KB)"
- id: IDR_FREEZES_F8_ROM
filename: Freezes_Non-autostart_F8_Rom.rom
size: 2048
md5: d0a61e95ed1e1dc37c8e4801326aa79e
sha1: 3180be6b555ee9ef1f59c4fc3f25c5aab8c39c81
note: "Freezes non-autostart F8 ROM (2 KB)"
video_roms:
- id: IDR_APPLE2_VIDEO_ROM
filename: Apple2_Video.rom
size: 2048
md5: 9ac0dc8c4d0002eb45b0b84be0bde5ec
sha1: f9d312f128c9557d9d6ac03bfad6c3ddf83e5659
note: "Apple II character generator ROM (2 KB)"
- id: IDR_APPLE2_JPLUS_VIDEO_ROM
filename: Apple2_JPlus_Video.rom
size: 2048
md5: 271e2c9bf928b95e7baeff391db45495
sha1: 0a382be58db5215c4a3de53b19a72fab660d5da2
note: "Apple ][ J-Plus character generator ROM (2 KB)"
- id: IDR_APPLE2E_ENHANCED_VIDEO_ROM
filename: Apple2e_Enhanced_Video.rom
size: 4096
md5: 9123fff3442c0e688cc6816be88dd4ab
sha1: b2b5d87f52693817fc747df087a4aa1ddcdb1f10
note: "Enhanced Apple //e character generator ROM (4 KB)"
- id: IDR_BASE64A_VIDEO_ROM
filename: Base64A_German_Video.rom
size: 4096
md5: 4b45852b369e2afd864a02d0d91f70dc
sha1: 87ca8135f7526ddf829f9c2c4f7dbe4d568818fc
note: "Base64A German character generator ROM (4 KB)"
peripheral_firmware:
- id: IDR_DISK2_13SECTOR_FW
filename: DISK2-13sector.rom
size: 256
md5: 4f80448507cf43ab40c17ac08d89e278
sha1: afd060e6f35faf3bb0146fa889fc787adf56330a
note: "Disk II 13-sector controller ROM (256 B)"
- id: IDR_DISK2_16SECTOR_FW
filename: DISK2.rom
size: 256
md5: 2020aa1413ff77fe29353f3ee72dc295
sha1: d4181c9f046aafc3fb326b381baac809d9e38d16
note: "Disk II 16-sector controller ROM (256 B)"
- id: IDR_SSC_FW
filename: SSC.rom
size: 2048
md5: 67c0d61ab0911183faf05270f881a97e
sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57
note: "Super Serial Card firmware (2 KB)"
- id: IDR_HDDRVR_FW
filename: Hddrvr.bin
size: 256
md5: e0a40e9166af27b16f60beb83c9233f0
sha1: 69667800c54da1d4466e7b2168c0e418a4cf586c
note: "Hard disk controller firmware v1 (256 B)"
- id: IDR_HDDRVR_V2_FW
filename: Hddrvr-v2.bin
size: 256
md5: a49e45e7a6d4de23e0845a59c7e31e0c
sha1: 06115eebb4d58221b5c062a42bf3e41e137447ed
note: "Hard disk controller firmware v2 (256 B)"
- id: IDR_HDC_SMARTPORT_FW
filename: HDC-SmartPort.bin
size: 256
md5: 2592efa1d34ade55d490a1b39911c9b2
sha1: fd557998fd5823ad69a42ad1282e4fe47db02dca
note: "SmartPort hard disk controller firmware (256 B)"
- id: IDR_PRINTDRVR_FW
filename: Parallel.rom
size: 256
md5: 5902996f16dc78fc013f6e1db14805b3
sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b
note: "Parallel printer card firmware (256 B)"
- id: IDR_MOCKINGBOARD_D_FW
filename: Mockingboard-D.rom
size: 2048
md5: ab53170c5ec66b63e6356f637f4388ed
sha1: e8d20f4b59fe867ff76434d35a14d2cbdc8533e3
note: "Mockingboard-D sound card firmware (2 KB)"
- id: IDR_MOUSEINTERFACE_FW
filename: MouseInterface.rom
size: 2048
md5: 22563ab338024dac7b03510371d49c57
sha1: 3a9d881a8a8d30f55b9719aceebbcf717f829d6f
note: "Mouse interface card firmware (2 KB)"
- id: IDR_THUNDERCLOCKPLUS_FW
filename: ThunderClockPlus.rom
size: 2048
md5: 138b1f7e30953fcaa58fcbf562c15001
sha1: 60f434f5325899d7ea257a6e56e6f53eae65146a
note: "ThunderClock Plus firmware (2 KB)"
- id: IDR_TKCLOCK_FW
filename: TKClock.rom
size: 2304
md5: 7076083b9d748b7637b020636543971b
sha1: 3740516cc9050465f8b884dbeb0ecdd2c1354620
note: "TK Clock firmware (2.25 KB)"

87
emulators/ardens.yml Normal file
View File

@@ -0,0 +1,87 @@
emulator: Ardens
type: libretro
source: "https://github.com/tiberiusbrown/ardens"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Arduboy (Ardens)"
cores:
- ardens
systems:
- arduboy
notes: |
Ardens is an Arduboy FX simulator designed for profiling and debugging,
ported to libretro. It emulates the ATmega32U4 MCU, SSD1306 OLED display,
and W25Q128 external flash used by the Arduboy hardware.
No BIOS or bootloader files are required. The core has all boot code
compiled directly into the binary:
- Caterina/Arduboy3K bootloaders for multiple hardware revisions (D1, D2,
E2) are embedded as C arrays generated from .hex files via bin2c.py.
Located in src/boot/boot_game_*.c and src/boot/boot_menu_*.c.
The appropriate variant is selected at reset based on the configured
device type (absim_arduboy.cpp:115-161).
- Flashcart header (1536 bytes) is embedded in src/boot/boot_flashcart.c
and written to the start of the W25Q128 flash image at init
(absim_w25q128.hpp:14).
- EEPROM (1024 bytes) and external flash (W25Q128, 16 MB) state are
handled as save RAM through the libretro RETRO_MEMORY_SAVE_RAM
interface, not as system files.
The libretro port does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
and never attempts to load any file from the system directory.
The .info file declares firmware_count = 0.
Supported ROM formats: Intel HEX (.hex) and Arduboy package (.arduboy).
block_extract is set to true (the core reads archives directly).
files: []
platform_details:
embedded_bootloaders:
source_ref: "src/boot/_make.bat, src/absim_arduboy.cpp:115-161"
variants:
- name: "arduboy3k-bootloader-game-sda"
array: "ARDENS_BOOT_GAME_D1"
size: 8422
device: "Arduboy FX (SDA)"
- name: "arduboy3k-bootloader-menu-sda"
array: "ARDENS_BOOT_MENU_D1"
size: 8422
device: "Arduboy FX (SDA)"
- name: "arduboy3k-bootloader-game-devkit"
array: "ARDENS_BOOT_GAME_D2"
size: 8446
device: "Arduboy FX DevKit"
- name: "arduboy3k-bootloader-menu-devkit"
array: "ARDENS_BOOT_MENU_D2"
size: 8446
device: "Arduboy FX DevKit"
- name: "arduboymini-bootloader-game"
array: "ARDENS_BOOT_GAME_E2"
size: 8548
device: "Arduboy Mini"
- name: "arduboymini-bootloader-menu"
array: "ARDENS_BOOT_MENU_E2"
size: 8548
device: "Arduboy Mini"
notes: |
All bootloaders are compiled from Intel HEX into C arrays at build
time. The core selects the game or menu variant at reset depending
on whether a flashcart image was loaded and the boot_to_menu config
flag (absim_arduboy.cpp:142-158). The bootloader is written to the
top of the ATmega32U4 program memory at the address defined by the
BOOTSZ fuse bits (absim.hpp:811).
embedded_flashcart_header:
source_ref: "src/boot/boot_flashcart.c, src/absim_w25q128.hpp:14"
array: "ARDENS_BOOT_FLASHCART"
size: 1536
notes: |
Empty flashcart header written to the first 1536 bytes of the
W25Q128 flash image during initialization. This is not a BIOS
file -- it is the default flash content the Arduboy FX expects
at the start of external storage.

46
emulators/arduous.yml Normal file
View File

@@ -0,0 +1,46 @@
emulator: Arduous
type: libretro
source: "https://github.com/libretro/arduous"
profiled_date: "2026-03-18"
core_version: "0.1.0"
display_name: "Arduboy (Arduous)"
cores:
- arduous
systems:
- arduboy
notes: |
Arduous is an Arduboy emulator built on simavr (ATmega32U4 AVR simulator)
with SSD1306 OLED display emulation, ported to libretro. It is distinct
from the Ardens core, which is a separate Arduboy emulator.
No BIOS, bootloader, or system files are required. The core operates as a
pure AVR simulator:
- The game content (.hex Intel HEX format) is parsed at load time via an
in-tree ihex reader (arduous.cpp:60-166) and written directly into the
simavr flash memory at the address specified in the hex file
(arduous.cpp:189). No separate bootloader is loaded.
- The MCU is hardcoded to atmega32u4 at 16 MHz (arduous.h:70-71).
simavr handles CPU initialization internally via avr_make_mcu_by_name().
- A commented-out loadFirmware() function (arduous.cpp:22-29) suggests
ELF firmware loading was considered but never implemented.
- EEPROM (1024 bytes), system RAM, and VRAM are exposed via the libretro
memory interface (RETRO_MEMORY_SAVE_RAM, RETRO_MEMORY_SYSTEM_RAM,
RETRO_MEMORY_VIDEO_RAM) but are not loaded from external files.
- The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. The
retro_load_game() function only reads the content data buffer passed
by the frontend (libretro.cpp:108-110).
- RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME is set to false (libretro.cpp:123),
meaning a game ROM is always required.
Supported ROM format: Intel HEX (.hex) only. The valid_extensions field
lists "hex". A TODO comment mentions .arduboy ZIP support but it is not
implemented.
files: []

181
emulators/atari800.yml Normal file
View File

@@ -0,0 +1,181 @@
emulator: Atari800
type: libretro
source: "https://github.com/libretro/libretro-atari800"
profiled_date: "2026-03-18"
core_version: "3.1.0"
display_name: "Atari - 400/800/600XL/800XL/130XE/5200 (Atari800)"
systems: [atari-400, atari-800, atari-800xl, atari-130xe, atari-5200, atari-xegs]
# Atari800 emulates the Atari 8-bit family (400/800/XL/XE) and the 5200 console.
# All BIOS files are optional -- the core ships built-in Altirra OS replacements
# (altirraos_800, altirraos_xl, altirra_5200_os, altirra_basic) compiled into the
# binary. If real ROM files are found in the system directory they take priority.
#
# ROM discovery (sysrom.c SYSROM_FindInDir):
# 1. Scan system directory for files of valid size (0x800, 0x2000, 0x2800, 0x4000)
# 2. Match by CRC32 against known ROM revisions
# 3. If no CRC match, try case-insensitive filename match (MatchByName)
# 4. Results stored in .atari800.cfg (generated on first run)
#
# The core generates .atari800.cfg in the frontend home directory on first boot.
# Core option "atari800_system" selects the emulated machine type:
# 400/800, 800XL (64KB), 130XE (128KB), Modern XL/XE(320KB), Modern XL/XE(576KB),
# Modern XL/XE(1088KB), 5200
files:
# -- Atari 5200 BIOS --
# Original 5200 OS ($F800-$FFFF, 2 KB). Matched by CRC32: 0x4248d3e3 (orig)
# or 0xc2ba2613 (rev A). Altirra 5200 OS used as fallback.
# Filename match (case-insensitive): atari5200.rom, atar5200.rom, 5200.rom,
# 5200.bin, atari_5200.rom
- name: "5200.rom"
path: "5200.rom"
required: false
size: 2048
md5: 281f20ea4320404ec820fb7ec0693b38
note: >
Atari 5200 BIOS (original). Mapped at $F800-$FFFF.
Altirra 5200 OS is used when this file is absent.
source_ref: "atari800/src/sysrom.c:101, libretro info firmware0"
# -- Atari BASIC ROM --
# Atari BASIC interpreter (8 KB). Three known revisions:
# Rev A: CRC32 0x4bec4de2, Rev B: CRC32 0xf0202fb3, Rev C: CRC32 0x7d684184
# Auto-select prefers Rev C > B > A > custom > Altirra BASIC.
# Filename match: ataribasic.rom, ataribas.rom, basic.rom, atari_basic.rom
# Core option "atari800_opt2" enables BASIC (needed for some 400/800 software).
- name: "ATARIBAS.ROM"
path: "ATARIBAS.ROM"
required: false
size: 8192
md5: 0bac0c6a50104045d902df4503a4c30b
note: >
Atari BASIC Rev C. Required for 400/800 software that needs BASIC.
Altirra BASIC is used as fallback. Enable via core option atari800_opt2.
source_ref: "atari800/src/sysrom.c:103-105, libretro info firmware1"
# -- Atari 400/800 OS A --
# Original Atari 400/800 OS (10 KB). Two known CRC32 values:
# NTSC: 0xc1b3bb02, PAL: 0x72b3fed4
# Filename match: atariosa.rom, atari_osa.rom, atari_os_a.rom
- name: "ATARIOSA.ROM"
path: "ATARIOSA.ROM"
required: false
size: 10240
md5: eb1f32f5d9f382db1bbfb8d7f9cb343a
note: >
Atari 400/800 OS Rev A. Altirra OS 800 is used as fallback.
Auto-select order: OS B NTSC, OS A NTSC, OS A PAL, custom, Altirra.
source_ref: "atari800/src/sysrom.c:87-89, libretro info firmware2"
# -- Atari 400/800 OS B --
# OS revision B (10 KB), NTSC: CRC32 0x0e86d61d
# Filename match: atariosb.rom, atari_osb.rom, atari_os_b.rom
- name: "ATARIOSB.ROM"
path: "ATARIOSB.ROM"
required: false
size: 10240
md5: 4177f386a3bac989a981d3fe3388cb6c
note: >
Atari 400/800 OS Rev B (NTSC). Preferred over Rev A for 400/800 mode.
source_ref: "atari800/src/sysrom.c:89, libretro info firmware3"
# -- Atari XL/XE OS --
# XL/XE OS (16 KB). Many revisions known by CRC32 in sysrom.c:
# BB01R2 (800XL stock): 0x1f9cd270
# CC01R4: 0x0e000b99
# BB01R4: 0x1eaf4002
# Auto-select prefers BB01R2 for 800XL, BB01R3 for XE, BB01R4 for XEGS.
# Filename match: atarixlxe.rom, atarixl.rom, atari_xlxe.rom, atari_xl_xe.rom
- name: "ATARIXL.ROM"
path: "ATARIXL.ROM"
required: false
size: 16384
md5: 06daac977823773a3eea3422fd26a703
note: >
Atari XL/XE OS. Used for 800XL, 130XE, and XEGS modes.
Altirra XL OS is used as fallback.
source_ref: "atari800/src/sysrom.c:90-99, libretro info firmware4"
# -- Atari XL/XE/XEGS OS v4 (BB01R4) --
# XEGS-specific OS revision BB01R4 (16 KB), CRC32: 0x1eaf4002
# Preferred for XEGS machine mode. Same filename matching as ATARIXL above.
- name: "BB01R4_OS.ROM"
path: "BB01R4_OS.ROM"
required: false
size: 16384
md5: b7a2a04677d34f069eeb643d5238bf86
note: >
Atari XEGS OS Rev 4 (BB01R4). Preferred OS for XEGS machine mode.
source_ref: "atari800/src/sysrom.c:98, libretro info firmware5"
# -- XEGS Missile Command built-in game --
# The XEGS had Missile Command in ROM (8 KB), CRC32: 0xbdca01fb
# No filename auto-match -- must be set via config or detected by CRC.
- name: "XEGAME.ROM"
path: "XEGAME.ROM"
required: false
size: 8192
md5: d7eb37aec6960cba36bc500e0e5d00bc
note: >
XEGS built-in Missile Command ROM. Only used in XEGS machine mode.
No built-in replacement exists for this ROM.
source_ref: "atari800/src/sysrom.c:106, libretro info firmware6"
# Known ROM revisions from sysrom.c (CRC32 identifiers):
#
# 400/800 OS:
# SYSROM_A_NTSC 0xc1b3bb02 10 KB OS Rev A (NTSC)
# SYSROM_A_PAL 0x72b3fed4 10 KB OS Rev A (PAL)
# SYSROM_B_NTSC 0x0e86d61d 10 KB OS Rev B (NTSC)
#
# XL/XE OS (all 16 KB):
# SYSROM_AA00R10 0xc5c11546 1200XL first rev
# SYSROM_AA01R11 0x1a1d7b1b 1200XL second rev
# SYSROM_BB00R1 0x643bcc98 600XL stock
# SYSROM_BB01R2 0x1f9cd270 800XL stock
# SYSROM_BB02R3 0x0d477aa1 XL/XE rev 3a
# SYSROM_BB02R3V4 0xd425a9cf XL/XE rev 3b
# SYSROM_CC01R4 0x0e000b99 XL/XE rev 5
# SYSROM_BB01R3 0x29f133f7 XE stock
# SYSROM_BB01R4 0x1eaf4002 XEGS stock
# SYSROM_BB01R59 0x45f47988 XL/XE rev 59
# SYSROM_BB01R59A 0xf0a236d3 XL/XE rev 59a
#
# 5200 OS (2 KB):
# SYSROM_5200 0x4248d3e3 Original
# SYSROM_5200A 0xc2ba2613 Rev A
#
# BASIC (8 KB):
# SYSROM_BASIC_A 0x4bec4de2 Rev A
# SYSROM_BASIC_B 0xf0202fb3 Rev B
# SYSROM_BASIC_C 0x7d684184 Rev C
#
# XEGAME (8 KB):
# SYSROM_XEGAME 0xbdca01fb Missile Command
#
# Built-in Altirra replacements (no file needed):
# altirraos_800 10 KB 400/800 OS replacement
# altirraos_xl 16 KB XL/XE OS replacement
# altirra_5200_os 2 KB 5200 OS replacement
# altirra_basic 8 KB BASIC replacement
notes:
altirra_note: >
The Altirra OS/BASIC replacements are open-source alternatives compiled
directly into the core binary (roms/ directory in source). They provide
good compatibility for most software but real ROMs give better accuracy.
cfg_note: >
On first boot the core creates .atari800.cfg in the frontend home directory.
It scans the system directory for ROM files by CRC32 first, then by filename.
The core option atari800_opt1 controls whether this legacy config is loaded.
machine_selection: >
Core option atari800_system selects the emulated machine. Each machine type
has its own preferred OS ROM auto-select order defined in sysrom.c.

8
emulators/azahar.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "azahar"
type: alias
alias_of: "citra"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Nintendo - 3DS (Azahar)"
note: "This core uses the same BIOS/firmware as citra. See emulators/citra.yml for details."
files: []

106
emulators/b2.yml Normal file
View File

@@ -0,0 +1,106 @@
emulator: b2
type: standalone
source: "https://github.com/tom-seddon/b2"
profiled_date: "2026-03-18"
core_version: "v0.1"
display_name: "Acorn - BBC Micro (b2)"
cores: []
systems:
- bbc-micro-b
- bbc-micro-bplus
- bbc-master-128
- bbc-master-compact
# b2 is a standalone BBC Micro emulator by Tom Seddon. It is NOT a libretro
# core -- there is no libretro port. The emulator uses SDL2 and Dear ImGui.
#
# Emulated models (src/b2/BeebConfig.cpp:211-433):
# - BBC Model B (with various disc interfaces: Acorn 1770, Watford, Opus)
# - BBC Model B+ / B+128
# - BBC Master 128 (MOS 3.20 and 3.50)
# - BBC Master Turbo (MOS 3.20 and 3.50, with 65C102 parasite)
# - BBC Model B + 6502 second processor
# - BBC Master Compact (MOS 5.00, 5.10, I5.10C)
# - Olivetti PC 128 S (Master Compact variant)
#
# ROM handling:
# All ROMs ship in the repo under etc/roms/. The emulator loads them via
# GetAssetPath("roms", path) at runtime. No external BIOS files needed.
# ROM paths are defined in src/b2/roms.cpp as BeebROM structs with
# {filename, display_name, StandardROM_enum}.
#
# ROM inventory (etc/roms/):
#
# BBC Model B:
# OS12.ROM 16384 md5:0a59a5ba15fe8557b5f7fee32bbd393a OS 1.20
# BASIC2.ROM 16384 md5:2cc67be4624df4dc66617742571a8e3d BASIC II
#
# BBC Model B+:
# B+MOS.rom 16384 md5:47a1eff6c7fbb47be780c87dfd50ece1 B+ MOS
# BASIC2.ROM 16384 (shared with Model B)
#
# Disc interfaces (sideways ROMs, slot 14):
# acorn/DFS-2.26.rom 16384 md5:f083f49d6fe66344c650d7e74249cb96 Acorn 1770 DFS
# watford/DDFS-1.53.rom 16384 md5:d2b71fa664f6cdf8c24b9b304777998c Watford DDFS (DDB2)
# watford/DDFS-1.54T.rom 16384 md5:e73a0417278504a6dfac2ccd9a73e9a9 Watford DDFS (DDB3)
# opus/OPUS-DDOS-3.45.rom 16384 md5:d98316eaff56ceab4fe3bfe54d2f92b2 Opus DDOS
# opus/challenger-1.01.rom 16384 md5:67e086a11834f8cc69175b601c4e5a5f Opus Challenger
#
# BBC Master 128 MOS 3.20 (M128/3.20/):
# mos.rom 16384 md5:9087f772447038a00178488b3591347b MOS 3.20 OS
# terminal.rom 16384 md5:7e053353b78b4631c274280931d96f02 Terminal (slot f)
# view.rom 16384 md5:178d09285727d596f8863f94a2fc8dad View (slot e)
# adfs.rom 16384 md5:10f08b255d6a6e3e888631946b628f1a ADFS (slot d)
# basic4.rom 16384 md5:63a6f43cbf491533cb03ceca2d2728d4 BASIC IV (slot c)
# edit.rom 16384 md5:cb3d762eaab6130d1360e1ac575589de Edit (slot b)
# viewsht.rom 16384 md5:7d5a80a8ce929d0a0f6ca8626cb9f436 Viewsheet (slot a)
# dfs.rom 16384 md5:865a0f7a5d6f10f48798801bf514d761 DFS (slot 9)
#
# BBC Master 128 MOS 3.50 (M128/3.50/):
# mos.rom 16384 md5:d7a046b1e6a9991748cee05332f1e258 MOS 3.50 OS
# terminal.rom 16384 md5:b1fa51fd49d31224ecb7e10e6908ec01 Terminal (slot f)
# view.rom 16384 md5:1566fab2f1827fb7ba61b283b828731d View (slot e)
# adfs.rom 16384 md5:fb8ceb72c5fbd9dd80eedd10d076b1a2 ADFS (slot d)
# basic4.rom 16384 md5:e11eed95d1caba8aa9772e9001590585 BASIC IV (slot c)
# edit.rom 16384 md5:8c72c7f24567cb4a2fb15eb0b0aeb55b Edit (slot b)
# viewsht.rom 16384 md5:1bc68b7c5eba6a2de2a43c9d1d9d983b Viewsheet (slot a)
# dfs.rom 16384 md5:22c2b7f14f244da21d630a7828541c79 DFS (slot 9)
#
# Parasite processors:
# MasterTurboParasite.rom 2048 md5:83d73e0e78693bb4b43e7cb18e58d556 65C102 TUBE 1.20
# TUBE110.rom 2048 md5:a77c7946128ca0b2c5e5a66b17c99dae 6502 TUBE 1.10
#
# BBC Master Compact MOS 5.00 (MCompact/5.00/):
# mos.rom 16384 md5:5d1b635e39aa461f17db2344870dda36 MOS 5.00 OS
# utils.rom 16384 md5:4f9ded16f44278a4ca0ef4e66822e316 UTILS (slot f)
# basic4.rom 16384 md5:64b3cd52e36b5262ac6ca3a9823c6ee2 BASIC IV (slot e)
# adfs.rom 16384 md5:bfbd0a7dbbfb1f1f4ba5ac0343c1f8ce ADFS (slot d)
#
# BBC Master Compact MOS 5.10 (MCompact/5.10/):
# mos.rom 16384 md5:f65eb89c7044e328b79f2ef8e51b7fd8 MOS 5.10 OS
# utils.rom 16384 md5:48a197850113b00a1eb141fb6d3ea135 UTILS (slot f)
# basic4.rom 16384 md5:64b3cd52e36b5262ac6ca3a9823c6ee2 BASIC IV (slot e, same as 5.00)
# adfs.rom 16384 md5:c2afc1cabb135e6f2254bcf9300a9b83 ADFS (slot d)
#
# Olivetti PC 128 S / MOS I5.10C (MCompact/I5.10C/):
# mos.rom 16384 md5:5e16a38bd7fd6f07f26b5a64826e4ec6 MOS I5.10C OS
# utils.rom 16384 md5:75364aa6fd5e134a40051d9ee772df37 UTILS (slot f)
# basic4.rom 16384 md5:717df34edae5b6bf5bbd8879c0d13022 BASIC IV (slot e)
# adfs.rom 16384 md5:10f23a239dde39b7fe09d72083709e93 ADFS (slot d)
#
# ROM type system (src/beeb/include/beeb/roms.inl):
# Sideways ROMs support banked mappers: 16KB (standard), CCIWORD (32KB),
# CCIBASE (64KB), CCISPELL (128KB), PALQST/PALWAP/PALTED, ABEP, ABE,
# Trilogy (64KB), MO2 (128KB). OS ROM types: 16KB, Compact (64KB),
# MegaROM (128KB), Multi-OS (512KB with 4 banks).
#
# Memory map (src/beeb/include/beeb/type.h):
# OS ROM mapped at $C000-$FFFF (MOS big pages). Sideways ROMs in 16 banks
# at $8000-$BFFF, selected via ROMSEL register at $FE30.
notes: |
b2 is a standalone BBC Micro emulator (SDL2 + Dear ImGui). Not a libretro core.
All required ROMs are bundled in the repository under etc/roms/.
No external BIOS files need to be provided by the user.
bios_files: []

35
emulators/beetle_lynx.yml Normal file
View File

@@ -0,0 +1,35 @@
emulator: Beetle Lynx (Mednafen Lynx)
type: libretro
source: "https://github.com/libretro/beetle-lynx-libretro"
profiled_date: "2026-03-18"
core_version: "v1.24.0"
display_name: "Atari - Lynx (Beetle Lynx)"
cores: [mednafen_lynx]
systems: [atari-lynx]
verification: existence
notes: >
Fork of Mednafen's Handy module for Atari Lynx emulation via libretro.
The core loads lynxboot.img from the system directory at game load time
(libretro.cpp:191). CRom constructor in rom.cpp reads exactly 512 bytes
from the file. If the file is missing or undersized, the ROM array is
filled with 0x88 (DEFAULT_ROM_CONTENTS) and the core continues without
error, but games will not boot correctly without the real boot ROM.
The cart database in cart.cpp identifies the BIOS by CRC32 0x0d973c9d
("[BIOS] Atari Lynx (USA, Europe)", size 512).
No hash validation is performed on the BIOS at load time.
Core options: lynx_rot_screen (screen rotation), lynx_pix_format
(pixel format), lynx_force_60hz (force 60Hz refresh).
ROM extensions: .lnx, .lyx, .bll, .o
files:
- name: "lynxboot.img"
description: "Atari Lynx Boot ROM"
region: "World"
required: true
size: 512
sha1: "e4ed47fae31693e016b081c6bda48da5b70d7ccb"
md5: "fcd403db69f54290b51035d82f835e7b"
crc32: "0d973c9d"
source_ref: "libretro.cpp:191, rom.cpp:50-78, cart.cpp:67"
notes: "512-byte boot ROM. Core silently degrades without it but games will not run."

36
emulators/beetle_ngp.yml Normal file
View File

@@ -0,0 +1,36 @@
emulator: Beetle NGP (Mednafen Neo Geo Pocket)
type: libretro
source: "https://github.com/libretro/beetle-ngp-libretro"
profiled_date: "2026-03-18"
core_version: "v0.9.36.1"
display_name: "SNK - Neo Geo Pocket / Color (Beetle NeoPop)"
systems: [snk-ngp, snk-ngpc]
notes: |
Beetle NGP is a fork of Mednafen's NeoPop module for Neo Geo Pocket
and Neo Geo Pocket Color emulation via libretro.
No external BIOS or firmware files are required. The core uses a
built-in High-Level Emulation (HLE) BIOS that is constructed at
runtime by bios_install() in mednafen/ngp/bios.c.
The HLE BIOS populates a 64KB array (ngpc_bios[0x10000]) with:
- A system call vector table at 0xFE00 (27 entries covering
clock, RTC, interrupts, font, flash read/write, comms)
- Each vector target contains an iBIOSHLE instruction (opcode 0x1F)
that traps into biosHLE.c for high-level handling
- A built-in system font (2048 bytes at 0x8DCF)
- A default interrupt handler (RETI at 0x23DF)
- An infinite loop at 0xFFFE as the idle entry point
The TLCS-900h CPU (main) and Z80 (sound) are both emulated in
software. Flash memory for game saves is handled internally via
flash.c without needing a separate firmware dump.
The only core option is ngp_language (english/japanese), which
controls the language flag passed to games. It does not affect
BIOS loading.
ROM extensions: .ngp, .ngc, .ngpc, .npc
files: []

91
emulators/beetle_pce.yml Normal file
View File

@@ -0,0 +1,91 @@
emulator: Beetle PCE (Mednafen PCE)
type: libretro
source: "https://github.com/libretro/beetle-pce-libretro"
profiled_date: "2026-03-18"
core_version: "v0.9.38.7"
display_name: "NEC - PC Engine / SuperGrafx / CD (Beetle PCE)"
cores: [mednafen_pce, mednafen_pce_fast, mednafen_supergrafx]
systems: [nec-pc-engine]
verification: existence
notes: >
BIOS loaded from system directory at CD-ROM load time via PCE_LoadCD().
Core option "pce_cdbios" selects which card image to use (default: System Card 3).
DetectGECD() auto-detects Games Express discs and switches to "pce.gecdbios" (gexpress.pce).
Arcade Card mode (pce_arcadecard option, enabled by default) extends System Card 3 with
extra RAM mapping via SYSCARD_ARCADE enum.
No hash validation on BIOS load: the core opens the file and reads it directly.
gexpress.pce and gecard.pce are the same ROM (Games Express CD Card); the core expects
gexpress.pce, libretro System.dat references gecard.pce. Both names should be provided.
SuperGrafx CD detection (DetectSGXCD) reads sector data to decide SGX mode but uses the
same BIOS files.
files:
# -- CD-ROM System Card 3 (Japan) - default --
- name: "syscard3.pce"
description: "CD-ROM System Card 3.0 (Japan)"
region: "NTSC-J"
required: true
sha1: "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c"
md5: "38179df8f4ac870017db21ebcbf53114"
source_ref: "libretro.cpp:1051-1052, settings.cpp:40"
notes: "Default value for pce_cdbios option. Most CD games run with this."
# -- CD-ROM System Card 3 (US) --
- name: "syscard3u.pce"
description: "CD-ROM System Card 3.0 (US / TurboGrafx-CD)"
region: "NTSC-U"
required: false
sha1: "d02611d99921986147c753df14c7349b31d71950"
md5: "0754f903b52e3b3342202bdafb13efa5"
source_ref: "libretro.cpp:1059-1060"
notes: "pce_cdbios = 'System Card 3 US'"
# -- CD-ROM System Card 2 (Japan) --
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: "NTSC-J"
required: false
sha1: "88da02e2503f7c32810f5d93a34849d470742b6d"
md5: "3cdd6614a918616bfc41c862e889dd79"
source_ref: "libretro.cpp:1053-1054"
notes: "pce_cdbios = 'System Card 2'. Older games only."
# -- CD-ROM System Card 2 (US) --
- name: "syscard2u.pce"
description: "CD-ROM System Card 2.0 (US / TurboGrafx-CD)"
region: "NTSC-U"
required: false
sha1: "2bea3dac98f84b2f2f469fa77ea720b8770d598d"
md5: "94279f315e8b52904f65ab3108542afe"
source_ref: "libretro.cpp:1061-1062"
notes: "pce_cdbios = 'System Card 2 US'"
# -- CD-ROM System Card 1 (Japan) --
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: "NTSC-J"
required: false
sha1: "a39a66da7de6ba94ab84d04eef7afeec7d4ee66a"
md5: "2b7ccb3d86baa18f6402c176f3065082"
source_ref: "libretro.cpp:1055-1056"
notes: "pce_cdbios = 'System Card 1'. Very early CD-ROM2 games."
# -- Games Express CD Card --
- name: "gexpress.pce"
description: "Games Express CD Card"
region: "NTSC-J"
required: false
sha1: "014881a959e045e00f4db8f52955200865d40280"
md5: "6d2cb14fc3e1f65ceb135633d1694122"
source_ref: "libretro.cpp:1057-1058, settings.cpp:41"
alt_names: ["gecard.pce"]
notes: >
pce_cdbios = 'Games Express' or auto-detected via DetectGECD() in pce.cpp:374.
Same ROM as gecard.pce (System.dat name). Core expects gexpress.pce filename.
Required for unlicensed Games Express titles (AV Tanjou, Bishoujo Jyanshi, etc).

52
emulators/beetle_pcfx.yml Normal file
View File

@@ -0,0 +1,52 @@
emulator: Beetle PC-FX (Mednafen)
type: libretro
cores: [mednafen_pcfx]
source: "https://github.com/libretro/beetle-pcfx-libretro"
profiled_date: "2026-03-18"
core_version: "v0.9.33.3"
display_name: "NEC - PC-FX (Beetle PC-FX)"
systems:
- nec-pcfx
notes: |
Beetle PC-FX is the libretro port of Mednafen's NEC PC-FX emulation module.
The core requires a single BIOS file: pcfx.rom (1 MB). The setting
"pcfx.bios" resolves to the filename "pcfx.rom" via MDFN_GetSettingS()
in mednafen/settings.c:92-93. The file is loaded from the libretro
system directory in LoadCommon() (libretro.cpp:367-394).
The BIOS is mapped at address 0xFFF00000 and must be exactly 1048576 bytes
(1024 * 1024). LoadCommon() returns false if the file is missing or the
wrong size, so the core will not start without it.
No other firmware files (fx-scsi.rom, pcfxga.rom, pcfxv101.bin) are
referenced by this core. Those exist for other PC-FX emulators or
alternate BIOS versions but are unused here.
BIOS loading: libretro.cpp LoadCommon() lines 364-397.
Setting resolution: mednafen/settings.c MDFN_GetSettingS() lines 90-94.
BIOS memory: static uint8 *BIOSROM, mapped at 0xFFF00000 (1 MB region).
files:
# -------------------------------------------------------
# PC-FX BIOS
# -------------------------------------------------------
- name: "pcfx.rom"
system: nec-pcfx
required: true
size: 1048576 # 1 MB (1024 * 1024)
md5: "08e36edbea28a017f79f8d4f7ff9b6d7"
sha1: "1a77fd83e337f906aecab27a1604db064cf10074"
note: "PC-FX BIOS v1.00. Only BIOS file used by this core."
source_ref: "libretro.cpp:367, mednafen/settings.c:92-93"
platform_details:
pcfx:
bios_size: 1048576 # 1 MB
ram_size: 2097152 # 2 MB
bios_address: "0xFFF00000-0xFFFFFFFF"
ram_address: "0x00000000-0x001FFFFF"
cpu: "NEC V810"
cpu_modes: [accurate, fast]
hle_available: false
source_ref: "libretro.cpp:103-104, 379-387"

86
emulators/beetle_psx.yml Normal file
View File

@@ -0,0 +1,86 @@
emulator: Beetle PSX (Mednafen PSX)
type: libretro
source: "https://github.com/libretro/beetle-psx-libretro"
profiled_date: "2026-03-18"
core_version: "v0.9.44.1"
display_name: "Sony - PlayStation (Beetle PSX)"
cores: [mednafen_psx, mednafen_psx_hw]
systems: [sony-playstation]
bios_size: 524288 # 512 KB for all accepted BIOS images
verification: sha1
notes: >
Region-based BIOS selection: the core picks JP/NA/EU firmware based on disc region.
SHA1 validated with warning on mismatch (does not block loading).
Override option allows using PSP or PS3 extracted PS1 BIOS as region-free alternative.
"Skip BIOS" option exists but causes compatibility issues (PAL copy protection, Saga Frontier).
Alternate filenames are case variants and model aliases for the same image.
Comment in source references MAME psx.cpp as hash source.
files:
# -- Region: Japan (REGION_JP) --
- name: "scph5500.bin"
description: "SCPH-5500 (v3.0 09-09-96 J)"
region: "NTSC-J"
required: true
sha1: "b05def971d8ec59f346f2d9ac21fb742e3eb6917"
md5: "8dd7d5296a650fac7319bce665a6a53c"
source_ref: "libretro.cpp:252-256"
alt_names: ["SCPH5500.bin", "SCPH-5500.bin"]
# -- Region: North America (REGION_NA) --
- name: "scph5501.bin"
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
region: "NTSC-U"
required: true
sha1: "0555c6fae8906f3f09baf5988f00e55f88e9f30b"
md5: "490f666e1afb15b7362b406ed1cea246"
source_ref: "libretro.cpp:258-270"
alt_names:
- "SCPH5501.bin"
- "SCPH-5501.bin"
- "scph5503.bin"
- "SCPH5503.bin"
- "SCPH-5503.bin"
- "scph7003.bin"
- "SCPH7003.bin"
- "SCPH-7003.bin"
# -- Region: Europe (REGION_EU) --
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: "PAL"
required: true
sha1: "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"
md5: "32736f17079d0b2b7024407c39bd3050"
source_ref: "libretro.cpp:272-282"
alt_names:
- "SCPH5502.bin"
- "SCPH-5502.bin"
- "scph5552.bin"
- "SCPH5552.bin"
- "SCPH-5552.bin"
# -- Override BIOS (region-free alternatives) --
- name: "psxonpsp660.bin"
description: "PSP embedded PS1 BIOS (region-free override)"
region: "Auto"
required: false
sha1: "96880d1ca92a016ff054be5159bb06fe03cb4e14"
md5: "c53ca5908936d412331790f4426c6c33"
source_ref: "libretro.cpp:190-196"
alt_names: ["PSXONPSP660.bin"]
notes: "override_bios=1 (psxonpsp option). Falls back to region BIOS if not found."
- name: "ps1_rom.bin"
description: "PS3 embedded PS1 BIOS (region-free override)"
region: "Auto"
required: false
sha1: "c40146361eb8cf670b19fdc9759190257803cab7"
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
source_ref: "libretro.cpp:198-204"
alt_names: ["PS1_ROM.bin"]
notes: "override_bios=2 (ps1_rom option). Falls back to region BIOS if not found."

View File

@@ -0,0 +1,96 @@
emulator: Beetle Saturn (Mednafen)
type: libretro
core: mednafen_saturn_libretro
source: "https://github.com/libretro/beetle-saturn-libretro"
profiled_date: "2026-03-18"
core_version: "v0.9.45.1"
display_name: "Sega - Saturn (Beetle Saturn)"
systems:
- sega-saturn
notes: |
Beetle Saturn is the libretro port of Mednafen's Sega Saturn emulation module.
Two region-specific BIOS files are used: sega_101.bin for Japan/Asia NTSC,
mpr-17933.bin for North America, Europe, and all other regions. The core
returns false from InitCommon() if the BIOS file is missing or not exactly
512 KB, so both BIOS files are required for full region coverage.
Region auto-detection reads the disc header and picks the matching BIOS.
Manual region override is available via beetle_saturn_region core option.
The KOF95 and Ultraman ROM carts are optional game-specific expansion
cartridges loaded from the system directory. The Action Replay 4M Plus
cart (satar4mp.bin) is listed but marked unfinished in source (needs
CPU UBC emulation).
BIOS loading: mednafen/ss/ss.cpp InitCommon() lines 920-961.
Cart loading: mednafen/ss/cart.cpp CART_Init() lines 128-220.
Firmware path: libretro.cpp MDFN_MakeFName(MDFNMKF_FIRMWARE) -> system dir.
Default cart ROM filenames: mednafen/settings.cpp MDFN_GetSettingS().
files:
# -------------------------------------------------------
# Saturn BIOS - Japan / Asia NTSC
# -------------------------------------------------------
- name: "sega_101.bin"
system: sega-saturn
region: [japan, asia-ntsc]
required: true
size: 524288 # 512 KB
md5: "85ec9ca47d8f6807718151cbcca8b964"
note: "Saturn BIOS v1.01 (Japan). Used when region is JP or Asia NTSC."
source_ref: "mednafen/ss/ss.cpp:928-929"
# -------------------------------------------------------
# Saturn BIOS - North America / Europe / other
# -------------------------------------------------------
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe, south-korea, asia-pal, brazil, latin-america]
required: true
size: 524288 # 512 KB
md5: "3240872c70984b6cbfda1586cab68dbe"
note: "Saturn BIOS (NA/EU). Used for all non-JP/Asia-NTSC regions."
source_ref: "mednafen/ss/ss.cpp:930-931"
# -------------------------------------------------------
# King of Fighters '95 ROM cart
# -------------------------------------------------------
- name: "mpr-18811-mx.ic1"
system: sega-saturn
required: false
size: 2097152 # 2 MB (0x200000, rom.cpp reads up to this)
md5: "255113ba943c92a54facd25a10fd780c"
note: "KOF95 expansion ROM cart. Loaded when cart type set to KOF95."
source_ref: "mednafen/ss/cart.cpp:157-172, mednafen/settings.cpp:64-65"
# -------------------------------------------------------
# Ultraman ROM cart
# -------------------------------------------------------
- name: "mpr-19367-mx.ic1"
system: sega-saturn
required: false
size: 2097152 # 2 MB
md5: "1cd19988d1d72a3e7caa0b73234c96b4"
note: "Ultraman expansion ROM cart. Loaded when cart type set to Ultraman."
source_ref: "mednafen/ss/cart.cpp:157-172, mednafen/settings.cpp:66-67"
# -------------------------------------------------------
# Action Replay 4M Plus (unfinished)
# -------------------------------------------------------
- name: "satar4mp.bin"
system: sega-saturn
required: false
note: "Action Replay 4M Plus firmware. Unfinished in source, needs CPU UBC emulation."
source_ref: "mednafen/ss/cart.cpp:174-188, mednafen/settings.cpp:68-69"
platform_details:
saturn:
bios_size: 524288 # 512 KB
rom_cart_size: 2097152 # 2 MB max (rom.cpp)
workram_low: 1048576 # 1 MB
workram_high: 1048576 # 1 MB
bios_address: "0x00000000-0x000FFFFF"
cart_address: "0x02000000-0x03FFFFFF"
hle_available: false
source_ref: "mednafen/ss/ss.cpp:906-908"

29
emulators/beetle_vb.yml Normal file
View File

@@ -0,0 +1,29 @@
emulator: Beetle VB (Mednafen Virtual Boy)
type: libretro
source: "https://github.com/libretro/beetle-vb-libretro"
profiled_date: "2026-03-18"
core_version: "v0.9.36.1"
display_name: "Nintendo - Virtual Boy (Beetle VB)"
systems: [nintendo-virtualboy]
notes: |
Beetle VB is a port of Mednafen's Virtual Boy emulation module to
libretro. Based on Mednafen v0.9.36.1.
No external BIOS or firmware files are required. The Virtual Boy
hardware did not use a traditional boot ROM or BIOS in the way
that consoles like PlayStation or Saturn do. The V810 CPU starts
execution directly from the game ROM mapped at 0x07000000.
The core loads the ROM into GPROM (Game Pak ROM), mirrors it if
smaller than 64KB, and initializes 64KB of WRAM and optional
GPRAM (Game Pak RAM/SRAM for saves). The VIP (Virtual Image
Processor), VSU (Virtual Sound Unit), and hardware timer are all
emulated in software with no firmware dependencies.
The libretro .info file (mednafen_vb_libretro.info) declares no
firmware entries and no system files.
ROM extensions: .vb, .vboy, .bin
files: []

View File

@@ -0,0 +1,34 @@
emulator: Beetle WonderSwan (Mednafen WonderSwan)
type: libretro
source: "https://github.com/libretro/beetle-wswan-libretro"
profiled_date: "2026-03-18"
core_version: "v0.9.35.1"
display_name: "Bandai - WonderSwan/Color (Beetle Wonderswan)"
systems: [bandai-wswan, bandai-wswanc]
notes: |
Beetle WonderSwan is a fork of Mednafen's Cygne module for WonderSwan
and WonderSwan Color emulation via libretro.
No external BIOS or firmware files are required. The core bypasses the
original boot ROM entirely by hardcoding the initial I/O register state
in mednafen/wswan/start.inc (a 256-byte table of power-on defaults for
all hardware registers 0x00-0xFF). On reset, WSwan_MemoryReset() in
wswan-memory.c zeroes RAM and writes a fixed 8-byte identifier at
0x75AC, then the CPU starts executing the cartridge directly.
Internal EEPROM owner data (name, birthday, sex, blood type) is
configured through core options (wswan.name, wswan.byear, wswan.bmonth,
wswan.bday, wswan.sex, wswan.blood) and initialized at boot by
WSwan_EEPROMInit() without needing a real EEPROM dump.
The wswan.language core option selects English or Japanese, which is
returned via I/O port 0xC8+ as the hardware language flag. This
replaces the boot ROM's language selection screen.
The NEC V30MZ CPU is emulated in software (v30mz.c). Sound DMA,
cartridge banking, and RTC are all handled internally.
ROM extensions: .ws, .wsc, .pc2
files: []

34
emulators/bennugd.yml Normal file
View File

@@ -0,0 +1,34 @@
emulator: BennuGD
type: libretro
source: "https://github.com/diekleinekuh/BennuGD_libretro"
profiled_date: "2026-03-18"
core_version: "git"
display_name: "Bennu Game Development"
cores:
- bennugd
systems:
- bennugd
# BennuGD is an open-source interpreter for BennuGD (.dcb/.dat) game files,
# running as a libretro core. It is a successor to DIV Games Studio / Fenix.
# Notable game: Streets of Rage Remake.
#
# The official libretro .info file (bennugd_libretro.info) declares zero
# firmware entries. The core loads content directly via bgdi_main() and does
# not reference any files from the system directory.
#
# retro_load_game() in libretro.c:888-911 only reads the content path and
# the save directory. RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY is called once
# (libretro.c:899) solely as a fallback for the save directory, never to
# load BIOS or firmware.
#
# Supported extensions: dcb, dat, exe (Windows BennuGD executables)
# Valid extensions in libretro.c: dat, dcb
# Valid extensions in .info: dcb, dat, exe
notes: |
No BIOS or firmware required. BennuGD is a self-contained game interpreter.
Games are loaded as .dcb or .dat bytecode files compiled by the BennuGD
toolchain. All game assets are bundled with the content.
files: []

152
emulators/bk.yml Normal file
View File

@@ -0,0 +1,152 @@
emulator: bk-emulator
type: libretro
source: "https://github.com/libretro/bk-emulator"
profiled_date: "2026-03-18"
core_version: "1.00"
display_name: "Elektronika - BK-0010/BK-0011(M)"
cores:
- bk
systems:
- elektronika-bk
# BK-emulator is an Elektronika BK-0010/0011M emulator (Soviet PDP-11 based home
# computer). The libretro core supports six machine configurations selected via
# the "bk_model" core option:
# BK-0010 (model 0) - default
# BK-0010.01 (model 1)
# BK-0010.01 + FDD (model 2)
# BK-0011M + FDD (model 3)
# Slow BK-0011M (model 4) - same ROMs as model 3
# Terak 8510/a (model 9)
#
# ROM loading (boot.c:83-116):
# BK-0010 models use load_rom() which maps ROM into emulated memory at
# specific addresses: monitor at 0100000 (8 KB), BASIC/FOCAL at 0120000
# (24448-24576 bytes), disk controller at 0160000 (4 KB).
# BK-0011M uses load_rom11() which loads into separate ROM buffer arrays.
#
# ROM file resolution (libretro.c:1051-1108):
# Files are loaded from {system_dir}/bk/{filename} (libretro.c:724-726).
# If not found with original casing, the loader retries with lowercase
# filename (libretro.c:1074-1079).
#
# All ROM files are required for their respective model. The core calls
# environ_cb(RETRO_ENVIRONMENT_SHUTDOWN) if any ROM file is missing.
notes: |
Files go in {system_dir}/bk/.
Each BK model requires a specific set of ROMs. The default model is BK-0010
which needs MONIT10.ROM and FOCAL10.ROM. Changing the core option "bk_model"
changes which ROMs are loaded. The core shuts down if a required ROM is
missing (no fallback or pseudo-BIOS).
If a ROM file with uppercase name is not found, the core retries with
the filename lowercased.
files:
# -- BK-0010 Monitor ROM (all BK-0010 variants) --
- name: MONIT10.ROM
path: "bk/MONIT10.ROM"
size: 8192
required: true
note: "BK-0010 monitor ROM (8 KB). Loaded at address 0100000. Required for all BK-0010 models (0, 1, 2)."
source_ref: "main.c:53, boot.c:107"
aliases: ["monit10.rom"]
# -- BK-0010 language ROMs (model-dependent) --
- name: FOCAL10.ROM
path: "bk/FOCAL10.ROM"
size: 24576
required: false
note: "FOCAL interpreter ROM (24448-24576 bytes). Loaded at 0120000. Used by BK-0010 (model 0, default)."
source_ref: "libretro.c:15, boot.c:110"
aliases: ["focal10.rom"]
- name: BASIC10.ROM
path: "bk/BASIC10.ROM"
size: 24576
required: false
note: "BASIC interpreter ROM (24448-24576 bytes). Loaded at 0120000. Used by BK-0010.01 (model 1)."
source_ref: "libretro.c:16, boot.c:110"
aliases: ["basic10.rom"]
# -- Disk controller ROM (BK-0010.01+FDD and BK-0011M) --
- name: DISK_327.ROM
path: "bk/DISK_327.ROM"
size: 4096
required: false
note: "Floppy disk controller ROM (4 KB). Loaded at 0160000 for BK-0010.01+FDD (model 2), or into system_rom for BK-0011M (model 3/4)."
source_ref: "main.c:54, boot.c:99,113"
aliases: ["disk_327.rom"]
# -- BK-0011M ROMs --
- name: B11M_BOS.ROM
path: "bk/B11M_BOS.ROM"
size: 8192
required: false
note: "BK-0011M system ROM / BOS (8 KB). Loaded into system_rom at offset 0. Required for BK-0011M (model 3/4)."
source_ref: "main.c:55, boot.c:98"
aliases: ["b11m_bos.rom"]
- name: B11M_EXT.ROM
path: "bk/B11M_EXT.ROM"
size: 8192
required: false
note: "BK-0011M extended BOS ROM (8 KB). Loaded into rom[1] at offset 8192. Required for BK-0011M (model 3/4)."
source_ref: "main.c:56, boot.c:102"
aliases: ["b11m_ext.rom"]
- name: BAS11M_0.ROM
path: "bk/BAS11M_0.ROM"
size: 16384
required: false
note: "BK-0011M BASIC ROM part 0 (16 KB). Loaded into rom[0]. Required for BK-0011M (model 3/4)."
source_ref: "main.c:57, boot.c:100"
aliases: ["bas11m_0.rom"]
- name: BAS11M_1.ROM
path: "bk/BAS11M_1.ROM"
size: 8192
required: false
note: "BK-0011M BASIC ROM part 1 (8 KB). Loaded into rom[1] at offset 0. Required for BK-0011M (model 3/4)."
source_ref: "main.c:58, boot.c:101"
aliases: ["bas11m_1.rom"]
# -- Terak 8510/a ROM --
- name: TERAK.ROM
path: "bk/TERAK.ROM"
size: 128
required: false
note: "Terak 8510/a boot ROM (128 bytes). Only used when model is set to Terak 8510/a (model 9)."
source_ref: "boot.c:94"
aliases: ["terak.rom"]
platform_details:
bios_mapping:
source_ref: "libretro.c:718-760, boot.c:83-116"
notes: |
ROM directory is {system_dir}/bk/ (libretro.c:724-726).
Model selection via core option "bk_model" determines which ROMs are loaded.
The core shuts down immediately if any required ROM for the selected model
is not found.
model_rom_map:
source_ref: "libretro.c:734-756, boot.c:83-116"
notes: |
BK-0010: MONIT10.ROM + FOCAL10.ROM
BK-0010.01: MONIT10.ROM + BASIC10.ROM
BK-0010.01 + FDD: MONIT10.ROM + DISK_327.ROM
BK-0011M + FDD: B11M_BOS.ROM + DISK_327.ROM + BAS11M_0.ROM + BAS11M_1.ROM + B11M_EXT.ROM
Slow BK-0011M: same as BK-0011M + FDD
Terak 8510/a: TERAK.ROM
rom_loading:
source_ref: "libretro.c:1051-1108"
notes: |
load_rom_file() first tries {romdir}/{filename} with original casing.
If not found, retries with the filename converted to lowercase.
Returns NULL and shuts down the core on failure.

58
emulators/blastem.yml Normal file
View File

@@ -0,0 +1,58 @@
emulator: BlastEm
type: libretro
source: "https://github.com/libretro/blastem"
profiled_date: "2026-03-18"
core_version: "v0.6.3-pre"
display_name: "Sega - Mega Drive - Genesis (BlastEm)"
cores:
- blastem
systems:
- sega-megadrive
- sega-mastersystem
notes: |
BlastEm is a cycle-accurate Sega Mega Drive/Genesis emulator with basic
Master System support. In standalone mode it supports TMSS ROM loading and
multiple hardware models (MD1 VA0 through MD3 VA2, Teradrive). The Jaguar
emulator (blastjag) is a separate standalone binary, not part of the
libretro core.
The libretro port (libblastem.c) does NOT expose any core options and
defaults to model md1va3 which has TMSS disabled. There is no way to
select a TMSS-enabled model through the libretro interface.
Even if a TMSS-enabled model were forced, read_bundled_file() in the
libretro build only serves rom.db and returns NULL for tmss.md, so TMSS
ROM loading would fail (fatal_error at genesis.c:1923).
Sega CD / Mega CD is not supported (only a TODO comment in system.c:16).
No BIOS files are required or loaded by the libretro core.
files: []
analysis:
tmss:
standalone_support: true
libretro_support: false
default_model: md1va3
default_tmss: "off"
rom_filename: tmss.md
rom_size: 2048 # 2 KB
config_path: "system\0tmss_path\0"
source_ref: "genesis.c:1910"
notes: |
TMSS ROM is loaded from tmss.md (configurable via system/tmss_path).
Models with tmss=on: md1va6, md2va1, md2va2, md3va1, md3va2.
Models with tmss=off: md1va0, md1va3 (default), teradrive.
The libretro build uses md1va3 (tmss off) with no option to change.
sega_cd:
supported: false
source_ref: "system.c:16"
notes: "TODO comment only: 'Differentiate between vanilla Genesis and Sega CD/32X games'"
jaguar_bios:
libretro_relevant: false
notes: |
blastjag (jaguar.c) is a separate standalone binary, not compiled
into the libretro core. Requires BIOS as first CLI argument.

647
emulators/bluemsx.yml Normal file
View File

@@ -0,0 +1,647 @@
emulator: blueMSX
type: libretro
source: "https://github.com/libretro/blueMSX-libretro"
profiled_date: "2026-03-18"
core_version: "SVN"
display_name: "MSX/SVI/ColecoVision/SG-1000 (blueMSX)"
cores:
- bluemsx
systems:
- msx
- msx2
- msx2plus
- msxturboR
- colecovision
- sega-sg1000
- sega-sc3000
- sega-sf7000
- spectravideo
# blueMSX is a multi-system emulator covering MSX (1/2/2+/turboR), ColecoVision,
# SVI (Spectravideo), and SEGA SG-1000/SC-3000/SF-7000. The core ships its entire
# machine database (config.ini per machine model) plus ROM files under
# <system_dir>/Machines/. Each machine config.ini references ROM paths relative
# to the Machines directory.
#
# Machine type selection (libretro.c:855-896):
# Core option "bluemsx_msxtype" selects the machine. "Auto" defaults to SC-3000
# then switches based on file extension: .dsk/.cas/.rom/.mx1/.mx2 -> MSX2+,
# .col -> ColecoVision, .sg -> SG-1000, .sc -> SC-3000, .sf/.sf7 -> SF-7000.
#
# C-BIOS (open source MSX BIOS replacement) is bundled for MSX, MSX2, MSX2+.
# Machines: "MSX - C-BIOS", "MSX2 - C-BIOS", "MSX2+ - C-BIOS"
# These allow running cartridge ROMs without copyrighted BIOS files.
# Disk and tape software requires real BIOS ROMs.
#
# ROM loading (Src/Board/Machine.c:594-647):
# machineCreate() reads <machinesDir>/<machineName>/config.ini which lists
# ROM slots. ROM paths in config.ini are relative to machinesDir parent.
#
# All files go under: <system_dir>/Machines/
notes: |
The directory structure must be preserved exactly as shipped in the repo's
system/bluemsx/ folder. The core expects Machines/ and Databases/ subdirectories
inside the system directory. Each machine model has its own subdirectory with
a config.ini and associated ROM files.
Default machines (used when selecting base type names like "MSX", "MSX2", etc.)
reference ROMs from "Machines/Shared Roms/". Machine-specific variants (e.g.
"MSX2 - Panasonic FS-A1F") have their own ROMs in their own subdirectory.
C-BIOS machines work for cartridge-based games without any copyrighted BIOS.
For disk/tape support, real BIOS ROMs are required.
files:
# ============================================================
# Shared ROMs (Machines/Shared Roms/)
# Used by the default/generic machine configs and many specific models.
# ============================================================
# -- MSX1 main BIOS variants --
- name: MSX.rom
path: "Machines/Shared Roms/MSX.rom"
size: 32768
required: true
system: msx
note: "MSX1 generic BIOS. Used by default 'MSX' machine config."
source_ref: "system/bluemsx/Machines/MSX/config.ini"
- name: MSXJ.rom
path: "Machines/Shared Roms/MSXJ.rom"
size: 32768
required: false
system: msx
note: "MSX1 Japanese BIOS. Used by 'MSX - Japanese' machine."
source_ref: "system/bluemsx/Machines/MSX - Japanese/config.ini"
- name: MSXBR.rom
path: "Machines/Shared Roms/MSXBR.rom"
size: 32768
required: false
system: msx
note: "MSX1 Brazilian BIOS."
- name: MSXFR.rom
path: "Machines/Shared Roms/MSXFR.rom"
size: 32768
required: false
system: msx
note: "MSX1 French BIOS."
- name: MSXG.rom
path: "Machines/Shared Roms/MSXG.rom"
size: 32768
required: false
system: msx
note: "MSX1 German BIOS."
- name: MSXKR.rom
path: "Machines/Shared Roms/MSXKR.rom"
size: 32768
required: false
system: msx
note: "MSX1 Korean BIOS."
- name: MSXR.rom
path: "Machines/Shared Roms/MSXR.rom"
size: 32768
required: false
system: msx
note: "MSX1 Russian BIOS."
- name: MSXSE.ROM
path: "Machines/Shared Roms/MSXSE.ROM"
size: 32768
required: false
system: msx
note: "MSX1 Swedish BIOS."
- name: MSXSP.rom
path: "Machines/Shared Roms/MSXSP.rom"
size: 32768
required: false
system: msx
note: "MSX1 Spanish BIOS."
- name: MSXAR.ROM
path: "Machines/Shared Roms/MSXAR.ROM"
size: 32768
required: false
system: msx
note: "MSX1 Arabic BIOS."
- name: MSXR2.ROM
path: "Machines/Shared Roms/MSXR2.ROM"
size: 32768
required: false
system: msx
note: "MSX1 Russian BIOS (variant 2)."
- name: MSXHAN.rom
path: "Machines/Shared Roms/MSXHAN.rom"
size: 8192
required: false
system: msx
note: "MSX1 Korean Hangul extension ROM."
# -- MSX2 main BIOS + extension --
- name: MSX2.rom
path: "Machines/Shared Roms/MSX2.rom"
size: 32768
required: true
system: msx2
note: "MSX2 generic main BIOS. Used by default 'MSX2' machine config."
source_ref: "system/bluemsx/Machines/MSX2/config.ini"
- name: MSX2EXT.rom
path: "Machines/Shared Roms/MSX2EXT.rom"
size: 16384
required: true
system: msx2
note: "MSX2 extension BIOS (SubROM). Required alongside MSX2.rom."
source_ref: "system/bluemsx/Machines/MSX2/config.ini"
- name: MSX2J.rom
path: "Machines/Shared Roms/MSX2J.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Japanese main BIOS."
- name: MSX2JEXT.rom
path: "Machines/Shared Roms/MSX2JEXT.rom"
size: 16384
required: false
system: msx2
note: "MSX2 Japanese extension BIOS."
- name: MSX2BR.rom
path: "Machines/Shared Roms/MSX2BR.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Brazilian main BIOS."
- name: MSX2BREXT.rom
path: "Machines/Shared Roms/MSX2BREXT.rom"
size: 16384
required: false
system: msx2
note: "MSX2 Brazilian extension BIOS."
- name: MSX2FR.rom
path: "Machines/Shared Roms/MSX2FR.rom"
size: 32768
required: false
system: msx2
note: "MSX2 French main BIOS."
- name: MSX2FREXT.rom
path: "Machines/Shared Roms/MSX2FREXT.rom"
size: 16384
required: false
system: msx2
note: "MSX2 French extension BIOS."
- name: MSX2G.rom
path: "Machines/Shared Roms/MSX2G.rom"
size: 32768
required: false
system: msx2
note: "MSX2 German main BIOS."
- name: MSX2GEXT.rom
path: "Machines/Shared Roms/MSX2GEXT.rom"
size: 16384
required: false
system: msx2
note: "MSX2 German extension BIOS."
- name: MSX2KR.rom
path: "Machines/Shared Roms/MSX2KR.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Korean main BIOS."
- name: MSX2KREXT.rom
path: "Machines/Shared Roms/MSX2KREXT.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Korean extension BIOS."
- name: MSX2R.rom
path: "Machines/Shared Roms/MSX2R.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Russian main BIOS."
- name: MSX2REXT.rom
path: "Machines/Shared Roms/MSX2REXT.rom"
size: 16384
required: false
system: msx2
note: "MSX2 Russian extension BIOS."
- name: MSX2R2.ROM
path: "Machines/Shared Roms/MSX2R2.ROM"
size: 32768
required: false
system: msx2
note: "MSX2 Russian main BIOS (variant 2)."
- name: MSX2SE.rom
path: "Machines/Shared Roms/MSX2SE.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Swedish main BIOS."
- name: MSX2SP.rom
path: "Machines/Shared Roms/MSX2SP.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Spanish main BIOS."
- name: MSX2SPEXT.rom
path: "Machines/Shared Roms/MSX2SPEXT.rom"
size: 16384
required: false
system: msx2
note: "MSX2 Spanish extension BIOS."
- name: MSX2AR.ROM
path: "Machines/Shared Roms/MSX2AR.ROM"
size: 32768
required: false
system: msx2
note: "MSX2 Arabic main BIOS."
- name: MSX2AREXT.ROM
path: "Machines/Shared Roms/MSX2AREXT.ROM"
size: 16384
required: false
system: msx2
note: "MSX2 Arabic extension BIOS."
- name: MSX2HAN.rom
path: "Machines/Shared Roms/MSX2HAN.rom"
size: 32768
required: false
system: msx2
note: "MSX2 Korean Hangul BIOS."
# -- MSX2+ main BIOS + extension --
- name: MSX2P.rom
path: "Machines/Shared Roms/MSX2P.rom"
size: 32768
required: true
system: msx2plus
note: "MSX2+ main BIOS. Used by default 'MSX2+' machine config (auto-selected for .dsk/.cas/.rom)."
source_ref: "system/bluemsx/Machines/MSX2+/config.ini"
- name: MSX2PEXT.rom
path: "Machines/Shared Roms/MSX2PEXT.rom"
size: 16384
required: true
system: msx2plus
note: "MSX2+ extension BIOS (SubROM)."
source_ref: "system/bluemsx/Machines/MSX2+/config.ini"
- name: MSX2PMUS.rom
path: "Machines/Shared Roms/MSX2PMUS.rom"
size: 16384
required: true
system: msx2plus
note: "MSX2+ MSX-MUSIC BIOS (FM-PAC built-in). Used by MSX2+ and MSX2 default configs."
source_ref: "system/bluemsx/Machines/MSX2+/config.ini"
# -- MSX turboR BIOS set --
- name: MSXTR.ROM
path: "Machines/Shared Roms/MSXTR.ROM"
size: 32768
required: true
system: msxturboR
note: "MSX turboR main BIOS."
source_ref: "system/bluemsx/Machines/MSXturboR/config.ini"
- name: MSXTREXT.ROM
path: "Machines/Shared Roms/MSXTREXT.ROM"
size: 16384
required: true
system: msxturboR
note: "MSX turboR extension BIOS."
source_ref: "system/bluemsx/Machines/MSXturboR/config.ini"
- name: MSXTRMUS.ROM
path: "Machines/Shared Roms/MSXTRMUS.ROM"
size: 16384
required: true
system: msxturboR
note: "MSX turboR MSX-MUSIC BIOS."
source_ref: "system/bluemsx/Machines/MSXturboR/config.ini"
- name: MSXTROPT.ROM
path: "Machines/Shared Roms/MSXTROPT.ROM"
size: 16384
required: true
system: msxturboR
note: "MSX turboR option ROM (firmware utilities)."
source_ref: "system/bluemsx/Machines/MSXturboR/config.ini"
- name: MSXDOS23.ROM
path: "Machines/Shared Roms/MSXDOS23.ROM"
size: 65536
required: true
system: msxturboR
note: "MSX-DOS 2.3 ROM. Used by turboR default config for disk operations."
source_ref: "system/bluemsx/Machines/MSXturboR/config.ini"
# -- Shared utility/extension ROMs --
- name: KANJI.rom
path: "Machines/Shared Roms/KANJI.rom"
size: 262144
required: false
note: "Kanji font ROM (256 KB). Used by MSX2+, turboR, and Japanese MSX2 machines."
source_ref: "system/bluemsx/Machines/MSX2+/config.ini"
- name: MSXKANJI.rom
path: "Machines/Shared Roms/MSXKANJI.rom"
size: 32768
required: false
note: "MSX-Kanji driver ROM. Used by MSX2+, turboR, and Japanese MSX2 for kanji display."
source_ref: "system/bluemsx/Machines/MSX2+/config.ini"
- name: FMPAC.rom
path: "Machines/Shared Roms/FMPAC.rom"
size: 65536
required: false
note: "FM-PAC cartridge ROM (YM2413 FM synthesis). Loaded as expansion cartridge by MegaromCartridge.c."
source_ref: "Src/Memory/MegaromCartridge.c:290"
- name: XBASIC2.rom
path: "Machines/Shared Roms/XBASIC2.rom"
size: 16384
required: false
note: "MSX-BASIC 2 extension ROM. Used by MSX2, MSX2+, and turboR default configs."
source_ref: "system/bluemsx/Machines/MSX2/config.ini"
- name: PAINT.rom
path: "Machines/Shared Roms/PAINT.rom"
size: 65536
required: false
note: "Paint utility ROM. Used by some MSX2 Japanese machine configs."
- name: SWP.rom
path: "Machines/Shared Roms/SWP.rom"
size: 32768
required: false
note: "Software World Processor ROM. Used by Al Alamiah MSX2 machines."
- name: ARABIC.rom
path: "Machines/Shared Roms/ARABIC.rom"
size: 32768
required: false
note: "Arabic character set extension ROM."
- name: HANGUL.rom
path: "Machines/Shared Roms/HANGUL.rom"
size: 131072
required: false
note: "Korean Hangul font ROM (128 KB)."
- name: RS232.ROM
path: "Machines/Shared Roms/RS232.ROM"
size: 8192
required: false
note: "RS-232C serial interface ROM."
- name: MOONSOUND.rom
path: "Machines/Shared Roms/MOONSOUND.rom"
size: 2097152
required: false
note: "MoonSound (OPL4) wavetable ROM (2 MB). Used by MSX2, MSX2+, and turboR configs."
source_ref: "system/bluemsx/Machines/MSX2/config.ini"
# -- Disk controller ROMs --
- name: PANASONICDISK.rom
path: "Machines/Shared Roms/PANASONICDISK.rom"
size: 16384
required: false
note: "Panasonic disk controller ROM. Used by MSX2+ and turboR default configs."
source_ref: "system/bluemsx/Machines/MSX2+/config.ini"
- name: PHILIPSDISK.rom
path: "Machines/Shared Roms/PHILIPSDISK.rom"
size: 16384
required: false
note: "Philips disk controller ROM. Used by MSX1 and MSX2 default configs."
source_ref: "system/bluemsx/Machines/MSX/config.ini"
- name: NATIONALDISK.rom
path: "Machines/Shared Roms/NATIONALDISK.rom"
size: 16384
required: false
note: "National disk controller ROM."
- name: MICROSOLDISK.ROM
path: "Machines/Shared Roms/MICROSOLDISK.ROM"
size: 16384
required: false
note: "Microsol disk controller ROM."
# -- Expansion hardware ROMs --
- name: SUNRISEIDE.rom
path: "Machines/Shared Roms/SUNRISEIDE.rom"
size: 65536
required: false
note: "Sunrise IDE interface ROM. Loaded as expansion cartridge."
source_ref: "Src/Memory/MegaromCartridge.c:310"
- name: BEERIDE.ROM
path: "Machines/Shared Roms/BEERIDE.ROM"
size: 16384
required: false
note: "Beer IDE interface ROM."
source_ref: "Src/Memory/MegaromCartridge.c:318"
- name: NOVAXIS.rom
path: "Machines/Shared Roms/NOVAXIS.rom"
size: 16384
required: false
note: "Novaxis SCSI interface ROM."
source_ref: "Src/Memory/MegaromCartridge.c:326"
- name: nowindDos1.rom
path: "Machines/Shared Roms/nowindDos1.rom"
size: 524288
required: false
note: "Nowind USB disk interface with MSX-DOS 1."
source_ref: "Src/Memory/MegaromCartridge.c:334"
- name: nowindDos2.rom
path: "Machines/Shared Roms/nowindDos2.rom"
size: 524288
required: false
note: "Nowind USB disk interface with MSX-DOS 2."
source_ref: "Src/Memory/MegaromCartridge.c:338"
- name: GCVMX80.ROM
path: "Machines/Shared Roms/GCVMX80.ROM"
size: 8192
required: false
note: "GCV MX-80 printer interface ROM."
- name: ARAB1.ROM
path: "Machines/Shared Roms/ARAB1.ROM"
size: 32768
required: false
note: "Arabic support ROM (variant 1)."
# ============================================================
# C-BIOS ROMs (open source, bundled with core)
# These are pre-installed and do not require user-supplied files.
# ============================================================
- name: cbios_main_msx1.rom
path: "Machines/MSX - C-BIOS/cbios_main_msx1.rom"
size: 32768
required: false
bundled: true
system: msx
note: "C-BIOS MSX1 main ROM (open source). Bundled with core. Cartridge games only."
- name: cbios_logo_msx1.rom
path: "Machines/MSX - C-BIOS/cbios_logo_msx1.rom"
size: 16384
required: false
bundled: true
system: msx
note: "C-BIOS MSX1 logo ROM (open source). Bundled with core."
- name: cbios_main_msx2.rom
path: "Machines/MSX2 - C-BIOS/cbios_main_msx2.rom"
size: 32768
required: false
bundled: true
system: msx2
note: "C-BIOS MSX2 main ROM (open source). Bundled with core. Cartridge games only."
- name: cbios_logo_msx2.rom
path: "Machines/MSX2 - C-BIOS/cbios_logo_msx2.rom"
size: 16384
required: false
bundled: true
system: msx2
note: "C-BIOS MSX2 logo ROM (open source). Bundled with core."
- name: cbios_sub.rom
path: "Machines/MSX2 - C-BIOS/cbios_sub.rom"
size: 16384
required: false
bundled: true
system: msx2
note: "C-BIOS MSX2/MSX2+ sub ROM (open source). Bundled with core."
- name: "cbios_main_msx2+.rom"
path: "Machines/MSX2+ - C-BIOS/cbios_main_msx2+.rom"
size: 32768
required: false
bundled: true
system: msx2plus
note: "C-BIOS MSX2+ main ROM (open source). Bundled with core. Cartridge games only."
- name: "cbios_logo_msx2+.rom"
path: "Machines/MSX2+ - C-BIOS/cbios_logo_msx2+.rom"
size: 16384
required: false
bundled: true
system: msx2plus
note: "C-BIOS MSX2+ logo ROM (open source). Bundled with core."
- name: cbios_music.rom
path: "Machines/MSX2+ - C-BIOS/cbios_music.rom"
size: 16384
required: false
bundled: true
system: msx2plus
note: "C-BIOS MSX2+ music ROM (open source). Bundled with core."
# ============================================================
# ColecoVision BIOS
# ============================================================
- name: coleco.rom
path: "Machines/COL - ColecoVision/coleco.rom"
size: 8192
required: true
system: colecovision
note: "ColecoVision BIOS ROM. Required for ColecoVision mode."
source_ref: "system/bluemsx/Machines/COL - ColecoVision/config.ini"
# ============================================================
# SEGA SF-7000 BIOS
# SG-1000 and SC-3000 do not require BIOS ROMs.
# ============================================================
- name: sf7000.rom
path: "Machines/SEGA - SF-7000/sf7000.rom"
size: 8192
required: true
system: sega-sf7000
note: "Sega SF-7000 BIOS ROM. SG-1000 and SC-3000 have no BIOS requirement."
source_ref: "system/bluemsx/Machines/SEGA - SF-7000/config.ini"
# ============================================================
# Spectravideo SVI BIOS files
# ============================================================
- name: svi318.rom
path: "Machines/SVI - Spectravideo SVI-318/svi318.rom"
size: 32768
required: true
system: spectravideo
note: "SVI-318 BIOS ROM."
source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-318/config.ini"
- name: svi328.rom
path: "Machines/SVI - Spectravideo SVI-328/svi328.rom"
size: 32768
required: true
system: spectravideo
note: "SVI-328 BIOS ROM."
source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-328/config.ini"
# ============================================================
# Databases (required for ROM identification/mapper detection)
# Shipped with the core, not user-supplied.
# ============================================================
- name: msxromdb.xml
path: "Databases/msxromdb.xml"
required: false
bundled: true
note: "MSX ROM database for mapper auto-detection. Bundled with core."
- name: msxsysromdb.xml
path: "Databases/msxsysromdb.xml"
required: false
bundled: true
note: "MSX system ROM database. Bundled with core."
# Machine count: 170+ machine configurations covering dozens of regional MSX
# variants from manufacturers like Panasonic, Sony, Philips, Yamaha, Sanyo,
# National, Toshiba, Daewoo, Sharp, Gradiente, Spectravideo, and others.
# Each has its own ROM set in its own subdirectory. The Shared Roms directory
# covers the generic/default configs that most users will need.

62
emulators/bnes.yml Normal file
View File

@@ -0,0 +1,62 @@
emulator: bnes
type: libretro
source: "https://github.com/libretro/bnes-libretro"
profiled_date: "2026-03-18"
core_version: "v083"
display_name: "Nintendo - NES / Famicom (bnes)"
cores:
- bnes
systems:
- nes
notes: |
bnes is a NES emulator based on byuu's bNES/higan v083 NES module, ported
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.
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.
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.
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,
so disksys.rom is not needed.
No external BIOS or firmware files are needed.
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"
supported_mappers:
- NROM
- SxROM (MMC1)
- UxROM
- CNROM
- TxROM (MMC3)
- ExROM (MMC5)
- AxROM
- BnROM
- GxROM
- PxROM (MMC4)
- FxROM (MMC4)
- Bandai FCG
- Konami VRC4
- Konami VRC6
- Konami VRC7
- Sunsoft 5B
fds_support: false
filesystem_access: false
system_directory_used: false

27
emulators/boom3.yml Normal file
View File

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

75
emulators/boytacean.yml Normal file
View File

@@ -0,0 +1,75 @@
emulator: Boytacean
type: libretro
source: "https://github.com/joamag/boytacean"
profiled_date: "2026-03-18"
core_version: "0.10.13"
display_name: "Nintendo - Game Boy / Color (Boytacean)"
cores:
- boytacean
systems:
- nintendo-gb
- 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.
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.
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.
The .info file (boytacean_libretro.info) lists no firmware entries.
Boot ROM selection defaults:
- DMG: BootRom::DmgBootix (gb.rs:1389) - open-source, 256 bytes
- CGB: BootRom::CgbBoytacean (gb.rs:1398) - open-source, 2304 bytes
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.
files: []
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)"

192
emulators/bsnes.yml Normal file
View File

@@ -0,0 +1,192 @@
emulator: bsnes
type: libretro
source: "https://github.com/libretro/bsnes-libretro"
profiled_date: "2026-03-18"
core_version: "115"
display_name: "Nintendo - SNES / SFC (bsnes)"
systems: [nintendo-snes, nintendo-super-game-boy, nintendo-satellaview]
# bsnes supports HLE for DSP1/DSP1B/DSP2/DSP4, ST010, and Cx4.
# When HLE is enabled (core option bsnes_coprocessor_prefer_hle) or
# when LLE firmware files are missing, bsnes falls back to HLE automatically.
# DSP3 and ST011 have no HLE fallback - LLE firmware is required.
# SGB boot ROMs are embedded in the core (icd/boot-roms.cpp), but the SGB
# cartridge ROM (SGB1.sfc / SGB2.sfc) must be provided for Game Boy support.
# All coprocessor firmware loaded via system directory lookup:
# RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY -> "{sysdir}/{identifier}.{type}.rom"
# SGB BIOS loaded from: "{sysdir}/{SGB1.sfc|SGB2.sfc}" (core option bsnes_sgb_bios)
# BS-X BIOS loaded from: "{sysdir}/BS-X.bin"
files:
# -- NEC uPD7725 coprocessor (DSP1, DSP1B, DSP2, DSP3, DSP4) --
# Used by: Pilotwings (DSP1), Super Mario Kart (DSP1B), Dungeon Master (DSP2),
# SD Gundam GX (DSP3), Top Gear 3000 / Planets Champ TG3000 (DSP4)
# program ROM: 2048 x 24-bit words, data ROM: 1024 x 16-bit words
- name: "dsp1.program.rom"
size: 6144 # 0x1800
required: false
note: "NEC uPD7725 program ROM for DSP1. HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:490-494, heuristics/super-famicom.cpp:601"
- name: "dsp1.data.rom"
size: 2048 # 0x800
required: false
note: "NEC uPD7725 data ROM for DSP1. HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:498-503"
- name: "dsp1b.program.rom"
size: 6144 # 0x1800
required: false
note: "NEC uPD7725 program ROM for DSP1B (default NEC identifier). HLE fallback available"
source_ref: "heuristics/super-famicom.cpp:606"
- name: "dsp1b.data.rom"
size: 2048 # 0x800
required: false
note: "NEC uPD7725 data ROM for DSP1B. HLE fallback available"
source_ref: "heuristics/super-famicom.cpp:606"
- name: "dsp2.program.rom"
size: 6144 # 0x1800
required: false
note: "NEC uPD7725 program ROM for DSP2 (Dungeon Master). HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:515-520, heuristics/super-famicom.cpp:602"
- name: "dsp2.data.rom"
size: 2048 # 0x800
required: false
note: "NEC uPD7725 data ROM for DSP2. HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:498-503"
- name: "dsp3.program.rom"
size: 6144 # 0x1800
required: true
note: "NEC uPD7725 program ROM for DSP3 (SD Gundam GX). No HLE fallback"
source_ref: "sfc/cartridge/load.cpp:531-534"
- name: "dsp3.data.rom"
size: 2048 # 0x800
required: true
note: "NEC uPD7725 data ROM for DSP3. No HLE fallback"
source_ref: "sfc/cartridge/load.cpp:531-534"
- name: "dsp4.program.rom"
size: 6144 # 0x1800
required: false
note: "NEC uPD7725 program ROM for DSP4 (Top Gear 3000). HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:522-528, heuristics/super-famicom.cpp:604-605"
- name: "dsp4.data.rom"
size: 2048 # 0x800
required: false
note: "NEC uPD7725 data ROM for DSP4. HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:498-503"
# -- NEC uPD96050 coprocessor (ST010, ST011) --
# Used by: Exhaust Heat 2 / F1 ROC II (ST010), 2dan Morita Shougi (ST011)
# program ROM: 16384 x 24-bit words, data ROM: 2048 x 16-bit words
- name: "st010.program.rom"
size: 49152 # 0xC000
required: false
note: "NEC uPD96050 program ROM for ST010. HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:570-574, heuristics/super-famicom.cpp:583-587"
- name: "st010.data.rom"
size: 4096 # 0x1000
required: false
note: "NEC uPD96050 data ROM for ST010. HLE fallback available"
source_ref: "sfc/cartridge/load.cpp:578-583"
- name: "st011.program.rom"
size: 49152 # 0xC000
required: true
note: "NEC uPD96050 program ROM for ST011 (2dan Morita Shougi). No HLE fallback"
source_ref: "sfc/cartridge/load.cpp:599-601, heuristics/super-famicom.cpp:586"
- name: "st011.data.rom"
size: 4096 # 0x1000
required: true
note: "NEC uPD96050 data ROM for ST011. No HLE fallback"
source_ref: "sfc/cartridge/load.cpp:599-601"
# -- SETA ST018 (ARM6 coprocessor) --
# Used by: Hayazashi Nidan Morita Shougi
# No HLE fallback exists
- name: "st018.program.rom"
size: 131072 # 0x20000 (128 KB)
required: true
note: "ARM6 program ROM for ST018 (Hayazashi Nidan Morita Shougi). No HLE fallback"
source_ref: "sfc/cartridge/load.cpp:379-385, armdsp/armdsp.hpp:31, heuristics/super-famicom.cpp:580"
- name: "st018.data.rom"
size: 32768 # 0x8000 (32 KB)
required: true
note: "ARM6 data ROM for ST018. No HLE fallback"
source_ref: "sfc/cartridge/load.cpp:387-393, armdsp/armdsp.hpp:32"
# -- Hitachi HG51BS169 (Cx4 coprocessor) --
# Used by: Mega Man X2, Mega Man X3
# HLE fallback available (configuration.hacks.coprocessor.preferHLE)
# Built-in staticDataROM fallback also present for LLE when file missing
- name: "cx4.data.rom"
size: 3072 # 0xC00
required: false
note: "Hitachi HG51BS169 data ROM for Cx4 (Mega Man X2/X3). HLE fallback and built-in static ROM available"
source_ref: "sfc/cartridge/load.cpp:444-456, hitachidsp/hitachidsp.hpp:49, heuristics/super-famicom.cpp:597"
# -- Super Game Boy cartridge ROM --
# The SGB boot ROMs (256 bytes each) are embedded in icd/boot-roms.cpp.
# But the actual SGB cartridge ROM must be supplied for Game Boy game support.
# Core option bsnes_sgb_bios selects between SGB1.sfc and SGB2.sfc.
- name: "SGB1.sfc"
required: false
note: "Super Game Boy 1 cartridge ROM. Needed to play Game Boy games via SGB mode"
source_ref: "target-libretro/libretro.cpp:689,933, target-libretro/libretro_core_options.h:689"
- name: "SGB2.sfc"
required: false
note: "Super Game Boy 2 cartridge ROM. Uses dedicated oscillator for accurate GB speed"
source_ref: "target-libretro/libretro.cpp:690,933, target-libretro/libretro_core_options.h:690"
# -- BS-X Satellaview BIOS --
# Required for loading .bs (BS Memory) format games.
# Hardcoded filename in libretro.cpp.
- 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"
notes:
hle_available: true
hle_note: >
bsnes provides HLE for DSP1, DSP1B, DSP2, DSP4, ST010, and Cx4.
Controlled by core option bsnes_coprocessor_prefer_hle (default ON).
DSP3, ST011, and ST018 have no HLE - LLE firmware files are mandatory
for the few games that use them.
sgb_note: >
SGB boot ROMs (256 bytes each for SGB1/SGB2) are compiled into the core
at icd/boot-roms.cpp. The SGB cartridge ROM (SGB1.sfc or SGB2.sfc) is a
separate requirement. Core option bsnes_sgb_bios selects which one to use
(default SGB1.sfc). Loading .gb/.gbc files auto-loads the selected SGB ROM.
firmware_resolution: >
Firmware filenames are derived from the game manifest identifier field
(lowercased) plus ".program.rom" or ".data.rom" suffix. The mapping is:
NEC uPD7725 -> dsp1/dsp1b/dsp2/dsp3/dsp4, NEC uPD96050 -> st010/st011,
ARM6 -> st018, HG51BS169 -> cx4. Firmware can also be appended directly
to the ROM image (auto-detected by firmwareRomSize heuristic).
embedded_firmware: >
If firmware data is appended to the game ROM, bsnes splits it automatically
based on firmwareRomSize() detection. Sizes: uPD7725=0x2000, uPD96050=0xD000,
ARM6=0x28000, HG51BS169=0xC00. This eliminates the need for separate files
when using combined ROM+firmware dumps.
cx4_static_fallback: >
The Cx4 (HG51BS169) has a compiled-in static data ROM (hitachidsp/staticDataROM)
as fallback when cx4.data.rom is missing and HLE is disabled. This means
Mega Man X2/X3 work in all configurations without user-supplied firmware.

388
emulators/cannonball.yml Normal file
View File

@@ -0,0 +1,388 @@
emulator: Cannonball
type: libretro
source: "https://github.com/libretro/cannonball"
profiled_date: "2026-03-18"
core_version: "1.0"
display_name: "Cannonball"
systems:
- sega-outrun
notes: |
Cannonball is an enhanced OutRun engine that runs the original Sega OutRun
arcade ROM set (Rev B). It is not a traditional emulator but a source port
that loads the original ROM data for graphics, sound, and gameplay logic.
The core looks for ROM files in one of two locations
(src/main/libretro/main.cpp:945-967):
1. The directory containing a loaded .game content file
2. {system_dir}/cannonball/
ROM loading is in src/main/roms.cpp. Each file is verified by CRC32 at load
time (src/main/romloader.cpp:70-76). Files are loaded as raw ROM chips, not
inside ZIP archives.
The Rev B ROM set is always required. Japanese ROM variants are loaded on
demand when the "Japanese Tracks" core option is enabled.
Two optional widescreen tilemap patches are loaded from a res/ subdirectory
(src/main/engine/omusic.cpp:42-51). These are Cannonball-specific data files
shipped with the core, not original arcade ROMs.
The fixed PCM sample variant (opr-10188.71f) replaces opr-10188.71 when the
"Fix Broken Samples" core option is enabled.
files:
# -------------------------------------------------------
# Master CPU ROMs (68000, Rev B)
# -------------------------------------------------------
- name: "epr-10381a.132"
system: sega-outrun
required: true
size: 65536 # 0x10000
crc32: "be8c412b"
note: "Master 68K, high byte, upper bank (Rev A alternate)"
source_ref: "src/main/roms.cpp:29"
- name: "epr-10383b.117"
system: sega-outrun
required: true
size: 65536
crc32: "10a2014a"
note: "Master 68K, low byte, upper bank"
source_ref: "src/main/roms.cpp:38"
- name: "epr-10380b.133"
system: sega-outrun
required: true
size: 65536
crc32: "1f6cadad"
note: "Master 68K, high byte, lower bank"
source_ref: "src/main/roms.cpp:39"
- name: "epr-10382b.118"
system: sega-outrun
required: true
size: 65536
crc32: "c4c3fa1a"
note: "Master 68K, low byte, lower bank"
source_ref: "src/main/roms.cpp:40"
# -------------------------------------------------------
# Slave CPU ROMs (68000, Rev A)
# -------------------------------------------------------
- name: "epr-10327a.76"
system: sega-outrun
required: true
size: 65536
crc32: "e28a5baf"
note: "Slave 68K, high byte, lower bank"
source_ref: "src/main/roms.cpp:44"
- name: "epr-10329a.58"
system: sega-outrun
required: true
size: 65536
crc32: "da131c81"
note: "Slave 68K, low byte, lower bank"
source_ref: "src/main/roms.cpp:45"
- name: "epr-10328a.75"
system: sega-outrun
required: true
size: 65536
crc32: "d5ec5e5d"
note: "Slave 68K, high byte, upper bank"
source_ref: "src/main/roms.cpp:46"
- name: "epr-10330a.57"
system: sega-outrun
required: true
size: 65536
crc32: "ba9ec82a"
note: "Slave 68K, low byte, upper bank"
source_ref: "src/main/roms.cpp:47"
# -------------------------------------------------------
# Tile ROMs
# -------------------------------------------------------
- name: "opr-10268.99"
system: sega-outrun
required: true
size: 32768 # 0x8000
crc32: "95344b04"
note: "Tile ROM bank 0"
source_ref: "src/main/roms.cpp:51"
- name: "opr-10232.102"
system: sega-outrun
required: true
size: 32768
crc32: "776ba1eb"
note: "Tile ROM bank 1"
source_ref: "src/main/roms.cpp:52"
- name: "opr-10267.100"
system: sega-outrun
required: true
size: 32768
crc32: "a85bb823"
note: "Tile ROM bank 2"
source_ref: "src/main/roms.cpp:53"
- name: "opr-10231.103"
system: sega-outrun
required: true
size: 32768
crc32: "8908bcbf"
note: "Tile ROM bank 3"
source_ref: "src/main/roms.cpp:54"
- name: "opr-10266.101"
system: sega-outrun
required: true
size: 32768
crc32: "9f6f1a74"
note: "Tile ROM bank 4"
source_ref: "src/main/roms.cpp:55"
- name: "opr-10230.104"
system: sega-outrun
required: true
size: 32768
crc32: "686f5e50"
note: "Tile ROM bank 5"
source_ref: "src/main/roms.cpp:56"
# -------------------------------------------------------
# Road ROMs (identical pair, one per road layer)
# -------------------------------------------------------
- name: "opr-10185.11"
system: sega-outrun
required: true
size: 32768
crc32: "22794426"
note: "Road ROM, layer 1"
source_ref: "src/main/roms.cpp:60"
- name: "opr-10186.47"
system: sega-outrun
required: true
size: 32768
crc32: "22794426"
note: "Road ROM, layer 2 (identical to opr-10185.11)"
source_ref: "src/main/roms.cpp:61"
# -------------------------------------------------------
# Sprite ROMs (interleaved 4-way)
# -------------------------------------------------------
- name: "mpr-10371.9"
system: sega-outrun
required: true
size: 131072 # 0x20000
crc32: "7cc86208"
note: "Sprite ROM, bank 0 byte 0"
source_ref: "src/main/roms.cpp:65"
- name: "mpr-10373.10"
system: sega-outrun
required: true
size: 131072
crc32: "b0d26ac9"
note: "Sprite ROM, bank 0 byte 1"
source_ref: "src/main/roms.cpp:66"
- name: "mpr-10375.11"
system: sega-outrun
required: true
size: 131072
crc32: "59b60bd7"
note: "Sprite ROM, bank 0 byte 2"
source_ref: "src/main/roms.cpp:67"
- name: "mpr-10377.12"
system: sega-outrun
required: true
size: 131072
crc32: "17a1b04a"
note: "Sprite ROM, bank 0 byte 3"
source_ref: "src/main/roms.cpp:68"
- name: "mpr-10372.13"
system: sega-outrun
required: true
size: 131072
crc32: "b557078c"
note: "Sprite ROM, bank 1 byte 0"
source_ref: "src/main/roms.cpp:69"
- name: "mpr-10374.14"
system: sega-outrun
required: true
size: 131072
crc32: "8051e517"
note: "Sprite ROM, bank 1 byte 1"
source_ref: "src/main/roms.cpp:70"
- name: "mpr-10376.15"
system: sega-outrun
required: true
size: 131072
crc32: "f3b8f318"
note: "Sprite ROM, bank 1 byte 2"
source_ref: "src/main/roms.cpp:71"
- name: "mpr-10378.16"
system: sega-outrun
required: true
size: 131072
crc32: "a1062984"
note: "Sprite ROM, bank 1 byte 3"
source_ref: "src/main/roms.cpp:72"
# -------------------------------------------------------
# Z80 Sound ROM
# -------------------------------------------------------
- name: "epr-10187.88"
system: sega-outrun
required: true
size: 65536 # 0x10000
crc32: "a10abaa9"
note: "Z80 sound program"
source_ref: "src/main/roms.cpp:76"
# -------------------------------------------------------
# Sega PCM samples
# -------------------------------------------------------
- name: "opr-10193.66"
system: sega-outrun
required: true
size: 32768
crc32: "bcd10dde"
note: "PCM sample bank 0"
source_ref: "src/main/roms.cpp:80"
- name: "opr-10192.67"
system: sega-outrun
required: true
size: 32768
crc32: "770f1270"
note: "PCM sample bank 1"
source_ref: "src/main/roms.cpp:81"
- name: "opr-10191.68"
system: sega-outrun
required: true
size: 32768
crc32: "20a284ab"
note: "PCM sample bank 2"
source_ref: "src/main/roms.cpp:82"
- name: "opr-10190.69"
system: sega-outrun
required: true
size: 32768
crc32: "7cab70e2"
note: "PCM sample bank 3"
source_ref: "src/main/roms.cpp:83"
- name: "opr-10189.70"
system: sega-outrun
required: true
size: 32768
crc32: "01366b54"
note: "PCM sample bank 4"
source_ref: "src/main/roms.cpp:84"
- name: "opr-10188.71"
system: sega-outrun
required: true
size: 32768
crc32: "bad30ad9"
note: "PCM sample bank 5"
source_ref: "src/main/roms.cpp:85"
# -------------------------------------------------------
# Alternate / optional ROMs
# -------------------------------------------------------
- name: "epr-10381b.132"
system: sega-outrun
required: false
size: 65536
crc32: "be8c412b"
note: "Master 68K, Rev B alternate filename for epr-10381a.132"
source_ref: "src/main/roms.cpp:34"
- name: "opr-10188.71f"
system: sega-outrun
required: false
size: 32768
crc32: "37598616"
note: "PCM sample bank 5, fixed version (replaces opr-10188.71)"
source_ref: "src/main/roms.cpp:123"
# -------------------------------------------------------
# Japanese ROM variants (loaded when jap option enabled)
# -------------------------------------------------------
- name: "epr-10380.133"
system: sega-outrun
required: false
size: 65536
crc32: "e339e87a"
note: "Master 68K Japan, high byte, lower bank"
source_ref: "src/main/roms.cpp:104"
- name: "epr-10382.118"
system: sega-outrun
required: false
size: 65536
crc32: "65248dd5"
note: "Master 68K Japan, low byte, lower bank"
source_ref: "src/main/roms.cpp:105"
- name: "epr-10381.132"
system: sega-outrun
required: false
size: 65536
crc32: "be8c412b"
note: "Master 68K Japan, high byte, upper bank"
source_ref: "src/main/roms.cpp:106"
- name: "epr-10383.117"
system: sega-outrun
required: false
size: 65536
crc32: "dcc586e7"
note: "Master 68K Japan, low byte, upper bank"
source_ref: "src/main/roms.cpp:107"
- name: "epr-10327.76"
system: sega-outrun
required: false
size: 65536
crc32: "da99d855"
note: "Slave 68K Japan, high byte, lower bank"
source_ref: "src/main/roms.cpp:110"
- name: "epr-10329.58"
system: sega-outrun
required: false
size: 65536
crc32: "fe0fa5e2"
note: "Slave 68K Japan, low byte, lower bank"
source_ref: "src/main/roms.cpp:111"
- name: "epr-10328.75"
system: sega-outrun
required: false
size: 65536
crc32: "3c0e9a7f"
note: "Slave 68K Japan, high byte, upper bank"
source_ref: "src/main/roms.cpp:112"
- name: "epr-10330.57"
system: sega-outrun
required: false
size: 65536
crc32: "59786e99"
note: "Slave 68K Japan, low byte, upper bank"
source_ref: "src/main/roms.cpp:113"

73
emulators/cap32.yml Normal file
View File

@@ -0,0 +1,73 @@
emulator: Caprice32
type: libretro
source: "https://github.com/libretro/libretro-cap32"
profiled_date: "2026-03-18"
core_version: "v4.2.0"
display_name: "Amstrad - CPC/GX4000 (Caprice32)"
cores:
- cap32
systems:
- amstrad-cpc
notes: |
Caprice32 is an Amstrad CPC emulator ported to libretro. Supports CPC 464,
CPC 664, CPC 6128, and CPC+ (Plus) models.
All system ROMs are compiled directly into the core binary as C header
arrays in cap32/rom/*.h. No external BIOS files are required.
Embedded ROMs (cap32/cap32.c:342-345):
- cap32/rom/464.h: OS_BASIC10[32768] - CPC 464 OS + BASIC 1.0
- cap32/rom/6128.h: OS_BASIC11[32768] - CPC 6128 OS + BASIC 1.1
- cap32/rom/amsdos.h: AMSDOS[16384] - AMSDOS disk controller ROM
- cap32/rom/6128p.h: OS_6128P - CPC+ system cartridge ROM
- cap32/rom/cpm.h: cpmROM - CP/M boot snapshot (128KB)
ROM selection in emulator_select_ROM() (cap32/cap32.c:1072-1100):
- CPC 464: OS_BASIC10 (32KB)
- CPC 664: OS_BASIC10 (32KB) + AMSDOS in slot 7
- CPC 6128: OS_BASIC11 (32KB) + AMSDOS in slot 7
- CPC+: OS_6128P loaded as system cartridge via cpr_load()
The standalone (non-libretro) version references external filenames
cpc464.rom, cpc664.rom, cpc6128.rom, amsdos.rom in cap32.c:349-352
via config file loading (cap32.c:1828-1840), but the libretro port
does not use this path. The libretro init (libretro-core.c:1512) has
a "TODO: future use to load custom bios" comment that is not
implemented.
Keyboard layout patches are applied to the ROM in memory for French
and Spanish layouts via rom_mods.h (cap32.c:1102-1126).
CP/M support loads a pre-built snapshot (cpm.h) into memory via
snapshot_load_mem() in slots.c:87.
files: []
platform_details:
bios_mapping:
source_ref: "cap32/cap32.c:1072-1100, cap32/cap32.c:342-345"
notes: |
All ROMs are embedded. emulator_select_ROM() copies the appropriate
ROM array into the pbROM buffer based on CPC.model. No filesystem
lookup occurs in the libretro port. The retro_system_bios_directory
variable is set up in libretro-core.c:1499-1510 but only used for
a future custom BIOS feature that is not yet implemented.
embedded_roms:
source_ref: "cap32/rom/464.h, cap32/rom/6128.h, cap32/rom/amsdos.h, cap32/rom/6128p.h, cap32/rom/cpm.h"
notes: |
5 ROM sets embedded as C arrays:
OS_BASIC10 (32KB) - CPC 464/664 OS + BASIC 1.0
OS_BASIC11 (32KB) - CPC 6128 OS + BASIC 1.1
AMSDOS (16KB) - Disk controller ROM, mapped to slot 7
OS_6128P - CPC+ system cartridge (White Label cartridge)
cpmROM (128KB+) - CP/M boot snapshot including SNA header
model_rom_map:
source_ref: "cap32/cap32.c:1072-1100"
notes: |
CPC 464: OS_BASIC10 only (no disk support)
CPC 664: OS_BASIC10 + AMSDOS in ROM slot 7
CPC 6128: OS_BASIC11 + AMSDOS in ROM slot 7
CPC+: 6128P system cartridge (or user-provided .cpr file)

8
emulators/cdi2015.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "cdi2015"
type: alias
alias_of: "same_cdi"
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: []

402
emulators/cemu.yml Normal file
View File

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

14
emulators/chailove.yml Normal file
View File

@@ -0,0 +1,14 @@
emulator: ChaiLove
type: game
source: "https://github.com/libretro/libretro-chailove"
profiled_date: "2026-03-18"
core_version: "2.0.0"
display_name: "ChaiLove"
cores: [chailove]
systems: []
files: []
notes: >
2D game framework for libretro inspired by LOVE2D, using ChaiScript.
Loads .chai or .chailove game files as content. The core itself is a
game engine runtime with no system directory dependencies.
No BIOS, firmware, or system directory files required.

View File

@@ -0,0 +1,9 @@
emulator: "chimerasnes"
type: alias
alias_of: "snes9x"
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."
files: []

89
emulators/citra.yml Normal file
View File

@@ -0,0 +1,89 @@
emulator: Citra / Lime3DS / Azahar
type: standalone + libretro
source: "https://github.com/azahar-emu/azahar"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Nintendo - 3DS (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,
nand/ for NAND filesystem, nand/private/ for movable.sed.
Legacy data dirs: citra-emu, lime3ds-emu -> azahar-emu.
files:
# --- sysdata/ directory ---
- name: "keys.txt"
path: "sysdata/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)"
- 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"
- 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"
- 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)"
- name: "seeddb.bin"
path: "sysdata/seeddb.bin"
description: "Game seed database"
required: false
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"
# --- NAND system archives (installed titles) ---
- name: "shared font (system archive)"
path: "nand/ (installed as NCCH title 0004009B00014002)"
description: "Shared font system archive (JPN/USA/EUR)"
required: false
source_ref: "src/core/file_sys/archive_ncch.cpp:161"
notes: "Region variants: CHN=00014102, KOR=00014202, TWN=00014302"

64
emulators/clownmdemu.yml Normal file
View File

@@ -0,0 +1,64 @@
emulator: ClownMDEmu
type: libretro
source: "https://github.com/libretro/clownmdemu-libretro"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Sega - MD/CD (ClownMDEmu)"
cores:
- clownmdemu
systems:
- sega-megadrive
- sega-megacd
notes: |
ClownMDEmu is a Sega Mega Drive/Genesis and Mega CD emulator by Clownacy.
Supports cartridge (bin/md/gen) and CD (cue/iso/chd) formats, plus a
subsystem for cartridge+CD combo (Mega CD Mode 1).
The core has NO external BIOS file requirements. firmware_count = 0 in the
libretro .info file confirms this.
Mega CD boot ROM: a custom open-source replacement boot ROM is compiled
directly into the binary as a 16384-entry uint16 array
(mega-cd-boot-rom.c included into bus-main-m68k.c:19-21). Source at
https://github.com/Clownacy/clownmdemu-mcd-boot. No external CD BIOS
files (bios_CD_E.bin, bios_CD_U.bin, bios_CD_J.bin) are needed or loaded.
TMSS (Trademark Security System): not implemented at all. No TMSS ROM is
loaded or checked. The core boots games directly without the "Produced by
or under license from Sega" screen.
The system directory (RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY) is only used
as a fallback path for Backup RAM (BuRAM) save files, not for BIOS loading.
CD add-on can be enabled for cartridge games via the "clownmdemu_cd_addon"
core option to allow CD music features, but this uses the built-in boot
ROM, not an external BIOS.
The core implements its own Mega CD BIOS call handler (MegaCDBIOSCall in
bus-sub-m68k.c) via HLE (high-level emulation) of Sub-CPU BIOS functions
including CDBIOS, CDCTRN, FDRSET, FDRCHG, DRVINIT, CDCSTOP, CDCSTAT,
CDCREAD, and others.
files: []
analysis:
tmss:
supported: false
notes: |
TMSS is not implemented. No ROM loaded, no "Produced by Sega" check.
No references to TMSS exist anywhere in the codebase.
megacd_bios:
external_required: false
builtin_boot_rom: true
boot_rom_source: "https://github.com/Clownacy/clownmdemu-mcd-boot"
boot_rom_location: "source/mega-cd-boot-rom.c (16384 uint16 entries = 32 KB)"
bus_mapping: "0x400000-0x41FFFF (address & 0x20000 == 0)"
source_ref: "bus-main-m68k.c:19-21, bus-main-m68k.c:484-494"
bios_hle: true
hle_source_ref: "bus-sub-m68k.c:64 (MegaCDBIOSCall)"
notes: |
The Mega CD boot ROM is an open-source replacement compiled into the
binary. Sub-CPU BIOS calls are handled via HLE. No external Sega CD
BIOS files (bios_CD_E/U/J.bin) are needed.

14
emulators/craft.yml Normal file
View File

@@ -0,0 +1,14 @@
emulator: Craft
type: game
source: "https://github.com/libretro/Craft"
profiled_date: "2026-03-18"
core_version: "v1"
display_name: "Minecraft (Craft)"
cores: [craft]
systems: []
files: []
notes: >
Libretro port of Craft, a simple Minecraft clone by Michael Fogleman.
Procedurally generates a voxel world with basic block placement and removal.
All textures and shaders are compiled into the binary.
No content file, BIOS, or system directory files required.

62
emulators/crocods.yml Normal file
View File

@@ -0,0 +1,62 @@
emulator: CrocoDS
type: libretro
source: "https://github.com/libretro/libretro-crocods"
profiled_date: "2026-03-18"
core_version: "v1"
display_name: "Amstrad - CPC (CrocoDS)"
cores:
- crocods
systems:
- amstrad-cpc
notes: |
CrocoDS is an Amstrad CPC 6128 emulator ported to libretro. Supports
.dsk, .sna, and .kcr file formats.
All system ROMs are compiled directly into the core binary as C byte
arrays. No external BIOS files are required.
Embedded ROMs (crocods-core/):
- cpc6128.bin.c: cpc6128_bin[32768] - CPC 6128 OS (16KB) + BASIC 1.1 (16KB)
- romdisc.bin.c: romdisc_bin[16384] - AMSDOS disk controller ROM (16KB)
ROM initialization in InitMemCPC() (crocods-core/vga.c:185-200):
- ROMINF (lower ROM, 16KB): first half of cpc6128_bin (OS)
- ROMEXT[0] (upper ROM slot 0, 16KB): second half of cpc6128_bin (BASIC)
- ROMEXT[7] (upper ROM slot 7, 16KB): romdisc_bin (AMSDOS)
Called from HardResetCPC() (crocods-core/platform.c:1009-1020) using
the extern byte arrays directly. No filesystem ROM loading exists in
the libretro path.
A Multiface ROM loader exists (crocods-core/multiface.c:51-61) that
reads LocRomMulti via fopen(), but InitMultiface() is never called
from the libretro build or platform.c. Dead code in libretro context.
The core does not request retro_system_directory or declare any
firmware entries in the .info file. need_fullpath is false.
Only the CPC 6128 model is emulated (no CPC 464/664 selection).
files: []
platform_details:
bios_mapping:
source_ref: "crocods-core/vga.c:185-200, crocods-core/platform.c:1009-1020"
notes: |
All ROMs are embedded. InitMemCPC() copies cpc6128_bin and romdisc_bin
into ROMINF and ROMEXT arrays via memcpy. No filesystem lookup occurs.
retro_set_environment() does not request system_directory.
embedded_roms:
source_ref: "crocods-core/cpc6128.bin.c, crocods-core/romdisc.bin.c"
notes: |
2 ROM sets embedded as C byte arrays:
cpc6128_bin (32KB) - CPC 6128 OS (lower 16KB) + BASIC 1.1 (upper 16KB)
romdisc_bin (16KB) - AMSDOS disk controller ROM, mapped to slot 7
model_rom_map:
source_ref: "crocods-core/vga.c:189-192"
notes: |
CPC 6128 only: OS in ROMINF, BASIC in ROMEXT[0], AMSDOS in ROMEXT[7]
emulator_patch_ROM() applies language patches to ROMINF after loading

39
emulators/cruzes.yml Normal file
View File

@@ -0,0 +1,39 @@
emulator: Cruzes
type: libretro
source: "https://github.com/libretro/libretro-samples/tree/master/tests/cruzes"
profiled_date: "2026-03-18"
core_version: "v1.0"
display_name: "Cruzes"
cores:
- cruzes
systems:
- game
notes: |
Cruzes is an unfinished Picross puzzle game implemented as a libretro core,
part of the libretro-samples repository. It is not an emulator -- it is a
standalone game that runs directly within RetroArch.
The core sets supports_no_game to true (cruzes.c:772) and valid_extensions
to an empty string (cruzes.c:749). The puzzle grid is hardcoded in
retro_init (cruzes.c:706-717) via a string literal passed to load_challenge.
retro_load_game (cruzes.c:728-732) only sets the pixel format to RGB565
and returns true. It never reads from the game_info pointer, never calls
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, and never opens any file from disk.
The font data (Carlito-Regular.ttf) is converted to C header files at build
time by the ttf2c tool (font10.h, font16.h, font24.h) and compiled in.
No external BIOS, firmware, or system files are needed.
files: []
analysis:
file_loading: none
system_directory_used: false
supports_no_game: true
need_fullpath: false
is_experimental: true
license: 2-clause BSD
author: Higor Euripedes

59
emulators/daphne.yml Normal file
View File

@@ -0,0 +1,59 @@
emulator: Daphne
type: libretro
source: "https://github.com/libretro/daphne"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Arcade (Daphne)"
systems:
- arcade-laserdisc
notes: |
Daphne is a LaserDisc arcade game emulator ported to libretro. It emulates
classic full-motion video arcade games like Dragon's Lair, Space Ace,
Cliff Hanger, and others that used LaserDisc players for video output.
The core does NOT require any shared system BIOS or firmware files.
The libretro-core-info file (daphne_libretro.info) declares no firmware.
Each game loads its own arcade ROM set from a ZIP file named after the game
short name (e.g. lair.zip, cliff.zip, bega.zip). ROM files are individual
arcade chip dumps loaded via the rom_def struct in each game class
(daphne-1.0-src/game/*.cpp). CRC32 verification is performed at load time
(game.cpp:769-778).
Content loading path (libretro.cpp:546-637):
1. User points RetroArch to a .zip file (e.g. /Daphne/roms/lair.zip)
2. The core strips the path to derive:
- rom_name: game short name (e.g. "lair"), lowercased
- rom_path: parent directory
3. A home_dir is set to rom_path/.. (one level up from roms/)
4. Additional data is expected relative to home_dir:
- roms/ -> game ROM ZIPs
- framefile/ -> frame description files (.txt)
- sound/ -> sound samples
- ram/ -> SRAM saves
- pics/ -> overlay graphics
Expected directory layout:
Daphne/
roms/lair.zip
roms/cliff.zip
framefile/lair.txt
framefile/cliff.txt
sound/lair/ (optional, game-specific samples)
Supported games include (from README.md and libretro.cpp):
lair (Dragon's Lair), ace (Space Ace), cliff (Cliff Hanger),
bega (Bega's Battle), badlands (Badlands), esh (Esh's Aurunmilla),
interstellar, mach3, sdq (Super Don Quix-ote), tq (Thayer's Quest),
astron, galaxy, cobra, roadblaster, gpworld, lair2 (Dragon's Lair II),
and many ROM revision variants.
The core is marked experimental. Savestates, cheats, and disk control are
not supported. Requires full file path (retro_load_game uses path, not
data buffer).
files: []
# No shared BIOS or firmware files. All ROMs are per-game arcade chip
# dumps distributed inside game-named ZIP archives. These are game content,
# not system files managed by retroarch_system.

44
emulators/desmume.yml Normal file
View File

@@ -0,0 +1,44 @@
emulator: DeSmuME
type: libretro
source: "https://github.com/libretro/desmume"
profiled_date: "2026-03-18"
core_version: "SVN"
display_name: "Nintendo - DS (DeSmuME)"
cores: [desmume, desmume2015]
systems: [nintendo-ds]
notes: |
DeSmuME provides full HLE (High-Level Emulation) of all ARM7/ARM9 SWI
routines, making BIOS files optional for most games. When external BIOS
is disabled, a minimal fake BIOS with exception vectors and IRQ handler
stubs is generated at runtime (NDSSystem.cpp:2208-2224, 2263-2278).
External BIOS enables SWI-from-BIOS mode and firmware boot animation.
Firmware boot requires both ARM7+ARM9 BIOS loaded AND interpreter mode
(JIT incompatible, see libretro.cpp:788).
ARM9 BIOS read size: 4096 bytes (0x1000). ARM7 BIOS read size: 16384
bytes (0x4000). No DSi support.
Libretro core option: desmume_use_external_bios (enabled/disabled).
files:
- name: "bios7.bin"
system: nintendo-ds
description: "ARM7 BIOS"
required: false
size: 16384
source_ref: "desmume/src/NDSSystem.cpp:2178-2182, frontend/libretro/libretro.cpp:763"
notes: "HLE fallback covers all SWI calls; native file needed for firmware boot and SWI-from-BIOS accuracy"
- name: "bios9.bin"
system: nintendo-ds
description: "ARM9 BIOS"
required: false
size: 4096
source_ref: "desmume/src/NDSSystem.cpp:2236-2239, frontend/libretro/libretro.cpp:764"
notes: "HLE fallback covers all SWI calls; native file needed for firmware boot and logo comparison (Pal Park)"
- name: "firmware.bin"
system: nintendo-ds
description: "NDS firmware image"
required: false
source_ref: "desmume/src/NDSSystem.cpp:2653-2655, frontend/libretro/libretro.cpp:765"
notes: "Dummy firmware generated when absent; native firmware needed for boot animation, wifi config, user settings"

70
emulators/dice.yml Normal file
View File

@@ -0,0 +1,70 @@
emulator: DICE
type: libretro
source: "https://github.com/mittonk/dice-libretro"
profiled_date: "2026-03-18"
core_version: "v0.4.2"
display_name: "Arcade (DICE)"
cores:
- dice
systems:
- discrete-arcade
notes: |
DICE (Discrete Integrated Circuit Emulator) emulates early arcade hardware
built entirely from discrete logic components, with no CPU. dice-libretro is
a libretro port by Ken Mitton, based on upstream DICE by Adam B.
No BIOS or firmware files required. The .info file declares firmware_count = 0.
Games fall into two categories:
- ROM-based: shipped as MAME-style ZIP archives (filename matters).
The core loads the ZIP passed by the frontend and matches individual ROM
chips by CRC32 (chips/rom.cpp:41-218, RomDesc::get_data). If a chip's
CRC does not match, the core walks all entries in the archive looking for
a CRC match or alt_crc match.
- ROM-less: games like Pong, Breakout, Rebound whose original PCBs had no
ROM at all. These use .dmy dummy launcher files (empty placeholders) to
tell RetroArch which game to start.
retro_get_system_info (libretro.cpp:122-137) sets need_fullpath = true,
block_extract = true, valid_extensions = "zip|dmy|k1|a1|6c|c6|d2|s1|f4|a4|
1da|da1|C4|4c|4d|d7|d4". The unusual extensions are raw ROM chip dumps for
individual games (e.g. .k1 for antiaircraft, .a1 for attack).
dice.cpp:42-66 strips any "#inner.rom" suffix from the path (for ROM
managers that expose zip contents) and passes the zip path to
RomDesc::set_zip_filename.
retro_init (libretro.cpp:50-63) retrieves RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
but uses it only for the retro_base_directory variable, not for loading any
system files.
Games with ROMs (10 titles):
antiaircraft.zip - 1 ROM chip (k1)
attack.zip - 6 ROM chips (a1, b1, c1, d1, j6, k6), each with alt_crc
cleansweep.zip - 3 ROM chips (6c, d7, k3)
crashnscore.zip - 6 ROM chips (d2, e2, f6, f7, p6, p7)
indy4.zip - 4 ROM chips (s1, s2, c1, c2)
jetfighter.zip - 6 ROM chips (a4, j1, j5, k5, m1, r5)
sharkjaws.zip - 2 ROM chips (1da/da1, 1db/db1)
steeplechase.zip - 2 ROM chips (C4, D4); bugle ROM c8 dump missing
stuntcycle.zip - 2 ROM chips (4d, 1fh)
wipeout.zip - 2 ROM chips (d4, g7)
ROM-less games (11 titles, use .dmy dummy files):
breakout, crossfire, gotcha, hiway, pinpong, pong, pongdoubles,
quadrapong, rebound, spacerace, tvbasketball
files: []
analysis:
rom_loading:
method: "MAME-style ZIP, matched by CRC32 per RomDesc"
source_ref: "chips/rom.cpp:41-218"
zip_handling: "unzip library (unzip/), opened via libretro_zip_filename"
game_count: 21
rom_games: 10
romless_games: 11
filesystem_access: false
system_directory_used: false
bios_required: false

14
emulators/dinothawr.yml Normal file
View File

@@ -0,0 +1,14 @@
emulator: Dinothawr
type: game
source: "https://github.com/libretro/Dinothawr"
profiled_date: "2026-03-18"
core_version: "v1.0"
display_name: "Dinothawr"
cores: [dinothawr]
systems: []
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.

76
emulators/directxbox.yml Normal file
View File

@@ -0,0 +1,76 @@
emulator: DirectXBox
type: libretro
source: "https://github.com/libretro/libretro-directxbox"
profiled_date: "2026-03-18"
core_version: "alpha"
display_name: "Microsoft - Xbox (DirectXbox)"
cores:
- directxbox
systems:
- xbox
# DirectXBox is an experimental original Xbox emulator written from scratch for
# libretro. Status: alpha. Cromwell BIOS boots but cannot run games. Microsoft
# BIOS does not boot yet (ATA/OHCI unimplemented). No audio, no HW acceleration.
#
# BIOS loading (libretro.cpp:199-210):
# Paths are hardcoded relative to the system directory:
# mcpx_rom_str = <system_dir>/mcpx_1.0.bin
# bios_rom_str = <system_dir>/cromwell_1024.bin
# Both are passed to Xbox::LoadBootRoms(flash, mcpx).
# A commented-out alternative exists: xbox-3944.bin (Microsoft retail BIOS).
#
# LoadBootRoms (xbox.cpp:143-210):
# 1. Opens flash ROM, validates size is a multiple of 0x10000
# 2. Maps flash ROM to 0xFF000000-0xFFFFFFFF (mirrored to fill 16 MB)
# 3. Opens MCPX ROM, validates size is exactly 512 bytes
# 4. Overlays MCPX at the last 512 bytes of flash region
# If MCPX path is empty, step 3-4 are skipped (Debug/Chihiro machines).
# retro_load_game returns false if either file fails to load.
#
# Machine type (libretro_core_options.h:67-81):
# Core option "libretro-xbox_machine-type" selects hardware revision.
# Default "auto" detects from BIOS. Retail v1.0 uses McpxRomVersion::Mcpx1_0,
# all other retail revisions use Mcpx1_1. Debug and Chihiro use McpxRomVersion::None
# (no MCPX ROM needed).
#
# The .info file declares no firmware_count. Both files are mandatory for retail
# machine types. The core has no fallback or built-in replacement.
files:
- name: "mcpx_1.0.bin"
path: "mcpx_1.0.bin"
size: 512
required: true
note: >
Xbox MCPX ROM (secret boot ROM on the southbridge). Contains the initial
boot vector that loads the flash BIOS. Overlaid at the last 512 bytes of
the 16 MB flash region (0xFFFFFE00-0xFFFFFFFF). Only needed for retail
machine types; Debug and Chihiro skip this file.
source_ref: "src/xbox.cpp:186-206, src/libretro/libretro.cpp:202"
- name: "cromwell_1024.bin"
path: "cromwell_1024.bin"
required: true
note: >
Cromwell open-source Xbox BIOS (1024 KB variant). Loaded as the flash ROM
and mirrored across the 16 MB flash region at 0xFF000000. Size must be a
multiple of 0x10000. This is the only BIOS that currently boots in the
emulator. The Microsoft retail BIOS (xbox-3944.bin) is referenced in
commented-out code but does not work yet.
source_ref: "src/xbox.cpp:143-178, src/libretro/libretro.cpp:203-204"
notes:
status: >
Alpha stage. Only Cromwell BIOS boots. No commercial game compatibility.
Missing ATA (hard drive), OHCI (USB/controllers), audio, and GPU HW
acceleration. The core requires libvirt86 for x86 virtualization.
microsoft_bios: >
The source references xbox-3944.bin as an alternative flash ROM (Microsoft
retail BIOS, typically 256 KB). It is commented out in libretro.cpp:204
because ATA and OHCI hardware are not yet implemented, preventing the
Microsoft BIOS from completing boot.
machine_types: >
xbox_database.cpp defines retail v1.0 through v1.6, debug, and chihiro
variants. Each has different TV encoder (Conexant/Focus/XCalibur) and MCPX
revision (X2/X3) settings. The core option auto-detects from the loaded BIOS.

8
emulators/dirksimple.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "dirksimple"
type: alias
alias_of: "daphne"
profiled_date: "2026-03-18"
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."
files: []

185
emulators/dolphin.yml Normal file
View File

@@ -0,0 +1,185 @@
emulator: Dolphin
type: standalone + libretro
source: "https://github.com/dolphin-emu/dolphin"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Nintendo - GameCube / Wii (Dolphin)"
systems: [nintendo-gamecube, nintendo-wii]
# Dolphin has HLE for most system functions, so real BIOS/firmware files
# are optional but improve accuracy. DSP ROMs are the most commonly needed.
# File paths are relative to Dolphin User directory:
# Standalone: User/GC/ and User/Wii/
# Libretro (RetroArch): system/dolphin-emu/GC/ and system/dolphin-emu/Wii/
files:
# -- GameCube IPL (Boot ROM) --
# Region-specific, placed in GC/<region>/IPL.bin
# Regions: USA, EUR, JAP (legacy), JPN, DEV
- name: "IPL.bin"
path: "GC/USA/IPL.bin"
size: 2097152 # 0x200000 (2 MB)
required: false
note: "GameCube NTSC-U boot ROM. HLE available but real IPL needed for GC menu boot and accurate fonts"
source_ref: "Source/Core/Common/CommonPaths.h:139, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:108"
- name: "IPL.bin"
path: "GC/EUR/IPL.bin"
size: 2097152
required: false
note: "GameCube PAL boot ROM"
source_ref: "Source/Core/Core/Config/MainSettings.cpp:744-750"
- name: "IPL.bin"
path: "GC/JAP/IPL.bin"
size: 2097152
required: false
note: "GameCube NTSC-J boot ROM"
source_ref: "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:185"
# -- DSP ROMs --
# Used by DSP LLE (low-level emulation) for accurate audio
# Dolphin ships a free replacement ROM, but dumps from real hardware are more accurate
# Searched in: User/GC/ then Sys/GC/
- name: "dsp_rom.bin"
path: "GC/dsp_rom.bin"
size: 8192 # 0x2000 (DSP_IROM_BYTE_SIZE)
required: false
note: "DSP instruction ROM for LLE audio. Free replacement included with Dolphin, real dump improves accuracy"
known_hash_adler32: "0x66f334fe" # official Nintendo ROM
source_ref: "Source/Core/Common/CommonPaths.h:136, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:106-117"
- name: "dsp_coef.bin"
path: "GC/dsp_coef.bin"
size: 4096 # 0x1000 (DSP_COEF_BYTE_SIZE)
required: false
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included"
known_hash_adler32: "0xf3b93527" # official Nintendo ROM
source_ref: "Source/Core/Common/CommonPaths.h:137, Source/Core/Core/DSP/DSPCore.cpp:32-33, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:55-62"
# -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text
# If IPL dump is present, fonts are extracted from it instead
# Searched in: Sys/GC/
- name: "font_western.bin"
path: "GC/font_western.bin"
size: 9589 # 0x2575
required: false
note: "Windows-1252 font for GC/Wii text rendering. Free alternative bundled, real one from IPL dump preferred"
source_ref: "Source/Core/Common/CommonPaths.h:133, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:130,202-239"
- name: "font_japanese.bin"
path: "GC/font_japanese.bin"
size: 303693 # 0x4A24D
required: false
note: "Shift-JIS font for Japanese text. Free alternative bundled, real one from IPL dump preferred"
source_ref: "Source/Core/Common/CommonPaths.h:134, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:129,234"
# -- GBA BIOS (for GC-GBA link) --
# Used by integrated mGBA core for GameCube-GBA connectivity
- name: "gba_bios.bin"
path: "GBA/gba_bios.bin"
required: false
note: "GBA BIOS for GC-GBA link feature (uses integrated mGBA). Path configurable in settings"
source_ref: "Source/Core/Common/CommonPaths.h:145, Source/Core/Core/HW/GBACore.cpp:346-363"
# -- Wii System Files --
# These are generated/managed by Dolphin's Wii NAND emulation
# Not typically user-supplied, but listed for completeness
- name: "SYSCONF"
path: "Wii/shared2/sys/SYSCONF"
required: false
note: "Wii system configuration. Auto-generated by Dolphin, can be imported from NAND backup"
source_ref: "Source/Core/Common/CommonPaths.h:118, Source/Core/Common/FileUtil.cpp:900"
- name: "setting.txt"
path: "Wii/title/00000001/00000002/data/setting.txt"
size: 256
required: false
note: "Wii region/language settings. Auto-generated by Dolphin during Wii boot emulation"
source_ref: "Source/Core/Common/CommonPaths.h:153, Source/Core/Core/Boot/Boot_BS2Emu.cpp:384-460"
# -- Wii NAND Backup (BootMii) --
- name: "nand.bin"
path: null # user-selected via file dialog
required: false
note: "BootMii NAND backup. Can be imported to populate Wii NAND with channels, saves, system menu"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:26-39,42-89"
- name: "keys.bin"
path: null # user-selected, or appended to nand.bin
size: 1024 # 0x400 (NAND_KEYS_SIZE)
required: false
note: "OTP/SEEPROM dump (Wii encryption keys). Needed if not appended to nand.bin for NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:19,76-88, Source/Core/DiscIO/NANDImporter.h:28"
# -- Wii SD Card Image --
- name: "WiiSD.raw"
path: "Load/WiiSD.raw"
required: false
note: "Virtual SD card image for Wii homebrew. Auto-created by Dolphin, supports SD/SDHC up to 4GB"
source_ref: "Source/Core/Common/CommonPaths.h:150"
# -- Gecko Code Handler --
- name: "codehandler.bin"
path: null # in Sys directory, shipped with Dolphin
required: false
note: "Gecko/Ocarina cheat code handler. Shipped with Dolphin in Sys/, not user-supplied"
source_ref: "Source/Core/Common/CommonPaths.h:155, Source/Core/Core/GeckoCode.cpp:120"
# -- Wii System Menu (WAD) --
- name: "Wii System Menu"
path: null # installed to NAND via WAD import
required: false
note: "Wii System Menu WAD. Installed to NAND via Tools > Install WAD, needed for Wii Menu boot"
source_ref: "Source/Core/DolphinQt/MainWindow.cpp:1581-1583, Source/Core/DolphinQt/MenuBar.cpp:1174-1188"
# -- NAND Certificates (auto-extracted) --
- name: "clientca.pem"
path: "Wii/clientca.pem"
required: false
note: "SSL client certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:201-285"
- name: "clientcakey.pem"
path: "Wii/clientcakey.pem"
required: false
note: "SSL client private key. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:237"
- name: "rootca.pem"
path: "Wii/rootca.pem"
required: false
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:238"
notes:
hle_available: true
hle_note: >
Dolphin provides HLE for GameCube IPL (boot ROM), DSP, and Wii system functions.
No BIOS files are strictly required for most games. DSP ROMs (dsp_rom.bin + dsp_coef.bin)
are the most impactful optional files - Dolphin ships free replacements but real dumps
from hardware provide better audio accuracy in some titles.
ipl_regions: ["USA", "EUR", "JAP", "JPN", "DEV"]
ipl_region_note: >
IPL.bin is region-specific, placed in GC/<REGION>/IPL.bin.
JAP is the legacy directory name, JPN is the modern default.
DEV is for development/debug units.
dsp_rom_note: >
DSP ROMs are verified at load time via Adler32 hash.
Official Nintendo hashes: irom=0x66f334fe, drom=0xf3b93527.
Multiple free replacement versions exist (v0.1 through v0.4).
font_note: >
Fonts can come from three sources: real IPL dump (preferred), standalone font files
in Sys/GC/, or bundled free alternatives. The free fonts have different padding that
causes text positioning issues in some games.
libretro_note: >
No official libretro core exists in the main Dolphin repo.
Third-party libretro cores (dolphin_libretro) use the same file paths
under RetroArch system/dolphin-emu/.
nand_note: >
Wii NAND content (channels, saves, system menu) is managed by Dolphin internally.
Users can import a BootMii NAND backup (nand.bin + optional keys.bin) to populate it.
Most Wii games do not require a real NAND dump.

View File

@@ -0,0 +1,23 @@
emulator: "Dolphin Launcher"
type: launcher
source: "https://github.com/RobLoach/libretro-dolphin-launcher"
profiled_date: "2026-03-18"
core_version: "1.2.0"
display_name: "Nintendo - GameCube / Wii (Dolphin Launcher)"
cores:
- dolphin_launcher
systems: [nintendo-gamecube, nintendo-wii]
notes: |
Launcher stub that passes games to standalone Dolphin (dolphin-emu-nogui,
dolphin-emu, or Flatpak org.DolphinEmu.dolphin-emu). The core itself does
no emulation - it calls system() with the game path, waits for Dolphin to
exit, then signals RETRO_ENVIRONMENT_SHUTDOWN.
Requires Dolphin installed separately on the host. All BIOS/firmware files
(IPL.bin, DSP ROMs, fonts, Wii NAND) are managed by the standalone Dolphin
install, not by RetroArch system/. See dolphin.yml for those files.
No system files, BIOS, or firmware required by this core.
files: []

174
emulators/dosbox_core.yml Normal file
View File

@@ -0,0 +1,174 @@
emulator: DOSBox-core
type: libretro
source: "https://github.com/libretro/dosbox-core"
profiled_date: "2026-03-18"
core_version: "SVN"
display_name: "DOS (DOSBox-core)"
cores: [dosbox_core]
systems: [dos]
verification: sha1
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).
files:
# -- MT-32 Control ROM --
# The core only loads MT32_CONTROL.ROM (not versioned filenames).
# Any v1.x control ROM (64 KB) works. The .info references v1.07.
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.04"
required: false
size: 65536
sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7"
source_ref: "midi_mt32.cpp:55"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.05"
required: false
size: 65536
sha1: "e17a3a6d265bf1fa150312061134293d2b58288c"
source_ref: "midi_mt32.cpp:55"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.06"
required: false
size: 65536
sha1: "a553481f4e2794c10cfe597fef154eef0d8257de"
source_ref: "midi_mt32.cpp:55"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.07"
required: false
size: 65536
sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987"
source_ref: "midi_mt32.cpp:55, dosbox_core_libretro.info:firmware0"
notes: "version referenced in .info file (md5: 5626206284b22c2734f3e9efefcd2675)"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control BlueRidge"
required: false
size: 65536
sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92"
source_ref: "midi_mt32.cpp:55"
# -- MT-32 v2.x Control ROMs (128 KB) --
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.03 (new MT-32)"
required: false
size: 131072
sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce"
source_ref: "midi_mt32.cpp:55"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.04"
required: false
size: 131072
sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb"
source_ref: "midi_mt32.cpp:55"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.06"
required: false
size: 131072
sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed"
source_ref: "midi_mt32.cpp:55"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.07"
required: false
size: 131072
sha1: "47b52adefedaec475c925e54340e37673c11707c"
source_ref: "midi_mt32.cpp:55"
# -- CM-32L / LAPC-I Control ROMs (64 KB) --
# Loaded when mt32.type = "cm32l" (the default).
- name: "CM32L_CONTROL.ROM"
description: "CM-32L/LAPC-I Control v1.00"
required: false
size: 65536
sha1: "73683d585cd6948cc19547942ca0e14a0319456d"
source_ref: "midi_mt32.cpp:53"
- name: "CM32L_CONTROL.ROM"
description: "CM-32L/LAPC-I Control v1.02"
required: false
size: 65536
sha1: "a439fbb390da38cada95a7cbb1d6ca199cd66ef8"
source_ref: "midi_mt32.cpp:53, dosbox_core_libretro.info:firmware2"
notes: "version referenced in .info file (md5: bfff32b6144c1d706109accb6e6b1113)"
# -- PCM ROMs --
- name: "MT32_PCM.ROM"
description: "MT-32 PCM ROM"
required: false
size: 524288
sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252"
source_ref: "midi_mt32.cpp:66, dosbox_core_libretro.info:firmware1"
notes: "pairs with any MT-32 v1.x control ROM (md5: 89e42e386e82e0cacb4a2704a03706ca)"
- name: "CM32L_PCM.ROM"
description: "CM-32L/CM-64/LAPC-I PCM ROM"
required: false
size: 1048576
sha1: "289cc298ad532b702461bfc738009d9ebe8025ea"
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)"
# -- BASS shared libraries (BASSMIDI driver) --
# Downloaded from https://www.un4seen.com, placed in system directory.
# Loaded at runtime via dlopen. Not redistributable ROMs.
- name: "libbass.so"
description: "BASS audio library (Linux)"
required: false
source_ref: "midi_bassmidi.cpp:238, dosbox_core_libretro.info:firmware4"
notes: "proprietary library from un4seen.com, not a ROM"
- name: "libbassmidi.so"
description: "BASSMIDI addon library (Linux)"
required: false
source_ref: "midi_bassmidi.cpp:239, dosbox_core_libretro.info:firmware5"
notes: "proprietary library from un4seen.com, not a ROM"
- name: "bass.dll"
description: "BASS audio library (Windows)"
required: false
source_ref: "midi_bassmidi.cpp:232, dosbox_core_libretro.info:firmware6"
notes: "proprietary library from un4seen.com, not a ROM"
- name: "bassmidi.dll"
description: "BASSMIDI addon library (Windows)"
required: false
source_ref: "midi_bassmidi.cpp:233, dosbox_core_libretro.info:firmware7"
notes: "proprietary library from un4seen.com, not a ROM"
- name: "libbass.dylib"
description: "BASS audio library (macOS)"
required: false
source_ref: "midi_bassmidi.cpp:235, dosbox_core_libretro.info:firmware8"
notes: "proprietary library from un4seen.com, not a ROM"
- name: "libbassmidi.dylib"
description: "BASSMIDI addon library (macOS)"
required: false
source_ref: "midi_bassmidi.cpp:236, dosbox_core_libretro.info:firmware9"
notes: "proprietary library from un4seen.com, not a ROM"
# -- General MIDI SoundFont --
# Placed in system/soundfonts/ directory. Core scans for .sf2/.sf3/.sfz/.dls/.gig.
# FluidSynth reads .sf2/.sf3/.dls/.gig; BASSMIDI reads .sf2/.sfz.
# No specific filename required - all found files appear in the core option dropdown.

142
emulators/dosbox_pure.yml Normal file
View File

@@ -0,0 +1,142 @@
emulator: DOSBox Pure
type: libretro
source: "https://github.com/libretro/dosbox-pure"
profiled_date: "2026-03-18"
core_version: "0.9.9"
display_name: "DOS (DOSBox-Pure)"
cores: [dosbox_pure]
systems: [dos]
verification: sha1
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.
files:
# -- MT-32 Control ROMs (64 KB) --
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.04"
required: false
size: 65536
sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7"
source_ref: "mt32emu.h:CTRL_MT32_V1_04"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.05"
required: false
size: 65536
sha1: "e17a3a6d265bf1fa150312061134293d2b58288c"
source_ref: "mt32emu.h:CTRL_MT32_V1_05"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.06"
required: false
size: 65536
sha1: "a553481f4e2794c10cfe597fef154eef0d8257de"
source_ref: "mt32emu.h:CTRL_MT32_V1_06"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.07"
required: false
size: 65536
sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987"
source_ref: "mt32emu.h:CTRL_MT32_V1_07"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control BlueRidge"
required: false
size: 65536
sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92"
source_ref: "mt32emu.h:CTRL_MT32_BLUER"
# -- MT-32 v2.x Control ROMs (128 KB) --
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.03 (new MT-32)"
required: false
size: 131072
sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce"
source_ref: "mt32emu.h:CTRL_MT32_V2_03"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.04"
required: false
size: 131072
sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb"
source_ref: "mt32emu.h:CTRL_MT32_V2_04"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.06"
required: false
size: 131072
sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed"
source_ref: "mt32emu.h:CTRL_MT32_V2_06"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.07"
required: false
size: 131072
sha1: "47b52adefedaec475c925e54340e37673c11707c"
source_ref: "mt32emu.h:CTRL_MT32_V2_07"
# -- CM-32L / LAPC-I Control ROMs (64 KB) --
- name: "CM32L_CONTROL.ROM"
description: "CM-32L/LAPC-I Control v1.00"
required: false
size: 65536
sha1: "73683d585cd6948cc19547942ca0e14a0319456d"
source_ref: "mt32emu.h:CTRL_CM32L_V1_00"
- 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"
# -- CM-32LN / CM-500 / LAPC-N Control ROM (64 KB) --
- name: "CM32LN_CONTROL.ROM"
description: "CM-32LN/CM-500/LAPC-N Control v1.00"
required: false
size: 65536
sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077"
source_ref: "mt32emu.h:CTRL_CM32LN_V1_00"
# -- PCM ROMs --
- name: "MT32_PCM.ROM"
description: "MT-32 PCM ROM"
required: false
size: 524288
sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252"
source_ref: "mt32emu.h:PCM_MT32"
notes: "pairs with any MT-32 v1.x control ROM"
- name: "CM32L_PCM.ROM"
description: "CM-32L/CM-64/LAPC-I PCM ROM"
required: false
size: 1048576
sha1: "289cc298ad532b702461bfc738009d9ebe8025ea"
source_ref: "mt32emu.h:PCM_CM32L"
notes: "pairs with MT-32 v2.x or CM-32L control ROMs. Lower half aliases MT-32 PCM."
# -- General MIDI SoundFont --
- name: "DOSBOX.SF2"
description: "General MIDI SoundFont (any .sf2/.sf3 accepted)"
required: false
source_ref: "dosbox_pure_libretro.cpp:1375,2760"
notes: >
Any .SF2 or .SF3 file in the system directory works. The core lists all
found SoundFonts in the MIDI config dropdown. DOSBOX.SF2 is the conventional
name and is also auto-detected when placed inside game content on C: drive.

8
emulators/dosbox_svn.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "dosbox_svn"
type: alias
alias_of: "dosbox_core"
profiled_date: "2026-03-18"
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."
files: []

View File

@@ -0,0 +1,8 @@
emulator: "dosbox_svn_ce"
type: alias
alias_of: "dosbox_core"
profiled_date: "2026-03-18"
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."
files: []

View File

@@ -0,0 +1,33 @@
emulator: DoubleCherryGB
type: libretro
source: "https://github.com/TimOelrichs/doublecherryGB-libretro"
profiled_date: "2026-03-18"
core_version: "v0.17.0"
display_name: "Nintendo - Game Boy / Color (DoubleCherryGB)"
cores:
- DoubleCherryGB
systems:
- nintendo-gb
- nintendo-gbc
notes: |
DoubleCherryGB is a Game Boy / Game Boy Color emulator forked from TGB Dual
by GIGO and Hii. It adds multi-Game Boy emulation with virtual link cable
support for up to 16 players, DMG-07 4-Player Adapter emulation, and
built-in Pokemon distribution events.
No BIOS or boot ROM files are required or supported. The core does not
call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY for firmware loading and does
not attempt to open any files from the system directory.
In cpu.cpp:82, the program counter is initialized to 0x100 (post-boot ROM
entry point), and cpu::reset() sets all registers to their post-boot
values directly (AF=0x01B0 for DMG, 0x11B0 for CGB). This means the
core completely bypasses the boot ROM sequence via HLE register setup.
The .info file at libretro-core-info confirms no firmware entries.
Supported extensions: gb, dmg, gbc, cgb, sgb.
Library version: v0.18.0.
files: []

57
emulators/doukutsu_rs.yml Normal file
View File

@@ -0,0 +1,57 @@
emulator: "doukutsu-rs"
type: libretro
source: "https://github.com/DrGlaucous/doukutsu-rs-libretro"
profiled_date: "2026-03-18"
core_version: "1.2.0 - 0.101.0"
display_name: "Cave Story (drs)"
cores:
- doukutsu_rs
systems:
- cavestory
# doukutsu-rs (d-rs) is an open-source reimplementation of the Cave Story
# (Doukutsu Monogatari) engine in Rust, ported to libretro by Dr. Glaucous.
# It plays the original freeware Cave Story and Cave Story+ (Steam/Switch).
#
# The core does NOT use RetroArch's system directory for any BIOS or firmware.
# get_system_directory() is defined in libretro.rs:1255 but never called by
# the core (the import is commented out in core.rs:28).
#
# Instead, the core loads game data relative to the content path provided by
# the frontend. The target is either a Doukutsu.exe (freeware) or a directory
# containing a data/ subfolder (core.rs:226-233):
#
# content_path = "/path/to/Doukutsu.exe" (or directory for CS Switch)
# resource_dir = parent_of(content_path) + "/data/"
#
# The data/ directory must contain the freeware Cave Story game assets:
# npc.tbl, mrmap.bin, *.png, Stage/, Npc/, org/ (music), *.tsc (scripts)
#
# These are the original Pixel game files from Doukutsu.exe, extracted by
# the doukutsu-rs/game-data repo (CSE2E-converted freeware data). They are
# copyrighted by Daisuke "Pixel" Amaya but freely redistributable for
# non-commercial use.
#
# Internal engine data (fonts, organya wavetables, gamecontrollerdb.txt,
# touch overlay, lightmap) is compiled into the core binary via
# include_bytes! in builtin_fs.rs, so nothing extra is needed in system/.
#
# The .info file (doukutsu_rs_libretro.info) declares:
# supported_extensions = "exe|dll|so"
# needs_fullpath = true
# supports_no_game = true
# notes = "(!) drs requires data ROM 'Cave Story (en).zip'."
# "|(!) Load Content 'Doukutsu.exe', Also works with all other ports of CS"
#
# No firmware entries are declared in the .info file.
# Valid extensions: exe, dll, so (loads the original game binary as content path)
notes: |
No BIOS or firmware files required in the system directory.
The core reads game data from a data/ subfolder next to the loaded content.
Users must provide the Cave Story freeware game files (Doukutsu.exe and its
data/ directory) or a Cave Story+ installation as the content to load.
All engine-internal resources (fonts, wavetables, controller mappings) are
built into the core binary.
files: []

1077
emulators/duckstation.yml Normal file

File diff suppressed because it is too large Load Diff

122
emulators/easyrpg.yml Normal file
View File

@@ -0,0 +1,122 @@
emulator: EasyRPG Player
type: libretro
source: "https://github.com/libretro/easyrpg-libretro"
profiled_date: "2026-03-18"
core_version: "0.8.1.0"
display_name: "RPG Maker 2000/2003 (EasyRPG)"
cores:
- easyrpg
systems:
- rpgmaker
# EasyRPG Player is an open-source interpreter for RPG Maker 2000 and 2003
# games. It does not require any BIOS or firmware files. All system data
# files are optional and improve the experience (MIDI music, RTP assets).
#
# The official libretro .info file declares zero firmware entries.
#
# Directory layout under <system_dir>:
# rtp/2000/ - RPG Maker 2000 Run-Time Package assets
# rtp/2003/ - RPG Maker 2003 Run-Time Package assets
# easyrpg-player/ - global config dir (auto-created)
# easyrpg-player/Soundfont/ - user-provided .sf2 files
# easyrpg-player/Font/ - user-provided font files
#
# RTP path resolution (filefinder_rtp.cpp:68-75, libretro build):
# 1. <core_assets_dir>/rtp/<version>
# 2. <system_dir>/rtp/<version>
# where <version> is "2000" or "2003" depending on the game
#
# MIDI playback uses FluidSynth (fluidlite) with this soundfont search
# order (decoder_fluidsynth.cpp:118-163):
# 1. User-configured soundfont from settings
# 2. "easyrpg.soundfont" (looked up via VFS, placed in game dir or system dir)
# 3. FluidSynth default soundfont setting
# 4. SDL_SOUNDFONTS environment variable
# 5. /usr/share/soundfonts/FluidR3_GM.sf2 (Linux desktop)
# 6. /usr/share/sounds/sf2/FluidR3_GM.sf2 (Linux desktop)
#
# WildMidi alternative MIDI (decoder_wildmidi.cpp:99-114, libretro build):
# 1. <system_dir>/wildmidi.cfg
# 2. <core_assets_dir>/wildmidi/wildmidi.cfg
#
# Games that include all their assets (FullPackageFlag) need nothing extra.
# Games relying on RPG Maker RTP need the matching RTP installed.
notes: |
No BIOS or firmware required. All files listed below are optional runtime
data that improve compatibility and audio quality.
RTP (Run-Time Package) contains default assets (sprites, music, sound effects)
shared by many RPG Maker games. Games that ship all their own assets do not
need it. The RPG Maker 2000 and 2003 RTPs are separate packages. EasyRPG
also supports translated/third-party RTP variants (Don Miguel, Kadokawa,
Enterbrain, RPG Advocate, etc.) and auto-detects which one a game uses.
For MIDI music, a General MIDI soundfont in SF2 format is needed. Place it
as easyrpg.soundfont in the system directory, or put any .sf2 file in
easyrpg-player/Soundfont/ and select it from the core settings menu.
files:
# ================================================================
# Soundfont for MIDI playback (optional)
# decoder_fluidsynth.cpp:125 - first custom path checked
# ================================================================
- name: "easyrpg.soundfont"
path: "easyrpg.soundfont"
required: false
source_ref: "decoder_fluidsynth.cpp:125, scene_logo.cpp:261"
note: >
General MIDI soundfont (SF2 format) for MIDI music playback. Many RPG
Maker games use MIDI for background music. Without a soundfont, MIDI
tracks are silent. Any GM-compatible .sf2 works. Can also be placed in
easyrpg-player/Soundfont/ with any filename.
# ================================================================
# WildMidi configuration (optional, alternative MIDI backend)
# decoder_wildmidi.cpp:99-114
# ================================================================
- name: "wildmidi.cfg"
path: "wildmidi.cfg"
required: false
source_ref: "decoder_wildmidi.cpp:103-104"
note: >
WildMidi configuration file pointing to GUS patch sets for MIDI
playback. Alternative to FluidSynth/SF2. Only used if WildMidi
support is compiled in and FluidSynth is not available or disabled.
# ================================================================
# RPG Maker 2000 RTP (optional, game-dependent)
# filefinder_rtp.cpp:73-74 - <system_dir>/rtp/2000
# ================================================================
- name: "RPG Maker 2000 RTP"
path: "rtp/2000/"
required: false
type: directory
source_ref: "filefinder_rtp.cpp:73-74"
note: >
Run-Time Package for RPG Maker 2000 games. Contains default tilesets,
character sprites, battle animations, music, and sound effects. Only
needed by games that reference RTP assets instead of bundling them.
Multiple RTP variants exist (Japanese official, English official,
Don Miguel English translation). EasyRPG auto-detects which variant
a game expects.
# ================================================================
# RPG Maker 2003 RTP (optional, game-dependent)
# filefinder_rtp.cpp:73-74 - <system_dir>/rtp/2003
# ================================================================
- name: "RPG Maker 2003 RTP"
path: "rtp/2003/"
required: false
type: directory
source_ref: "filefinder_rtp.cpp:73-74"
note: >
Run-Time Package for RPG Maker 2003 games. Same concept as the 2000
RTP but with additional battle system assets for the side-view ATB
combat. Multiple variants exist (Japanese official, English official,
RPG Advocate English, Vlad Russian, Korean, Traditional Chinese).

36
emulators/ecwolf.yml Normal file
View File

@@ -0,0 +1,36 @@
emulator: ECWolf
type: libretro
source: "https://github.com/libretro/ecwolf"
profiled_date: "2026-03-18"
core_version: ""
display_name: "Wolfenstein 3D (ECWolf)"
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).
files:
- name: "ecwolf.pk3"
description: "ECWolf engine data package"
required: true
md5: "c011b428819eea4a80b455c245a5a04d"
source_ref: "ecwolf_libretro.info:firmware0, version.h:MAIN_PK3, wl_iwad.cpp:SelectGame"
notes: >
Built from wadsrc/static/ via zipdir. Contains IWADINFO (game detection rules),
palettes (wolfpal, spearpal, blakepal, noahpal), map lump remappers (wl6map,
sodmap, etc.), DECORATE actor definitions, MAPINFO, SNDINFO, SNDSEQ, textures,
sprites, fonts, and localization strings. Without this file the core errors
with "Could not open ecwolf.pk3!". The md5 corresponds to the version shipped
with the current libretro buildbot release.

70
emulators/emuscv.yml Normal file
View File

@@ -0,0 +1,70 @@
emulator: EmuSCV
type: libretro
source: "https://github.com/wzcwzc/emuscv"
profiled_date: "2026-03-18"
core_version: ""
display_name: "EPOCH/YENO Super Cassette Vision"
display_name: "EPOCH/YENO Super Cassette Vision"
cores:
- emuscv
systems:
- scv
notes: |
EmuSCV is an Epoch/YENO Super Cassette Vision emulator for libretro,
based on eSCV by Takeda Toshiya.
BIOS loading in src/vm/scv/memory.cpp:initialize() (line 71-242). The core
tries multiple filenames in order: upd7801g.s01, upd7801g.bin, upd7801g.bios,
bios.rom, bios.bin. First successful open wins.
The BIOS is read as 0x1000 (4096) bytes into the bios[] array, mapped
read-only at CPU address 0x0000-0x0FFF (UPD7801 internal ROM area).
When CHECKBIOS core option is YES or AUTO, the core computes MD5 of the
loaded data and compares against 635a978fd40db9a18ee44eff449fc126. If the
hash does not match, the BIOS is rejected (zeroed out, bios_present=false).
When CHECKBIOS is NO, any file content is accepted.
The font/character data is embedded within the BIOS at offset 0x200
(memory.h:163 get_font() returns bios + 0x200). No separate font ROM file.
The core can start without BIOS (supports_no_game=true) but shows
"BIOS not found" or "Bad BIOS" on the OSD. Games will not run without it.
The .info file declares firmware_count = 1, firmware0_opt = false.
files:
- name: "upd7801g.s01"
system: scv
required: true
size: 4096 # 4 KB, UPD7801G internal ROM
md5: 635a978fd40db9a18ee44eff449fc126
note: "UPD7801G internal ROM (BIOS). Mapped at 0x0000-0x0FFF. Contains character font at offset 0x200."
source_ref: "src/vm/scv/memory.cpp:74, libretro-core-info/emuscv_libretro.info"
aliases:
- "upd7801g.bin"
- "upd7801g.bios"
- "bios.rom"
- "bios.bin"
platform_details:
cpu: "NEC UPD7801G"
bios_mapping:
upd7801g:
target: "0x0000-0x0FFF (CPU internal ROM, 4 KB)"
format: "raw binary"
source_ref: "src/vm/scv/memory.cpp:249"
notes: |
Memory map from memory.cpp:initialize():
0x0000-0x0FFF BIOS ROM (read-only)
0x2000-0x3FFF VRAM (8 KB)
0x8000-0xFF7F Cartridge ROM (up to 4 banks of 32 KB)
0xFF80-0xFFFF CPU internal RAM (128 bytes)
Font data lives inside the BIOS at offset 0x200, accessed via
get_font() for the VDP character rendering (src/vm/scv/vdp.cpp).
cartridge_loading:
formats: "cart, bin, rom, 0 (multi-file: .0/.1/.2/.3), zip"
banking: "4 banks of 32 KB via PC5/PC6 port lines"
source_ref: "src/vm/scv/memory.h, src/vm/scv/memory.cpp"

46
emulators/emux_chip8.yml Normal file
View File

@@ -0,0 +1,46 @@
emulator: "emux (CHIP-8)"
type: libretro
source: "https://github.com/libretro/emux"
profiled_date: "2026-03-18"
core_version: "0.1"
display_name: "CHIP-8 (Emux CHIP-8)"
cores:
- emux_chip8
systems:
- chip8
notes: |
emux is a multi-system emulator supporting CHIP-8, Game Boy, NES, and
Sega Master System as separate libretro cores. The CHIP-8 core
(emux_chip8) does not require any external BIOS or firmware files.
The CHIP-8 architecture has no real BIOS. The standard font/character
set (hex digits 0-F, 5 bytes each = 80 bytes) is hardcoded in
mach/chip8.c:40-57 as the char_mem[] array. On reset, this font data
is copied into the beginning of the 4 KB RAM (address 0x000-0x04F)
via memcpy in chip8_reset() at mach/chip8.c:105.
ROM loading: the game ROM is loaded via file_open(PATH_DATA, ...) in
chip8_init() at mach/chip8.c:68-74. On reset, ROM contents are copied
into RAM starting at address 0x200 (mach/chip8.c:113). The core
accepts .ch8, .bin, and .rom extensions (libretro/Makefile.rules:20).
Memory map from mach/chip8.c:17-20:
0x000-0x04F font/character data (hardcoded)
0x050-0x1FF unused
0x200-0xFFF program ROM + working RAM
The libretro frontend retrieves the system directory via
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (libretro/libretro.c:34) but
only uses it as a general config path, not for BIOS loading.
files: []
platform_details:
bios_mapping:
target: "none"
source_ref: "mach/chip8.c:40-57, mach/chip8.c:98-115"
notes: |
No external BIOS. The 80-byte character font is compiled into the
binary as char_mem[] and memcpy'd into RAM[0x000] on every reset.
This is standard CHIP-8 behavior -- all interpreters embed the font.

8
emulators/emux_gb.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "emux_gb"
type: alias
alias_of: "gambatte"
profiled_date: "2026-03-18"
core_version: "0.1"
display_name: "Nintendo - Game Boy / Color (Emux GB)"
note: "This core uses the same BIOS/firmware as gambatte. See emulators/gambatte.yml for details."
files: []

8
emulators/emux_nes.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "emux_nes"
type: alias
alias_of: "fceumm"
profiled_date: "2026-03-18"
core_version: "0.1"
display_name: "Nintendo - NES / Famicom (Emux NES)"
note: "This core uses the same BIOS/firmware as fceumm. See emulators/fceumm.yml for details."
files: []

8
emulators/emux_sms.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "emux_sms"
type: alias
alias_of: "gearsystem"
profiled_date: "2026-03-18"
core_version: "0.1"
display_name: "Sega - Master System (Emux SMS)"
note: "This core uses the same BIOS/firmware as gearsystem. See emulators/gearsystem.yml for details."
files: []

312
emulators/ep128emu.yml Normal file
View File

@@ -0,0 +1,312 @@
emulator: ep128emu-core
type: libretro
source: "https://github.com/libretro/ep128emu-core"
profiled_date: "2026-03-18"
core_version: "v1.2.10"
display_name: "Enterprise - 64/128 (ep128emu)"
cores:
- ep128emu_core
systems:
- enterprise-64
- enterprise-128
- videoton-tvc
- amstrad-cpc
- zx-spectrum
# ep128emu-core emulates Enterprise 64/128, Videoton TVC, Amstrad CPC 464/664/6128,
# and ZX Spectrum 48/128. All ROMs are optional because the core ships built-in
# fallback ROMs compiled into roms.hpp. External ROM files override the built-ins
# and provide better accuracy for some systems.
#
# ROM path: <system_dir>/ep128emu/roms/
#
# Machine selection (core/core.cpp:62-118):
# Content file extension determines machine type:
# .cas/.tap/.bas/.128/.com/.trn -> Enterprise
# .tvcwav/.cas(TVC) -> Videoton TVC
# .cdt/.tzx -> Amstrad CPC or ZX Spectrum (autodetect)
# .img/.dsk -> Enterprise disk (default) or CPC/TVC depending on content
#
# Enterprise ROM layout (core/core.cpp:195-307):
# EP128 (default): exos21.rom (segments 0-1) + basic21.rom (segment 4/5)
# EP64: exos20.rom (segments 0-1) + basic20.rom (segment 4/5)
# EP128 enhanced: exos24uk.rom (segments 0-3, 64K)
# Disk mode: exdos13.rom (segments 0x20-0x21)
# IS-DOS mode: exdos14isdos10uk.rom (segments 0x20-0x21)
# File I/O mode: epfileio.rom (segment 0x10)
# DTF mode: zt19uk.rom (segments 0x40-0x41)
# Hungarian locale: hun.rom + epdos16f.rom
# German locale: brd.rom
#
# Built-in fallbacks (roms/roms.hpp:46516-46538):
# All 22 ROMs have compiled-in defaults. The core prepends "_default_" to
# the filename and looks up the builtin_rom map when no external file is found.
# This means the core works out of the box without any user-supplied ROMs.
#
# TOSEC alternate names (core/core.hpp:80-118):
# The core tries TOSEC naming conventions as fallback before using built-in ROMs.
# For example exos21.rom -> "Expandible OS v2.1 (1985)(Intelligent Software).bin"
# CPC ROMs can also be split into page-sized files (OS.ROM + BASIC.ROM).
notes: |
All ROMs go under <system_dir>/ep128emu/roms/. The core has built-in ROM
fallbacks for every file, so it works without any user-supplied ROMs.
External ROMs provide byte-exact originals vs the built-in copies.
Enterprise EP128 is the default machine. EP64 is selected when content
requires it. Machine type can also be forced via core options.
Hungarian and German locale ROMs are loaded automatically when content
metadata indicates the locale. The IS-DOS disk system is an alternative
to the standard EXDOS disk controller.
files:
# ============================================================
# Enterprise 64/128 - EXOS (Expandible OS)
# ============================================================
- name: exos21.rom
path: ep128emu/roms/exos21.rom
md5: f36f24cbb87745fbd2714e4df881db09
required: false
system: enterprise-128
has_builtin: true
note: "Enterprise 128 EXOS 2.1. Default OS for EP128 machines."
source_ref: "core/core.cpp:234-237"
- name: exos20.rom
path: ep128emu/roms/exos20.rom
md5: 5ad3baaad3b5156d6b60b34229a676fb
required: false
system: enterprise-64
has_builtin: true
note: "Enterprise 64 EXOS 2.0. Used when EP64 machine type is selected."
source_ref: "core/core.cpp:226-229"
- name: exos24uk.rom
path: ep128emu/roms/exos24uk.rom
md5: 55af78f877a21ca45eb2df68a74fcc60
required: false
system: enterprise-128
has_builtin: true
note: "Enterprise 128 EXOS 2.4 (UK). Used when enhanced ROM mode is enabled. 64K, loaded across segments 0-3."
source_ref: "core/core.cpp:214-221"
# ============================================================
# Enterprise 64/128 - BASIC interpreter
# ============================================================
- name: basic21.rom
path: ep128emu/roms/basic21.rom
md5: e972fe42b398c9ff1d93ff014786aec6
required: false
system: enterprise-128
has_builtin: true
note: "Enterprise 128 BASIC 2.1. Loaded when cartridge mode is active (default)."
source_ref: "core/core.cpp:248,276"
- name: basic20.rom
path: ep128emu/roms/basic20.rom
md5: 8e18edce4a7acb2c33cc0ab18f988482
required: false
system: enterprise-64
has_builtin: true
note: "Enterprise 64 BASIC 2.0. Used with EP64 machine type."
source_ref: "core/core.cpp:246,264,274"
# ============================================================
# Enterprise 64/128 - disk controllers
# ============================================================
- name: exdos13.rom
path: ep128emu/roms/exdos13.rom
md5: ddff70c014d1958dc75378b6c9aab6f8
required: false
system: enterprise-128
has_builtin: true
note: "EXDOS 1.3 disk controller. Loaded for EP128_DISK and EP64_DISK modes. 32K across segments 0x20-0x21."
source_ref: "core/core.cpp:303-306"
- name: exdos14isdos10uk.rom
path: ep128emu/roms/exdos14isdos10uk.rom
required: false
system: enterprise-128
has_builtin: true
note: "EXDOS 1.4 + IS-DOS 1.0 (UK). Used for IS-DOS disk mode instead of exdos13.rom."
source_ref: "core/core.cpp:295-298"
# ============================================================
# Enterprise 64/128 - file I/O and extensions
# ============================================================
- name: epfileio.rom
path: ep128emu/roms/epfileio.rom
md5: a68ebcbc73a4d2178d755b7755bf18fe
required: false
system: enterprise-128
has_builtin: true
bundled: true
note: "Direct file I/O extension. Loaded for EP128_FILE and EP64_FILE modes. Source included in roms/ directory."
source_ref: "core/core.cpp:283-284"
- name: zt19uk.rom
path: ep128emu/roms/zt19uk.rom
md5: 228540b6be83ae2acd7569c8ff0f91d0
required: false
system: enterprise-128
has_builtin: true
note: "ZozoTools 1.9 (UK). Loaded for DTF (direct tape file) mode. 32K across segments 0x40-0x41."
source_ref: "core/core.cpp:287-290"
# ============================================================
# Enterprise 64/128 - locale extensions
# ============================================================
- name: hun.rom
path: ep128emu/roms/hun.rom
md5: 22167938f142c222f40992839aa21a06
required: false
system: enterprise-128
has_builtin: true
note: "Hungarian language extension. Auto-loaded when content locale is Hungarian."
source_ref: "core/core.cpp:242-243"
- name: epdos16f.rom
path: ep128emu/roms/epdos16f.rom
required: false
system: enterprise-128
has_builtin: true
note: "EP-DOS 1.6f. Provides HFONT and CLKOFF for Hungarian locale. 32K across segments 0x06-0x07."
source_ref: "core/core.cpp:252-255"
- name: brd.rom
path: ep128emu/roms/brd.rom
md5: 6af0402906944fd134004b85097c8524
required: false
system: enterprise-128
has_builtin: true
note: "German (BRD) language extension. Auto-loaded when content locale is German."
source_ref: "core/core.cpp:260-261"
# ============================================================
# Enterprise 64/128 - optional extras (in .info, not in source)
# ============================================================
- name: epd19hft.rom
path: ep128emu/roms/epd19hft.rom
md5: 12cfc9c7e48c8a16c2e09edbd926d467
required: false
system: enterprise-128
note: "EP-DOS 1.9 with Hungarian font. Listed in .info file as optional firmware."
source_ref: "ep128emu_core_libretro.info:firmware8"
- name: zt19hfnt.rom
path: ep128emu/roms/zt19hfnt.rom
md5: 653daaf7b9b29c2c4e577f489580f247
required: false
system: enterprise-128
note: "ZozoTools 1.9 with Hungarian font. Listed in .info file as optional firmware."
source_ref: "ep128emu_core_libretro.info:firmware9"
# ============================================================
# Videoton TVC
# ============================================================
- name: tvc22_sys.rom
path: ep128emu/roms/tvc22_sys.rom
md5: 8c54285f541930cde766069942bad0f2
required: false
system: videoton-tvc
has_builtin: true
note: "TVC system ROM v2.2. Main BIOS for all TVC modes."
source_ref: "core/core.cpp:313-314"
- name: tvc22_ext.rom
path: ep128emu/roms/tvc22_ext.rom
md5: 5ce95a26ceed5bec73995d83568da9cf
required: false
system: videoton-tvc
has_builtin: true
note: "TVC extension ROM v2.2. Loaded alongside tvc22_sys.rom."
source_ref: "core/core.cpp:315-316"
- name: tvcfileio.rom
path: ep128emu/roms/tvcfileio.rom
md5: a2cf86ba8e7fc58b242137fe59036832
required: false
system: videoton-tvc
has_builtin: true
bundled: true
note: "TVC direct file I/O extension. Used for TVC64_FILE mode. Source included in roms/ directory."
source_ref: "core/core.cpp:319-320"
- name: tvc_dos12d.rom
path: ep128emu/roms/tvc_dos12d.rom
md5: 88dc7876d584f90e4106f91444ab23b7
required: false
system: videoton-tvc
has_builtin: true
note: "TVC DOS 1.2d. Loaded for TVC64_DISK mode."
source_ref: "core/core.cpp:324-325"
# ============================================================
# Amstrad CPC
# ============================================================
- name: cpc464.rom
path: ep128emu/roms/cpc464.rom
md5: a993f85b88ac4350cf4d41554e87fe4f
required: false
system: amstrad-cpc
has_builtin: true
note: "CPC 464 combined ROM (OS + BASIC). 32K loaded at segments 0x10 (OS) and 0x00 (BASIC) with offset."
source_ref: "core/core.cpp:335-338"
- name: cpc664.rom
path: ep128emu/roms/cpc664.rom
md5: 5a384a2310f472c7857888371c00ed66
required: false
system: amstrad-cpc
has_builtin: true
note: "CPC 664 combined ROM (OS + BASIC). Used for CPC_664_DISK mode."
source_ref: "core/core.cpp:343-346"
- name: cpc6128.rom
path: ep128emu/roms/cpc6128.rom
md5: b96280dc6c95a48857b4b8eb931533ae
required: false
system: amstrad-cpc
has_builtin: true
note: "CPC 6128 combined ROM (OS + BASIC). Default CPC machine when no specific model requested."
source_ref: "core/core.cpp:352-355"
- name: cpc_amsdos.rom
path: ep128emu/roms/cpc_amsdos.rom
md5: 25629dfe870d097469c217b95fdc1c95
required: false
system: amstrad-cpc
has_builtin: true
note: "AMSDOS disk controller ROM. Loaded for CPC_DISK and CPC_664_DISK modes."
source_ref: "core/core.cpp:359-360"
# ============================================================
# ZX Spectrum
# ============================================================
- name: zx128.rom
path: ep128emu/roms/zx128.rom
md5: 85fede415f4294cc777517d7eada482e
required: false
system: zx-spectrum
has_builtin: true
note: "ZX Spectrum 128K ROM. 32K loaded at segments 0x00-0x01."
source_ref: "core/core.cpp:382-385"
- name: zx48.rom
path: ep128emu/roms/zx48.rom
md5: 4c42a2f075212361c3117015b107ff68
required: false
system: zx-spectrum
has_builtin: true
note: "ZX Spectrum 48K ROM. Used for ZX16 and ZX48 modes."
source_ref: "core/core.cpp:389-390"

48
emulators/fake08.yml Normal file
View File

@@ -0,0 +1,48 @@
emulator: FAKE-08
type: libretro
source: "https://github.com/jtothebell/fake-08"
profiled_date: "2026-03-18"
core_version: "v0.0.2.19"
display_name: "PICO-8 (FAKE-08)"
cores:
- fake08
systems:
- pico8
notes: |
FAKE-08 is an open-source PICO-8 compatible runtime for running .p8 and
.p8.png cartridges on platforms where the official PICO-8 binary is not
available (3DS, Vita, Switch, Wii U, various handhelds).
The core retrieves RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY in
retro_set_environment() (libretro.cpp:162-163) but never uses the value.
No file is loaded from the system directory. The PICO-8 boot sequence,
global Lua functions, and default cart menu are compiled directly into the
binary as string constants (p8GlobalLuaFunctions.h, DefaultCart.h).
When no ROM is passed (supports_no_game = true), the core queues its
built-in BIOS cart "__FAKE08-BIOS.p8" (libretro.cpp:751). This is not
an external file -- it is generated internally by the VM.
The core accepts .p8 (text) and .png (cartridge-as-image) formats
(libretro.cpp:258). Content is loaded either via the libretro data buffer
or full path depending on the _NEED_FULL_PATH_ compile flag.
files: []
platform_details:
cartridge_format:
extensions: "p8, png"
source_ref: "platform/libretro/libretro.cpp:258"
notes: |
.p8 is the PICO-8 text cartridge format containing Lua code, gfx,
gff, map, sfx, and music sections. .png is the cartridge-as-image
format where cart data is steganographically encoded in the image.
runtime:
source_ref: "source/vm.h, source/p8GlobalLuaFunctions.h"
notes: |
The FAKE-08 VM reimplements the PICO-8 API (128x128 screen, 16 colors,
4-channel audio, Lua scripting) entirely in C++. The built-in BIOS
provides a cart browser and error display. Audio runs at 22050 Hz
with save state support via custom serialization (libretro.cpp:517-736).

View File

@@ -0,0 +1,8 @@
emulator: "fbalpha2012"
type: alias
alias_of: "fbneo"
profiled_date: "2026-03-18"
core_version: "v0.2.97.29"
display_name: "Arcade (FB Alpha 2012)"
note: "This core uses the same BIOS/firmware as fbneo. See emulators/fbneo.yml for details."
files: []

View File

@@ -0,0 +1,8 @@
emulator: "fbalpha2012_cps1"
type: alias
alias_of: "fbneo"
profiled_date: "2026-03-18"
core_version: "v0.2.97.28"
display_name: "Arcade (FB Alpha 2012 CPS-1)"
note: "This core uses the same BIOS/firmware as fbneo. See emulators/fbneo.yml for details."
files: []

View File

@@ -0,0 +1,8 @@
emulator: "fbalpha2012_cps2"
type: alias
alias_of: "fbneo"
profiled_date: "2026-03-18"
core_version: "v0.2.97.28"
display_name: "Arcade (FB Alpha 2012 CPS-2)"
note: "This core uses the same BIOS/firmware as fbneo. See emulators/fbneo.yml for details."
files: []

View File

@@ -0,0 +1,8 @@
emulator: "fbalpha2012_cps3"
type: alias
alias_of: "fbneo"
profiled_date: "2026-03-18"
core_version: "v0.2.97.29"
display_name: "Arcade (FB Alpha 2012 CPS-3)"
note: "This core uses the same BIOS/firmware as fbneo. See emulators/fbneo.yml for details."
files: []

View File

@@ -0,0 +1,8 @@
emulator: "fbalpha2012_neogeo"
type: alias
alias_of: "fbneo"
profiled_date: "2026-03-18"
core_version: "v0.2.97.29"
display_name: "Arcade (FB Alpha 2012 Neo Geo)"
note: "This core uses the same BIOS/firmware as fbneo. See emulators/fbneo.yml for details."
files: []

1346
emulators/fbneo.yml Normal file

File diff suppressed because it is too large Load Diff

55
emulators/fceumm.yml Normal file
View File

@@ -0,0 +1,55 @@
emulator: FCEUmm
type: libretro
source: "https://github.com/libretro/libretro-fceumm"
profiled_date: "2026-03-18"
core_version: "SVN"
display_name: "Nintendo - NES / Famicom (FCEUmm)"
systems: [nintendo-nes, nintendo-fds]
notes: |
FCEUmm (FCE Ultra mappers modified) is a NES/Famicom emulator.
NES cartridge games need no BIOS. Famicom Disk System games require
the FDS BIOS ROM (disksys.rom, 8 KB) loaded from the system directory.
Game Genie emulation is an optional core feature (disabled by default)
that requires gamegenie.nes in the system directory.
An optional external palette file (nes.pal, 192 bytes, 64 RGB triplets)
can override the built-in NES palette when the core option is set to Custom.
NstDatabase.xml is NOT used by FCEUmm (that is Nestopia's database).
File path construction: src/general.c FCEU_MakeFName() joins the
system directory (RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY) with each
filename directly - no subdirectories.
files:
# --- Famicom Disk System BIOS (required for FDS games) ---
- name: "disksys.rom"
system: nintendo-fds
description: "FDS BIOS ROM"
required: true
size: 8192
md5: "ca30b50f880eb660a320674ed365ef7a"
sha1: "57fe1bdee955bb48d357e463ccbf129496930b62"
source_ref: "src/fds.c:636-667 (FDSLoad), src/general.c:64-66 (FCEUMKF_FDSROM)"
notes: "Loaded at 0xE000, mapped as 8 KB PRG bank 0. Load fails with error if missing or short read."
# --- Game Genie ROM (optional, core option fceumm_game_genie) ---
- name: "gamegenie.nes"
system: nintendo-nes
description: "Game Genie add-on cartridge ROM"
required: false
size: 24592
md5: "7f98d77d7a094ad7d069b74bd553ec98"
sha1: "f430a0d752a9fa0c7032db8131f9090d18f71779"
source_ref: "src/cart.c:351-389 (OpenGenie), src/general.c:60-62 (FCEUMKF_GGROM)"
notes: "iNES format ROM (4 KB PRG + 256 bytes CHR). Core option disabled by default. Does not apply to FDS or arcade content."
# --- Custom palette (optional, core option fceumm_palette) ---
- name: "nes.pal"
system: nintendo-nes
description: "External NES color palette"
required: false
size: 192
md5: "aaf3666e4ed478e2964b46d6a7aa27ad"
sha1: "37027d92e1015b82a7dc5c43e9f1649a961577ab"
source_ref: "src/general.c:68-70 (FCEUMKF_PALETTE), src/drivers/libretro/libretro.c:1791"
notes: "64 RGB triplets (64 x 3 bytes). Only loaded when palette core option is set to Custom. Multiple valid palettes exist."

19
emulators/ffmpeg.yml Normal file
View File

@@ -0,0 +1,19 @@
emulator: FFmpeg
type: utility
source: "https://github.com/libretro/RetroArch"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "FFmpeg"
cores:
- ffmpeg
systems: []
notes: |
FFmpeg core is a media player built into RetroArch using libavcodec,
libavformat, and libswscale. Plays video and audio files directly
within the RetroArch interface.
No BIOS or system files required. Codec support depends on the
FFmpeg libraries linked at build time.
files: []

45
emulators/fixgb.yml Normal file
View File

@@ -0,0 +1,45 @@
emulator: fixGB
type: libretro
source: "https://github.com/libretro/fixGB"
profiled_date: "2026-03-18"
core_version: "Alpha v0.8.2"
display_name: "Nintendo - Game Boy / Color (fixGB)"
cores:
- fixgb
systems:
- nintendo-gbc
notes: |
fixGB is a Game Boy / Game Boy Color emulator by FIX94, currently at
alpha v0.8.1. It supports .gb, .gbc, and .gbs (Game Boy Sound) files.
The core optionally loads "gbc_bios.bin" (CGB boot ROM) from the
system directory. In the libretro port, doOpenCGBBootrom() in
libretro.c:246-254 resolves the path via
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY + "/gbc_bios.bin".
memInitCGBBootrom() in mem.c:567-586 validates the file: it must be
at least 0x900 (2304) bytes. If present, 0x900 bytes are read into
memCGBBootrom[] and cgbBootromEnabled is set to true. The boot ROM
plays the Game Boy Color startup animation before handing off to the
game.
If the file is missing or too small, the core skips the boot sequence
and starts games directly. The BIOS is optional -- games run fine
without it.
Despite the core name suggesting general Game Boy support, the only
BIOS file referenced is the GBC boot ROM. There is no DMG (original
Game Boy) boot ROM support in the source.
files:
# --- GBC boot ROM (optional, enables startup animation) ---
- name: "gbc_bios.bin"
system: nintendo-gbc
description: "Game Boy Color (CGB-001) boot ROM"
required: false
size: 2304
md5: "dbfce9db9deaa2567f6a84fde55f9680"
sha1: "1293d68bf9643bc4f36954c1e80e38f39864528d"
source_ref: "libretro/libretro.c:246-254 (doOpenCGBBootrom), mem.c:567-586 (memInitCGBBootrom)"
notes: "Must be at least 0x900 (2304) bytes. Only the first 0x900 bytes are read. Enables cgbBootromEnabled flag for boot animation. Disabled via memDisableCGBBootrom() when register write occurs."

8
emulators/fixnes.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "fixnes"
type: alias
alias_of: "fceumm"
profiled_date: "2026-03-18"
core_version: "Alpha v1.3.1"
display_name: "Nintendo - NES / Famicom (fixNES)"
note: "This core uses the same BIOS/firmware as fceumm. See emulators/fceumm.yml for details."
files: []

188
emulators/flycast.yml Normal file
View File

@@ -0,0 +1,188 @@
emulator: Flycast
type: standalone + libretro
source: "https://github.com/flyinghead/flycast"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Sega - Dreamcast/Naomi (Flycast)"
systems:
- sega-dreamcast
- sega-naomi
- sega-naomi2
- sega-atomiswave
- sega-systemsp
notes: |
Flycast has a built-in HLE BIOS (reios) for Dreamcast that can boot most
games without real BIOS files. Arcade systems (NAOMI, NAOMI2, Atomiswave,
System SP) require MAME-format BIOS ROM archives.
Hikaru and Triforce are NOT supported by Flycast.
BIOS file search uses prefix + name pattern. The emulator looks in configured
"Content Path" directories for these files (standalone) or the system directory
(libretro).
File loading logic: core/hw/flashrom/nvmem.cpp loadFiles() and
core/hw/naomi/naomi_cart.cpp loadBios().
The prefix is determined by platform (nvmem.cpp:36-49):
Dreamcast -> dc_
NAOMI -> naomi_
NAOMI 2 -> naomi2_
Atomiswave -> aw_
Boot ROM search pattern (nvmem.cpp:287):
{prefix}boot.bin, {prefix}boot.bin.bin, {prefix}bios.bin, {prefix}bios.bin.bin
files:
# -------------------------------------------------------
# Sega Dreamcast
# -------------------------------------------------------
- name: "dc_boot.bin"
system: sega-dreamcast
required: false
size: 2097152 # 2 MB
note: "Dreamcast boot ROM. HLE BIOS (reios) used as fallback."
source_ref: "core/hw/flashrom/nvmem.cpp:287"
- name: "dc_bios.bin"
system: sega-dreamcast
required: false
size: 2097152
note: "Alternate name for Dreamcast boot ROM."
source_ref: "core/hw/flashrom/nvmem.cpp:287"
- name: "dc_flash.bin"
system: sega-dreamcast
required: false
size: 131072 # 128 KB
note: "Dreamcast flash memory (settings, saves). Created if missing."
source_ref: "core/hw/flashrom/nvmem.cpp:246"
# -------------------------------------------------------
# Sega NAOMI
# -------------------------------------------------------
- name: "naomi_boot.bin"
system: sega-naomi
required: false
size: 2097152 # 2 MB
note: "NAOMI boot ROM (flat binary). Alternative to naomi.zip."
source_ref: "core/hw/flashrom/nvmem.cpp:287"
- name: "naomi.zip"
system: sega-naomi
required: true
note: >
NAOMI system BIOS archive (MAME format). Contains region-specific
BIOS ROMs: epr-21576h.ic27 (Japan), epr-21577h.ic27 (USA),
epr-21578h.ic27 (Export), epr-21579d.ic27 (Korea).
source_ref: "core/hw/naomi/naomi_roms.cpp:87-143"
# NAOMI special BIOS sets (game-specific, loaded from game archive or standalone)
- name: "airlbios.zip"
system: sega-naomi
required: false
note: "Airline Pilots Deluxe BIOS. epr-21802.ic27 (Export), epr-21801.ic27 (USA)."
source_ref: "core/hw/naomi/naomi_roms.cpp:30-37"
- name: "f355bios.zip"
system: sega-naomi
required: false
note: "Ferrari F355 Challenge BIOS. Japan/USA/Export variants."
source_ref: "core/hw/naomi/naomi_roms.cpp:49-58"
- name: "f355dlx.zip"
system: sega-naomi
required: false
note: "Ferrari F355 Challenge Deluxe BIOS. Japan/USA/Export variants."
source_ref: "core/hw/naomi/naomi_roms.cpp:60-74"
- name: "hod2bios.zip"
system: sega-naomi
required: false
note: "House of the Dead 2 BIOS. Japan/USA/Export variants."
source_ref: "core/hw/naomi/naomi_roms.cpp:76-85"
- name: "naomigd.zip"
system: sega-naomi
required: false
note: "NAOMI GD-ROM BIOS. Used by GD-ROM based NAOMI games."
source_ref: "core/hw/naomi/naomi_roms.cpp:158-181"
# -------------------------------------------------------
# Sega NAOMI 2
# -------------------------------------------------------
- name: "naomi2_boot.bin"
system: sega-naomi2
required: false
size: 2097152 # 2 MB
note: "NAOMI 2 boot ROM (flat binary). Alternative to naomi2.zip."
source_ref: "core/hw/flashrom/nvmem.cpp:287"
- name: "naomi2.zip"
system: sega-naomi2
required: true
note: >
NAOMI 2 system BIOS archive (MAME format). Contains region-specific
ROMs: epr-23605c.ic27 (Japan), epr-23607c.ic27 (USA),
epr-23608c.ic27 (Export), epr-23609b.ic27 (Korea).
source_ref: "core/hw/naomi/naomi_roms.cpp:183-201"
# -------------------------------------------------------
# Sega Atomiswave
# -------------------------------------------------------
- name: "awbios.zip"
system: sega-atomiswave
required: true
note: >
Atomiswave system BIOS archive (MAME format). Contains
bios0.ic23 (Sammy, 128 KB). BIOS size is 128 KB.
source_ref: "core/hw/naomi/naomi_roms.cpp:39-48"
# -------------------------------------------------------
# Sega System SP
# -------------------------------------------------------
- name: "segasp.zip"
system: sega-systemsp
required: true
note: >
Sega System SP BIOS archive (MAME format). Contains
epr-24328a.ic50 (BOOT VER 2.01, 2 MB) and region-specific
EEPROM files mb_eeprom_us.ic54s, mb_eeprom_exp.ic54s.
source_ref: "core/hw/naomi/naomi_roms.cpp:204-218"
platform_details:
dreamcast:
bios_size: 2097152 # 2 MB
flash_size: 131072 # 128 KB
ram_size: 16777216 # 16 MB (32 MB with mod)
hle_available: true
source_ref: "core/emulator.cpp:446-452"
naomi:
bios_size: 2097152 # 2 MB
flash_size: 32768 # 32 KB (battery-backed SRAM)
ram_size: 33554432 # 32 MB
hle_available: false
source_ref: "core/emulator.cpp:453-459"
naomi2:
bios_size: 2097152 # 2 MB
flash_size: 32768 # 32 KB (battery-backed SRAM)
ram_size: 33554432 # 32 MB
eram_size: 33554432 # 32 MB (ELAN)
hle_available: false
source_ref: "core/emulator.cpp:460-467"
atomiswave:
bios_size: 131072 # 128 KB
flash_size: 131072 # 128 KB (SRAM)
ram_size: 16777216 # 16 MB
hle_available: false
source_ref: "core/emulator.cpp:468-474"
systemsp:
bios_size: 2097152 # 2 MB
flash_size: 131072 # 128 KB (SRAM)
ram_size: 33554432 # 32 MB
hle_available: false
source_ref: "core/emulator.cpp:475-481"

188
emulators/fmsx.yml Normal file
View File

@@ -0,0 +1,188 @@
emulator: fMSX
type: libretro
source: "https://github.com/libretro/fmsx-libretro"
profiled_date: "2026-03-18"
core_version: "6.0"
display_name: "Microsoft - MSX (fMSX)"
cores:
- fmsx
systems:
- msx
- msx2
- msx2plus
# fMSX is a standalone MSX emulator by Marat Fayzullin, ported to libretro.
# Supports MSX1, MSX2, and MSX2+ hardware models. Default model is MSX2+.
#
# ROM loading (fMSX/MSX.c:688-750, ResetMSX):
# The core sets ProgDir = RetroArch system_directory, then chdir(ProgDir)
# before calling LoadROM(). All BIOS files must be placed directly in the
# system directory root (no subdirectories).
#
# Model selection (libretro.c:731-757):
# Core option "fmsx_machine_type" picks MSX1/MSX2/MSX2+. Default is MSX2+.
# MSX1 loads MSX.ROM (32 KB main BIOS).
# MSX2 loads MSX2.ROM (32 KB) + MSX2EXT.ROM (16 KB extension).
# MSX2+ loads MSX2P.ROM (32 KB) + MSX2PEXT.ROM (16 KB extension).
#
# Disk support (fMSX/MSX.c:780):
# DISK.ROM is loaded when "fmsx_simbdos" option is enabled (MSX_PATCHBDOS).
# Without it, .dsk files won't boot. The core shows a warning if DISK.ROM
# is missing when loading disk content.
#
# Optional ROMs (fMSX/MSX.c:526-582):
# KANJI.ROM - Kanji font (128 KB), loaded unconditionally if present
# FMPAC.ROM - FM-PAC cartridge (64 KB), loaded into first free slot
# MSXDOS2.ROM - MSX-DOS 2 (64 KB), loaded when "fmsx_dos2" enabled and MSX2+
# PAINTER.ROM - Paint utility (64 KB), loaded for MSX2/MSX2+
# RS232.ROM - RS-232C serial (16 KB + 256 B), loaded into slot 3:3
# GMASTER2.ROM - Konami GameMaster2 cart, loaded when "fmsx_game_master" enabled
# GMASTER.ROM - Konami GameMaster (fallback if GMASTER2.ROM missing)
# CMOS.ROM - RTC settings persistence, saved/loaded automatically
#
# All ROMs listed below are bundled in fMSX/ROMs/ inside the repo source.
# They are the standard C-BIOS-compatible generic MSX BIOS set from fMSX.
notes: |
Place all ROM files directly in the RetroArch system directory. No subdirectory
needed. The core does chdir() to system_dir before loading.
The default model is MSX2+, which needs MSX2P.ROM and MSX2PEXT.ROM. If you only
play cartridge ROMs, these two files are sufficient. For disk games (.dsk), also
add DISK.ROM and enable "Simulate DiskROM" in core options.
KANJI.ROM and FMPAC.ROM are loaded automatically when present, no option needed.
files:
# -- MSX1 BIOS --
- name: MSX.ROM
size: 32768
md5: aa95aea2563cd5ec0a0919b44cc17d47
sha1: 409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498
required: true
system: msx
bundled: true
note: "MSX1 main BIOS (32 KB). Loaded for MSX1 model (fMSX/MSX.c:693)."
source_ref: "fMSX/ROMs/MSX.ROM"
# -- MSX2 BIOS --
- name: MSX2.ROM
size: 32768
md5: ec3a01c91f24fbddcbcab0ad301bc9ef
sha1: 6103b39f1e38d1aa2d84b1c3219c44f1abb5436e
required: true
system: msx2
bundled: true
note: "MSX2 main BIOS (32 KB). Loaded for MSX2 model (fMSX/MSX.c:709)."
source_ref: "fMSX/ROMs/MSX2.ROM"
- name: MSX2EXT.ROM
size: 16384
md5: 2183c2aff17cf4297bdb496de78c2e8a
sha1: 5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02
required: true
system: msx2
bundled: true
note: "MSX2 extension BIOS (16 KB). Loaded alongside MSX2.ROM (fMSX/MSX.c:710)."
source_ref: "fMSX/ROMs/MSX2EXT.ROM"
# -- MSX2+ BIOS (default model) --
- name: MSX2P.ROM
size: 32768
md5: 6d8c0ca64e726c82a4b726e9b01cdf1e
sha1: e2fbd56e42da637609d23ae9df9efd1b4241b18a
required: true
system: msx2plus
bundled: true
note: "MSX2+ main BIOS (32 KB). Loaded for MSX2+ model, the default (fMSX/MSX.c:731)."
source_ref: "fMSX/ROMs/MSX2P.ROM"
- name: MSX2PEXT.ROM
size: 16384
md5: 7c8243c71d8f143b2531f01afa6a05dc
sha1: fe0254cbfc11405b79e7c86c7769bd6322b04995
required: true
system: msx2plus
bundled: true
note: "MSX2+ extension BIOS (16 KB). Loaded alongside MSX2P.ROM (fMSX/MSX.c:732)."
source_ref: "fMSX/ROMs/MSX2PEXT.ROM"
# -- Disk support --
- name: DISK.ROM
size: 16384
md5: 80dcd1ad1a4cf65d64b7ba10504e8190
sha1: 032cb1c1c75b9a191fa1230978971698d9d2a17f
required: false
bundled: true
note: "Disk controller BIOS (16 KB). Needed for .dsk content. Enable 'Simulate DiskROM' option (fMSX/MSX.c:780)."
source_ref: "fMSX/ROMs/DISK.ROM"
# -- Optional expansion ROMs --
- name: FMPAC.ROM
size: 65536
md5: 6f69cc8b5ed761b03afd78000dfb0e19
sha1: 9d789166e3caf28e4742fe933d962e99618c633d
required: false
bundled: true
note: "FM-PAC cartridge ROM (64 KB, YM2413 FM synthesis). Auto-loaded into first free slot (fMSX/MSX.c:557)."
source_ref: "fMSX/ROMs/FMPAC.ROM"
- name: KANJI.ROM
size: 131072
md5: febe8782b466d7c3b16de6d104826b34
sha1: 84a645becec0a25d3ab7a909cde1b242699a8662
required: false
bundled: true
note: "Kanji font ROM (128 KB). Auto-loaded if present, no option needed (fMSX/MSX.c:530)."
source_ref: "fMSX/ROMs/KANJI.ROM"
- name: MSXDOS2.ROM
size: 65536
md5: 6418d091cd6907bbcf940324339e43bb
sha1: c36c9e0f96738a340381e23b4f97245388801a46
required: false
bundled: true
note: "MSX-DOS 2 ROM (64 KB). Loaded when 'fmsx_dos2' option enabled and model is MSX2+ (fMSX/MSX.c:545)."
source_ref: "fMSX/ROMs/MSXDOS2.ROM"
- name: PAINTER.ROM
size: 65536
md5: 403cdea1cbd2bb24fae506941f8f655e
sha1: 7fd2a28c4fdaeb140f3c8c8fb90271b1472c97b9
required: false
bundled: true
note: "Paint utility ROM (64 KB). Auto-loaded for MSX2 and MSX2+ models (fMSX/MSX.c:552)."
source_ref: "fMSX/ROMs/PAINTER.ROM"
- name: RS232.ROM
size: 16640
md5: 279efd1eae0d358eecd4edc7d9adedf3
sha1: 7aec0134ad6a5177f4056fcb6047083e8e00529b
required: false
bundled: true
note: "RS-232C serial interface ROM (16 KB + 256 B). Loaded into slot 3:3 (fMSX/MSX.c:533)."
source_ref: "fMSX/ROMs/RS232.ROM"
# -- GameMaster (not bundled, requires core option) --
- name: GMASTER2.ROM
required: false
bundled: false
note: "Konami GameMaster2 cartridge ROM. Loaded when 'fmsx_game_master' option enabled (fMSX/MSX.c:576)."
- name: GMASTER.ROM
required: false
bundled: false
note: "Konami GameMaster cartridge ROM. Fallback if GMASTER2.ROM is missing (fMSX/MSX.c:580)."
# -- CMOS persistence (auto-generated, not a BIOS) --
- name: CMOS.ROM
required: false
bundled: false
note: "RTC/CMOS settings. Auto-saved by the core on exit, auto-loaded on start (fMSX/MSX.c:526)."

84
emulators/freechaf.yml Normal file
View File

@@ -0,0 +1,84 @@
emulator: FreeChaF
type: libretro
source: "https://github.com/libretro/FreeChaF"
profiled_date: "2026-03-18"
core_version: "GIT"
display_name: "Fairchild - ChannelF (FreeChaF)"
cores:
- freechaf
systems:
- fairchild-channelf
notes: |
FreeChaF is a Fairchild Channel F emulator ported to libretro.
BIOS loading is in src/libretro.c:186-208. The core first tries to load
sl90025.bin (Channel F II PSU1) at address 0x000. If that fails, it falls
back to sl31253.bin (original Channel F PSU1) at the same address. PSU2
(sl31254.bin) is always loaded at address 0x400.
Memory layout from src/memory.h:27-30:
0x000-0x3FF PSU1 ROM (sl31253 or sl90025)
0x400-0x7FF PSU2 ROM (sl31254)
0x800-0x1FFF cartridge ROM
0x2000+ VRAM
If either PSU ROM fails to load, the core switches to experimental HLE
(high-level emulation) for that PSU. A warning message is shown to the
user recommending real BIOS files. HLE state is tracked per-PSU via
hle_state.psu1_hle and hle_state.psu2_hle (src/channelf_hle.c).
The .info file declares all three firmware files as required (opt=false),
but the core does not abort on missing BIOS -- it falls back to HLE.
files:
- name: "sl31253.bin"
system: fairchild-channelf
required: false
md5: ac9804d4c0e9d07e33472e3726ed15c3
size: 1024 # 1 KB, fills 0x000-0x3FF
note: "Channel F PSU1 ROM (original). Fallback if sl90025.bin is missing."
source_ref: "src/libretro.c:192"
- name: "sl31254.bin"
system: fairchild-channelf
required: false
md5: da98f4bb3242ab80d76629021bb27585
size: 1024 # 1 KB, fills 0x400-0x7FF
note: "Channel F PSU2 ROM. Always loaded at address 0x400."
source_ref: "src/libretro.c:202"
- name: "sl90025.bin"
system: fairchild-channelf
required: false
md5: 95d339631d867c8f1d15a5f2ec26069d
size: 1024 # 1 KB, fills 0x000-0x3FF
note: "Channel F II PSU1 ROM. Tried first, preferred over sl31253.bin."
source_ref: "src/libretro.c:186"
platform_details:
bios_mapping:
target: "0x000-0x7FF in 64K memory space"
source_ref: "src/memory.h:27-29, src/memory.c:30-61"
notes: |
MEMORY_loadSysROM_libretro() reads the file and copies it into
Memory[] at the given address offset. PSU1 is loaded at 0x000,
PSU2 at 0x400. The loader caps file size to (MEMORY_SIZE - address)
to prevent overflow. MEMORY_RAMStart is advanced past the loaded
ROM to protect it from writes.
hle_fallback:
source_ref: "src/channelf_hle.c"
notes: |
When BIOS files are missing, FreeChaF uses HLE to emulate the
PSU routines in software. This is marked as experimental and may
cause compatibility issues with some games. Each PSU can
independently fall back to HLE.
load_priority:
source_ref: "src/libretro.c:186-198"
notes: |
PSU1 loading order: sl90025.bin (Channel F II) first, then
sl31253.bin (original Channel F) as fallback. If both fail,
HLE is used. sl90025.bin is the preferred BIOS as it includes
Channel F II improvements.

74
emulators/freeintv.yml Normal file
View File

@@ -0,0 +1,74 @@
emulator: FreeIntv
type: libretro
source: "https://github.com/libretro/FreeIntv"
profiled_date: "2026-03-18"
core_version: "2018.1.5"
display_name: "Mattel - Intellivision (FreeIntv)"
cores:
- freeintv
systems:
- intellivision
notes: |
FreeIntv is a Mattel Intellivision emulator for libretro.
BIOS loading happens in retro_init() (src/libretro.c:1166-1174). The core
calls retro_get_system_directory() then joins exec.bin and grom.bin paths
directly. No subdirectory, no core option to disable BIOS loading.
loadExec() in src/intv.c:47-71 reads exec.bin as big-endian 16-bit words
into memory range 0x1000-0x1FFF (Executive ROM, 8 KB file).
loadGrom() in src/intv.c:73-98 reads grom.bin as raw bytes into memory
range 0x3000-0x37FF (Graphics ROM, 2 KB file).
Both files are required. Without them the core prints an error and shows
"PUT GROM/EXEC IN SYSTEM DIRECTORY" on the OSD, but does not abort.
Games will not run correctly without both BIOS files.
The .info file declares firmware_count = 2 with both marked opt = false.
No ECS (Entertainment Computer System) BIOS support exists in this core.
There is no ecs.bin loading code anywhere in the source.
files:
- name: "exec.bin"
system: intellivision
required: true
size: 8192 # 8 KB (4096 x 16-bit words, 0x1000-0x1FFF)
md5: 62e761035cb657903761800f4437b8af
note: "Executive ROM. Big-endian 16-bit words loaded at 0x1000-0x1FFF."
source_ref: "src/intv.c:47-71, src/libretro.c:1169"
- name: "grom.bin"
system: intellivision
required: true
size: 2048 # 2 KB (bytes, 0x3000-0x37FF)
md5: 0cd5946c6473e42e8e4c2137785e427f
note: "Graphics ROM. Raw bytes loaded at 0x3000-0x37FF."
source_ref: "src/intv.c:73-98, src/libretro.c:1173"
platform_details:
bios_mapping:
exec:
target: "0x1000-0x1FFF (Executive ROM)"
format: "big-endian 16-bit words"
source_ref: "src/intv.c:55-58"
grom:
target: "0x3000-0x37FF (Graphics ROM)"
format: "raw 8-bit bytes"
source_ref: "src/intv.c:81-84"
notes: |
Memory[] is a 64K array of unsigned int (src/memory.c:26).
EXEC region (0x1000-0x1FFF) is write-protected in writeMem()
(src/memory.c:60-61). GROM region (0x3000-0x37FF) is also
write-protected (src/memory.c:62).
cartridge_loading:
formats: "int, bin, rom"
methods: "Intellicart (magic byte 0xA8), raw ROM with fingerprint DB"
source_ref: "src/cart.c"
notes: |
Raw ROMs use a fingerprint database (sum of first 256 bytes)
to select one of 10 memory map configurations (load0-load9).
Intellicart format is auto-detected by 0xA8 magic byte.

View File

@@ -0,0 +1,52 @@
emulator: "FreeIntv (Touchscreen Overlay)"
type: libretro
source: "https://github.com/libretro/FreeIntv"
profiled_date: "2026-03-18"
core_version: "v2025.11.1"
display_name: "Mattel Intellivision (FreeIntvTSOverlay)"
cores:
- freeintv
systems:
- intellivision
notes: |
Same repo and core as FreeIntv. The touchscreen overlay feature is a
compile-time option within the same codebase, not a separate core. The
library_name is "freeintv" (src/libretro.c:1413), identical to the
non-overlay build.
The overlay system adds an onscreen interactive keypad for touchscreen
and mouse input. It is toggled via core option freeintv_multiscreen_overlay
(src/libretro_core_options.h:82-85). When enabled, the display splits into
game + keypad side-by-side (multi-screen mode).
Visual assets (controller base frame, banner, default keypad image) are
compiled into the binary from C headers: banner.h, keypad_frame_graphic.h,
default_keypad_image.h. These are NOT files the user needs to provide.
ROM-specific overlays are optional 370x600 PNG files placed by the user in
system/freeintv_overlays/<rom_name>.png. These are cosmetic per-game keypad
images and are not BIOS files.
BIOS loading is unchanged from the base FreeIntv core. retro_load_game()
(src/libretro.c:1169-1174) loads exec.bin and grom.bin from the system
directory with no variation based on overlay mode.
bios_identical_to: freeintv
files:
- name: "exec.bin"
system: intellivision
required: true
size: 8192
md5: 62e761035cb657903761800f4437b8af
note: "Executive ROM. Same file as base FreeIntv."
source_ref: "src/intv.c:47-71, src/libretro.c:1169"
- name: "grom.bin"
system: intellivision
required: true
size: 2048
md5: 0cd5946c6473e42e8e4c2137785e427f
note: "Graphics ROM. Same file as base FreeIntv."
source_ref: "src/intv.c:73-98, src/libretro.c:1173"

42
emulators/freej2me.yml Normal file
View File

@@ -0,0 +1,42 @@
emulator: FreeJ2ME
type: libretro
source: "https://github.com/hex007/freej2me"
profiled_date: "2026-03-18"
core_version: "GIT"
display_name: "Mobile - J2ME (FreeJ2ME)"
cores:
- freej2me
systems:
- j2me
notes: |
FreeJ2ME is a Java ME (J2ME) emulator for libretro. The native .so/.dll
core acts as a bridge that spawns a Java process running freej2me-lr.jar,
which handles all actual J2ME emulation. Communication between the C
frontend and Java backend happens over pipes (Linux) or named pipes
(Windows).
The jar file is required: without it the core cannot start. It must be
placed directly in the system directory (not a subdirectory). The core
resolves it via RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY joined with
"freej2me-lr.jar" using fill_pathname_join().
A working Java runtime (JRE/JDK 8+) must be installed on the host
system. The core invokes "java -jar freej2me-lr.jar" with resolution,
rotation, phone type, FPS, and sound arguments passed via argv.
freej2me-lr.jar is built from the project source via Apache Ant
(build.xml target "lr"). It is not a traditional BIOS dump but a
software component distributed with the emulator.
The project also produces freej2me.jar (standalone AWT frontend) and
freej2me-sdl.jar (SDL2 frontend), but only freej2me-lr.jar is needed
for the libretro core.
files:
- name: "freej2me-lr.jar"
system: j2me
description: "FreeJ2ME libretro Java application"
required: true
source_ref: "src/libretro/freej2me_libretro.c:485 (fill_pathname_join with javapath)"
notes: "Not a BIOS dump. This is the Java emulator itself, loaded by the native core at startup. Built from source via 'ant lr'. Must be in the system directory root."

90
emulators/frodo.yml Normal file
View File

@@ -0,0 +1,90 @@
emulator: Frodo
type: libretro
cores: [frodo]
source: "https://github.com/libretro/frodo-libretro"
profiled_date: "2026-03-18"
core_version: "v4.2"
display_name: "Commodore - C64 (Frodo)"
systems: [commodore-c64]
notes: |
Frodo is a Commodore 64 emulator by Christian Bauer (Frodo V4.2), ported
to libretro. It emulates the C64 (MOS 6510, VIC-II, SID, CIA x2) and an
optional 1541 floppy drive.
All four ROMs are embedded directly in the core binary as compiled-in
byte arrays (Basic_ROM.h, Kernal_ROM.h, Char_ROM.h, 1541_ROM.h). No
external BIOS files are required for normal operation.
The core attempts to load external ROM files from the current working
directory (DATADIR is empty in the libretro build) at startup via
load_rom_files() in main.cpp. If any file fails to open or has the wrong
size, the embedded ROM is used as fallback via memcpy(). The filenames
are hardcoded with spaces, no subdirectory prefix.
ROM loading order in load_rom_files():
1. "Basic ROM" (8192 bytes, BASIC_ROM_SIZE 0x2000) -> TheC64->Basic
2. "Kernal ROM" (8192 bytes, KERNAL_ROM_SIZE 0x2000) -> TheC64->Kernal
3. "Char ROM" (4096 bytes, CHAR_ROM_SIZE 0x1000) -> TheC64->Char
4. "1541 ROM" (16384 bytes, DRIVE_ROM_SIZE 0x4000) -> TheC64->ROM1541
The core does NOT construct paths relative to retro_system_directory for
ROM loading. The system directory variable is fetched in retro_init() but
only used for the save directory fallback, not for ROM path construction.
DATADIR defaults to "" (empty string) when not defined by the build
system, so the filenames resolve to bare names in the cwd. In practice,
the external ROM loading path is effectively unused in the libretro build
since the cwd is unpredictable and the filenames contain spaces.
The Kernal ROM is patched at runtime by PatchKernal() in C64.cpp for
fast reset (addresses 0x1D84-0x1D85) and IEC bus replacement when 1541
processor emulation is enabled (multiple addresses in the 0x0D00-0x0E00
range are patched with 0xF2 trap opcodes).
The 1541 drive ROM is also patched at Reset() in C64.cpp: ROM checksum
verification is disabled (0x2AE4-0x2AE9 NOPed), DOS idle loop is
trapped (0x2C9B), and write sector / format track operations are
intercepted (0x3594-0x3598, 0x3B0C-0x3B0D).
Source: Src/main.cpp:67-115 (ROM defines, load_rom, load_rom_files),
Src/C64.h:33-37 (ROM size constants), Src/C64.cpp:221-284 (PatchKernal),
Src/C64.cpp:738-746 (Reset ROM patching),
Src/Basic_ROM.h, Src/Kernal_ROM.h, Src/Char_ROM.h, Src/1541_ROM.h
(embedded ROM arrays)
files:
- name: "Basic ROM"
system: commodore-c64
description: "C64 BASIC V2 ROM"
required: false
embedded: true
size: 8192
note: "Embedded as builtin_basic_rom[] in Basic_ROM.h. External file never loaded in practice (DATADIR is empty, path is bare filename in cwd)."
source_ref: "Src/main.cpp:71,77,100-102"
- name: "Kernal ROM"
system: commodore-c64
description: "C64 Kernal ROM"
required: false
embedded: true
size: 8192
note: "Embedded as builtin_kernal_rom[] in Kernal_ROM.h. Patched at runtime for fast reset and 1541 IEC traps."
source_ref: "Src/main.cpp:72,78,104-106"
- name: "Char ROM"
system: commodore-c64
description: "C64 Character Generator ROM"
required: false
embedded: true
size: 4096
note: "Embedded as builtin_char_rom[] in Char_ROM.h. Used by VIC-II for text/bitmap rendering."
source_ref: "Src/main.cpp:73,79,108-110"
- name: "1541 ROM"
system: commodore-c64
description: "Commodore 1541 floppy drive ROM"
required: false
embedded: true
size: 16384
note: "Embedded as builtin_drive_rom[] in 1541_ROM.h. Patched at runtime to disable checksum and trap disk I/O."
source_ref: "Src/main.cpp:74,80,112-114"

8
emulators/fsuae.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "fsuae"
type: alias
alias_of: "puae"
profiled_date: "2026-03-18"
core_version: "v2.7.15"
display_name: "Commodore - Amiga (FS-UAE)"
note: "This core uses the same BIOS/firmware as puae. See emulators/puae.yml for details."
files: []

399
emulators/fuse.yml Normal file
View File

@@ -0,0 +1,399 @@
emulator: Fuse
type: libretro
source: "https://github.com/libretro/fuse-libretro"
profiled_date: "2026-03-18"
core_version: "1.6.0"
display_name: "Sinclair - ZX Spectrum (Fuse)"
cores:
- fuse
systems:
- sinclair-zxspectrum
notes: |
Fuse (Free Unix Spectrum Emulator) ported to libretro. Emulates the ZX
Spectrum family: 16K, 48K, 48K NTSC, 128K, +2, +2A, +3, +3e, SE, Timex
TC2048, TC2068, TS2068, Pentagon 128K/512K/1024, and Scorpion 256K.
ROM loading is in src/compat/file.c:91-118. The core first checks an
internal table of embedded ROMs (mem_entries[]). If the ROM filename is
not found there, it falls back to the filesystem at
{system_dir}/fuse/{rom_filename} (file.c:160-175).
Embedded ROMs cover 48K-family, 128K, +2, +3, +3e, SE, TC2048, TC2068.
Pentagon, Scorpion, and peripheral ROMs are NOT embedded and must be
placed in {system_dir}/fuse/ by the user.
Default ROM filenames are set in fuse/settings.c:209-260. Each machine
type loads its ROMs during reset via machine_load_rom() calls in
fuse/machines/*.c files.
The +2A reuses the +3 ROMs (plus3-0/1/2/3.rom) per settings.c:234-237.
The TS2068 reuses TC2068 ROMs (tc2068-0/1.rom) per settings.c:257-258.
Spectrum 16K uses 48.rom per settings.c:211.
files:
# -- Embedded ROMs (compiled into the core, not required on disk) --
- name: "fuse/48.rom"
system: sinclair-zxspectrum
required: false
md5: 4c42a2f075212361c3117015b107ff68
sha1: 5ea7c2b824672e914525d1d5c419d71b84a426a2
size: 16384
note: "Spectrum 48K ROM. Also used for 16K and 48K NTSC. Embedded in core."
source_ref: "fuse/settings.c:211-212, fuse/machines/spec48.c:76"
- name: "fuse/128-0.rom"
system: sinclair-zxspectrum
required: false
md5: b4d2692115a9f2924df92a3cbfb358fb
sha1: 4f4b11ec22326280bdb96e3baf9db4b4cb1d02c5
size: 16384
note: "Spectrum 128K ROM 0 (editor). Embedded in core."
source_ref: "fuse/settings.c:209, fuse/machines/spec128.c:70"
- name: "fuse/128-1.rom"
system: sinclair-zxspectrum
required: false
md5: 6e09e5d3c4aef166601669feaaadc01c
sha1: 80080644289ed93d71a1103992a154cc9802b2fa
size: 16384
note: "Spectrum 128K ROM 1 (48 BASIC). Embedded in core."
source_ref: "fuse/settings.c:210, fuse/machines/spec128.c:73"
- name: "fuse/plus2-0.rom"
system: sinclair-zxspectrum
required: false
md5: 4ed7af4636308b8a48d7a35e6c5b546b
sha1: 72703f9a3e734f3c23ec34c0727aae4ccbef9a91
size: 16384
note: "Spectrum +2 ROM 0. Embedded in core."
source_ref: "fuse/settings.c:232, fuse/machines/specplus2.c:70"
- name: "fuse/plus2-1.rom"
system: sinclair-zxspectrum
required: false
md5: b3db95931cc844efaeb82db9c171b9f3
sha1: de8b0d2d0379cfe7c39322a086ca6da68c7f23cb
size: 16384
note: "Spectrum +2 ROM 1. Embedded in core."
source_ref: "fuse/settings.c:233, fuse/machines/specplus2.c:73"
- name: "fuse/plus3-0.rom"
system: sinclair-zxspectrum
required: false
md5: 9833b8b73384dd5fa3678377ff00a2bb
sha1: e319ed08b4d53a5e421a75ea00ea02039ba6555b
size: 16384
note: "Spectrum +3 ROM 0. Also used for +2A. Embedded in core."
source_ref: "fuse/settings.c:234,238, fuse/machines/specplus3.c:197"
- name: "fuse/plus3-1.rom"
system: sinclair-zxspectrum
required: false
md5: 0f711ceb5ab801b4701989982e0f334c
sha1: c9969fc36095a59787554026a9adc3b87678c794
size: 16384
note: "Spectrum +3 ROM 1. Also used for +2A. Embedded in core."
source_ref: "fuse/settings.c:235,239, fuse/machines/specplus3.c:200"
- name: "fuse/plus3-2.rom"
system: sinclair-zxspectrum
required: false
md5: 3b6dd659d5e4ec97f0e2f7878152c987
sha1: 22e50c6ba4157a3f6a821bd9937cd26e292775c6
size: 16384
note: "Spectrum +3 ROM 2. Also used for +2A. Embedded in core."
source_ref: "fuse/settings.c:236,240, fuse/machines/specplus3.c:203"
- name: "fuse/plus3-3.rom"
system: sinclair-zxspectrum
required: false
md5: a148bcc575e51389e84fdf5d555c3196
sha1: 65f031caa8148a5493afe42c41f4929deab26b4e
size: 16384
note: "Spectrum +3 ROM 3. Also used for +2A. Embedded in core."
source_ref: "fuse/settings.c:237,241, fuse/machines/specplus3.c:206"
- name: "fuse/plus3e-0.rom"
system: sinclair-zxspectrum
required: false
md5: bc123f625e245c225f92ef05933ed134
sha1: 649fbd233490bf58b35350b0123d36caaaa011eb
size: 16384
note: "Spectrum +3e ROM 0. Embedded in core."
source_ref: "fuse/settings.c:242, fuse/machines/specplus3e.c:70"
- name: "fuse/plus3e-1.rom"
system: sinclair-zxspectrum
required: false
md5: 617364264c587d20c9fc4746c29679f2
sha1: f12198108cbb14de4f03c6695bc16d08c85ee214
size: 16384
note: "Spectrum +3e ROM 1. Embedded in core."
source_ref: "fuse/settings.c:243, fuse/machines/specplus3e.c:73"
- name: "fuse/plus3e-2.rom"
system: sinclair-zxspectrum
required: false
md5: c363e95dcd0a90e6e7f847e6e47e0179
sha1: 773633dce5ba323a9e00d9d0f9e4d8c295df7c87
size: 16384
note: "Spectrum +3e ROM 2. Embedded in core."
source_ref: "fuse/settings.c:244, fuse/machines/specplus3e.c:76"
- name: "fuse/plus3e-3.rom"
system: sinclair-zxspectrum
required: false
md5: a148bcc575e51389e84fdf5d555c3196
sha1: 65f031caa8148a5493afe42c41f4929deab26b4e
size: 16384
note: "Spectrum +3e ROM 3. Same as plus3-3.rom. Embedded in core."
source_ref: "fuse/settings.c:245, fuse/machines/specplus3e.c:79"
- name: "fuse/se-0.rom"
system: sinclair-zxspectrum
required: false
md5: fb3f86eb1e5a695d9c50c124e7cfb875
sha1: 8608328d7dd66602a4846f046b24fed500f7d828
size: 16384
note: "Spectrum SE ROM 0. Embedded in core."
source_ref: "fuse/settings.c:251, fuse/machines/spec_se.c:89"
- name: "fuse/se-1.rom"
system: sinclair-zxspectrum
required: false
md5: 88de4a3129086f34bb9ca559acc51e6c
sha1: 3be5de57dd3bd0a9d15c57cabe9179afe2906a52
size: 16384
note: "Spectrum SE ROM 1. Embedded in core."
source_ref: "fuse/settings.c:252, fuse/machines/spec_se.c:92"
- name: "fuse/tc2048.rom"
system: sinclair-zxspectrum
required: false
md5: 9dd7ecf784a6c04265c073c236f5fadb
sha1: febb2d495b6eda7cdcb4074935d6e9d9f328972d
size: 16384
note: "Timex TC2048 ROM. Embedded in core."
source_ref: "fuse/settings.c:254, fuse/machines/tc2048.c:80"
- name: "fuse/tc2068-0.rom"
system: sinclair-zxspectrum
required: false
md5: 55d462fccc6c536037404ef4ced08bec
sha1: 1446cb2780a9dedf640404a639fa3ae518b2d8aa
size: 16384
note: "Timex TC2068 ROM 0. Also used for TS2068. Embedded in core."
source_ref: "fuse/settings.c:255,257, fuse/machines/tc2068.c:138"
- name: "fuse/tc2068-1.rom"
system: sinclair-zxspectrum
required: false
md5: 575d203c6e15e679fba0b73f854ec7a2
sha1: 7e265a2c1f621ed365ea23bdcafdedbc79c1299c
size: 8192
note: "Timex TC2068 ROM 1 (EXROM). Also used for TS2068. Embedded in core."
source_ref: "fuse/settings.c:256,258, fuse/machines/tc2068.c:141"
# -- External ROMs (NOT embedded, must be in {system_dir}/fuse/) --
# Pentagon family
- name: "fuse/128p-0.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "Pentagon 128K/512K/1024 ROM 0. Required for Pentagon machines."
source_ref: "fuse/settings.c:221,225,229, fuse/machines/pentagon.c:135"
- name: "fuse/128p-1.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "Pentagon 128K/512K/1024 ROM 1. Required for Pentagon machines."
source_ref: "fuse/settings.c:222,226,230, fuse/machines/pentagon.c:138"
- name: "fuse/trdos.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "TR-DOS ROM (Beta 128 disk interface). Used by Pentagon and Scorpion."
source_ref: "fuse/settings.c:223,227,231, fuse/machines/pentagon.c:141"
- name: "fuse/gluck.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "Gluck ROM. Required for Pentagon 512K and 1024."
source_ref: "fuse/settings.c:224,228, fuse/machines/pentagon512.c:82"
# Scorpion
- name: "fuse/256s-0.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "Scorpion 256K ROM 0. Required for Scorpion machine."
source_ref: "fuse/settings.c:247, fuse/machines/scorpion.c:76"
- name: "fuse/256s-1.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "Scorpion 256K ROM 1. Required for Scorpion machine."
source_ref: "fuse/settings.c:248, fuse/machines/scorpion.c:79"
- name: "fuse/256s-2.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "Scorpion 256K ROM 2. Required for Scorpion machine."
source_ref: "fuse/settings.c:249, fuse/machines/scorpion.c:82"
- name: "fuse/256s-3.rom"
system: sinclair-zxspectrum
required: true
md5: ""
size: 16384
note: "Scorpion 256K ROM 3 (TR-DOS). Required for Scorpion machine."
source_ref: "fuse/settings.c:250, fuse/machines/scorpion.c:85"
# Peripheral ROMs (optional, only needed if peripheral is enabled)
- name: "fuse/if1-2.rom"
system: sinclair-zxspectrum
required: false
md5: ""
size: 16384
note: "Interface 1 ROM (edition 2). Loaded by peripherals/if1.c:403."
source_ref: "fuse/settings.c:216, fuse/peripherals/if1.c:403"
- name: "fuse/disciple.rom"
system: sinclair-zxspectrum
required: false
md5: 78e61a2a02121873c1756b21fd1398b1
sha1: 9a75ed4b293f968985be4c9aa893cd88276d1ced
size: 8192
note: "DISCiPLE disk interface ROM. Bundled in repo but not in mem_entries[]."
source_ref: "fuse/settings.c:215, fuse/peripherals/disk/disciple.c:279"
- name: "fuse/plusd.rom"
system: sinclair-zxspectrum
required: false
md5: 42e5de16fb5e50082bb954ec7ce45851
sha1: 6b841dc5797ef7eb219ad455cd1e434ca3b9d30d
size: 8192
note: "+D disk interface ROM. Bundled in repo but not in mem_entries[]."
source_ref: "fuse/settings.c:246, fuse/peripherals/disk/plusd.c:239"
- name: "fuse/didaktik80.rom"
system: sinclair-zxspectrum
required: false
md5: ""
note: "Didaktik 80 disk interface ROM. Not embedded."
source_ref: "fuse/settings.c:214, fuse/peripherals/disk/didaktik.c:236"
- name: "fuse/opus.rom"
system: sinclair-zxspectrum
required: false
md5: ""
note: "Opus Discovery disk interface ROM. Not embedded."
source_ref: "fuse/settings.c:220, fuse/peripherals/disk/opus.c:210"
- name: "fuse/mf1.rom"
system: sinclair-zxspectrum
required: false
md5: ""
note: "Multiface 1 ROM. Not embedded."
source_ref: "fuse/settings.c:217, fuse/peripherals/multiface.c:224"
- name: "fuse/mf128.rom"
system: sinclair-zxspectrum
required: false
md5: ""
note: "Multiface 128 ROM. Not embedded."
source_ref: "fuse/settings.c:218, fuse/peripherals/multiface.c:225"
- name: "fuse/mf3.rom"
system: sinclair-zxspectrum
required: false
md5: ""
note: "Multiface 3 ROM. Not embedded."
source_ref: "fuse/settings.c:219, fuse/peripherals/multiface.c:226"
- name: "fuse/speccyboot-1.4.rom"
system: sinclair-zxspectrum
required: false
md5: c54aa8f374b0971f51546c29d5d1eba1
sha1: 16af6f052b38a027dd49ba6e96e3a59d16b62672
size: 8192
note: "SpeccyBoot ethernet ROM. Bundled in repo but not in mem_entries[]."
source_ref: "fuse/settings.c:253, fuse/peripherals/speccyboot.c:148"
- name: "fuse/ttx2000s.rom"
system: sinclair-zxspectrum
required: false
md5: ""
note: "TTX2000S teletext adapter ROM. Not embedded."
source_ref: "fuse/settings.c:259, fuse/peripherals/ttx2000s.c:198"
- name: "fuse/usource.rom"
system: sinclair-zxspectrum
required: false
md5: ""
note: "Currah uSource ROM. Not embedded."
source_ref: "fuse/settings.c:260, fuse/peripherals/usource.c:129"
platform_details:
bios_mapping:
source_ref: "src/compat/file.c:55-89, 129-223"
notes: |
ROM resolution order in compat_file_open():
1. Check mem_entries[] (18 embedded ROMs compiled as .h arrays)
2. If not found, try {system_dir}/fuse/{filename} on filesystem
The path is constructed by concatenating system_dir + "/fuse" + path
where path includes the leading slash from fuse's internal path.
embedded_roms:
source_ref: "src/compat/file.c:55-73"
notes: |
18 ROMs embedded in the binary via .h headers generated from .rom files:
48.rom, 128-0.rom, 128-1.rom, plus2-0.rom, plus2-1.rom,
plus3-0/1/2/3.rom, plus3e-0/1/2/3.rom, se-0.rom, se-1.rom,
tc2048.rom, tc2068-0.rom, tc2068-1.rom.
disciple.rom, plusd.rom, speccyboot-1.4.rom are present in the repo
fuse/roms/ directory but NOT in mem_entries[], so they are loaded
from the filesystem only.
machine_rom_map:
source_ref: "fuse/settings.c:209-260, fuse/machines/*.c"
notes: |
Spectrum 16K: 48.rom (1 ROM)
Spectrum 48K: 48.rom (1 ROM)
Spectrum 48K NTSC: 48.rom (1 ROM)
Spectrum 128K: 128-0.rom, 128-1.rom (2 ROMs)
Spectrum +2: plus2-0.rom, plus2-1.rom (2 ROMs)
Spectrum +2A: plus3-0.rom, plus3-1.rom, plus3-2.rom, plus3-3.rom (4 ROMs)
Spectrum +3: plus3-0.rom, plus3-1.rom, plus3-2.rom, plus3-3.rom (4 ROMs)
Spectrum +3e: plus3e-0/1/2/3.rom (4 ROMs)
Spectrum SE: se-0.rom, se-1.rom (2 ROMs)
Timex TC2048: tc2048.rom (1 ROM)
Timex TC2068: tc2068-0.rom, tc2068-1.rom (2 ROMs)
Timex TS2068: tc2068-0.rom, tc2068-1.rom (2 ROMs, same files)
Pentagon 128K: 128p-0.rom, 128p-1.rom, trdos.rom (3 ROMs)
Pentagon 512K: 128p-0.rom, 128p-1.rom, trdos.rom, gluck.rom (4 ROMs)
Pentagon 1024: 128p-0.rom, 128p-1.rom, trdos.rom, gluck.rom (4 ROMs)
Scorpion 256K: 256s-0.rom, 256s-1.rom, 256s-2.rom, 256s-3.rom (4 ROMs)
rom_copyright:
source_ref: "fuse/roms/README.copyright"
notes: |
Most ROMs are copyright Amstrad. Amstrad allows free distribution but
retains copyright. Selling ROMs standalone is not permitted. SE ROMs
are GPLv2+. DISCiPLE/+D ROMs are copyright Datel, distribution allowed.
SpeccyBoot ROM is MIT licensed.

97
emulators/galaksija.yml Normal file
View File

@@ -0,0 +1,97 @@
emulator: galaksija
type: libretro
source: "https://github.com/libretro/galaxy-libretro"
profiled_date: "2026-03-18"
core_version: "v0.1"
display_name: "Elektronika Inženjering - Galaksija (Galaksija)"
cores:
- galaksija
systems:
- galaksija
# Galaksija is a Yugoslav home computer (1983, designed by Voja Antonic) emulator.
# Z80-based at 3.072 MHz, PAL 50fps, character-mode display (32x16 chars, 256x208 px).
#
# The core embeds all three firmware files compressed in rom.c (LoadCHRGENBIN,
# LoadROM1BIN, LoadROM2BIN). External files are optional overrides -- if ANY of
# CHRGEN.BIN or ROM1.BIN is missing from <system_dir>/galaksija/, the core sets
# firmware_ignore=true and loads all ROMs from the embedded copies instead.
#
# Firmware loading (src/libretro.c:93-135):
# 1. retro_init() checks for galaksija/CHRGEN.BIN and galaksija/ROM1.BIN
# 2. If either is missing: firmware_ignore=true, load embedded compressed ROMs
# 3. If both present: galaxy_init() reads files from disk (init.c:46-105)
# 4. ROM2.BIN missing is a warning only, not fatal (init.c:84-85)
# 5. GAL_PLUS.BIN: referenced in a TODO comment but not implemented yet
#
# Memory map:
# 0x0000-0x0FFF: ROM1 (4096 bytes) - BASIC interpreter
# 0x1000-0x1FFF: ROM2 (4096 bytes) - math extension (optional)
# 0x2000-0x27FF: keyboard memory-mapped I/O
# 0x2800-0x29FF: screen RAM (32x16 characters)
# 0x2A00-0x3FFF: free RAM
# chargen: 2048-byte character generator ROM (separate, not memory-mapped)
#
# The included firmware is public domain per README.
files:
- name: "CHRGEN.BIN"
path: "galaksija/CHRGEN.BIN"
size: 2048
required: false
note: >
Character generator ROM. Defines the 128-character bitmap font (8x13 pixels
each). The core has this embedded compressed in rom.c and only loads the
external file if all firmware files are present in the system directory.
source_ref: "src/rom.h:5, src/libretro.c:95-99, src/external/galaksija-emulator/src/init.c:55-67"
- name: "ROM1.BIN"
path: "galaksija/ROM1.BIN"
size: 4096
required: false
note: >
System ROM / BASIC interpreter. Mapped at 0x0000-0x0FFF. Contains the
Galaksija BASIC language and boot routines. Embedded in rom.c as fallback.
source_ref: "src/rom.h:8, src/libretro.c:101-105, src/external/galaksija-emulator/src/init.c:69-81"
- name: "ROM2.BIN"
path: "galaksija/ROM2.BIN"
size: 4096
required: false
note: >
Math extension ROM. Mapped at 0x1000-0x1FFF. Adds floating-point math
functions (SIN, COS, TG, SQR, LN, EXP, POW, etc). Optional even when
loading from disk -- missing ROM2 only triggers a warning. Embedded in
rom.c as fallback.
source_ref: "src/rom.h:11, src/libretro.c:107-110, src/external/galaksija-emulator/src/init.c:83-92"
- name: "GAL_PLUS.BIN"
path: "galaksija/GAL_PLUS.BIN"
size: 4096
required: false
note: >
Galaksija Plus extension ROM. Would map at 0xE000-0xEFFF. Referenced in a
TODO comment in init.c but not yet implemented in the libretro core. The
original standalone emulator loaded it optionally with a Serbian message
on failure ("GAL_PLUS.BIN nije prisutan, idemo dalje bez njega!").
source_ref: "src/external/galaksija-emulator/src/init.c:94-104"
notes:
embedded_firmware: >
All three ROMs (CHRGEN.BIN, ROM1.BIN, ROM2.BIN) are embedded as compressed
blobs in src/rom.c using RLE compression. The core works out of the box
without any external firmware files. External files only serve as overrides
for users who want alternative ROM versions (e.g. different BASIC revisions
or character sets).
firmware_override_logic: >
The override is all-or-nothing for CHRGEN.BIN and ROM1.BIN. If either file
is missing from galaksija/, the core ignores all external firmware and uses
embedded copies. ROM2.BIN is handled separately and can be absent even when
loading from disk.
license: >
The emulator code and included firmware are public domain. External
dependencies (libz80, libretro-common, tinyfiledialogs) have separate
licenses (GPL2, MIT).
no_bios_required_for_pack: >
Since all firmware is embedded, this core does not need any BIOS files in
platform packs. The files listed above are optional overrides only.

81
emulators/gam4980.yml Normal file
View File

@@ -0,0 +1,81 @@
emulator: GAM4980
type: libretro
source: "https://github.com/ThisBoringWorld/gam4980"
profiled_date: "2026-03-18"
core_version: "0.2"
display_name: "GAM4980"
cores:
- gam4980
systems:
- bbk-longman-4980
# GAM4980 is a BBK Longman 4980 electronic dictionary game emulator for
# libretro. Original code from https://codeberg.org/iyzsong/gam4980, based
# on the BA4988 BBK simulator by Wuyun.
#
# The device uses a 6502-based CPU with banked ROM access.
#
# ROM loading (src/libretro.c:1171-1177, retro_init):
# The core gets the RetroArch system directory via RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY,
# appends "/gam4980" to build the ROM directory path, then calls sys_init(romdir).
#
# sys_init (src/libretro.c:693-723):
# Opens romdir/8.BIN and reads 0x200000 bytes (2 MB) into sys.rom_8 (font ROM).
# Opens romdir/E.BIN and reads 0x200000 bytes (2 MB) into sys.rom_e (OS ROM).
# Both files are mandatory -- no fallback, no error handling. The core will
# crash if either file is missing.
#
# Memory map (src/libretro.c:109-110, 300-305):
# 0x800000-0x9FFFFF rom_8 (font ROM, 8.BIN)
# 0xE00000-0xFFFFFF rom_e (OS ROM, E.BIN)
# These ROMs must be dumped from a physical BBK Longman 4980 dictionary.
#
# The .info file does not declare firmware entries. The core is marked
# is_experimental = true.
notes: |
Place 8.BIN and E.BIN in the RetroArch system/gam4980/ subdirectory.
Both files must be 2 MB dumps from a BBK Longman 4980 dictionary:
8.BIN - font ROM, dumped from address range 0x800000-0x9FFFFF
E.BIN - OS ROM, dumped from address range 0xE00000-0xFFFFFF
The core will crash without these files (no error handling in sys_init).
Game files use the .gam extension.
files:
- name: "gam4980/8.BIN"
size: 2097152
md5: ddfc001a6859d63ed46368ea7fe9f20c
sha1: 062067e6d661c3d3e10d910435be4a59db1bee9f
required: true
system: bbk-longman-4980
bundled: false
note: "Font ROM (2 MB). Loaded at 0x800000. Dumped from physical device (src/libretro.c:716-718)."
source_ref: "src/libretro.c:716"
- name: "gam4980/E.BIN"
size: 2097152
md5: 72a16fd0d2453108321edc65cd347c77
sha1: b486b6eda5cd7e79bb5605d1fbe36eb88bfc6724
required: true
system: bbk-longman-4980
bundled: false
note: "OS ROM (2 MB). Loaded at 0xE00000. Dumped from physical device (src/libretro.c:720-722)."
source_ref: "src/libretro.c:720"
platform_details:
bios_mapping:
target: "0x800000-0x9FFFFF (font), 0xE00000-0xFFFFFF (OS) in banked address space"
source_ref: "src/libretro.c:109-110, 300-305"
notes: |
sys.rom_8 and sys.rom_e are flat 2 MB arrays. The CPU accesses them
through bank-switched memory (PA() macro resolves virtual to physical
address). rom_8_vread and rom_e_vread handle indirect reads via
the banking system.
load_path:
source_ref: "src/libretro.c:1173-1177"
notes: |
retro_init() builds the path as {system_directory}/gam4980/ and
passes it to sys_init(). Files must be named exactly 8.BIN and
E.BIN (case sensitive on Linux). No .info firmware declarations
exist, so RetroArch won't warn about missing files at scan time.

56
emulators/gambatte.yml Normal file
View File

@@ -0,0 +1,56 @@
emulator: Gambatte
type: libretro
source: "https://github.com/libretro/gambatte-libretro"
profiled_date: "2026-03-18"
core_version: "v0.5.0"
display_name: "Nintendo - Game Boy / Color (Gambatte)"
systems: [nintendo-gb, nintendo-gbc]
notes: |
Gambatte is a Game Boy / Game Boy Color emulator focused on accuracy.
No BIOS is required for normal operation. The core has a built-in
HLE boot sequence that skips the Nintendo logo animation by default.
When the core option "gambatte_gb_bootloader" is set to "enabled"
(the default), the core looks for official boot ROMs in the system
directory to play the real startup logo animation. If the files are
missing, emulation still works without them.
The boot ROM loaded depends on the hardware mode:
- DMG (original Game Boy): gb_bios.bin (256 bytes, 0x100)
- CGB (Game Boy Color) or GBA mode: gbc_bios.bin (2304 bytes, 0x900)
In GBA mode the core patches the CGB boot ROM at 0xF2 to fake
GBA detection (ld b,0x01), enabling GBA-enhanced features in
compatible GBC games (Shantae, Zelda Oracle series, etc.).
File path construction: libretro.cpp get_bootloader_from_file()
joins RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY with each filename
directly - no subdirectories.
Gambatte does NOT use sgb_bios.bin. The SGB palette references in
the source are color lookup tables for DMG palette colorization,
not actual Super Game Boy boot ROM loading.
files:
# --- DMG boot ROM (optional, enables startup animation) ---
- name: "gb_bios.bin"
system: nintendo-gb
description: "Original Game Boy (DMG-01) boot ROM"
required: false
size: 256
md5: "32fbbd84168d3482956eb3c5051637f5"
sha1: "4ed31ec6b0b175bb109c0eb5fd3d193da823339f"
source_ref: "libretro.cpp:1304-1364 (get_bootloader_from_file), bootloader.cpp:20-55 (load)"
notes: "Mapped at 0x0000-0x00FF, swapped out when register 0xFF50 is written. Core option gambatte_gb_bootloader must be enabled."
# --- CGB boot ROM (optional, enables startup animation) ---
- name: "gbc_bios.bin"
system: nintendo-gbc
description: "Game Boy Color (CGB-001) boot ROM"
required: false
size: 2304
md5: "dbfce9db9deaa2567f6a84fde55f9680"
sha1: "1293d68bf9643bc4f36954c1e80e38f39864528d"
source_ref: "libretro.cpp:1304-1364 (get_bootloader_from_file), bootloader.cpp:20-55 (load)"
notes: "Mapped at 0x0000-0x08FF with cartridge data preserved at 0x0100-0x01FF. Also used for GBA-enhanced mode with a patch at 0xF2. Presence required for FORCE_CGB flag when hw mode is set to GBC or GBA."

8
emulators/gearboy.yml Normal file
View File

@@ -0,0 +1,8 @@
emulator: "gearboy"
type: alias
alias_of: "gambatte"
profiled_date: "2026-03-18"
core_version: "3.4.1"
display_name: "Nintendo - Game Boy / Color (Gearboy)"
note: "This core uses the same BIOS/firmware as gambatte. See emulators/gambatte.yml for details."
files: []

59
emulators/gearcoleco.yml Normal file
View File

@@ -0,0 +1,59 @@
emulator: Gearcoleco
type: libretro
source: "https://github.com/drhelius/Gearcoleco"
profiled_date: "2026-03-18"
core_version: "1.0.0"
display_name: "Coleco - ColecoVision (Gearcoleco)"
cores:
- gearcoleco
systems:
- colecovision
notes: |
Gearcoleco is a ColecoVision emulator by Ignacio Sanchez (drhelius).
The ColecoVision BIOS ROM is required to run games. Without it, the
core displays a static "no BIOS" placeholder image (kNoBiosImage from
no_bios.h) and games will not execute.
The BIOS is loaded in load_bootroms() (libretro.cpp:293-305) from the
system directory. The core first tries "colecovision.rom", then falls
back to "coleco.rom" if the first file is not found.
Memory.cpp:LoadBios() validates the file size must be exactly 8192
bytes (0x2000). No hash check is performed by the core itself.
On reset, the BIOS byte at offset 0x69 is patched to select region:
0x3C for NTSC, 0x32 for PAL (Memory.cpp:184-187).
The core also supports Super Game Module (SGM) expanded RAM but that
requires no additional BIOS files.
files:
# --- ColecoVision BIOS (required) ---
- name: "colecovision.rom"
system: colecovision
description: "ColecoVision BIOS ROM"
required: true
size: 8192
source_ref: "platforms/libretro/libretro.cpp:297 (load_bootroms)"
notes: "Primary filename. Loaded via Memory::LoadBios(), must be exactly 8192 bytes."
- name: "coleco.rom"
system: colecovision
description: "ColecoVision BIOS ROM (legacy filename)"
required: false
size: 8192
source_ref: "platforms/libretro/libretro.cpp:303 (load_bootroms fallback)"
notes: "Fallback filename tried when colecovision.rom is not found."
platform_details:
colecovision:
bios_filename: "colecovision.rom"
bios_fallback: "coleco.rom"
bios_size: 8192
source_ref: "src/Memory.cpp:228-258"
notes: |
LoadBios() reads the file as raw binary. Size must be exactly 0x2000
(8192 bytes) or the load is rejected with a log message. The BIOS is
mapped at address 0x0000-0x1FFF in the ColecoVision memory map. On
reset, byte 0x69 is patched for NTSC/PAL region selection.

131
emulators/geargrafx.yml Normal file
View File

@@ -0,0 +1,131 @@
emulator: Geargrafx
type: libretro
source: "https://github.com/drhelius/Geargrafx"
profiled_date: "2026-03-18"
core_version: "1.6.0"
display_name: "NEC - PC Engine / SuperGrafx / CD (Geargrafx)"
cores:
- geargrafx
systems:
- nec-pc-engine
- nec-supergrafx
- nec-pc-engine-cd
notes: |
Geargrafx is a PC Engine / TurboGrafx-16 / SuperGrafx / CD-ROM emulator by
Ignacio Sanchez (drhelius). HuCard games (pce/sgx/hes) run without BIOS.
CD-ROM games require a System Card BIOS loaded from the system directory.
The core option "geargrafx_cdrom_bios" selects which card image to use:
Auto (default, maps to syscard3.pce), System Card 1, System Card 2,
System Card 3, or Game Express. The load_bios() function in libretro.cpp
builds the path as "{system_directory}/{filename}" and calls
core->LoadBios(path, true) for the syscard, then always attempts to load
gexpress.pce as the Game Express BIOS via core->LoadBios(path, false).
BIOS validation uses CRC32 against an internal game_db (game_db.h).
The LoadBios() function in media.cpp reads the file, strips a 512-byte
header if present, computes CRC32, and looks it up in k_game_database
entries flagged with GG_GAMEDB_BIOS_SYSCARD or GG_GAMEDB_BIOS_GAME_EXPRESS.
If the CRC32 is not found, the BIOS is marked as "Unknown" and invalid,
but loading still proceeds (the file is kept in memory).
Expected BIOS sizes (from defines.h):
- System Card: GG_BIOS_SYSCARD_SIZE = 0x40000 (256 KB)
- Game Express: GG_BIOS_GAME_EXPRESS_SIZE = 0x8000 (32 KB)
Game Express CD-ROM games are auto-detected via CRC32 lookup in game_db.h
(GG_GAMEDB_GAME_EXPRESS flag). When detected, the core uses the Game Express
BIOS instead of the System Card for ROM bank mapping (media.cpp:649).
Arcade Card games are also detected from game_db.h and enable extra
0x30000 bytes of Card RAM for Super CD-ROM mode.
Unlike beetle_pce, this core does NOT have separate US syscard3u.pce or
syscard2u.pce options. The libretro frontend only references syscard1.pce,
syscard2.pce, syscard3.pce, and gexpress.pce.
files:
# -- CD-ROM System Card 3 (Japan) - default --
- name: "syscard3.pce"
description: "Super CD-ROM System Card 3.0 (Japan)"
region: "NTSC-J"
required: true
source_ref: "libretro.cpp:453,471-473, game_db.h:50 CRC32=0x6D9A73EF"
notes: >
Default BIOS for CD-ROM games (cdrom_bios=0 or 3). Recommended for
most CD-ROM and Super CD-ROM titles. 256 KB expected size.
# -- CD-ROM System Card 2 (Japan) --
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: "NTSC-J"
required: false
source_ref: "libretro.cpp:452,462-463, game_db.h:48-49"
notes: >
cdrom_bios = 'System Card 2'. For older CD-ROM2 titles. game_db.h lists
two variants: v2.0 (CRC32=0x52520BC6) and v2.1 (CRC32=0x283B74E0).
# -- CD-ROM System Card 1 (Japan) --
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: "NTSC-J"
required: false
source_ref: "libretro.cpp:451,459-460, game_db.h:47 CRC32=0x3F9F95A4"
notes: >
cdrom_bios = 'System Card 1'. Very early CD-ROM2 games only.
# -- TurboGrafx CD System Card 3 (US) --
# Not directly selectable via core option, but game_db.h recognizes it.
- name: "syscard3.pce"
sha1_note: "US variant"
description: "TurboGrafx CD Super System Card 3.0 (US)"
region: "NTSC-U"
required: false
source_ref: "game_db.h:52 CRC32=0x2B5B75FE"
notes: >
The core does not have a separate syscard3u.pce option like beetle_pce.
If using a US System Card 3, it must be named syscard3.pce and placed in
the system directory. The game_db.h CRC32 validation will recognize it.
# -- TurboGrafx CD System Card 2 (US) --
- name: "syscard2.pce"
sha1_note: "US variant"
description: "TurboGrafx CD System Card 2.0 (US)"
region: "NTSC-U"
required: false
source_ref: "game_db.h:51 CRC32=0xFF2A5EC3"
notes: >
Same constraint as US System Card 3: must be named syscard2.pce.
Recognized by game_db.h CRC32 validation.
# -- Game Express CD Card --
- name: "gexpress.pce"
description: "Game Express CD Card"
region: "NTSC-J"
required: false
source_ref: "libretro.cpp:454,468-469,481-482, game_db.h:53-54"
notes: >
Always loaded alongside the selected System Card BIOS (libretro.cpp:481).
Required for unlicensed Game Express CD-ROM titles (AV Tanjou,
Bishoujo Pachinko, etc). game_db.h lists two variants:
Blue Version (CRC32=0x51A12D90) and Green Version (CRC32=0x16AAF05A).
Expected size: 32 KB (0x8000).
valid_bios_crc32:
syscard:
- { crc32: "3F9F95A4", name: "CD-ROM System Card 1.0 (J)" }
- { crc32: "52520BC6", name: "CD-ROM System Card 2.0 (J)" }
- { crc32: "283B74E0", name: "CD-ROM System Card 2.1 (J)" }
- { crc32: "6D9A73EF", name: "Super CD-ROM System 3.0 (J)" }
- { crc32: "FF2A5EC3", name: "TurboGrafx CD System Card 2.0 (USA)" }
- { crc32: "2B5B75FE", name: "TurboGrafx CD Super System 3.0 (USA)" }
game_express:
- { crc32: "51A12D90", name: "Game Express Card Blue Version (J)" }
- { crc32: "16AAF05A", name: "Game Express Card Green Version (J)" }

46
emulators/gearlynx.yml Normal file
View File

@@ -0,0 +1,46 @@
emulator: Gearlynx
type: libretro
source: "https://github.com/drhelius/Gearlynx"
profiled_date: "2026-03-18"
core_version: "1.0.0"
display_name: "Atari - Lynx (GearLynx)"
cores: [gearlynx]
systems: [atari-lynx]
verification: existence
notes: |
Gearlynx is an Atari Lynx emulator by Ignacio Sanchez (drhelius).
The libretro core loads lynxboot.img from the system directory at
retro_load_game time (libretro.cpp:106-130, function load_bootroms).
Path is built as: system_directory + "/lynxboot.img", no subdirectory.
LoadBios in media.cpp:274 reads exactly 512 bytes (GLYNX_BIOS_SIZE
= 0x200, defines.h:52). If the file size is not 0x200, the load is
rejected with BIOS_LOAD_INVALID_SIZE. After loading, bytes at offset
0x1F8 and 0x1F9 are patched (RAM/MAPCTL registers), then CRC32 is
computed and compared against GLYNX_DB_BIOS_CRC (0x0D973C9D,
game_db.h:38). An invalid CRC triggers a warning log but the BIOS
is still marked as loaded (m_is_bios_loaded = true).
Unlike Handy, Gearlynx has no HLE fallback. If the BIOS is not
loaded (IsBiosLoaded() returns false), RunToVBlank in
gearlynx_core_inline.h:31-37 renders a static "no bios" image
and returns false, refusing to emulate. The BIOS is required for
any ROM to run. Homebrew (.o, BS93 format) bypasses the normal
boot sequence via PrepareForHomebrew() but still requires the BIOS
to be loaded for the emulation loop to execute.
ROM extensions: .lnx, .lyx, .o
Core options: none documented in the libretro port.
files:
- name: "lynxboot.img"
description: "Atari Lynx boot ROM"
region: "World"
required: true
size: 512
sha1: "e4ed47fae31693e016b081c6bda48da5b70d7ccb"
md5: "fcd403db69f54290b51035d82f835e7b"
crc32: "0d973c9d"
source_ref: "libretro.cpp:106-130 (load_bootroms), media.cpp:274-329 (LoadBios), defines.h:52 (GLYNX_BIOS_SIZE=0x200), game_db.h:38 (GLYNX_DB_BIOS_CRC=0x0D973C9D), gearlynx_core_inline.h:33-37 (no-bios guard)"
notes: "512-byte boot ROM validated by CRC32 after load. Invalid CRC logs a warning but still works. Missing or wrong-size file blocks emulation entirely (no HLE fallback)."

71
emulators/gearsystem.yml Normal file
View File

@@ -0,0 +1,71 @@
emulator: Gearsystem
type: libretro
source: "https://github.com/drhelius/Gearsystem"
profiled_date: "2026-03-18"
core_version: "3.2.0"
display_name: "Sega - MS/GG/SG-1000 (Gearsystem)"
cores:
- gearsystem
systems:
- sega-mastersystem
- sega-gamegear
- sega-sg1000
notes: |
Gearsystem is a Sega Master System / Game Gear / SG-1000 emulator by
Ignacio Sanchez (drhelius). No BIOS is required for normal operation.
The core supports optional boot ROMs for Master System and Game Gear,
controlled by core options "gearsystem_bios_sms" and "gearsystem_bios_gg"
(both disabled by default). Boot ROMs are loaded in load_bootroms()
from the system directory with fixed filenames.
SG-1000 has no BIOS support. IsBootromEnabled() in Memory.cpp explicitly
returns false when a SG-1000 cartridge is detected.
When enabled, the boot ROM executes as on original hardware, which may
cause invalid ROMs to lock or fail to boot entirely.
Note: gearcoleco, geargrafx, and gearlynx are separate emulators by the
same author covering ColecoVision, PC Engine, and Atari Lynx respectively.
They are not part of Gearsystem.
files:
# --- Master System boot ROM (optional, behind gearsystem_bios_sms) ---
- name: "bios.sms"
system: sega-mastersystem
description: "Master System boot ROM"
required: false
source_ref: "platforms/libretro/libretro.cpp:414 (load_bootroms)"
notes: "Loaded from system directory. Core option gearsystem_bios_sms must be set to Enabled. No size or hash validation performed by the core."
# --- Game Gear boot ROM (optional, behind gearsystem_bios_gg) ---
- name: "bios.gg"
system: sega-gamegear
description: "Game Gear boot ROM"
required: false
source_ref: "platforms/libretro/libretro.cpp:415 (load_bootroms)"
notes: "Loaded from system directory. Core option gearsystem_bios_gg must be set to Enabled. No size or hash validation performed by the core."
platform_details:
mastersystem:
bios_filename: "bios.sms"
source_ref: "src/Memory.cpp:222-228"
notes: |
Boot ROM loaded via LoadBootromSMS() -> LoadBootroom(path, false).
Raw binary read, stored in m_pBootromSMS. Bank count computed as
Pow2Ceil(size / 0x4000). Memory mapping controlled by port 3E bit 3.
gamegear:
bios_filename: "bios.gg"
source_ref: "src/Memory.cpp:230-234"
notes: |
Boot ROM loaded via LoadBootromGG() -> LoadBootroom(path, true).
Raw binary read, stored in m_pBootromGG. Same bank computation.
Supports standard GG BIOS and Majesco 1KB variant.
sg1000:
bios_filename: null
notes: |
No BIOS support. Memory.cpp:291 returns false from IsBootromEnabled()
when IsSG1000() is true.

View File

@@ -0,0 +1,157 @@
emulator: Genesis Plus GX
type: libretro
source: "https://github.com/libretro/Genesis-Plus-GX"
profiled_date: "2026-03-18"
core_version: "v1.7.4"
display_name: "Sega - MS/GG/MD/CD (Genesis Plus GX)"
cores:
- genesis_plus_gx
- genesis_plus_gx_wide
systems:
- sega-megadrive
- sega-megacd
- sega-mastersystem
- sega-gamegear
- sega-sg1000
notes: |
Genesis Plus GX is a Sega 8/16-bit emulator covering SG-1000, Master System,
Game Gear, Mega Drive/Genesis, and Mega CD/Sega CD.
BIOS loading is handled by load_bios() in core/loadrom.c. The libretro port
resolves filenames from the system directory in libretro/libretro.c:3516-3527.
Mega CD BIOS is required to boot CD images (load fails without it).
Master System, Game Gear, and Mega Drive BIOS files are optional boot ROMs
gated behind the "genesis_plus_gx_bios" core option (config.bios).
Lock-on ROMs (Game Genie, Action Replay, Sonic & Knuckles) are optional
and loaded only when the corresponding lock-on feature is enabled.
files:
# -------------------------------------------------------
# Sega Mega CD / Sega CD - boot ROMs (required for CD)
# -------------------------------------------------------
- name: bios_CD_U.bin
system: sega-megacd
required: true
size: 131072 # 128 KB (0x20000)
note: "Sega CD (NTSC-U) boot ROM. Loaded for REGION_USA."
source_ref: "core/loadrom.c:409"
- name: bios_CD_E.bin
system: sega-megacd
required: true
size: 131072
note: "Mega CD (PAL) boot ROM. Loaded for REGION_EUROPE."
source_ref: "core/loadrom.c:412"
- name: bios_CD_J.bin
system: sega-megacd
required: true
size: 131072
note: "Mega CD (NTSC-J) boot ROM. Loaded for default/Japan region."
source_ref: "core/loadrom.c:415"
# -------------------------------------------------------
# Sega Master System - boot ROMs (optional, behind config.bios)
# -------------------------------------------------------
- name: bios_U.sms
system: sega-mastersystem
required: false
note: "Master System (NTSC-U) boot ROM. Snail maze game built in."
source_ref: "core/loadrom.c:511"
- name: bios_E.sms
system: sega-mastersystem
required: false
note: "Master System (PAL) boot ROM. Snail maze / Sonic built in."
source_ref: "core/loadrom.c:514"
- name: bios_J.sms
system: sega-mastersystem
required: false
note: "Master System (NTSC-J) boot ROM."
source_ref: "core/loadrom.c:517"
# -------------------------------------------------------
# Sega Game Gear - boot ROM (optional, behind config.bios)
# -------------------------------------------------------
- name: bios.gg
system: sega-gamegear
required: false
note: "Game Gear boot ROM (Majesco 1KB or standard). Shows startup logo."
source_ref: "core/loadrom.c:480"
# -------------------------------------------------------
# Sega Mega Drive / Genesis - TMSS boot ROM (optional)
# -------------------------------------------------------
- name: bios_MD.bin
system: sega-megadrive
required: false
size: 2048 # 2 KB (0x800)
note: "Mega Drive TMSS boot ROM. Shows 'Produced by or under license' screen."
source_ref: "libretro/libretro.c:3651"
# -------------------------------------------------------
# Lock-on ROMs (optional, feature-gated)
# -------------------------------------------------------
- name: ggenie.bin
system: sega-megadrive
required: false
size: 32768 # 32 KB (0x8000)
note: "Game Genie ROM. Loaded when Game Genie lock-on is enabled."
source_ref: "core/cart_hw/ggenie.c:64"
- name: areplay.bin
system: sega-megadrive
required: false
size: 65536 # max 64 KB (0x10000)
note: "Action Replay (Pro) ROM. Loaded when Action Replay lock-on is enabled."
source_ref: "core/cart_hw/areplay.c:64"
- name: sk.bin
system: sega-megadrive
required: false
size: 2097152 # 2 MB (0x200000)
note: "Sonic & Knuckles ROM. Required for S&K lock-on feature."
source_ref: "core/cart_hw/md_cart.c:867"
- name: sk2chip.bin
system: sega-megadrive
required: false
size: 262144 # 256 KB (0x40000)
note: "Sonic & Knuckles UPMEM ROM. Used by Sonic 2 & Knuckles lock-on."
source_ref: "core/cart_hw/md_cart.c:873"
platform_details:
megacd:
bootrom_size: 131072 # 128 KB
source_ref: "core/cd_hw/scd.h:73"
notes: |
CD boot ROM region is auto-detected from disc image header.
Hardware model detected from boot ROM string at offset 0x120:
WONDER-MEGA BOOT -> Wondermega
WONDERMEGA2 BOOT -> Wondermega M2 / X'Eye
CDX BOOT ROM -> CDX / Multi-Mega
megadrive:
tmss_rom_size: 2048 # 2 KB
source_ref: "libretro/libretro.c:3648-3666"
notes: |
TMSS boot ROM validated by checking "GENESIS OS" at offset 0x120.
Only loaded when genesis_plus_gx_bios core option is enabled.
mastersystem:
bios_max_size: 4194304 # 4 MB (stored above cart ROM)
source_ref: "core/loadrom.c:504-527"
notes: |
BIOS ROM loaded into cart.rom + 0x400000. SEGA mapper assumed
for ROMs larger than 48KB, otherwise no mapper.
Region selected based on current region_code setting.
gamegear:
bios_max_size: 4194304 # 4 MB (stored above cart ROM)
source_ref: "core/loadrom.c:467-489"
notes: |
Handles 1KB Majesco GG BIOS (mapped to $0000-$03FF) and
standard larger BIOS ROMs.

148
emulators/geolith.yml Normal file
View File

@@ -0,0 +1,148 @@
emulator: Geolith
type: libretro
source: "https://github.com/libretro/geolith-libretro"
profiled_date: "2026-03-18"
core_version: "0.3.0"
display_name: "SNK - Neo Geo AES/MVS (Geolith)"
systems:
- snk-neogeo-mvs
- snk-neogeo-aes
notes: |
Geolith is a highly accurate Neo Geo AES and MVS emulator using .NEO format
ROMs only. BIOS files must be provided as MAME-format ZIP archives in the
system directory. The core selects which ZIP to open based on the
"geolith_system_type" core option (libretro/libretro.c:1017-1018):
- AES mode -> aes.zip
- MVS mode -> neogeo.zip
- Uni mode -> neogeo.zip (loads uni-bios_4_0.rom from it)
Inside the ZIP, specific ROM files are extracted by filename
(src/geo.c:162-241):
1. One 68K BIOS ROM, selected by system type + region:
- AES Japan: neo-po.bin
- AES other: neo-epo.bin
- MVS US: sp-u2.sp1
- MVS Japan: japan-j3.bin
- MVS Asia: sp-45.sp1
- MVS Europe: sp-s2.sp1
- Universe: uni-bios_4_0.rom
2. 000-lo.lo (zoom lookup table, always required)
3. sfix.sfix (FIX layer tiles, required for MVS/Uni, not AES)
4. sm1.sm1 (Z80 sound BIOS, required for MVS/Uni, not AES)
The AES mode only needs the 68K BIOS + 000-lo.lo. MVS and Universe BIOS
modes additionally need sfix.sfix and sm1.sm1.
files:
# -----------------------------------------------------------
# neogeo.zip - MVS and Universe BIOS
# -----------------------------------------------------------
# MVS 68K BIOS ROMs (one required per region)
- name: "sp-u2.sp1"
archive: neogeo.zip
system: snk-neogeo-mvs
required: true
size: 131072
crc32: "e72943de"
note: "MVS USA ver. 5 (2 slot) - default for US region"
source_ref: "src/geo.c:174"
- name: "japan-j3.bin"
archive: neogeo.zip
system: snk-neogeo-mvs
required: false
size: 131072
crc32: "dff6d41f"
note: "MVS Japan (J3) - default for JP region"
source_ref: "src/geo.c:177"
- name: "sp-45.sp1"
archive: neogeo.zip
system: snk-neogeo-mvs
required: false
size: 524288
crc32: "03cc9f6a"
note: "NEO-MVH MV1C (Asia) - default for AS region"
source_ref: "src/geo.c:179"
- name: "sp-s2.sp1"
archive: neogeo.zip
system: snk-neogeo-mvs
required: false
size: 131072
crc32: "9036d879"
note: "MVS Asia/Europe ver. 5 (1 slot) - default for EU region"
source_ref: "src/geo.c:183"
# Universe BIOS (loaded from neogeo.zip when system type = uni)
- name: "uni-bios_4_0.rom"
archive: neogeo.zip
system: snk-neogeo-mvs
required: false
size: 131072
crc32: "a7aab458"
note: "Universe BIOS ver. 4.0 - only version supported by Geolith"
source_ref: "src/geo.c:189"
# Shared ROMs (required for MVS and Universe modes)
- name: "000-lo.lo"
archive: neogeo.zip
system: snk-neogeo-mvs
required: true
size: 131072
crc32: "5a86cff2"
note: "Zoom lookup table (vertical shrink ROM)"
source_ref: "src/geo.c:207-208"
- name: "sfix.sfix"
archive: neogeo.zip
system: snk-neogeo-mvs
required: true
size: 131072
crc32: "c2ea0cfd"
note: "System FIX layer tiles (text layer)"
source_ref: "src/geo.c:218-219"
- name: "sm1.sm1"
archive: neogeo.zip
system: snk-neogeo-mvs
required: true
size: 131072
crc32: "94416d67"
note: "Z80 sound BIOS"
source_ref: "src/geo.c:229-230"
# -----------------------------------------------------------
# aes.zip - AES (Home Console)
# -----------------------------------------------------------
# AES 68K BIOS ROMs (one required per region)
- name: "neo-epo.bin"
archive: aes.zip
system: snk-neogeo-aes
required: true
size: 131072
crc32: "d27a71f1"
note: "AES Asia/US/EU - default for non-JP regions"
source_ref: "src/geo.c:168"
- name: "neo-po.bin"
archive: aes.zip
system: snk-neogeo-aes
required: false
size: 131072
crc32: "16d0c132"
note: "AES Japan - default for JP region"
source_ref: "src/geo.c:167-168"
# Shared ROM (always required for AES)
- name: "000-lo.lo"
archive: aes.zip
system: snk-neogeo-aes
required: true
size: 131072
crc32: "5a86cff2"
note: "Zoom lookup table (same ROM as in neogeo.zip)"
source_ref: "src/geo.c:207-208"

15
emulators/gme.yml Normal file
View File

@@ -0,0 +1,15 @@
emulator: Game Music Emu
type: utility
source: "https://github.com/libretro/libretro-gme"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Game Music Emu"
cores: [gme]
systems: []
files: []
notes: >
Libretro wrapper around Blargg's Game Music Emu library.
Plays chiptune music files from various consoles: NSF (NES), SPC (SNES),
GBS (Game Boy), VGM/VGZ (Sega), HES (PC Engine), AY (ZX Spectrum),
SAP (Atari), KSS (MSX). Loads music files as content.
No BIOS, firmware, or system directory files required.

13
emulators/gong.yml Normal file
View File

@@ -0,0 +1,13 @@
emulator: Gong
type: game
source: "https://github.com/libretro/gong"
profiled_date: "2026-03-18"
core_version: "1.0"
display_name: "Gong"
cores: [gong]
systems: []
files: []
notes: >
Simple Pong clone written as a minimal libretro core example.
Self-contained with all rendering done programmatically.
No content file, BIOS, or system directory files required.

68
emulators/gpsp.yml Normal file
View File

@@ -0,0 +1,68 @@
emulator: gpSP
type: libretro
source: "https://github.com/libretro/gpsp"
profiled_date: "2026-03-18"
core_version: "Git"
display_name: "Nintendo - Game Boy Advance (gpSP)"
cores:
- gpsp
systems:
- nintendo-gba
notes: |
gpSP is a Game Boy Advance emulator originally by Exophase, ported to
libretro. Historically it required the official GBA BIOS to run. Current
versions ship a built-in open-source BIOS (bios/open_gba_bios.bin) compiled
from bios/source/ that covers most games.
The core option gpsp_bios controls BIOS selection:
auto (default) - try official gba_bios.bin, fall back to built-in
builtin - always use the built-in open-source BIOS
official - try gba_bios.bin, warn and fall back to built-in if missing
A second option gpsp_boot_mode selects startup behavior:
game (default) - skip BIOS intro, boot directly into game
bios - run the BIOS boot animation before launching
BIOS loading path (libretro/libretro.c:1093-1131):
1. Resolve system directory (RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY)
2. Append "/gba_bios.bin"
3. load_bios() reads 0x4000 (16 KB) into bios_rom[]
4. Sanity check: bios_rom[0] must be 0x18 (ARM branch opcode)
5. On failure, memcpy open_gba_bios_rom[] as fallback
The official BIOS improves compatibility for a few games that rely on
precise SWI behavior or BIOS checksum verification. The built-in BIOS
works for the vast majority of the GBA library.
files:
# -------------------------------------------------------
# Game Boy Advance - BIOS (optional, built-in fallback)
# -------------------------------------------------------
- name: gba_bios.bin
system: nintendo-gba
required: false
size: 16384 # 16 KB (0x4000)
note: "Official GBA BIOS. Built-in open-source BIOS used as fallback. Real BIOS needed for full SWI accuracy and boot logo."
source_ref: "libretro/libretro.c:1111"
platform_details:
gba:
bios_size: 16384 # 16 KB
hle_bios: true
source_ref: "libretro/libretro.c:1107-1131, bios/source/"
notes: |
The built-in BIOS (open_gba_bios_rom, 16 KB) is an open-source
reimplementation compiled from bios/source/. It implements most
SWI calls (SoftReset, RegisterRamReset, Halt, VBlankIntrWait,
arithmetic, decompression, sound, multiboot).
Validation is minimal: load_bios() in gba_memory.c reads exactly
0x4000 bytes. The libretro frontend checks bios_rom[0] == 0x18
(ARM branch instruction at reset vector) to reject garbage files.
No hash or checksum verification is performed.
The bios_type enum (main.h:56-61) defines three modes:
auto_detect - try official first, fall back to built-in
builtin_bios - skip file load entirely, use open_gba_bios_rom
official_bios - try file, warn on failure, still fall back

Some files were not shown because too many files have changed in this diff Show More