12 Commits

Author SHA1 Message Date
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
102 changed files with 15431 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",

47
emulators/a5200.yml Normal file
View File

@@ -0,0 +1,47 @@
emulator: a5200
type: libretro
source: "https://github.com/libretro/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.

178
emulators/atari800.yml Normal file
View File

@@ -0,0 +1,178 @@
emulator: Atari800
type: libretro
source: "https://github.com/libretro/libretro-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.

103
emulators/b2.yml Normal file
View File

@@ -0,0 +1,103 @@
emulator: b2
type: standalone
source: "https://github.com/tom-seddon/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: []

32
emulators/beetle_lynx.yml Normal file
View File

@@ -0,0 +1,32 @@
emulator: Beetle Lynx (Mednafen Lynx)
type: libretro
source: "https://github.com/libretro/beetle-lynx-libretro"
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."

33
emulators/beetle_ngp.yml Normal file
View File

@@ -0,0 +1,33 @@
emulator: Beetle NGP (Mednafen Neo Geo Pocket)
type: libretro
source: "https://github.com/libretro/beetle-ngp-libretro"
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: []

88
emulators/beetle_pce.yml Normal file
View File

@@ -0,0 +1,88 @@
emulator: Beetle PCE (Mednafen PCE)
type: libretro
source: "https://github.com/libretro/beetle-pce-libretro"
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).

49
emulators/beetle_pcfx.yml Normal file
View File

@@ -0,0 +1,49 @@
emulator: Beetle PC-FX (Mednafen)
type: libretro
cores: [mednafen_pcfx]
source: "https://github.com/libretro/beetle-pcfx-libretro"
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"

83
emulators/beetle_psx.yml Normal file
View File

@@ -0,0 +1,83 @@
emulator: Beetle PSX (Mednafen PSX)
type: libretro
source: "https://github.com/libretro/beetle-psx-libretro"
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,93 @@
emulator: Beetle Saturn (Mednafen)
type: libretro
core: mednafen_saturn_libretro
source: "https://github.com/libretro/beetle-saturn-libretro"
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"

26
emulators/beetle_vb.yml Normal file
View File

@@ -0,0 +1,26 @@
emulator: Beetle VB (Mednafen Virtual Boy)
type: libretro
source: "https://github.com/libretro/beetle-vb-libretro"
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,31 @@
emulator: Beetle WonderSwan (Mednafen WonderSwan)
type: libretro
source: "https://github.com/libretro/beetle-wswan-libretro"
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: []

149
emulators/bk.yml Normal file
View File

@@ -0,0 +1,149 @@
emulator: bk-emulator
type: libretro
source: "https://github.com/libretro/bk-emulator"
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.

55
emulators/blastem.yml Normal file
View File

@@ -0,0 +1,55 @@
emulator: BlastEm
type: libretro
source: "https://github.com/libretro/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.

644
emulators/bluemsx.yml Normal file
View File

@@ -0,0 +1,644 @@
emulator: blueMSX
type: libretro
source: "https://github.com/libretro/blueMSX-libretro"
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.

189
emulators/bsnes.yml Normal file
View File

@@ -0,0 +1,189 @@
emulator: bsnes
type: libretro
source: "https://github.com/libretro/bsnes-libretro"
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.

385
emulators/cannonball.yml Normal file
View File

@@ -0,0 +1,385 @@
emulator: Cannonball
type: libretro
source: "https://github.com/libretro/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"

70
emulators/cap32.yml Normal file
View File

@@ -0,0 +1,70 @@
emulator: Caprice32
type: libretro
source: "https://github.com/libretro/libretro-cap32"
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)

399
emulators/cemu.yml Normal file
View File

@@ -0,0 +1,399 @@
emulator: Cemu
type: standalone
source: "https://github.com/cemu-project/Cemu"
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.

86
emulators/citra.yml Normal file
View File

@@ -0,0 +1,86 @@
emulator: Citra / Lime3DS / Azahar
type: standalone + libretro
source: "https://github.com/azahar-emu/azahar"
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"

59
emulators/crocods.yml Normal file
View File

@@ -0,0 +1,59 @@
emulator: CrocoDS
type: libretro
source: "https://github.com/libretro/libretro-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

41
emulators/desmume.yml Normal file
View File

@@ -0,0 +1,41 @@
emulator: DeSmuME
type: libretro
source: "https://github.com/libretro/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"

182
emulators/dolphin.yml Normal file
View File

@@ -0,0 +1,182 @@
emulator: Dolphin
type: standalone + libretro
source: "https://github.com/dolphin-emu/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.

171
emulators/dosbox_core.yml Normal file
View File

@@ -0,0 +1,171 @@
emulator: DOSBox-core
type: libretro
source: "https://github.com/libretro/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.

139
emulators/dosbox_pure.yml Normal file
View File

@@ -0,0 +1,139 @@
emulator: DOSBox Pure
type: libretro
source: "https://github.com/libretro/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.

1074
emulators/duckstation.yml Normal file

File diff suppressed because it is too large Load Diff

32
emulators/ecwolf.yml Normal file
View File

@@ -0,0 +1,32 @@
emulator: ECWolf
type: libretro
source: "https://github.com/libretro/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.

66
emulators/emuscv.yml Normal file
View File

@@ -0,0 +1,66 @@
emulator: EmuSCV
type: libretro
source: "https://github.com/wzcwzc/emuscv"
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"

309
emulators/ep128emu.yml Normal file
View File

@@ -0,0 +1,309 @@
emulator: ep128emu-core
type: libretro
source: "https://github.com/libretro/ep128emu-core"
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"

1343
emulators/fbneo.yml Normal file

File diff suppressed because it is too large Load Diff

52
emulators/fceumm.yml Normal file
View File

@@ -0,0 +1,52 @@
emulator: FCEUmm
type: libretro
source: "https://github.com/libretro/libretro-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."

42
emulators/fixgb.yml Normal file
View File

@@ -0,0 +1,42 @@
emulator: fixGB
type: libretro
source: "https://github.com/libretro/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."

185
emulators/flycast.yml Normal file
View File

@@ -0,0 +1,185 @@
emulator: Flycast
type: standalone + libretro
source: "https://github.com/flyinghead/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"

185
emulators/fmsx.yml Normal file
View File

@@ -0,0 +1,185 @@
emulator: fMSX
type: libretro
source: "https://github.com/libretro/fmsx-libretro"
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)."

81
emulators/freechaf.yml Normal file
View File

@@ -0,0 +1,81 @@
emulator: FreeChaF
type: libretro
source: "https://github.com/libretro/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.

71
emulators/freeintv.yml Normal file
View File

@@ -0,0 +1,71 @@
emulator: FreeIntv
type: libretro
source: "https://github.com/libretro/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.

39
emulators/freej2me.yml Normal file
View File

@@ -0,0 +1,39 @@
emulator: FreeJ2ME
type: libretro
source: "https://github.com/hex007/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."

396
emulators/fuse.yml Normal file
View File

@@ -0,0 +1,396 @@
emulator: Fuse
type: libretro
source: "https://github.com/libretro/fuse-libretro"
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.

94
emulators/galaksija.yml Normal file
View File

@@ -0,0 +1,94 @@
emulator: galaksija
type: libretro
source: "https://github.com/libretro/galaxy-libretro"
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.

53
emulators/gambatte.yml Normal file
View File

@@ -0,0 +1,53 @@
emulator: Gambatte
type: libretro
source: "https://github.com/libretro/gambatte-libretro"
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."

56
emulators/gearcoleco.yml Normal file
View File

@@ -0,0 +1,56 @@
emulator: Gearcoleco
type: libretro
source: "https://github.com/drhelius/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.

128
emulators/geargrafx.yml Normal file
View File

@@ -0,0 +1,128 @@
emulator: Geargrafx
type: libretro
source: "https://github.com/drhelius/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)" }

43
emulators/gearlynx.yml Normal file
View File

@@ -0,0 +1,43 @@
emulator: Gearlynx
type: libretro
source: "https://github.com/drhelius/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)."

68
emulators/gearsystem.yml Normal file
View File

@@ -0,0 +1,68 @@
emulator: Gearsystem
type: libretro
source: "https://github.com/drhelius/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,154 @@
emulator: Genesis Plus GX
type: libretro
source: "https://github.com/libretro/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.

145
emulators/geolith.yml Normal file
View File

@@ -0,0 +1,145 @@
emulator: Geolith
type: libretro
source: "https://github.com/libretro/geolith-libretro"
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"

65
emulators/gpsp.yml Normal file
View File

@@ -0,0 +1,65 @@
emulator: gpSP
type: libretro
source: "https://github.com/libretro/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

39
emulators/handy.yml Normal file
View File

@@ -0,0 +1,39 @@
emulator: Handy
type: libretro
source: "https://github.com/libretro/libretro-handy"
systems: [atari-lynx]
notes: |
Handy is an Atari Lynx emulator. The core loads lynxboot.img from
the system directory and validates it by CRC32 (0x0D973C9D). If the
file is missing or the CRC does not match, the core falls back to an
internal HLE BIOS that replicates the boot sequence in software
(ram clear, cart loader decrypt, jump to $0200).
The HLE path intercepts CPU calls to ROM addresses FE00, FE19, FE4A
and FF80 via a Mikie register write trap (address 0xFD97). When
useEmu is true (no valid BIOS loaded), CRom initialises mRomData
with a default fill byte (0x88) plus reset vectors pointing to
the HLE entry points. The cart decryption uses a hardcoded RSA
public key (lynxdec.cpp) identical to the real hardware.
With the real BIOS, the first frame has unusually high cycle counts
because hardware timers start from the boot ROM rather than being
set artificially. Blip_Buffer::end_frame() caps the audio buffer
to handle this overflow.
File path: libretro.cpp retro_load_game() joins
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY with "lynxboot.img".
No subdirectory.
files:
- name: "lynxboot.img"
system: atari-lynx
description: "Atari Lynx boot ROM (Mikie internal 512B ROM)"
required: false
size: 512
md5: "fcd403db69f54290b51035d82f835e7b"
sha1: "e4ed47fae31693e016b081c6bda48da5b70d7ccb"
crc32: "0d973c9d"
source_ref: "rom.h:48-49 (ROM_SIZE=0x200, ROM_CRC32=0xD973C9D), rom.cpp:76-128 (CRom constructor), libretro.cpp:1231-1258 (bios path + CSystem init)"
notes: "Validated by CRC32 at load time. If invalid or missing, core uses HLE fallback (system.cpp HLE_BIOS_* functions). Games work without it but the real boot ROM provides accurate startup timing."

84
emulators/hatari.yml Normal file
View File

@@ -0,0 +1,84 @@
emulator: Hatari
type: libretro
source: "https://github.com/libretro/hatari"
systems: [atari-st, atari-ste, atari-tt, atari-falcon]
# Hatari requires a TOS ROM image to boot. The default filename is tos.img,
# loaded from either system/ or system/hatari/tos/ (libretro core scans both).
# EmuTOS (open source replacement) is detected via 'ETOS' magic at offset 0x2c.
# Cartridge ROM is optional and loaded from szCartridgeImageFileName config.
# TOS version/machine compatibility (enforced in tos.c TOS_CheckSysConfig):
# TOS 1.00-1.04 -> ST only, 68000
# TOS 1.06/1.62 -> STE only
# TOS 2.0x -> ST/STE (patched for ST compatibility)
# TOS 3.0x -> TT only, 68030+
# TOS 4.0x -> Falcon only, 68020+
# EmuTOS -> all machine types (no version constraint)
# Libretro core search paths (libretro.c):
# 1. <system>/tos.img (legacy default)
# 2. <system>/hatari/tos/ directory (all .img/.rom/.tos files listed as options)
# Core option "hatari_tosimage" selects which TOS image to use.
files:
# -- Primary TOS ROM (required) --
# At minimum one TOS image must be present. The most commonly used
# version is TOS 1.02, which is the default for Atari ST emulation.
- name: "tos.img"
path: "tos.img"
required: true
note: >
TOS ROM image. Any valid version (1.00 through 4.04) or EmuTOS works.
The core auto-detects version from the ROM header and adjusts machine type.
Default location is system/tos.img, additional images go in system/hatari/tos/.
source_ref: "src/tos.c:576-696, libretro/libretro.c:387-410"
# -- Cartridge ROM (optional) --
# External cartridge image, max 128 KB. Formats: .img, .rom, .stc
# Cannot be used together with GEMDOS HD emulation or extended VDI resolution.
- name: "cartridge ROM"
path: null # user-configured via szCartridgeImageFileName
required: false
max_size: 131076 # 0x20004 (.stc with 4-byte header) or 0x20000 (raw)
note: >
External cartridge image. Loaded to address 0xFA0000.
STC format images (0x20004 bytes) have a 4-byte header that is stripped.
Mutually exclusive with GEMDOS hard disk emulation and extended VDI.
source_ref: "src/cart.c:53-88"
# Supported TOS versions (from patch table in tos.c):
# 0x100 - TOS 1.00 (ST, 68000 only, no VDI extensions)
# 0x102 - TOS 1.02 (ST, most common for gaming)
# 0x104 - TOS 1.04 (ST, adds autostart support)
# 0x106 - TOS 1.06 (STE only)
# 0x162 - TOS 1.62 (STE only)
# 0x205 - TOS 2.05 (STE native, patched for ST)
# 0x206 - TOS 2.06 (STE/ST)
# 0x306 - TOS 3.06 (TT, 68030+)
# 0x400 - TOS 4.00 (Falcon, 68020+)
# 0x401 - TOS 4.01 (Falcon)
# 0x402 - TOS 4.02 (Falcon)
# 0x404 - TOS 4.04 (Falcon)
# 0x492 - TOS 4.92 (RAM TOS variant)
# TOS ROM sizes (typical):
# 192 KB (0x30000) - TOS 1.0x (loaded at 0xFC0000)
# 256 KB (0x40000) - TOS 2.0x+ (loaded at 0xE00000)
# Up to 1 MB - maximum accepted by the loader
# File extensions scanned: .img, .rom, .tos
notes:
emutos_note: >
EmuTOS is a free open-source TOS replacement that works with all machine types.
Hatari detects it via the 'ETOS' signature at ROM offset 0x2c and skips
machine-type enforcement and ROM patches.
gemdos_boot_note: >
When using GEMDOS hard disk mode with .gem files, the core also loads
system/hatari/BOOT.ST as a floppy image for bootstrapping.
libretro_path_note: >
The libretro core checks system/tos.img first for backward compatibility,
then scans system/hatari/tos/ for additional TOS images exposed as core options.

42
emulators/hbmame.yml Normal file
View File

@@ -0,0 +1,42 @@
emulator: HBMAME (Homebrew MAME)
type: libretro
source: "https://github.com/libretro/hbmame-libretro"
based_on: MAME 0.220
author: Robbbert
game_count: 8511
notes: |
HBMAME (Home Brew MAME) is a fork of MAME focused on two things: preserving
homebrew games written for arcade hardware, and including worthwhile hacks of
existing arcade games. The libretro port builds as TARGET=hbmame.
Based on MAME 0.220 (src/version.cpp: BARE_BUILD_VERSION "0.220"). The core
carries 191 driver files under src/hbmame/drivers/ covering ~8500 game entries
(hbmame.lst). Most drivers are hack/homebrew variants of well-known arcade
boards: CPS1, CPS2, CPS3, Neo Geo, Pac-Man, Galaxian, etc.
BIOS handling is identical to MAME. HBMAME does not define any custom BIOS
ROMs beyond what standard MAME uses. The Neo Geo subsystem (which accounts for
the bulk of hbmame content) reuses the same neogeo.zip BIOS set as MAME:
sp-s2.sp1, sm1.sm1, sfix.sfix, 000-lo.lo, plus regional and Universe BIOS
variants. The NEO_BIOS macros in src/hbmame/includes/neogeo.h are copied
directly from MAME with no modifications to hashes or filenames.
The neogeo_noslot.cpp driver includes a reduced MV1C-only BIOS set for a few
specific PCB games (sp-45.sp1, sp1-j3.bin). The neogeohb.cpp driver handles
homebrew and unreleased Neo Geo titles (numbered 300-999) using the same
standard BIOS infrastructure.
No other hbmame-specific drivers (CPS1, CPS2, Pac-Man, Galaxian, etc.) define
ROM_SYSTEM_BIOS entries. Their games are ROM-only hacks that rely on parent
MAME sets for any BIOS needs.
BIOS files are expected as MAME-format ZIP archives in the ROM search path.
Users with a working MAME 0.220 BIOS collection need nothing extra for HBMAME.
bios_impact: none
bios_note: |
Uses the same BIOS ZIPs as MAME 0.220. No custom or modified BIOS entries.
The primary BIOS dependency is neogeo.zip for the large Neo Geo homebrew/hack
library. Other arcade boards (CPS, Pac-Man, Galaxian, etc.) are ROM-only hacks
with no additional BIOS requirements beyond standard MAME parent sets.

79
emulators/jollycv.yml Normal file
View File

@@ -0,0 +1,79 @@
emulator: JollyCV
type: libretro
source: "https://github.com/libretro/jollycv"
cores:
- jollycv
systems:
- colecovision
- creativision
- myvision
notes: |
JollyCV is a multi-system emulator by Rupert Carmichael supporting
ColecoVision (with Super Game Module), CreatiVision, and My Vision.
BIOS handling depends on the detected system type (set via core option
or auto-detected from ROM database via jcv_process_hash/jcv_get_dbflags):
- ColecoVision (JCV_SYS_COLECO): loads "coleco.rom" from system dir.
BIOS is mapped at 0x0000-0x1FFF. Size must be exactly 8192 bytes
(SIZE_CVBIOS = SIZE_8K = 0x2000). Load fails if size mismatches.
Without the BIOS, ColecoVision games will not run (load returns false).
- CreatiVision (JCV_SYS_CRVISION): loads "bioscv.rom" from system dir.
BIOS is mapped at 0xF800-0xFFFF. Size must be exactly 2048 bytes
(SIZE_CRVBIOS = SIZE_2K = 0x800). Without the BIOS, CreatiVision
games will not run.
- My Vision (JCV_SYS_MYVISION): no BIOS required.
The libretro port constructs paths via snprintf("%s%c%s", sysdir, pss,
filename) in libretro.c:699-711. jcv_bios_load_file() opens the file,
reads it fully, then delegates to jcv_coleco_bios_load() or
jcv_crvision_bios_load() which validate size before copying.
ColecoVision cartridge header bytes at offset 0x0000-0x0001 control
boot behavior: 0xAA55 shows the BIOS title screen, 0x55AA jumps
directly to the game code vector.
The core includes a built-in ROM database with MD5 hashes (gamedb.h)
for game-specific flags, but this is for game compatibility, not BIOS
verification.
files:
# --- ColecoVision BIOS (required for CV games) ---
- name: "coleco.rom"
system: colecovision
description: "ColecoVision BIOS ROM"
required: true
size: 8192
md5: "2c66f5911e5b42b8ebe113403548eee7"
sha1: "4aa1d9b48f39b68bb17b3d6997b74850c6089dc3"
source_ref: "libretro/libretro.c:701, src/jcv_coleco.c:402-406"
notes: "Mapped at 0x0000-0x1FFF. Replaced by SGM lower RAM when Super Game Module is active. Must be exactly 8192 bytes."
# --- CreatiVision BIOS (required for CV games) ---
- name: "bioscv.rom"
system: creativision
description: "VTech CreatiVision BIOS ROM"
required: true
size: 2048
source_ref: "libretro/libretro.c:711, src/jcv_crvision.c:315-318"
notes: "Mapped at 0xF800-0xFFFF. Must be exactly 2048 bytes."
platform_details:
colecovision:
bios_filename: "coleco.rom"
bios_size: 8192
memory_map: "0x0000-0x1FFF"
source_ref: "src/jcv_coleco.c:269-281"
creativision:
bios_filename: "bioscv.rom"
bios_size: 2048
memory_map: "0xF800-0xFFFF"
source_ref: "src/jcv_crvision.c:315-337, 441"
myvision:
bios_required: false
notes: "No BIOS needed. My Vision games run without any system ROM."

238
emulators/kronos.yml Normal file
View File

@@ -0,0 +1,238 @@
emulator: Kronos
type: libretro
cores:
- kronos_libretro
- yabause_libretro
source: "https://github.com/FCare/Kronos"
systems:
- sega-saturn
- sega-stv
notes: |
Kronos is a Sega Saturn and ST-V arcade emulator forked from Yabause.
The libretro repo at libretro/yabause ships the older "Yabause" core
(yabause_libretro) which handles Saturn only and has no STV support.
Saturn BIOS search order (Kronos):
1. {system}/kronos/saturn_bios.bin
2. {system}/saturn_bios.bin
3. {system}/sega_101.bin
4. {system}/mpr-17933.bin
First file found wins. Real BIOS required, HLE is deprecated and causes
issues. Multi-disc (m3u) also forces real BIOS.
Saturn BIOS search order (YabaSanshiro / Yabause):
1. {system}/saturn_bios.bin
2. {system}/sega_101.bin
3. {system}/mpr-17933.bin
Falls back to HLE if none found, but HLE is not recommended.
ST-V BIOS (Kronos only):
{system}/kronos/stvbios.zip or {system}/stvbios.zip
The ZIP is a MAME-style romset containing region-specific EPROMs.
Kronos picks the first matching BIOS by region, with a configurable
"favorite region" core option (EU/US/JP/TW). The ZIP must contain
at least one of the BIOS blobs listed below. ST-V games are detected
automatically when loading a .zip file.
BIOS loading: libretro.c retro_load_game() lines 1601-1727.
STV blob table: ctrl/src/stv.c BiosList lines 112-136.
Region enums: ctrl/include/stv.h lines 47-52.
files:
# -----------------------------------------------------------
# Saturn BIOS - generic (any region accepted)
# -----------------------------------------------------------
- name: "saturn_bios.bin"
system: sega-saturn
required: true
size: 524288 # 512 KB (0x80000)
note: "Primary Saturn BIOS. Any region. Searched first by both cores."
source_ref: "libretro.c:1619-1623 (kronos), libretro.c:1035 (yabause)"
# -----------------------------------------------------------
# Saturn BIOS - Japan v1.01
# -----------------------------------------------------------
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
required: false
size: 524288
md5: "85ec9ca47d8f6807718151cbcca8b964"
note: "Saturn BIOS v1.01 (Japan). Fallback if saturn_bios.bin missing."
source_ref: "libretro.c:1627 (kronos), libretro.c:1039 (yabause)"
# -----------------------------------------------------------
# Saturn BIOS - NA/EU
# -----------------------------------------------------------
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
required: false
size: 524288
md5: "3240872c70984b6cbfda1586cab68dbe"
note: "Saturn BIOS (NA/EU). Last fallback for Saturn mode."
source_ref: "libretro.c:1631 (kronos), libretro.c:1043 (yabause)"
# -----------------------------------------------------------
# ST-V Arcade BIOS (stvbios.zip) - Kronos only
# -----------------------------------------------------------
- name: "stvbios.zip"
system: sega-stv
required: true
note: >
MAME-style ZIP containing ST-V region BIOS EPROMs. Required for
ST-V arcade games. Kronos picks the best match based on game
region and the stv_favorite_region core option. At least one
BIOS blob must be present. Searched in kronos/ subdir first.
source_ref: "libretro.c:1608-1617, ctrl/src/stv.c:112-136"
# -----------------------------------------------------------
# ST-V BIOS blobs inside stvbios.zip
# -----------------------------------------------------------
# Japan
- name: "epr-23603.ic8"
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "f688ae60"
note: "STV BIOS Japan (latest). Inside stvbios.zip."
source_ref: "stv.c:120"
- name: "epr-20091.ic8"
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "59ed40f4"
note: "STV BIOS Japan v1. Inside stvbios.zip."
source_ref: "stv.c:121"
- name: "epr-19730.ic8"
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "d0e0889d"
note: "STV BIOS Japan v2. Inside stvbios.zip."
source_ref: "stv.c:122"
- name: "epr-17951a.ic8"
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "2672f9d8"
note: "STV BIOS Japan v3. Inside stvbios.zip."
source_ref: "stv.c:123"
- name: "epr-17740a.ic8"
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "3e23c81f"
note: "STV BIOS Japan v4. Inside stvbios.zip."
source_ref: "stv.c:124"
- name: "epr-17740.ic8"
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "5c5aa63d"
note: "STV BIOS Japan v5. Inside stvbios.zip."
source_ref: "stv.c:125"
# Europe
- name: "epr-17954a.ic8"
system: sega-stv
region: [europe]
required: false
size: 524288
crc32: "f7722da3"
note: "STV BIOS Europe. Inside stvbios.zip."
source_ref: "stv.c:126"
# USA
- name: "epr-17952a.ic8"
system: sega-stv
region: [north-america]
required: false
size: 524288
crc32: "d1be2adf"
note: "STV BIOS USA. Inside stvbios.zip."
source_ref: "stv.c:127"
- name: "epr-17741a.ic8"
system: sega-stv
region: [north-america]
required: false
size: 524288
crc32: "4166c663"
note: "STV BIOS USA v1. Inside stvbios.zip."
source_ref: "stv.c:128"
# Taiwan
- name: "epr-19854.ic8"
system: sega-stv
region: [taiwan]
required: false
size: 524288
crc32: "e09d1f60"
note: "STV BIOS Taiwan. Inside stvbios.zip."
source_ref: "stv.c:129"
- name: "epr-17953a.ic8"
system: sega-stv
region: [taiwan]
required: false
size: 524288
crc32: "a4c47570"
note: "STV BIOS Taiwan v1. Inside stvbios.zip."
source_ref: "stv.c:130"
- name: "epr-17742a.ic8"
system: sega-stv
region: [taiwan]
required: false
size: 524288
crc32: "02daf123"
note: "STV BIOS Taiwan v2. Inside stvbios.zip."
source_ref: "stv.c:131"
# Debug / Dev
- name: "stv110.bin"
system: sega-stv
required: false
size: 524288
crc32: "3dfeda92"
note: "STV debug BIOS. Inside stvbios.zip. Not used in normal operation."
source_ref: "stv.c:132"
- name: "stv1061.bin"
system: sega-stv
required: false
size: 524288
crc32: "728dbca3"
note: "STV dev BIOS. Inside stvbios.zip. Not used in normal operation."
source_ref: "stv.c:133"
platform_details:
saturn:
bios_size: 524288
bios_address: "0x00000000-0x0007FFFF"
hle_available: true
hle_recommended: false
kronos_bios_subdir: "kronos"
source_ref: "sys/memory/src/memory.c:1346, libretro.c:1619-1638"
stv:
bios_format: "MAME-style ZIP (stvbios.zip)"
blob_size: 524288
blob_load_address: "0x000000"
regions: [japan, europe, north-america, taiwan]
region_selection: "automatic per game, overridable via kronos_stv_favorite_region"
kronos_bios_subdir: "kronos"
source_ref: "ctrl/src/stv.c:112-136, ctrl/include/stv.h:47-52"

284
emulators/mame2003_plus.yml Normal file
View File

@@ -0,0 +1,284 @@
emulator: MAME 2003-Plus
type: libretro
source: "https://github.com/libretro/mame2003-plus-libretro"
mame_version: "0.78 (plus backports)"
systems:
- snk-neogeo-mvs
- snk-neogeo-aes
- igs-pgm
- sega-stv
- sega-megaplay
- sega-megatech
- deco-cassette
- nintendo-playch10
- nintendo-nss
- super-kaneko-nova
- konami-gx
- zn1-capcom
- zn2-capcom
- zn1-taito
- zn1-tecmo
- zn1-video-system
- zn1-acclaim
- zn1-atlus
notes: |
MAME 2003-Plus is a libretro port of MAME 0.78 with backported drivers, bug fixes,
and new game support contributed after the original 0.78 snapshot. It targets
low-end hardware (Raspberry Pi, handhelds) while expanding game compatibility
beyond stock 0.78.
BIOS handling follows standard MAME conventions. Each arcade board with a shared
BIOS defines a parent ROM set. Game drivers reference this parent, and the emulator
merges the parent ZIP contents at load time.
BIOS ZIPs are searched in:
1. {content_dir}/ (same folder as the game ROM)
2. {system_dir}/mame2003-plus/ (libretro system subfolder)
3. {system_dir}/ (libretro system root)
ROM naming follows MAME 0.78 conventions with some updates from the Plus patches.
ROMs from modern MAME may not match expected CRC32/SHA1 values. Use a
mame2003-plus-specific romset for full compatibility.
Key differences from FBNeo and modern MAME:
- Neo Geo: uses mame.sm1 / mamelo.lo / sfix.sfx naming (not sm1.sm1 / 000-lo.lo)
- Neo Geo: Universe BIOS up to 4.0 (FBNeo has newer)
- PGM: uses pgm_p01s.rom naming (not pgm_p01s.u20)
- No NAOMI, no Atomiswave, no CPS-3 (too late for 0.78 era)
- ZN-1/ZN-2 boards present but marked NOT_WORKING
The Neo Geo set is the most critical BIOS for this core since nearly all Neo Geo
games work well. PGM and ST-V have partial support. Most ZN-based games are
flagged NOT_WORKING due to incomplete PlayStation emulation in 0.78.
bios_zips:
# ---------------------------------------------------------
# SNK Neo Geo MVS/AES (neogeo.zip)
# ---------------------------------------------------------
- name: neogeo.zip
system: snk-neogeo-mvs
required: true
note: "MVS/AES BIOS, 15 variants including Universe BIOS 4.0"
source_ref: "src/drivers/neogeo.c:1677-1714"
key_files:
# 68K BIOS variants (one active at a time via dipswitch)
- "sp-s2.sp1 (Europe MVS v2, default)"
- "sp-s.sp1 (Europe MVS v1)"
- "usa_2slt.bin (US MVS v2)"
- "sp-e.sp1 (US MVS v1)"
- "asia-s3.rom (Asia MVS v3)"
- "vs-bios.rom (Japan MVS v6)"
- "sp-j2.sp1 (Japan MVS v2)"
- "uni-bios_4_0.rom (Universe BIOS 4.0, hack)"
- "uni-bios_3_3.rom (Universe BIOS 3.3, hack)"
- "uni-bios_2_0.rom (Universe BIOS 2.0, hack)"
- "uni-bios_1_3.rom (Universe BIOS 1.3, hack)"
- "uni-bios_1_1.rom (Universe BIOS 1.1, hack)"
- "uni-bios_1_0.rom (Universe BIOS 1.0, hack)"
- "neodebug.rom (Debug MVS)"
- "neo-epo.bin (Asia AES)"
# Z80 sound BIOS (always required)
- "mame.sm1 (Z80 sound BIOS, 128KB)"
# Fix tiles (always required)
- "sfix.sfx (fix layer tiles, 128KB)"
# Zoom table (always required)
- "mamelo.lo (Y zoom control, 64KB)"
# Irritating Maze special BIOS (separate from standard neogeo)
# - name: irrmaze.zip (uses 236-bios.bin, Asia-only dedicated cabinet)
# ---------------------------------------------------------
# IGS PGM (pgm.zip)
# ---------------------------------------------------------
- name: pgm.zip
system: igs-pgm
required: true
note: "PGM system BIOS - 68K program, text tiles, samples"
source_ref: "src/drivers/pgm.c:3459-3468"
key_files:
- "pgm_p01s.rom (68K BIOS, 128KB)"
- "pgm_t01s.rom (text tiles, 2MB)"
- "pgm_m01s.rom (samples, 2MB)"
# ---------------------------------------------------------
# Sega ST-V (stvbios.zip)
# ---------------------------------------------------------
- name: stvbios.zip
system: sega-stv
required: true
note: "ST-V (Saturn-based arcade) BIOS, 6 region variants"
source_ref: "src/drivers/stv.c:3741-3767"
key_files:
- "epr19730.ic8 (Japan)"
- "mp17951a.s (Japan alt)"
- "mp17952a.s (USA)"
- "20091.bin (Japan alt 2)"
- "mp17953a.ic8 (Taiwan)"
- "mp17954a.s (Europe)"
# ---------------------------------------------------------
# Sega Mega Play (megaplay.zip)
# ---------------------------------------------------------
- name: megaplay.zip
system: sega-megaplay
required: true
note: "Mega Play BIOS, 2 versions"
source_ref: "src/drivers/segac2.c:5794-5804"
key_files:
- "ep15294.ic2 (Mega Play BIOS v1)"
- "megaplay.bin (Mega Play BIOS v2)"
# ---------------------------------------------------------
# Sega Mega Tech (megatech.zip)
# ---------------------------------------------------------
- name: megatech.zip
system: sega-megatech
required: true
note: "Mega Tech BIOS - menu/instruction screen processor"
source_ref: "src/drivers/segac2.c:5434-5437"
key_files:
- "epr12664.20 (Mega Tech BIOS, 32KB)"
# ---------------------------------------------------------
# DECO Cassette (decocass.zip)
# ---------------------------------------------------------
- name: decocass.zip
system: deco-cassette
required: true
note: "DECO Cassette shared BIOS - 6502 CPU, sound, MCU, PROMs"
source_ref: "src/drivers/decocass.c:696-727"
key_files:
# BIOS variant A
- "v0a-.7e (6502 BIOS variant A)"
# BIOS variant B
- "rms8.cpu (6502 BIOS variant B)"
# Shared across both variants
- "rms8.snd (audio CPU, 2KB)"
- "cass8041.bin (MCU, 1KB)"
- "dsp8.3m (PROM)"
- "dsp8.10d (PROM)"
- "rms8.j3 (DRAM banking PROM)"
# ---------------------------------------------------------
# Nintendo PlayChoice-10 (playch10.zip)
# ---------------------------------------------------------
- name: playch10.zip
system: nintendo-playch10
required: true
note: "PlayChoice-10 BIOS - Z80 main CPU + character ROMs + PROMs"
source_ref: "src/drivers/playch10.c:815-827"
key_files:
- "pch1-c.8t (Z80 BIOS, 16KB)"
- "pch1-c.8p (character ROM)"
- "pch1-c.8m (character ROM)"
- "pch1-c.8k (character ROM)"
- "82s129.6f (color PROM)"
- "82s129.6e (color PROM)"
- "82s129.6d (color PROM)"
# ---------------------------------------------------------
# Nintendo Super System (nss.zip)
# ---------------------------------------------------------
- name: nss.zip
system: nintendo-nss
required: true
note: "Nintendo Super System BIOS - SPC700 boot ROM + BIOS CPU"
source_ref: "src/drivers/nss.c:260-269"
key_files:
- "spc700.rom (SPC700 boot ROM, 64 bytes)"
- "nss-c.dat (NSS BIOS CPU, 32KB)"
- "nss-ic14.02 (NSS BIOS CPU alt, 32KB)"
# ---------------------------------------------------------
# Super Kaneko Nova System (skns.zip)
# ---------------------------------------------------------
- name: skns.zip
system: super-kaneko-nova
required: true
note: "Super Kaneko Nova System BIOS, 4 region variants"
source_ref: "src/drivers/suprnova.c:1226-1229"
key_files:
- "sknsj1.u10 (Japan BIOS, 512KB)"
- "sknse1.u10 (Europe BIOS, 512KB)"
- "sknsa1.u10 (Asia BIOS, 512KB)"
- "sknsu1.u10 (USA BIOS, 512KB)"
# ---------------------------------------------------------
# Konami GX (konamigx.zip)
# ---------------------------------------------------------
- name: konamigx.zip
system: konami-gx
required: true
note: "Konami System GX BIOS"
source_ref: "src/drivers/konamigx.c:2404"
key_files:
- "300a01.34k (GX BIOS, 128KB)"
# ---------------------------------------------------------
# ZN-1/ZN-2 PlayStation-based arcade boards
# These are mostly NOT_WORKING in mame2003-plus due to
# incomplete PS1 emulation in the 0.78 codebase
# ---------------------------------------------------------
# Capcom ZN-1
- name: cpzn1.zip
system: zn1-capcom
required: true
note: "Capcom ZN-1 BIOS (PS1-based). Most games NOT_WORKING"
source_ref: "src/drivers/zn.c:1016-1018"
key_files:
- "coh1002c.bin (Capcom ZN-1 BIOS, 512KB)"
# Capcom ZN-2
- name: cpzn2.zip
system: zn2-capcom
required: true
note: "Capcom ZN-2 BIOS (PS1-based). Most games NOT_WORKING"
source_ref: "src/drivers/zn.c:1274-1276"
key_files:
- "coh3002c.bin (Capcom ZN-2 BIOS, 512KB)"
# Taito FX-1
- name: taitofx1.zip
system: zn1-taito
required: true
note: "Taito FX-1 BIOS (PS1-based). Most games NOT_WORKING"
source_ref: "src/drivers/zn.c:1579-1581"
key_files:
- "coh1002t.bin (Taito FX-1 BIOS, 512KB)"
# Tecmo TPS
- name: tps.zip
system: zn1-tecmo
required: true
note: "Tecmo TPS BIOS (PS1-based). Most games NOT_WORKING"
source_ref: "src/drivers/zn.c:1466-1468"
key_files:
- "coh1002m.bin (Tecmo TPS BIOS, 512KB)"
# Video System / Taito KN (sncwgltd uses this)
- name: sncwgltd.zip
system: zn1-video-system
required: false
note: "Video System KN BIOS (PS1-based). NOT_WORKING"
source_ref: "src/drivers/zn.c:1555-1557"
key_files:
- "coh1002v.bin (KN BIOS, 512KB)"
# Acclaim PSX
- name: acpsx.zip
system: zn1-acclaim
required: true
note: "Acclaim PSX BIOS (PS1-based). NOT_WORKING"
source_ref: "src/drivers/zn.c:1815-1817"
key_files:
- "coh1000a.bin (Acclaim PSX BIOS, 512KB)"
# Atlus PSX (PSARC95) - BIOS ROM is NO_DUMP
# - name: psarc95.zip
# note: "PSARC95 BIOS is NO_DUMP (coh1002e.bin), games won't boot"
# Atari PSX - BIOS ROM is NO_DUMP
# - name: atpsx.zip
# note: "Atari PSX BIOS is NO_DUMP (coh1000t.bin), games won't boot"

268
emulators/mame2010.yml Normal file
View File

@@ -0,0 +1,268 @@
emulator: MAME 2010
type: libretro
source: "https://github.com/libretro/mame2010-libretro"
mame_version: "0.139"
systems:
- snk-neogeo-mvs
- igs-pgm
- sega-naomi
- sega-naomi2
- sega-naomigd
- sega-stv
- sega-hikaru
- sega-chihiro
- sega-triforce
- sega-model2
- commodore-cd32
- philips-cdi
- deco-cassette
- nintendo-playch10
- sega-megaplay
- sega-megatech
- nintendo-sfcbox
- nintendo-nss
- snk-neogeo-aes
- sammy-atomiswave
- taito-type-x
- namco-system246
- namco-system256
- namco-system573
- konami-viper
- cave-cv1000
notes: |
MAME 2010 is a libretro port of MAME 0.139, released around mid-2010. Compared
to mame2003 (MAME 0.78, early 2003), it adds roughly 7 years of MAME development
including better driver accuracy, more supported arcade boards, and additional
BIOS sets.
Key differences from mame2003 (0.78):
- 51 BIOS root sets vs ~30 in mame2003
- Sega boards: adds Hikaru, Chihiro, Triforce, Naomi 2, Naomi GD-ROM
- Namco boards: adds System 246/256/573
- Konami: adds Viper, expanded GX support
- Philips CD-i support (cdi)
- Taito Type X / GNet expanded
- Crystal System (Brezzasoft)
- More ZN-1/ZN-2/PSX-based board variants (cpzn1, cpzn2, atpsx, etc.)
- Neo Geo: same core BIOS set, adds Universe BIOS up to 2.3
- PGM: same BIOS ROMs, more game drivers
BIOS ZIPs are standard MAME romsets. The core looks for them in:
1. {content_dir}/ (same folder as the game ROM)
2. {system_dir}/mame2010/ (libretro system subfolder)
3. {system_dir}/ (libretro system root)
ROM naming follows MAME 0.139 conventions. ROMs from newer or older MAME
versions may not match expected CRC32/SHA1 values. Use a 0.139-specific
romset for full compatibility.
bios_zips:
# SNK Neo Geo MVS/AES
- name: neogeo.zip
system: snk-neogeo-mvs
required: true
note: "MVS/AES BIOS, 21 variants (11 official + 10 Universe BIOS up to 2.3)"
source_ref: "src/mame/drivers/neodrvr.c:565-614"
key_files:
- "sp-s2.sp1 (Europe, default)"
- "usa_2slt.bin (US, 2 slot)"
- "asia-s3.rom (Asia)"
- "vs-bios.rom (Japan VS)"
- "sp-45.sp1 (MV1C Asia, 512KB)"
- "sm1.sm1 (Z80 sound, always required)"
- "sfix.sfix (fix tiles, always required)"
- "000-lo.lo (zoom table, always required)"
# IGS PGM
- name: pgm.zip
system: igs-pgm
required: true
note: "PGM system BIOS, 2 program ROM versions + shared tiles/samples"
source_ref: "src/mame/drivers/pgm.c:1525-1533"
key_files:
- "pgm_p02s.u20 (68K BIOS v2, default)"
- "pgm_p01s.u20 (68K BIOS v1)"
- "pgm_t01s.rom (text tiles, 2MB)"
- "pgm_m01s.rom (samples, 2MB)"
# Sega Naomi / Naomi 2 / Naomi GD-ROM / Atomiswave
- name: naomi.zip
system: sega-naomi
required: true
note: "Naomi BIOS, multiple region variants"
source_ref: "src/mame/drivers/naomi.c"
- name: naomi2.zip
system: sega-naomi2
required: true
note: "Naomi 2 BIOS"
source_ref: "src/mame/drivers/naomi.c"
- name: naomigd.zip
system: sega-naomigd
required: true
note: "Naomi GD-ROM BIOS"
source_ref: "src/mame/drivers/naomi.c"
- name: awbios.zip
system: sammy-atomiswave
required: true
note: "Atomiswave BIOS (Sammy)"
source_ref: "src/mame/drivers/naomi.c"
# Sega ST-V (Saturn-based arcade)
- name: stvbios.zip
system: sega-stv
required: true
note: "ST-V BIOS, multiple region variants"
source_ref: "src/mame/drivers/stv.c"
# Sega Hikaru / Chihiro / Triforce
- name: hikaru.zip
system: sega-hikaru
required: true
note: "Hikaru BIOS (not working in 0.139)"
source_ref: "src/mame/drivers/hikaru.c"
- name: chihiro.zip
system: sega-chihiro
required: true
note: "Chihiro BIOS (Xbox-based, not working in 0.139)"
source_ref: "src/mame/drivers/chihiro.c"
- name: triforce.zip
system: sega-triforce
required: true
note: "Triforce BIOS (GameCube-based, not working in 0.139)"
source_ref: "src/mame/drivers/triforce.c"
# DECO Cassette
- name: decocass.zip
system: deco-cassette
required: true
note: "DECO Cassette BIOS, 4 regions (Japan/USA/UK/Europe) x old/new"
source_ref: "src/mame/drivers/decocass.c"
# Nintendo arcade
- name: playch10.zip
system: nintendo-playch10
required: true
note: "PlayChoice-10 BIOS"
source_ref: "src/mame/drivers/playch10.c"
- name: nss.zip
system: nintendo-nss
required: true
note: "Nintendo Super System BIOS"
source_ref: "src/mame/drivers/nss.c"
- name: sfcbox.zip
system: nintendo-sfcbox
required: true
note: "Super Famicom Box BIOS"
source_ref: "src/mame/drivers/sfcbox.c"
# Sega Mega Drive arcade
- name: megaplay.zip
system: sega-megaplay
required: true
note: "Mega Play BIOS (Mega Drive arcade)"
source_ref: "src/mame/drivers/megaplay.c"
- name: megatech.zip
system: sega-megatech
required: true
note: "Mega-Tech BIOS (Mega Drive arcade)"
source_ref: "src/mame/drivers/megatech.c"
# Commodore CD32
- name: cd32.zip
system: commodore-cd32
required: true
note: "Amiga CD32 BIOS"
source_ref: "src/mame/drivers/cubocd32.c"
# Philips CD-i (new vs mame2003)
- name: cdi.zip
system: philips-cdi
required: true
note: "CD-i BIOS (not in mame2003)"
source_ref: "src/mame/drivers/cdi.c"
# Namco boards (new vs mame2003)
- name: sys246.zip
system: namco-system246
required: true
note: "Namco System 246 BIOS (PS2-based, not in mame2003)"
source_ref: "src/mame/drivers/namcops2.c"
- name: sys256.zip
system: namco-system256
required: true
note: "Namco System 256 BIOS (PS2-based, not in mame2003)"
source_ref: "src/mame/drivers/namcops2.c"
- name: sys573.zip
system: namco-system573
required: true
note: "Namco System 573 BIOS (PSX-based)"
source_ref: "src/mame/drivers/ksys573.c"
# Konami Viper (new vs mame2003)
- name: kviper.zip
system: konami-viper
required: true
note: "Konami Viper BIOS (3dfx-based, not working in 0.139)"
source_ref: "src/mame/drivers/viper.c"
# Taito
- name: taitogn.zip
system: taito-type-x
required: true
note: "Taito G-Net BIOS (PSX-based)"
source_ref: "src/mame/drivers/taitogn.c"
# PSX-based arcade boards
- name: cpzn1.zip
system: capcom-zn1
required: true
note: "Capcom ZN-1 BIOS (PSX-based)"
source_ref: "src/mame/drivers/zn.c"
- name: cpzn2.zip
system: capcom-zn2
required: true
note: "Capcom ZN-2 BIOS (PSX-based)"
source_ref: "src/mame/drivers/zn.c"
- name: konamigv.zip
system: konami-gv
required: true
note: "Konami GV BIOS (PSX-based)"
source_ref: "src/mame/drivers/konamigv.c"
# Other notable BIOS sets
- name: skns.zip
system: super-kaneko-nova
required: true
note: "Super Kaneko Nova System BIOS, 5 regions"
source_ref: "src/mame/drivers/suprnova.c"
- name: alg_bios.zip
system: alg-laserdisc
required: true
note: "American Laser Games BIOS (Amiga-based laserdisc)"
source_ref: "src/mame/drivers/alg.c"
- name: maxaflex.zip
system: exidy-maxaflex
required: true
note: "Exidy Max-A-Flex BIOS (Atari 600XL-based)"
source_ref: "src/mame/drivers/maxaflex.c"
- name: hng64.zip
system: hyper-neogeo64
required: true
note: "Hyper Neo-Geo 64 BIOS (not working in 0.139)"
source_ref: "src/mame/drivers/hng64.c"

344
emulators/mame2016.yml Normal file
View File

@@ -0,0 +1,344 @@
emulator: MAME 2016
type: libretro
source: "https://github.com/libretro/mame2016-libretro"
mame_version: "0.174"
systems:
- snk-neogeo-mvs
- snk-neogeo-aes
- snk-neogeo-cd
- igs-pgm
- igs-pgm2
- sega-naomi
- sega-naomi2
- sega-naomigd
- sammy-atomiswave
- sega-stv
- sega-model2
- sega-model3
- sega-lindbergh
- sega-hikaru
- sega-chihiro
- sega-triforce
- deco-cassette
- nintendo-playch10
- sega-megaplay
- sega-megatech
- nintendo-sfcbox
- nintendo-nss
- philips-cdi
- commodore-cd32
- namco-system246
- namco-system256
- namco-system573
- konami-viper
- cave-cv1000
- taito-gnet
- super-kaneko-nova
- capcom-zn1
- capcom-zn2
- konami-gv
notes: |
MAME 2016 is a libretro port of MAME 0.174, released mid-2016. Compared to
mame2010 (0.139), it adds 6 years of MAME development including significantly
better driver accuracy, ~9200 more ROM sets (23430 vs ~14000), and new hardware
support.
Key differences from mame2010 (0.139):
- Driver source files renamed from .c to .cpp
- Neo Geo: Universe BIOS updated to 3.2 (was 2.3 in 0.139)
- NAOMI: 23 BIOS variants (Japan/Export/USA/Korea/Dev), same EPR numbering
- Sega Lindbergh: new board support (lindbios.zip), 3 BIOS versions
- PGM2: new IGS PolyGame Master 2 support (no shared BIOS ZIP)
- Saturn driver split to separate saturn.cpp (was in stv.c)
- Dreamcast driver split to dccons.cpp, 5 BIOS variants
- PlayStation: expanded BIOS coverage (9 JP, 7 EU, 9 US variants)
- More Cave CV1000/SH3 games (26 sets, no shared BIOS)
- Model 2/3: improved emulation, same BIOS structure
Key differences from current MAME (0.274+):
- Missing BIOS dumps added after 0.174 (newer redumps, alt regions)
- Neo Geo: no Universe BIOS 4.0 (added in later MAME)
- Some CRC32/SHA1 values differ for redumped ROMs
- Fewer Sega board BIOS region variants
- No Konami e-Amusement/Bemani expansions from post-2016
BIOS ZIPs are standard MAME romsets. The core looks for them in:
1. {content_dir}/ (same folder as the game ROM)
2. {system_dir}/mame2016/ (libretro system subfolder)
3. {system_dir}/ (libretro system root)
ROM naming follows MAME 0.174 conventions. Use a 0.174-specific romset for
full compatibility.
bios_zips:
# SNK Neo Geo MVS/AES
- name: neogeo.zip
system: snk-neogeo-mvs
required: true
note: "MVS/AES BIOS, 25+ variants (12 official + 13 Universe BIOS up to 3.2)"
source_ref: "src/mame/drivers/neogeo.cpp"
key_files:
- "sp-s2.sp1 (Europe MVS v2, default)"
- "sp-u2.sp1 (US MVS v2)"
- "asia-s3.rom (Asia MVS v3)"
- "vs-bios.rom (Japan MVS v6 VS)"
- "sp-45.sp1 (MV1C Asia, 512KB)"
- "sm1.sm1 (Z80 sound, always required)"
- "sfix.sfix (fix tiles, always required)"
- "000-lo.lo (zoom table, always required)"
- "uni-bios_3_2.rom (Universe BIOS 3.2, newest hack)"
# Neo Geo CD
- name: neocdz.zip
system: snk-neogeo-cd
required: true
note: "Neo Geo CDZ BIOS"
source_ref: "src/mame/drivers/neogeocd.cpp"
key_files:
- "neocd.bin (CDZ BIOS, 512KB)"
- "000-lo.lo (zoom table)"
# IGS PGM
- name: pgm.zip
system: igs-pgm
required: true
note: "PGM system BIOS, 2 program ROM versions + shared tiles/samples"
source_ref: "src/mame/drivers/pgm.cpp"
key_files:
- "pgm_p02s.u20 (68K BIOS v2, default)"
- "pgm_p01s.u20 (68K BIOS v1)"
- "pgm_t01s.rom (text tiles, 2MB)"
- "pgm_m01s.rom (samples, 2MB)"
# Sega NAOMI / NAOMI 2 / GD-ROM / Atomiswave
- name: naomi.zip
system: sega-naomi
required: true
note: "NAOMI BIOS, 23 variants: 8 Japan + 6 Export + 6 USA + 2 Korea + 1 Dev"
source_ref: "src/mame/drivers/naomi.cpp:2904-2951"
key_files:
- "epr-21576h.ic27 (Japan, latest)"
- "epr-21578h.ic27 (Export, latest)"
- "epr-21577h.ic27 (USA, latest)"
- name: naomi2.zip
system: sega-naomi2
required: true
note: "NAOMI 2 BIOS, same EPR structure as NAOMI"
source_ref: "src/mame/drivers/naomi.cpp:3046-3072"
- name: naomigd.zip
system: sega-naomigd
required: true
note: "NAOMI GD-ROM BIOS, requires rev E or higher"
source_ref: "src/mame/drivers/naomi.cpp:2994-3044"
- name: awbios.zip
system: sammy-atomiswave
required: true
note: "Atomiswave BIOS (Sammy)"
source_ref: "src/mame/drivers/naomi.cpp:3073-3088"
# Dedicated NAOMI game BIOS sets
- name: hod2bios.zip
system: sega-naomi
required: false
note: "House of the Dead 2 dedicated BIOS, 3 variants"
source_ref: "src/mame/drivers/naomi.cpp:2963-2971"
- name: f355dlx.zip
system: sega-naomi
required: false
note: "Ferrari F355 Deluxe dedicated BIOS"
source_ref: "src/mame/drivers/naomi.cpp:2973-2976"
- name: f355bios.zip
system: sega-naomi
required: false
note: "Ferrari F355 Challenge dedicated BIOS, 2 variants"
source_ref: "src/mame/drivers/naomi.cpp:2978-2983"
- name: airlbios.zip
system: sega-naomi
required: false
note: "Airline Pilots Deluxe dedicated BIOS, 2 variants"
source_ref: "src/mame/drivers/naomi.cpp:2985-2990"
# Sega ST-V
- name: stvbios.zip
system: sega-stv
required: true
note: "ST-V BIOS, 10+ region variants (JP/US/EU/TW/Dev)"
source_ref: "src/mame/drivers/stv.cpp"
key_files:
- "epr-20091.ic8 (Japan 97/08/21, default)"
- "epr-19730.ic8 (Japan 97/02/17)"
# Sega Lindbergh (new vs mame2010)
- name: lindbios.zip
system: sega-lindbergh
required: true
note: "Lindbergh BIOS, 3 PC BIOS versions + MPC firmware + GPU BIOS"
source_ref: "src/mame/drivers/lindbergh.cpp"
key_files:
- "6.0.0010a.bin (PC BIOS v6.0.0010 alt)"
- "6.0.0009.bin (PC BIOS v6.0.0009)"
- "fpr-24370b.ic6 (MPC firmware, 4MB)"
- "vid_bios.u504 (GeForce BIOS)"
# Sega Model 2
- name: model2.zip
system: sega-model2
required: true
note: "Model 2 BIOS"
source_ref: "src/mame/drivers/model2.cpp"
# Sega Hikaru / Chihiro / Triforce
- name: hikaru.zip
system: sega-hikaru
required: true
note: "Hikaru BIOS (limited functionality in 0.174)"
source_ref: "src/mame/drivers/hikaru.cpp"
- name: chihiro.zip
system: sega-chihiro
required: true
note: "Chihiro BIOS (Xbox-based, limited in 0.174)"
source_ref: "src/mame/drivers/chihiro.cpp"
- name: triforce.zip
system: sega-triforce
required: true
note: "Triforce BIOS (GameCube-based, limited in 0.174)"
source_ref: "src/mame/drivers/triforce.cpp"
# DECO Cassette
- name: decocass.zip
system: deco-cassette
required: true
note: "DECO Cassette BIOS"
source_ref: "src/mame/drivers/decocass.cpp"
# Nintendo arcade
- name: playch10.zip
system: nintendo-playch10
required: true
note: "PlayChoice-10 BIOS"
source_ref: "src/mame/drivers/playch10.cpp"
- name: nss.zip
system: nintendo-nss
required: true
note: "Nintendo Super System BIOS"
source_ref: "src/mame/drivers/nss.cpp"
- name: sfcbox.zip
system: nintendo-sfcbox
required: true
note: "Super Famicom Box BIOS"
source_ref: "src/mame/drivers/sfcbox.cpp"
# Sega Mega Drive arcade
- name: megaplay.zip
system: sega-megaplay
required: true
note: "Mega Play BIOS (Mega Drive arcade)"
source_ref: "src/mame/drivers/megaplay.cpp"
- name: megatech.zip
system: sega-megatech
required: true
note: "Mega-Tech BIOS (Mega Drive arcade)"
source_ref: "src/mame/drivers/megatech.cpp"
# Philips CD-i
- name: cdi.zip
system: philips-cdi
required: true
note: "CD-i BIOS"
source_ref: "src/mame/drivers/cdi.cpp"
# Commodore CD32
- name: cd32.zip
system: commodore-cd32
required: true
note: "Amiga CD32 BIOS"
source_ref: "src/mame/drivers/cubocd32.cpp"
# Namco boards
- name: sys246.zip
system: namco-system246
required: true
note: "Namco System 246 BIOS (PS2-based)"
source_ref: "src/mame/drivers/namcops2.cpp"
- name: sys256.zip
system: namco-system256
required: true
note: "Namco System 256 BIOS (PS2-based)"
source_ref: "src/mame/drivers/namcops2.cpp"
- name: sys573.zip
system: namco-system573
required: true
note: "Konami System 573 BIOS (PSX-based)"
source_ref: "src/mame/drivers/ksys573.cpp"
# Konami Viper
- name: kviper.zip
system: konami-viper
required: true
note: "Konami Viper BIOS (3dfx-based, limited in 0.174)"
source_ref: "src/mame/drivers/viper.cpp"
# Taito G-NET
- name: taitogn.zip
system: taito-gnet
required: true
note: "Taito G-Net BIOS (PSX-based)"
source_ref: "src/mame/drivers/taitogn.cpp"
# PSX-based arcade boards
- name: cpzn1.zip
system: capcom-zn1
required: true
note: "Capcom ZN-1 BIOS (PSX-based)"
source_ref: "src/mame/drivers/zn.cpp"
- name: cpzn2.zip
system: capcom-zn2
required: true
note: "Capcom ZN-2 BIOS (PSX-based)"
source_ref: "src/mame/drivers/zn.cpp"
- name: konamigv.zip
system: konami-gv
required: true
note: "Konami GV BIOS (PSX-based)"
source_ref: "src/mame/drivers/konamigv.cpp"
# Other notable BIOS sets
- name: skns.zip
system: super-kaneko-nova
required: true
note: "Super Kaneko Nova System BIOS, 5 regions"
source_ref: "src/mame/drivers/suprnova.cpp"
- name: alg_bios.zip
system: alg-laserdisc
required: true
note: "American Laser Games BIOS (Amiga-based laserdisc)"
source_ref: "src/mame/drivers/alg.cpp"
- name: hng64.zip
system: hyper-neogeo64
required: true
note: "Hyper Neo-Geo 64 BIOS (limited in 0.174)"
source_ref: "src/mame/drivers/hng64.cpp"
- name: isgsm.zip
system: isg-selection-master
required: true
note: "ISG Selection Master BIOS (Sega System 16 conversion)"
source_ref: "src/mame/drivers/isgsm.cpp"

75
emulators/melonds.yml Normal file
View File

@@ -0,0 +1,75 @@
emulator: MelonDS
type: standalone + libretro
source: "https://github.com/melonDS-emu/melonDS"
systems: [nintendo-ds, nintendo-dsi]
notes: |
MelonDS includes a built-in FreeBIOS replacement for basic DS mode (NTR).
Native BIOS/firmware files are required for DSi mode and recommended for
full DS compatibility (Key1 crypto for cartridge auth).
ARM9 BIOS size: 0x1000 (4 KB), ARM7 BIOS size: 0x4000 (16 KB).
DSi BIOS size: 0x10000 (64 KB) each.
Config keys: DS.BIOS9Path, DS.BIOS7Path, DS.FirmwarePath,
DSi.BIOS9Path, DSi.BIOS7Path, DSi.FirmwarePath, DSi.NANDPath.
files:
# --- Nintendo DS (NTR) ---
- name: "bios9.bin"
system: nintendo-ds
description: "ARM9 BIOS (NDS mode)"
required: false
size: 4096
crc32: "0x2ab23573"
source_ref: "src/MemConstants.h:30,37"
notes: "FreeBIOS fallback available; native needed for Key1 cartridge crypto (src/NDSCart.cpp:147-153)"
- name: "bios7.bin"
system: nintendo-ds
description: "ARM7 BIOS (NDS mode)"
required: false
size: 16384
crc32: "0x1280f0d5"
source_ref: "src/MemConstants.h:31,36"
notes: "FreeBIOS fallback available; native needed for Key1 init at offset 0x0030 (src/NDSCart.cpp:149-153)"
- name: "firmware.bin"
system: nintendo-ds
description: "NDS firmware image"
required: false
source_ref: "src/frontend/qt_sdl/EmuInstance.cpp:561"
notes: "Generated firmware used as default; native firmware needed for boot animation and wifi settings"
# --- Nintendo DSi (TWL) ---
- name: "dsi_bios9.bin"
system: nintendo-dsi
description: "ARM9i BIOS (DSi mode)"
required: true
size: 65536
crc32_full: "0xBAE84F6C"
crc32_low32k: "0x11E7C1EA"
source_ref: "src/MemConstants.h:32,41,45"
notes: "No FreeBIOS fallback for DSi; full dump needed for native boot (src/DSi.cpp:150-152)"
- name: "dsi_bios7.bin"
system: nintendo-dsi
description: "ARM7i BIOS (DSi mode)"
required: true
size: 65536
crc32_full: "0x4316CC42"
crc32_low32k: "0x5434691D"
source_ref: "src/MemConstants.h:32,40,44"
notes: "Contains eMMC key-Y at offset 0x8308 used for NAND init (src/frontend/qt_sdl/EmuInstance.cpp:1044)"
- name: "dsi_firmware.bin"
system: nintendo-dsi
description: "DSi firmware image"
required: true
source_ref: "src/frontend/qt_sdl/EmuInstance.cpp:593"
notes: "Separate from DS firmware; config key DSi.FirmwarePath"
- name: "dsi_nand.bin"
system: nintendo-dsi
description: "DSi NAND dump"
required: true
source_ref: "src/DSi_NAND.h:34, src/Args.h:132"
notes: "eMMC image; uses AES keys from ARM7i BIOS and ARM9i BIOS (src/DSi_AES.cpp:94)"

118
emulators/mgba.yml Normal file
View File

@@ -0,0 +1,118 @@
emulator: mGBA
type: libretro
source: "https://github.com/libretro/mgba"
cores:
- mgba
systems:
- nintendo-gba
- nintendo-gb
- nintendo-gbc
- nintendo-sgb
notes: |
mGBA is a Game Boy Advance emulator with Game Boy, Game Boy Color, and
Super Game Boy support.
All BIOS files are optional. mGBA ships a built-in HLE BIOS for GBA
(src/gba/hle-bios.c) that covers most software. The real BIOS improves
accuracy (startup logo, some edge-case SWI behavior). There is no HLE
BIOS for GB/GBC/SGB -- those rely on GBSkipBIOS() if no file is found.
BIOS loading is controlled by two core options:
mgba_use_bios (default ON) - whether to look for BIOS files at all
mgba_skip_bios (default OFF) - skip the boot animation even if loaded
The libretro port resolves BIOS filenames in retro_load_game()
(src/platform/libretro/libretro.c:2091-2148). It picks the filename
based on detected model:
GBA -> gba_bios.bin
GB (DMG/MGB) -> gb_bios.bin
GBC (CGB/AGB) -> gbc_bios.bin
SGB (SGB/SGB2)-> sgb_bios.bin
The standalone core (src/gb/core.c:637-684) handles the same models
and maps SGB2 to sgb_bios.bin (marked TODO for a dedicated file).
GBIsBIOS() in src/gb/gb.c validates BIOS files by CRC32 checksum.
Accepted checksums cover DMG, DMG0, MGB, SGB, SGB2, CGB, CGB0, CGBE,
AGB, and AGB0 revisions.
files:
# -------------------------------------------------------
# Game Boy Advance - BIOS (optional, HLE fallback)
# -------------------------------------------------------
- name: gba_bios.bin
system: nintendo-gba
required: false
size: 16384 # 16 KB (0x4000, GBA_SIZE_BIOS)
note: "GBA BIOS. HLE replacement built in. Real BIOS adds boot logo and full SWI accuracy."
source_ref: "src/platform/libretro/libretro.c:2099"
# -------------------------------------------------------
# Game Boy - boot ROM (optional, skip fallback)
# -------------------------------------------------------
- name: gb_bios.bin
system: nintendo-gb
required: false
size: 256 # 256 B (0x100)
note: "DMG/MGB boot ROM. Scrolling Nintendo logo. Skipped if absent."
source_ref: "src/platform/libretro/libretro.c:2134"
# -------------------------------------------------------
# Game Boy Color - boot ROM (optional, skip fallback)
# -------------------------------------------------------
- name: gbc_bios.bin
system: nintendo-gbc
required: false
size: 2304 # 2304 B (0x900)
note: "CGB boot ROM. Used for CGB, AGB (GBA in GB mode), and SCGB models."
source_ref: "src/platform/libretro/libretro.c:2127"
# -------------------------------------------------------
# Super Game Boy - boot ROM (optional, skip fallback)
# -------------------------------------------------------
- name: sgb_bios.bin
system: nintendo-sgb
required: false
size: 256 # 256 B (0x100)
note: "SGB/SGB2 boot ROM. Also used when model is SGB2 (no separate sgb2_bios.bin)."
source_ref: "src/platform/libretro/libretro.c:2130"
platform_details:
gba:
bios_size: 16384 # 16 KB
hle_bios: true
source_ref: "src/gba/hle-bios.c, src/gba/gba.c:520-548"
notes: |
GBALoadBIOS() validates size (must be exactly 0x4000) then computes
an internal checksum. Two official checksums are recognized:
GBA_BIOS_CHECKSUM = 0xBAAE187F (standard GBA)
GBA_DS_BIOS_CHECKSUM = 0xBAAE1880 (DS GBA mode)
Other checksums trigger a warning but the file is still loaded.
gb:
bios_size: 256 # 256 B
hle_bios: false
source_ref: "src/gb/gb.c:570-605"
notes: |
GBIsBIOS() validates by CRC32. Accepted DMG-family checksums:
DMG0 = 0xC2F5CC97, DMG = 0x59C8598E, MGB = 0xE6920754
Files not matching any known checksum are rejected.
gbc:
bios_size: 2304 # 2304 B (0x900)
hle_bios: false
source_ref: "src/gb/gb.c:570-605"
notes: |
Accepted CGB-family CRC32 checksums:
CGB = 0x41884E46, CGB0 = 0xE8EF5318, CGBE = 0xE95DC95D
AGB = 0xFFD6B0F1, AGB0 = 0x570337EA
sgb:
bios_size: 256 # 256 B
hle_bios: false
source_ref: "src/gb/gb.c:570-605, src/gb/core.c:642-644"
notes: |
Accepted SGB CRC32 checksums:
SGB = 0xEC8A83B9, SGB2 = 0x53D0DD63
SGB2 model falls through to sgb_bios.bin (marked TODO upstream).

66
emulators/minivmac.yml Normal file
View File

@@ -0,0 +1,66 @@
emulator: Mini vMac
type: libretro
source: "https://github.com/libretro/libretro-minivmac"
systems: [macintosh-ii]
# Mini vMac is a Macintosh II emulator. The libretro port is hardcoded for
# Mac II emulation (CurEmMd = kEmMd_II) with 68020 CPU, FPU, ADB, VIA2, ASC.
# ROM is loaded from the RetroArch system directory.
# ROM loading order (OSGLUERETRO.c LoadMacRom):
# 1. <system>/MacIIx.ROM (tried first, same 256 KB size)
# 2. <system>/MacII.ROM (defined as RomFileName in CNFGRAPI.h)
# 3. --rom command line arg (if provided)
# 4. ~/.gryphel/mnvm_rom/MacII.ROM
# 5. app parent directory
# 6. current directory
# ROM size: kROM_Size = 0x00040000 = 262144 bytes (256 KB)
# ROM checksums defined in CNFGRAPI.h:
# kRomCheckSum1 = 0x9779D2C4 (Mac II v1)
# kRomCheckSum2 = 0x97221136 (Mac II v2)
# Note: DisableRomCheck = 1, so checksum validation is skipped at runtime
# (ROMEMDEV.c patches the ROM check jump). Any 256 KB Mac II ROM works.
files:
# -- MacII.ROM (primary, required) --
# Standard Macintosh II ROM image. This is the hardcoded RomFileName.
# The core reads exactly kROM_Size (262144) bytes from this file.
- name: "MacII.ROM"
path: "MacII.ROM"
required: true
size: 262144
source_ref: "minivmac/cfg/CNFGRAPI.h:32, minivmac/src/OSGLUERETRO.c:781"
note: >
Macintosh II ROM image (256 KB). The core loads this from the system
directory. Must be exactly 262144 bytes. ROM checksum verification is
disabled in the libretro build, so either Mac II ROM revision works.
# -- MacIIx.ROM (alternative, optional) --
# Tried before MacII.ROM in the loading sequence. The Mac IIx ROM is the
# same 256 KB size and is compatible with the Mac II emulation mode.
- name: "MacIIx.ROM"
path: "MacIIx.ROM"
required: false
size: 262144
source_ref: "minivmac/src/OSGLUERETRO.c:778"
note: >
Macintosh IIx ROM image (256 KB). Checked first in the ROM loading
sequence. If present, it takes priority over MacII.ROM. The Mac IIx
uses the same 68020-class architecture as the Mac II.
notes:
emulation_target: >
The libretro build is configured exclusively for Macintosh II emulation
(kEmMd_II). Build options: 68020 CPU, FPU enabled, ADB keyboard/mouse,
VIA2, ASC sound chip. Screen: 640x480, 8-bit color depth.
disk_formats: >
Supported disk image formats: .dsk, .img, .zip, .hvf, .cmd
The core auto-inserts the loaded content as a floppy disk.
Supports up to NumDrives simultaneous disk images.
rom_checksum_note: >
DisableRomCheck is set to 1 in ROMEMDEV.c, meaning the core patches out
the ROM checksum verification at boot. This allows any valid Mac II era
ROM to work regardless of exact revision.

81
emulators/mu.yml Normal file
View File

@@ -0,0 +1,81 @@
emulator: Mu
type: libretro
source: "https://github.com/libretro/Mu"
systems: [palm-os]
notes: |
Mu emulates Palm OS handhelds: Palm m500, Palm m515, and (if compiled
with EMU_SUPPORT_PALM_OS5) the Tungsten T3.
A Palm OS ROM dump is required. The core selects the ROM filename based
on the "OS Version" core option:
Palm m500 / Palm OS 4.0 -> palmos40-en-m500.rom
Palm m515 / Palm OS 4.1 -> palmos41-en-m515.rom (default)
Tungsten T3 / Palm OS 5.2 -> palmos52-en-t3.rom
Tungsten T3 / Palm OS 6.0 -> palmos60-en-t3.rom
ROM path construction: retro_load_game() joins
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY + "/" + osVersion + ".rom".
The bootloader (bootloader-dbvz.rom) is optional. It contains the
MC68VZ328 UART bootloader and is only relevant for m500/m515 devices.
For the Tungsten T3 it is ignored even if present.
The m500/m515 ROM is loaded into a 4 MB region (M5XX_ROM_SIZE),
padded with 0x00 if smaller, and byte-swapped on little-endian hosts.
The Tungsten T3 ROM maps into a 16 MB region (TUNGSTEN_T3_ROM_SIZE).
The core also supports no-game mode (supports_no_game = true). Without
content, it boots the standard Palm OS desktop from the ROM.
files:
# --- Palm m515 / Palm OS 4.1 (default device) ---
- name: "palmos41-en-m515.rom"
system: palm-os
description: "Palm m515 ROM, Palm OS 4.1 English"
required: true
note: "Default ROM. Selected when core option is 'Palm m515/Palm OS 4.1'. Max 4 MB, byte-swapped on LE."
source_ref: "libretroBuildSystem/libretro.c:173-176,744-763 (retro_load_game ROM loading)"
# --- Palm m500 / Palm OS 4.0 ---
- name: "palmos40-en-m500.rom"
system: palm-os
description: "Palm m500 ROM, Palm OS 4.0 English"
required: false
note: "Selected when core option is 'Palm m500/Palm OS 4.0'. Max 4 MB."
source_ref: "libretroBuildSystem/libretro.c:169-172"
# --- Tungsten T3 / Palm OS 5.2.1 (requires EMU_SUPPORT_PALM_OS5) ---
- name: "palmos52-en-t3.rom"
system: palm-os
description: "Tungsten T3 ROM, Palm OS 5.2.1 English"
required: false
note: "Selected when core option is 'Tungsten T3/Palm OS 5.2.1'. Max 16 MB. Only available if core compiled with EMU_SUPPORT_PALM_OS5."
source_ref: "libretroBuildSystem/libretro.c:178-181"
# --- Tungsten T3 / Palm OS 6.0 (requires EMU_SUPPORT_PALM_OS5) ---
- name: "palmos60-en-t3.rom"
system: palm-os
description: "Tungsten T3 ROM, Palm OS 6.0 English"
required: false
note: "Selected when core option is 'Tungsten T3/Palm OS 6.0'. Max 16 MB. Only available if core compiled with EMU_SUPPORT_PALM_OS5."
source_ref: "libretroBuildSystem/libretro.c:182-185"
# --- MC68VZ328 bootloader ---
- name: "bootloader-dbvz.rom"
system: palm-os
description: "MC68VZ328 UART bootloader"
required: false
note: "Optional for m500/m515. Ignored for Tungsten T3. Loads from system directory."
source_ref: "libretroBuildSystem/libretro.c:766-782"
platform_details:
palm_m5xx:
rom_size: 4194304 # 4 MB (M5XX_ROM_SIZE)
cpu: "MC68VZ328"
source_ref: "include/m5XXBus.h:23, src/emulator.c:191-212"
tungsten_t3:
rom_size: 16777216 # 16 MB (TUNGSTEN_T3_ROM_SIZE)
cpu: "PXA260 (ARM)"
source_ref: "include/tungstenT3Bus.h:17, src/emulator.c:158-164"

48
emulators/mupen64plus.yml Normal file
View File

@@ -0,0 +1,48 @@
emulator: Mupen64Plus-Next
type: libretro
source: "https://github.com/libretro/mupen64plus-libretro-nx"
systems: [nintendo-64, nintendo-64dd]
cores: [mupen64plus_next, mupen64plus_next_gles3, mupen64plus_next_gles2, parallel_n64]
# PIF boot ROM is fully HLE'd (bootrom_hle.c), no external PIF ROM needed.
# CIC emulation is also handled internally (n64_cic_nus_6105.c).
# The only optional firmware is the 64DD IPL ROM for N64 Disk Drive games.
# mupen64plus_next cores use: system/Mupen64plus/IPL.n64
# parallel_n64 uses: system/64DD_IPL.bin
# Both expect the same ROM, different path.
files:
# -- 64DD IPL ROM (mupen64plus_next variants) --
- name: "IPL.n64"
path: "Mupen64plus/IPL.n64"
size: 4194304 # 0x400000 (4 MB)
md5: "8d3d9f294b6e174bc7b1d2fd1c727530"
required: false
note: "64DD IPL ROM for N64 Disk Drive games. Only needed for .ndd disk images via subsystem API"
source_ref: "mupen64plus-core/src/main/main.c:959-961, libretro/libretro.c:641"
cores: [mupen64plus_next, mupen64plus_next_gles3, mupen64plus_next_gles2]
# -- 64DD IPL ROM (parallel_n64) --
- name: "64DD_IPL.bin"
path: "64DD_IPL.bin"
md5: "8d3d9f294b6e174bc7b1d2fd1c727530"
required: false
note: "Same 64DD IPL ROM, different path expected by parallel_n64"
cores: [parallel_n64]
notes:
hle_available: true
hle_note: >
N64 does not require any BIOS or firmware files for standard cartridge games.
The PIF boot ROM is fully emulated via HLE (bootrom_hle.c). CIC chip
challenge/response is handled in software (n64_cic_nus_6105.c).
dd_note: >
The 64DD IPL ROM is only needed to run N64 Disk Drive games (.ndd).
It is loaded via the retro subsystem API (RETRO_GAME_TYPE_DD), which
takes both a disk image and an optional cartridge ROM.
The core accepts Z64 (big-endian), N64 (little-endian), and V64
(byte-swapped) formats and converts internally.
transferpak_note: >
Transfer Pak support (GB/GBC games on N64) is handled via subsystem API.
No additional firmware files needed, just the GB ROM and save file.

141
emulators/neocd.yml Normal file
View File

@@ -0,0 +1,141 @@
emulator: NeoCD
type: libretro
source: "https://github.com/libretro/neocd_libretro"
systems:
- snk-neogeo-cd
notes: |
NeoCD is a dedicated SNK Neo Geo CD emulator. It supports Front Loader,
Top Loader, and CDZ hardware variants. BIOS files go in {system_dir}/neocd/
subdirectory (src/path.cpp:7, src/libretro_bios.cpp:76-81).
The core scans the neocd/ directory for any .rom or .bin file (also inside
.zip archives), reads the first 512 bytes, and identifies the BIOS type by
binary pattern matching at fixed ROM addresses (src/bios.cpp:168-208).
Filenames listed in the .info are conventional but not enforced by the core.
Three hardware families are detected: Front Loader (NeoCD), Top Loader
(NeoCD), and CDZ. Modified BIOS variants are also recognized: SMKDan 0.07,
SMKDan 0.07b, Universe BIOS 3.2, and Universe BIOS 3.3. The core applies
speed hack patches and CD recognition patches at load time for each type
(src/bios.cpp:209-280).
The Y-ZOOM ROM (ng-lo.rom / 000-lo.lo) is a sprite zoom lookup table loaded
separately (src/memory.h:22, YZOOMROM_SIZE = 0x10000 = 65536 bytes). It is
optional but improves sprite scaling accuracy.
All firmware entries are marked optional in the .info (any single valid BIOS
is sufficient). The core presents detected BIOSes as a dropdown in the core
options menu, sorted alphabetically by description.
BIOS ROM size: 524288 bytes (0x80000, src/memory.h:16).
Y-ZOOM ROM size: 65536 bytes (0x10000, src/memory.h:22).
files:
# Front Loader BIOS (NeoCD original front-loading unit)
- name: neocd_f.rom
dest: neocd/neocd_f.rom
system: snk-neogeo-cd
required: false
size: 524288
note: "Front Loader BIOS, official NeoCD format"
source_ref: "retroarch/libneocd_libretro.info:15 (firmware0)"
# Front Loader BIOS, SMKDan custom
- name: neocd_sf.rom
dest: neocd/neocd_sf.rom
system: snk-neogeo-cd
required: false
size: 524288
note: "Front Loader BIOS, SMKDan custom"
source_ref: "retroarch/libneocd_libretro.info:18 (firmware1)"
# Top Loader BIOS (NeoCD top-loading unit)
- name: neocd_t.rom
dest: neocd/neocd_t.rom
system: snk-neogeo-cd
required: false
size: 524288
note: "Top Loader BIOS, official NeoCD format"
source_ref: "retroarch/libneocd_libretro.info:21 (firmware2)"
# Top Loader BIOS, SMKDan custom
- name: neocd_st.rom
dest: neocd/neocd_st.rom
system: snk-neogeo-cd
required: false
size: 524288
note: "Top Loader BIOS, SMKDan custom"
source_ref: "retroarch/libneocd_libretro.info:24 (firmware3)"
# CDZ BIOS (Neo Geo CDZ, last revision)
- name: neocd_z.rom
dest: neocd/neocd_z.rom
system: snk-neogeo-cd
required: false
size: 524288
note: "CDZ BIOS, official NeoCD format"
source_ref: "retroarch/libneocd_libretro.info:27 (firmware4)"
# CDZ BIOS, SMKDan custom
- name: neocd_sz.rom
dest: neocd/neocd_sz.rom
system: snk-neogeo-cd
required: false
size: 524288
note: "CDZ BIOS, SMKDan custom"
source_ref: "retroarch/libneocd_libretro.info:30 (firmware5)"
# Y-ZOOM ROM (sprite zoom lookup table)
- name: ng-lo.rom
dest: neocd/ng-lo.rom
system: snk-neogeo-cd
required: false
size: 65536
note: "Y-ZOOM ROM, NeoCD format"
source_ref: "retroarch/libneocd_libretro.info:33 (firmware6)"
# Y-ZOOM ROM, MAME naming
- name: 000-lo.lo
dest: neocd/000-lo.lo
system: snk-neogeo-cd
required: false
size: 65536
note: "Y-ZOOM ROM, MAME naming (same content as ng-lo.rom)"
source_ref: "retroarch/libneocd_libretro.info:36 (firmware7)"
# Front Loader BIOS, MAME naming
- name: front-sp1.bin
dest: neocd/front-sp1.bin
system: snk-neogeo-cd
required: false
size: 524288
note: "Front Loader BIOS, MAME naming (same content as neocd_f.rom)"
source_ref: "retroarch/libneocd_libretro.info:39 (firmware8)"
# Top Loader BIOS, MAME naming
- name: top-sp1.bin
dest: neocd/top-sp1.bin
system: snk-neogeo-cd
required: false
size: 524288
note: "Top Loader BIOS, MAME naming (same content as neocd_t.rom)"
source_ref: "retroarch/libneocd_libretro.info:42 (firmware9)"
# CDZ BIOS, MAME naming
- name: neocd.bin
dest: neocd/neocd.bin
system: snk-neogeo-cd
required: false
size: 524288
note: "CDZ BIOS, MAME naming (same content as neocd_z.rom)"
source_ref: "retroarch/libneocd_libretro.info:45 (firmware10)"
# Universe BIOS for CD systems
- name: uni-bioscd.rom
dest: neocd/uni-bioscd.rom
system: snk-neogeo-cd
required: false
size: 524288
note: "Universe BIOS CD, third-party multi-region BIOS (hack)"
source_ref: "retroarch/libneocd_libretro.info:48 (firmware11)"

67
emulators/nestopia.yml Normal file
View File

@@ -0,0 +1,67 @@
emulator: Nestopia UE
type: libretro
source: "https://github.com/libretro/nestopia"
systems: [nintendo-nes, nintendo-fds]
notes: |
Nestopia UE (Undead Edition) is a cycle-accurate 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.
The core validates the BIOS via CRC32 against two known dumps:
standard Famicom (0x5E607DCF) and Twin Famicom (0x4DF24A6C).
An unknown BIOS triggers a warning but still loads.
NstDatabase.xml is an optional game database used for region autodetection,
aspect ratio selection, and 4-player adapter recognition. A copy is baked
into the core binary (libretro/nstdatabase.hpp) and used as fallback when
no external file is found. Placing a newer NstDatabase.xml in the system
directory overrides the built-in copy.
An optional custom palette file (custom.pal, 192 bytes, 64 RGB triplets)
overrides the built-in palettes when the nestopia_palette core option is
set to Custom. The core ships with 10+ built-in palettes (Royaltea,
Smooth FBx, etc.) so the external file is rarely needed.
Audio samples for specific games can be placed in system/nestopia/samples/
as numbered .wav files (e.g., 00.wav, 01.wav). This is used for Famicom
expansion audio in a few titles.
Game Genie is handled as cheat code decoding (software), not via a ROM file.
File path construction: libretro/libretro.cpp retro_load_game() 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: "libretro/libretro.cpp:1608-1634 (FDS load), source/core/NstFds.cpp:61-131 (Bios class, CRC32 validation)"
notes: "Mapped at 0xE000-0xFFFF (8 KB). retro_load_game returns false if missing when loading .fds files. CRC32 checked: Famicom 0x5E607DCF, Twin Famicom 0x4DF24A6C."
# --- NES game database (optional, overrides baked-in copy) ---
- name: "NstDatabase.xml"
system: nintendo-nes
description: "Nestopia game database for region and mapper autodetection"
required: false
size: 1022369
md5: "0ee6cbdc6f5c96ce9c8aa5edb59066f4"
sha1: ~
source_ref: "libretro/libretro.cpp:1561-1586 (database load), libretro/nstdatabase.hpp (baked-in fallback)"
notes: "XML database matching games by SHA1+CRC32. Used for region, mapper, mirroring, and 4-player adapter detection. Built-in fallback exists so this file is optional. Hash is for the upstream copy shipped with the core repo."
# --- Custom palette (optional, core option nestopia_palette = Custom) ---
- name: "custom.pal"
system: nintendo-nes
description: "External NES color palette"
required: false
size: 192
md5: ~
sha1: ~
source_ref: "libretro/libretro.cpp:1540-1559 (palette load)"
notes: "64 RGB triplets (64 x 3 bytes = 192 bytes). Only loaded when nestopia_palette core option is set to Custom. Falls back to built-in Royaltea palette if not found. Multiple valid palettes exist so no single canonical hash."

54
emulators/noods.yml Normal file
View File

@@ -0,0 +1,54 @@
emulator: NooDS
type: libretro
source: "https://github.com/Hydr8gon/NooDS"
cores: [noods]
systems: [nintendo-ds, nintendo-gba]
notes: |
NooDS includes full HLE BIOS for ARM9, ARM7 and GBA SWI routines, making
all BIOS files optional when direct boot is enabled (default). HLE tables
cover SWI 0x00-0x20 for each processor (hle_bios.cpp:24-62). When BIOS
files are missing, a special opcode (0xFF at offset 3) is written for
interrupt return and the HLE handler is activated (memory.cpp:130-169).
Firmware is auto-generated (128KB non-bootable) if not provided, with
default WiFi config, touch calibration and user settings (spi.cpp:90-160).
Native BIOS+firmware required only for firmware boot (non-direct-boot mode).
ARM9 BIOS read: 0x1000 bytes (4 KB), ARM7 BIOS read: 0x4000 bytes (16 KB),
GBA BIOS read: 0x4000 bytes (16 KB). Firmware bootable threshold: >128 KB
(spi.cpp:87). DSi mode supported but uses same BIOS files.
Config: noods.ini keys bios9Path, bios7Path, firmwarePath, gbaBiosPath.
files:
- name: "bios9.bin"
system: nintendo-ds
description: "ARM9 BIOS"
required: false
size: 4096
md5: "a392174eb3e572fed6447e956bde4b25"
source_ref: "src/memory.cpp:130-142, src/memory.h:73"
notes: "HLE fallback for all SWI calls; native needed for firmware boot and logo verification (copyBiosLogo)"
- name: "bios7.bin"
system: nintendo-ds
description: "ARM7 BIOS"
required: false
size: 16384
md5: "df692a80a5b1bc90728bc3dfc76cd948"
source_ref: "src/memory.cpp:144-156, src/memory.h:74"
notes: "HLE fallback for all SWI calls; native needed for firmware boot"
- name: "firmware.bin"
system: nintendo-ds
description: "NDS firmware image"
required: false
source_ref: "src/spi.cpp:62-160, src/settings.cpp:42"
notes: "Auto-generated 128KB non-bootable firmware as fallback; native dump (>128KB) needed for firmware boot"
- name: "gba_bios.bin"
system: nintendo-gba
description: "GBA BIOS"
required: false
size: 16384
md5: "a860e8c0b6d573d191e4ec7db1b1e4f6"
source_ref: "src/memory.cpp:158-169, src/memory.h:75, src/core.cpp:244-252"
notes: "HLE fallback via swiTableGba; native BIOS disables HLE and enables real GBA boot (core.cpp:244-247)"

162
emulators/np2kai.yml Normal file
View File

@@ -0,0 +1,162 @@
emulator: NP2kai
type: libretro
source: "https://github.com/libretro/NP2kai"
systems: [pc-98]
# NP2kai is a PC-9801/9821 emulator (Neko Project II kai).
# All BIOS/font/sound files are loaded from <system>/np2kai/ subdirectory.
# The core sets np2cfg.biospath to "<system>/np2kai/" in retro_load_game()
# (sdl/libretro/libretro.c:1800-1815). All getbiospath() calls resolve
# relative to that directory.
#
# The core has a built-in BIOS simulator (BIOS_SIMULATE) that can boot
# without a real BIOS ROM, but a real bios.rom provides better compatibility.
# Font data is auto-generated from built-in tables if font.bmp is missing,
# but Japanese kanji display requires the real font file.
#
# The fmgen YM2608 rhythm engine (fmgen_opna.cpp:1413-1443) loads WAV files
# with uppercase extension (.WAV) but the built-in rhythm engine (rhythmc.c)
# uses lowercase (.wav). Both paths resolve from np2kai/.
# The fmgen engine also accepts "2608_RYM.WAV" as fallback for the rim sample.
files:
# -- Main BIOS ROM --
# Loaded in bios/bios.c:430-440. 96 KB (0x18000) mapped at 0xe8000.
# Without this, the built-in BIOS simulator is used (less compatible).
- name: "bios.rom"
path: "np2kai/bios.rom"
required: false
note: >
PC-9801 system BIOS ROM (96 KB). Provides full hardware compatibility.
The core can boot without it using the built-in BIOS simulator, but
some software may not work correctly. Loaded at address 0xe8000.
source_ref: "bios/bios.c:430-440, common/strres.c:60"
# -- ITF ROM --
# Initial Test Firmware, loaded at ITF_ADRS (0xf8000), 32 KB.
# Only loaded when BIOS_SIMULATE is not defined (bios/bios.c:569-574).
# In the libretro build, BIOS_SIMULATE is typically enabled, so this is
# only needed for non-simulated builds.
- name: "itf.rom"
path: "np2kai/itf.rom"
required: false
note: >
Initial Test Firmware ROM (32 KB). Used for hardware initialization
and memory check at boot. Only loaded when the built-in ITF simulator
is disabled. Most libretro builds include the simulator.
source_ref: "bios/bios.c:569-574"
# -- Font file --
# Set explicitly in libretro.c:1813 as "<system>/np2kai/font.bmp".
# The core also supports FONT.ROM / font.rom (V98 format) via font_load().
# Without any font file, built-in 8x8 bitmap data is used but kanji
# characters will not display correctly.
- name: "font.bmp"
path: "np2kai/font.bmp"
required: false
note: >
PC-98 font bitmap (288 KB). Required for correct Japanese kanji display.
The core also accepts FONT.ROM (V98 format). Without this file,
only basic ASCII characters render correctly using built-in data.
source_ref: "sdl/libretro/libretro.c:1813, font/fontdata.c:11-14"
# -- Sound BIOS ROM --
# Loaded by soundrom_load() as "sound.rom" (soundrom.c:15-16, 28-32).
# The filename is composed as "sound" + optional board name + ".rom".
# 16 KB ROM for the FM sound board.
- name: "sound.rom"
path: "np2kai/sound.rom"
required: false
note: >
FM sound board BIOS ROM (16 KB). Used by the PC-9801-26K/86/118
sound boards. The core falls back to a minimal built-in default
(9-byte stub) if this file is missing.
source_ref: "sound/soundrom.c:15-16,21-55,93-106"
# -- YM2608 OPNA rhythm samples --
# Loaded by both the built-in rhythm engine (rhythmc.c:60-71) and the
# fmgen engine (fmgen_opna.cpp:1413-1443). Required for YM2608 OPNA
# rhythm sound channel (bass drum, snare, etc).
# The fmgen engine tries uppercase .WAV, the built-in engine uses .wav.
# Place lowercase versions - the filesystem handles case on most platforms.
- name: "2608_bd.wav"
path: "np2kai/2608_bd.wav"
required: false
note: "YM2608 OPNA rhythm sample: bass drum"
source_ref: "sound/rhythmc.c:11, sound/fmgen/fmgen_opna.cpp:1431-1433"
- name: "2608_sd.wav"
path: "np2kai/2608_sd.wav"
required: false
note: "YM2608 OPNA rhythm sample: snare drum"
source_ref: "sound/rhythmc.c:12"
- name: "2608_top.wav"
path: "np2kai/2608_top.wav"
required: false
note: "YM2608 OPNA rhythm sample: top cymbal"
source_ref: "sound/rhythmc.c:13"
- name: "2608_hh.wav"
path: "np2kai/2608_hh.wav"
required: false
note: "YM2608 OPNA rhythm sample: hi-hat"
source_ref: "sound/rhythmc.c:14"
- name: "2608_tom.wav"
path: "np2kai/2608_tom.wav"
required: false
note: "YM2608 OPNA rhythm sample: tom"
source_ref: "sound/rhythmc.c:15"
- name: "2608_rim.wav"
path: "np2kai/2608_rim.wav"
required: false
note: "YM2608 OPNA rhythm sample: rim shot"
source_ref: "sound/rhythmc.c:16"
# -- IDE BIOS ROM --
# Loaded by ideio.c:1913-1931. Tried in order: ide.rom, d8000.rom,
# bank3.bin, bios9821.rom. Only loaded when IDE BIOS is enabled in
# core options (np2cfg.idebios) and a real BIOS ROM is also present.
- name: "ide.rom"
path: "np2kai/ide.rom"
required: false
note: >
IDE controller BIOS ROM (8 KB). Required for real IDE BIOS emulation
(HDD boot from IDE). The core also checks d8000.rom, bank3.bin,
and bios9821.rom as fallback filenames. Without this, a simulated
IDE BIOS is used.
source_ref: "cbus/ideio.c:1913-1931"
# -- SCSI BIOS ROM --
# Loaded by scsiio.c:219-231. Falls back to built-in scsibios[] stub.
- name: "scsi.rom"
path: "np2kai/scsi.rom"
required: false
note: >
SCSI controller BIOS ROM (16 KB). For PC-98 SCSI HDD support.
The core includes a built-in SCSI BIOS stub as fallback.
source_ref: "cbus/scsiio.c:219-231"
# -- PCI BIOS ROM --
# Loaded by pcidev.c:364-382. Tries pci.rom then bank0.bin.
# Falls back to built-in PCI BIOS simulation.
- name: "pci.rom"
path: "np2kai/pci.rom"
required: false
note: >
PCI BIOS ROM (32 KB). For PC-9821 PCI bus emulation.
The core also checks bank0.bin as fallback. Without this,
the built-in PCI BIOS simulator is used.
source_ref: "io/pcidev.c:360-382"
# -- GPIB BIOS ROM --
# Loaded by gpibio.c:327-356.
- name: "gpib.rom"
path: "np2kai/gpib.rom"
required: false
note: >
GP-IB interface BIOS ROM. Rarely needed, only for GP-IB peripheral
emulation.
source_ref: "cbus/gpibio.c:327-356"

79
emulators/numero.yml Normal file
View File

@@ -0,0 +1,79 @@
emulator: Numero
type: libretro
source: "https://github.com/nbarkhina/numero"
cores:
- numero
systems:
- ti-83
notes: |
Numero is a TI-83 family calculator emulator for libretro, based on the
Wabbitemu emulator. Supports TI-83, TI-83 Plus and TI-83 Silver Edition.
A calculator ROM dump is required to run. The core searches for ROM files
in the system directory root with a fixed priority order
(libretronew.cpp:575-594):
1. ti83se.rom (TI-83 Silver Edition, recommended -- largest storage)
2. ti83plus.rom (TI-83 Plus)
3. ti83.rom (TI-83)
The first file found wins. file_present_in_system() checks existence only
(libretronew.cpp:451-472), then rom_load() loads it (libretronew.cpp:608).
There is no fallback or built-in ROM. If none of the three files are found,
the core starts without a BIOS and shows a blank screen with a status
message listing the expected filenames (libretronew.cpp:1034-1041).
The core supports no-content launch (RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME
is set to true, libretronew.cpp:555-556). Content files are .8xp/.8xk/.8xg
calculator programs loaded on top of the running ROM.
The emulator auto-saves calculator state every 10 seconds to preserve RAM
contents (the TI-83 has no persistent storage beyond battery-backed RAM).
files:
- name: "ti83se.rom"
system: ti-83
description: "TI-83 Silver Edition ROM dump"
required: false
source_ref: "libretronew.cpp:576-578"
notes: "Checked first. Recommended by the author for largest storage capacity."
- name: "ti83plus.rom"
system: ti-83
description: "TI-83 Plus ROM dump"
required: false
source_ref: "libretronew.cpp:583-585"
notes: "Checked second, used if ti83se.rom is missing."
- name: "ti83.rom"
system: ti-83
description: "TI-83 ROM dump"
required: false
source_ref: "libretronew.cpp:591-593"
notes: "Checked last. Original TI-83 (non-Plus) ROM."
platform_details:
bios_search:
source_ref: "libretronew.cpp:451-472, 575-608"
notes: |
file_present_in_system() opens a read handle via libretro VFS to
test file existence. The search is sequential: ti83se.rom first,
then ti83plus.rom, then ti83.rom. Only one ROM is loaded.
rom_loading:
source_ref: "src/Interface/calc.cpp (rom_load)"
notes: |
rom_load() detects the calculator model from the ROM image header
and initializes the appropriate hardware (83, 83+, 83SE). Each
model gets its own progress/save directory via setProgressDir().
content_loading:
formats: "8xp, 8xk, 8xg"
source_ref: "libretronew.cpp:483, 769"
notes: |
Calculator programs (.8xp), apps (.8xk) and groups (.8xg) are
loaded into the running calculator via the sendfile mechanism,
simulating the link cable transfer. Multiple programs can be
loaded sequentially onto the same ROM session.

98
emulators/o2em.yml Normal file
View File

@@ -0,0 +1,98 @@
emulator: O2EM
type: libretro
core: o2em_libretro
source: "https://github.com/libretro/libretro-o2em"
systems:
- odyssey2
- videopac
notes: |
O2EM is the libretro port of the Odyssey2/Videopac emulator.
The core requires exactly one BIOS ROM selected via the o2em_bios core option.
Default is o2rom.bin (Odyssey2 NTSC). The user can switch to c52.bin, g7400.bin
or jopac.bin for European/French Videopac variants.
BIOS files are loaded from the system directory into rom_table[0] (1024 bytes).
The core identifies the BIOS variant by CRC32 and sets the vpp flag accordingly
(vpp=1 enables Videopac+ enhanced graphics for g7400.bin and jopac.bin).
The core will not start without a valid BIOS file present.
Any single BIOS from the list below is sufficient for its region/hardware.
All BIOS files are exactly 1 KB (1024 bytes).
BIOS detection: libretro.c load_bios() lines 146-212, CRC32 switch.
BIOS selection: libretro_core_options.h o2em_bios option lines 52-64.
Core option handling: libretro.c lines 1107-1134.
files:
# -------------------------------------------------------
# Magnavox Odyssey2 (NTSC) - G7000 model
# -------------------------------------------------------
- name: "o2rom.bin"
system: odyssey2
region: [north-america]
required: true
size: 1024
md5: "562d5ebf9e030a40d6fabfc2f33139fd"
sha1: "b2e1955d957a475de2411770452eff4ea19f4cee"
crc32: "8016a315"
note: "Magnavox Odyssey2 BIOS (G7000 NTSC). Default BIOS, vpp=0."
source_ref: "libretro.c:182-186"
# -------------------------------------------------------
# Philips Videopac G7000 (European)
# -------------------------------------------------------
- name: "c52.bin"
system: videopac
region: [europe]
required: true
size: 1024
md5: "f1071cdb0b6b10dde94d3bc8a6146387"
sha1: "a6120aed50831c9c0d95dbdf707820f601d9452e"
crc32: "a318e8d6"
note: "Philips Videopac G7000 European BIOS. vpp=0, auto-sets PAL region."
source_ref: "libretro.c:192-197"
# -------------------------------------------------------
# Philips Videopac+ G7400 (European)
# -------------------------------------------------------
- name: "g7400.bin"
system: videopac
region: [europe]
required: true
size: 1024
md5: "c500ff71236068e0dc0d0603d265ae76"
sha1: "5130243429b40b01a14e1304d0394b8459a6fbae"
crc32: "e20a9f41"
note: "Philips Videopac+ G7400 European BIOS. vpp=1, enables enhanced graphics."
source_ref: "libretro.c:187-191"
# -------------------------------------------------------
# Philips Videopac+ G7400 (French) - JoPac
# -------------------------------------------------------
- name: "jopac.bin"
system: videopac
region: [france]
required: true
size: 1024
md5: "279008e4a0db2dc5f1c048853b033828"
sha1: "54b8d2c1317628de51a85fc1c424423a986775e4"
crc32: "11647ca5"
note: "Philips Videopac+ G7400 French BIOS (JoPac). vpp=1, enables enhanced graphics."
source_ref: "libretro.c:198-203"
platform_details:
odyssey2:
bios_size: 1024
bios_selection: "core option o2em_bios, default o2rom.bin"
detection_method: "CRC32 of 1024-byte ROM"
hle_available: false
source_ref: "libretro.c:146-212, libretro_core_options.h:52-64"
videopac:
bios_size: 1024
bios_selection: "core option o2em_bios, choose c52/g7400/jopac"
detection_method: "CRC32 of 1024-byte ROM"
vpp_flag: "g7400.bin and jopac.bin set vpp=1 for enhanced graphics"
hle_available: false
source_ref: "libretro.c:146-212, libretro_core_options.h:52-64"

209
emulators/opera.yml Normal file
View File

@@ -0,0 +1,209 @@
emulator: Opera (4DO)
type: libretro
core: opera_libretro
source: "https://github.com/libretro/opera-libretro"
systems:
- 3do
notes: |
Opera is the libretro port of the 4DO/FreeDO 3DO Interactive Multiplayer emulator.
The core requires exactly one system BIOS ROM (rom1) selected via the opera_bios
core option. BIOS files are loaded from the system directory with
read_file_from_system_directory() and byteswapped on little-endian hosts.
The core will not start without a valid BIOS ROM.
The user selects which BIOS to use from the core option dropdown, which only
lists BIOS files physically present in the system directory. Any single BIOS
from the list below is sufficient to run games from its region.
Kanji font ROMs (rom2) are optional and only needed for Japanese text rendering.
They are loaded via opera_lr_opts_set_font() and selected via opera_font core option.
All BIOS files are exactly 1 MB (1048576 bytes) except 3do_arcade_saot.bin (512 KB)
and panafz1-kanji.bin (933636 bytes).
BIOS definitions: libopera/opera_bios.c BIOSES[] lines 3-136.
BIOS loading: opera_lr_opts.c opera_lr_opts_set_bios() lines 239-270.
Font loading: opera_lr_opts.c opera_lr_opts_set_font() lines 272-320.
Core option: libretro_core_options.c opera_bios / opera_font.
files:
# -------------------------------------------------------
# Panasonic FZ-1 (US) - original 3DO launch model
# -------------------------------------------------------
- name: "panafz1.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "f47264dd47fe30f73ab3c010015c155b"
sha1: "34bf189111295f74d7b7dfc1f304d98b8d36325a"
note: "Panasonic FZ-1 (U). Version unknown, dated 1993-08-03."
source_ref: "libopera/opera_bios.c:6-17"
# -------------------------------------------------------
# Panasonic FZ-1 (Japan)
# -------------------------------------------------------
- name: "panafz1j.bin"
system: 3do
region: [japan]
required: true
size: 1048576 # 1 MB
md5: "a496cfdded3da562759be3561317b605"
sha1: "ec7ec62d60ec0459a14ed56ebc66761ef3c80efc"
note: "Panasonic FZ-1 (J). Version 1.54, dated 1994-01-22."
source_ref: "libopera/opera_bios.c:19-30"
# -------------------------------------------------------
# Panasonic FZ-1 (Japan) [No RSA]
# -------------------------------------------------------
- name: "panafz1j-norsa.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "f6c71de7470d16abe4f71b1444883dc8"
sha1: "a417587ae3b0b8ef00c830920c21af8bee88e419"
note: "Panasonic FZ-1 (J) with RSA check removed. Version 1.54."
source_ref: "libopera/opera_bios.c:32-43"
# -------------------------------------------------------
# Panasonic FZ-10 (US) - slim redesign
# -------------------------------------------------------
- name: "panafz10.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "51f2f43ae2f3508a14d9f56597e2d3ce"
sha1: "3c912300775d1ad730dc35757e279c274c0acaad"
note: "Panasonic FZ-10 (U). Version 1.59.1.1, dated 1994-08-25."
source_ref: "libopera/opera_bios.c:45-56"
# -------------------------------------------------------
# Panasonic FZ-10 (US) [No RSA]
# -------------------------------------------------------
- name: "panafz10-norsa.bin"
system: 3do
region: [north-america]
required: false
size: 1048576 # 1 MB
md5: "1477bda80dc33731a65468c1f5bcbee9"
sha1: "f05e642322c03694f06a809c0b90fc27ac73c002"
note: "Panasonic FZ-10 (U) with RSA check removed. Version 1.59.1.1."
source_ref: "libopera/opera_bios.c:58-69"
# -------------------------------------------------------
# Panasonic FZ-10 (Europe) ANVIL
# -------------------------------------------------------
- name: "panafz10e-anvil.bin"
system: 3do
region: [europe]
required: true
size: 1048576 # 1 MB
md5: "a48e6746bd7edec0f40cff078f0bb19f"
sha1: "a900371f0cdcdc03f79557f11d406fd71251a5fd"
note: "Panasonic FZ-10 (E) ANVIL. Version 1.66.1.1, dated 1994-09-22."
source_ref: "libopera/opera_bios.c:71-82"
# -------------------------------------------------------
# Panasonic FZ-10 (Europe) ANVIL [No RSA]
# -------------------------------------------------------
- name: "panafz10e-anvil-norsa.bin"
system: 3do
region: [europe]
required: false
size: 1048576 # 1 MB
md5: "cf11bbb5a16d7af9875cca9de9a15e09"
sha1: "2765c7b4557cc838b32567d2428d088980295159"
note: "Panasonic FZ-10 (E) ANVIL with RSA check removed. Version 1.66.1.1."
source_ref: "libopera/opera_bios.c:84-95"
# -------------------------------------------------------
# Goldstar GDO-101M (US)
# -------------------------------------------------------
- name: "goldstar.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "8639fd5e549bd6238cfee79e3e749114"
sha1: "c4a2e5336f77fb5f743de1eea2cda43675ee2de7"
note: "Goldstar GDO-101M. Version 1.59, dated 1994-05-10."
source_ref: "libopera/opera_bios.c:97-108"
# -------------------------------------------------------
# Sanyo Try IMP-21J (Japan)
# -------------------------------------------------------
- name: "sanyotry.bin"
system: 3do
region: [japan]
required: true
size: 1048576 # 1 MB
md5: "35fa1a1ebaaeea286dc5cd15487c13ea"
sha1: "b01c53da256dde43ffec4ad3fc3adfa8d635e943"
note: "Sanyo Try IMP-21J. Version 1.59, dated 1994-05-10."
source_ref: "libopera/opera_bios.c:110-121"
# -------------------------------------------------------
# 3DO Arcade - SAOT
# -------------------------------------------------------
- name: "3do_arcade_saot.bin"
system: 3do
region: [north-america]
required: false
size: 524288 # 512 KB
md5: "8970fc987ab89a7f64da9f8a8c4333ff"
sha1: "520d3d1b5897800af47f92efd2444a26b7a7dead"
note: "3DO Arcade SAOT board BIOS. Half the size of consumer BIOS ROMs."
source_ref: "libopera/opera_bios.c:123-134"
# -------------------------------------------------------
# Kanji font ROM - FZ-1 (933636 bytes, non-standard size)
# -------------------------------------------------------
- name: "panafz1-kanji.bin"
system: 3do
region: [japan]
required: false
size: 933636
md5: "b8dc97f778a6245c58e064b0312e8281"
sha1: "acd39a8fee1b9d2950d5ab447846c11fb31af63e"
note: "Kanji font ROM for FZ-1. Version 16.4, dated 1993-08-03. Optional, Japanese text only."
source_ref: "libopera/opera_bios.c:141-152"
# -------------------------------------------------------
# Kanji font ROM - FZ-1J (1 MB)
# -------------------------------------------------------
- name: "panafz1j-kanji.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "c23fb5d5e6bb1c240d02cf968972be37"
sha1: "884515605ee243577ab20767ef8c1a7368e4e407"
note: "Kanji font ROM for FZ-1J. Version 16.4, dated 1993-08-03. Optional, Japanese text only."
source_ref: "libopera/opera_bios.c:154-165"
# -------------------------------------------------------
# Kanji font ROM - FZ-10JA ANVIL (1 MB)
# -------------------------------------------------------
- name: "panafz10ja-anvil-kanji.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "428577250f43edc902ea239c50d2240d"
sha1: "2e857b957803d0331fd229328df01f3ffab69eee"
note: "Kanji font ROM for FZ-10JA ANVIL. Version 16.4. Optional, Japanese text only."
source_ref: "libopera/opera_bios.c:167-178"
platform_details:
3do:
rom1_size: 1048576 # 1 MB standard BIOS
rom1_arcade_size: 524288 # 512 KB arcade BIOS
rom2_max_size: 1048576 # 1 MB kanji font ROM
bios_selection: "core option opera_bios, user picks from detected files"
font_selection: "core option opera_font, optional"
byteswap: "rom1 is byteswapped on little-endian (opera_mem_rom1_byteswap32_if_le)"
hle_available: false
source_ref: "opera_lr_opts.c:239-270, libopera/opera_bios.c:3-180"

212
emulators/pcsx2.yml Normal file
View File

@@ -0,0 +1,212 @@
# PCSX2 emulator BIOS profile
# Generated from source analysis of https://github.com/PCSX2/pcsx2
# Commit analyzed: HEAD as of 2026-03-17
emulator: PCSX2
type: standalone
source: "https://github.com/PCSX2/pcsx2"
systems: [sony-playstation-2]
bios_directory: "bios/"
bios_detection: "romdir" # scans romdir structure inside binary, looks for RESET/ROMVER/EXTINFO entries
bios_selection: "automatic" # scans all files in bios dir matching 4-8 MB size, validates via romdir
validation:
method: "romdir_parse"
min_size: 4194304 # 4 MB (MIN_BIOS_SIZE = 4 * _1mb)
max_size: 8388608 # 8 MB (MAX_BIOS_SIZE = 8 * _1mb)
required_entries: ["RESET", "ROMVER"]
optional_entries: ["EXTINFO"]
note: "Any file in bios/ between 4-8 MB with valid romdir containing RESET+ROMVER is accepted"
regions:
J: {zone: "Japan", id: 0}
A: {zone: "USA", id: 1}
E: {zone: "Europe", id: 2}
H: {zone: "Asia", id: 4}
C: {zone: "China", id: 6}
T: {zone: "T10K/COH-H", id: 8}
X: {zone: "Test", id: 9}
P: {zone: "Free", id: 10}
files:
# -- Main BIOS binary (required) --
- name: "<user-selected>.bin"
pattern: "*"
required: true
size_range: "4MB-8MB"
source_ref: "pcsx2/ps2/BiosTools.cpp:258-282"
note: >
PCSX2 does not mandate a specific filename. It scans the entire bios/ directory
for any file between 4-8 MB that contains a valid romdir structure (RESET + ROMVER entries).
Common filenames follow the SCPH-XXXXX_BIOS_VYYY_REGION_ZZZ.BIN convention but this is
not enforced. The file is loaded into the 4 MB ROM region of EE memory.
# -- ROM1 (optional, DVD player) --
- name: "<biosname>.rom1"
pattern: "{biosname}.rom1 or {biosbase}.rom1"
required: false
max_size: 4194304 # 4 MB (Ps2MemSize::Rom1)
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241"
note: >
DVD player ROM. Loaded via LoadExtraRom("rom1"). PCSX2 tries two naming patterns:
1) Full bios path + ".rom1" appended (e.g. scph70004.bin.rom1)
2) Bios path with extension replaced (e.g. scph70004.rom1)
Mapped to EE memory at ROM1 region (0x1FC00000 + 4MB offset).
Contains DVD player and region detection data (DVDID).
# -- ROM2 (optional, Chinese ROM extension) --
- name: "<biosname>.rom2"
pattern: "{biosname}.rom2 or {biosbase}.rom2"
required: false
max_size: 4194304 # 4 MB (Ps2MemSize::Rom2)
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241"
note: >
Chinese ROM extension. Loaded via LoadExtraRom("rom2"). Same naming convention
as rom1: tries appended extension first, then replaced extension.
Only present on Chinese region consoles.
# -- NVM / NVRAM (optional, auto-created) --
- name: "<biosname>.nvm"
pattern: "{biosbase}.nvm"
required: false
size: 1024 # NVRAM_SIZE = 1024 bytes
source_ref: "pcsx2/CDVD/CDVD.cpp:160-238"
note: >
EEPROM / NVRAM data. Path derived from BiosPath with extension replaced to ".nvm"
(cdvdGetNVRAMPath). Contains console configuration: language, timezone, iLink ID,
region parameters, OSD settings. Auto-created with defaults if missing.
Two NVM layouts exist: v0.00+ (biosVer 0x000) and v1.70+ (biosVer 0x146).
# -- MEC file (optional, auto-created) --
- name: "<biosname>.mec"
pattern: "{biosbase}.mec"
required: false
size: 4 # u32 s_mecha_version
source_ref: "pcsx2/CDVD/CDVD.cpp:190-204"
note: >
Mechacon (mechanism controller) version file. 4 bytes containing the mecha version
as a u32 value. Auto-created with DEFAULT_MECHA_VERSION (0x00020603) if missing.
Path derived from BiosPath with extension replaced to ".mec".
# -- IRX override (optional, advanced) --
- name: "<custom>.irx"
pattern: "*.irx"
required: false
source_ref: "pcsx2/ps2/BiosTools.cpp:243-256,384-385"
note: >
Custom IOP Reboot eXecutable module. Loaded into ROM at offset 0x3C0000 if
EmuConfig.CurrentIRX is set (path length > 3). Injected at IOP reset (PC=0x1630).
Used for debugging/development, not needed for normal operation.
# -- DEV9 EEPROM (optional, network adapter) --
- name: "eeprom.dat"
required: false
size: 64 # 64 bytes, mmap'd
source_ref: "pcsx2/DEV9/DEV9.cpp:110-160"
note: >
DEV9 (network adapter / HDD expansion bay) EEPROM data. Fixed filename "eeprom.dat"
opened from working directory. Contains network adapter configuration.
Falls back to built-in defaults if file not found. Only relevant when using
DEV9 features (online play, HDD).
common_bios_filenames:
# Japan
- "SCPH-10000_BIOS_V1_JAP_100.BIN"
- "SCPH-15000_BIOS_V3_JAP_120.BIN"
- "SCPH-30000_BIOS_V4_JAP_150.BIN"
- "SCPH-30001R_BIOS_V7_JAP_160.BIN"
- "SCPH-30004R_BIOS_V7_JAP_160.BIN"
- "SCPH-35000_BIOS_V5_JAP_160.BIN"
- "SCPH-50000_BIOS_V9_JAP_170.BIN"
- "SCPH-50004_BIOS_V9_JAP_170.BIN"
- "SCPH-70000_BIOS_V12_JAP_200.BIN"
- "SCPH-75000_BIOS_V14_JAP_220.BIN"
- "SCPH-77000_BIOS_V14_JAP_220.BIN"
- "SCPH-90000_BIOS_V18_JAP_230.BIN"
# USA
- "SCPH-30001_BIOS_V4_USA_150.BIN"
- "SCPH-39001_BIOS_V6_USA_160.BIN"
- "SCPH-50001_BIOS_V9_USA_170.BIN"
- "SCPH-50003_BIOS_V9_USA_170.BIN"
- "SCPH-70002_BIOS_V12_USA_200.BIN"
- "SCPH-70004_BIOS_V12_USA_200.BIN"
- "SCPH-70012_BIOS_V12_USA_200.BIN"
- "SCPH-75001_BIOS_V14_USA_220.BIN"
- "SCPH-77001_BIOS_V14_USA_220.BIN"
- "SCPH-90001_BIOS_V18_USA_230.BIN"
# Europe
- "SCPH-30002_BIOS_V4_EUR_150.BIN"
- "SCPH-30003_BIOS_V4_EUR_150.BIN"
- "SCPH-30004_BIOS_V4_EUR_150.BIN"
- "SCPH-39002_BIOS_V6_EUR_160.BIN"
- "SCPH-39003_BIOS_V6_EUR_160.BIN"
- "SCPH-39004_BIOS_V6_EUR_160.BIN"
- "SCPH-50002_BIOS_V9_EUR_170.BIN"
- "SCPH-50004_BIOS_V9_EUR_170.BIN"
- "SCPH-70002_BIOS_V12_EUR_200.BIN"
- "SCPH-70003_BIOS_V12_EUR_200.BIN"
- "SCPH-70004_BIOS_V12_EUR_200.BIN"
- "SCPH-70008_BIOS_V12_EUR_200.BIN"
- "SCPH-75002_BIOS_V14_EUR_220.BIN"
- "SCPH-75003_BIOS_V14_EUR_220.BIN"
- "SCPH-75004_BIOS_V14_EUR_220.BIN"
- "SCPH-77002_BIOS_V14_EUR_220.BIN"
- "SCPH-77003_BIOS_V14_EUR_220.BIN"
- "SCPH-77004_BIOS_V14_EUR_220.BIN"
- "SCPH-90002_BIOS_V18_EUR_230.BIN"
- "SCPH-90003_BIOS_V18_EUR_230.BIN"
- "SCPH-90004_BIOS_V18_EUR_230.BIN"
# Asia
- "SCPH-50009_BIOS_V9_HK_170.BIN"
- "SCPH-70005_BIOS_V12_HK_200.BIN"
- "SCPH-70006_BIOS_V12_HK_200.BIN"
- "SCPH-70008_BIOS_V12_HK_200.BIN"
# China
- "SCPH-50009_BIOS_V9_CHN_170.BIN"
- "SCPH-70006_BIOS_V12_CHN_200.BIN"
memory_layout:
ROM: {offset: "0x1FC00000", size: "4 MB", purpose: "Main BIOS binary"}
ROM1: {offset: "ROM + 4MB", size: "4 MB", purpose: "DVD player"}
ROM2: {offset: "ROM + 8MB", size: "4 MB", purpose: "Chinese ROM extension"}
nvm_layout:
format_0:
applies_to: "BIOS v0.00+"
biosVer: 0x000
config0: 0x280
config1: 0x300
config2: 0x200
consoleId: 0x1C8
ilinkId: 0x1C0
modelNum: 0x1A0
regparams: 0x180
mac: 0x198
format_1:
applies_to: "BIOS v1.70+"
biosVer: 0x146
config0: 0x270
config1: 0x2B0
config2: 0x200
consoleId: 0x1F0
ilinkId: 0x1E0
modelNum: 0x1B0
regparams: 0x180
mac: 0x198
notes: |
PCSX2 is filename-agnostic for the main BIOS. Detection relies on romdir structure
parsing inside the binary itself, not on filename or extension. Any file between 4-8 MB
with a valid romdir (containing at least RESET and ROMVER entries) is accepted.
The ROMVER entry encodes: version (2+2 digits), region letter, console/devel flag,
build date (YYYYMMDD), and is used to determine the BIOS description and region.
Companion files (.nvm, .mec) are auto-created with sane defaults if missing.
ROM1/ROM2 are silently skipped if not found - only the main BIOS binary is strictly required.
PCSX2 no longer ships as a libretro core in official builds. The standalone emulator
is the primary distribution channel.
Devel console BIOSes (< ~2.3 MB) lack the OSD and are handled with NoOSD=true flag.

View File

@@ -0,0 +1,89 @@
emulator: PCSX-ReARMed
type: libretro
source: "https://github.com/libretro/pcsx_rearmed"
cores: [pcsx_rearmed, pcsx_rearmed_neon, pcsx_rearmed_interpreter]
systems: [sony-playstation]
bios_size: 524288 # 512 KB (0x80000); also accepts 4 MB psxonpsp combo (reads first 512 KB)
verification: crc32
notes: >
HLE BIOS built-in: core option pcsx_rearmed_bios = "HLE" bypasses real BIOS entirely.
Default is "auto" which searches system dir for listed filenames, then scans all files.
Region detection reads bytes at offset 0x7ff51: " E" = EU, " J" = JP, else US.
Three CRC32 hardcoded as JP override: 0x18D0F7D8, 0x3B601FC8, 0x3539DEF6 (psxonpsp, scph1000).
BIOS validity check: byte pattern at offset 1 (\x00\x08\x3c\x3f) or string "PS compatible" at 0x12c.
Files named "unirom" (case-insensitive) are explicitly skipped.
Region fallback: if the matching-region BIOS is missing, any available region BIOS is used over HLE.
Three region slots: US (index 0), JP (index 1), EU (index 2) stored in Config.Bios[].
All firmware is optional per libretro-core-info; HLE works but real BIOS improves compatibility.
files:
# -- Region: Japan (PSX_REGION_JP = 1) --
- name: "scph5500.bin"
description: "SCPH-5500 (v3.0 09-09-96 J)"
region: "NTSC-J"
required: false
md5: "8dd7d5296a650fac7319bce665a6a53c"
source_ref: "frontend/libretro.c:3710 (listed_bios[0])"
notes: "Preferred JP BIOS, searched first by exact filename."
# -- Region: North America (PSX_REGION_US = 0) --
- name: "scph5501.bin"
description: "SCPH-5501 (v3.0 11-18-96 A)"
region: "NTSC-U"
required: false
md5: "490f666e1afb15b7362b406ed1cea246"
source_ref: "frontend/libretro.c:3710 (listed_bios[1])"
notes: "Preferred US BIOS, searched first by exact filename."
# -- Region: Europe (PSX_REGION_EU = 2) --
- name: "scph5502.bin"
description: "SCPH-5502 (v3.0 01-06-97 E)"
region: "PAL"
required: false
md5: "32736f17079d0b2b7024407c39bd3050"
source_ref: "frontend/libretro.c:3710 (listed_bios[2])"
notes: "Preferred EU BIOS, searched first by exact filename."
# -- Fallback BIOS filenames (searched in order after scph550x) --
- name: "psxonpsp660.bin"
description: "PSP embedded PS1 BIOS (region-free, 512 KB or 4 MB accepted)"
region: "Auto"
required: false
md5: "c53ca5908936d412331790f4426c6c33"
source_ref: "frontend/libretro.c:3711 (listed_bios[3])"
notes: "Region detected from content at runtime. 4 MB combo image accepted but only first 512 KB read."
- name: "scph101.bin"
description: "SCPH-101 (v4.4 03-24-00 A) - PSone US"
region: "NTSC-U"
required: false
md5: "6e3735ff4c7dc899ee98981c18c3666d"
source_ref: "frontend/libretro.c:3711 (listed_bios[4])"
notes: "PSone slim model. Searched by filename after scph550x and psxonpsp660."
- name: "scph7001.bin"
description: "SCPH-7001 (v4.1 12-16-97 A)"
region: "NTSC-U"
required: false
md5: "1e68c231d0896b7eadcad1d7d8e76129"
source_ref: "frontend/libretro.c:3711 (listed_bios[5])"
notes: "Searched by filename after psxonpsp660 and scph101."
- name: "scph1001.bin"
description: "SCPH-1001 (v2.2 12-04-95 A)"
region: "NTSC-U"
required: false
md5: "924e392ed05558ffdb115408c263dccf"
source_ref: "frontend/libretro.c:3711 (listed_bios[6])"
notes: "Original US model. Last in the explicit filename search list."
# -- Dynamic scan fallback --
# After exhausting listed_bios[], the core calls find_any_bios() which scans
# the entire system directory via opendir/readdir. Any 512 KB file passing the
# validity check (magic bytes or "PS compatible" string) is accepted and assigned
# to the detected region slot. This means scph1000.bin, scph3000.bin, scph7002.bin,
# scph7502.bin, etc. all work without being explicitly listed.

175
emulators/picodrive.yml Normal file
View File

@@ -0,0 +1,175 @@
emulator: PicoDrive
type: libretro
source: "https://github.com/libretro/picodrive"
systems:
- sega-megadrive
- sega-genesis
- sega-megacd
- sega-segacd
- sega-32x
- sega-mastersystem
- sega-gamegear
- sega-sg1000
- sega-pico
notes: |
PicoDrive is a fast Mega Drive / Genesis emulator with Mega CD, 32X, Master
System, Game Gear, SG-1000 and Sega Pico support.
Mega CD / Sega CD games require a region-matching BIOS file. The core searches
the system directory for each name in order, trying .bin then .zip extension,
and uses the first file found. If no BIOS is found, CD games fail to load with
PM_BAD_CD_NO_BIOS. MSU-MD games can run without BIOS.
BIOS filename search order (platform/libretro/libretro.c:1265-1329):
US: us_scd2_9306, SegaCDBIOS9303, us_scd1_9210, bios_CD_U
EU: eu_mcd2_9306, eu_mcd2_9303, eu_mcd1_9210, bios_CD_E
JP: jp_mcd2_921222, jp_mcd1_9112, jp_mcd1_9111, bios_CD_J
32X BIOS files (m68k, master SH2, slave SH2) are fully optional. The core
has built-in HLE that generates replacement code at startup when the external
BIOS pointers are NULL (pico/32x/memory.c:2200 get_bios(), pico/32x/32x.c:172).
The libretro frontend does not expose any 32X BIOS loading path. Only the
standalone platform code references 32X_M_BIOS.BIN / 32X_S_BIOS.BIN, and
that code is currently disabled (#if 0 in platform/common/emu.c:1529).
Master System, Game Gear, SG-1000: no BIOS file loaded. The core initializes
VDP registers and RAM to simulate post-BIOS state (pico/sms.c:1080-1096).
files:
# -------------------------------------------------------
# Mega CD / Sega CD - US region
# -------------------------------------------------------
- name: "us_scd2_9306.bin"
system: sega-segacd
required: true
size: 131072 # 128 KB (0x20000)
note: "US Sega CD Model 2 BIOS (September 1993). First in US search order."
source_ref: "platform/libretro/libretro.c:1266"
- name: "SegaCDBIOS9303.bin"
system: sega-segacd
required: false
size: 131072
note: "US Sega CD BIOS (March 1993). Second in US search order."
source_ref: "platform/libretro/libretro.c:1266"
- name: "us_scd1_9210.bin"
system: sega-segacd
required: false
size: 131072
note: "US Sega CD Model 1 BIOS (October 1992). Third in US search order."
source_ref: "platform/libretro/libretro.c:1266"
- name: "bios_CD_U.bin"
system: sega-segacd
required: false
size: 131072
note: "US Sega CD BIOS (generic name). Last in US search order."
source_ref: "platform/libretro/libretro.c:1266"
# -------------------------------------------------------
# Mega CD / Sega CD - EU region
# -------------------------------------------------------
- name: "eu_mcd2_9306.bin"
system: sega-megacd
required: true
size: 131072
note: "EU Mega CD Model 2 BIOS (June 1993). First in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
- name: "eu_mcd2_9303.bin"
system: sega-megacd
required: false
size: 131072
note: "EU Mega CD Model 2 BIOS (March 1993). Second in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
- name: "eu_mcd1_9210.bin"
system: sega-megacd
required: false
size: 131072
note: "EU Mega CD Model 1 BIOS (October 1992). Third in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
- name: "bios_CD_E.bin"
system: sega-megacd
required: false
size: 131072
note: "EU Mega CD BIOS (generic name). Last in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
# -------------------------------------------------------
# Mega CD / Sega CD - JP region
# -------------------------------------------------------
- name: "jp_mcd2_921222.bin"
system: sega-megacd
required: true
size: 131072
note: "JP Mega CD Model 2 BIOS (December 1992). First in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
- name: "jp_mcd1_9112.bin"
system: sega-megacd
required: false
size: 131072
note: "JP Mega CD Model 1 BIOS (December 1991). Second in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
- name: "jp_mcd1_9111.bin"
system: sega-megacd
required: false
size: 131072
note: "JP Mega CD Model 1 BIOS (November 1991). Third in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
- name: "bios_CD_J.bin"
system: sega-megacd
required: false
size: 131072
note: "JP Mega CD BIOS (generic name). Last in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
# -------------------------------------------------------
# Sega 32X - HLE available, not loaded by libretro frontend
# -------------------------------------------------------
- name: "32X_G_BIOS.BIN"
system: sega-32x
required: false
size: 256 # 0x100
note: "32X 68K (Genesis-side) BIOS. HLE replacement generated when NULL."
source_ref: "pico/32x/memory.c:2207-2243"
- name: "32X_M_BIOS.BIN"
system: sega-32x
required: false
size: 2048 # 0x800
note: "32X Master SH2 BIOS. HLE replacement generated when NULL."
source_ref: "pico/32x/memory.c:2250-2277"
- name: "32X_S_BIOS.BIN"
system: sega-32x
required: false
size: 1024 # 0x400
note: "32X Slave SH2 BIOS. HLE replacement generated when NULL."
source_ref: "pico/32x/memory.c:2280-2298"
platform_details:
megacd:
bios_size: 131072 # 128 KB
hle_available: false
region_specific: true
extensions_tried: [".bin", ".zip"]
source_ref: "pico/pico_int.h:559, platform/libretro/libretro.c:1310-1318"
32x:
m68k_bios_size: 256 # 0x100
master_sh2_bios_size: 2048 # 0x800
slave_sh2_bios_size: 1024 # 0x400
hle_available: true
source_ref: "pico/pico.h:53-55, pico/pico_int.h:679-693"
sms:
hle_available: true
note: "No BIOS file loaded. VDP/RAM initialized to post-BIOS state."
source_ref: "pico/sms.c:1080-1096"

88
emulators/pokemini.yml Normal file
View File

@@ -0,0 +1,88 @@
emulator: PokeMini
type: libretro
source: "https://github.com/libretro/PokeMini"
cores:
- pokemini
systems:
- nintendo-pokemon-mini
notes: |
PokeMini is a Pokemon Mini handheld emulator ported to libretro.
The core has an embedded FreeBIOS (open-source replacement) compiled
directly into the binary from freebios/freebios.c. This means the
real BIOS is never strictly required -- games will run with FreeBIOS
alone, though compatibility may differ from the original firmware.
BIOS loading sequence in the libretro port:
1. PokeMini_Create() clears PM_BIOS (4096 bytes at $000000-$000FFF),
then loads FreeBIOS into it via memcpy (source/PokeMini.c:116).
PokeMini_FreeBIOS is set to 1.
2. retro_load_game() calls PokeMini_Reset(0) after loading the ROM.
3. PokeMini_Reset() checks forcefreebios (hardcoded to 0 in the
libretro port, libretro.c:499). Since FreeBIOS is currently loaded
and forcefreebios is 0, it enters the real-BIOS path
(source/PokeMini.c:518-523):
- Reloads FreeBIOS as a safety fallback
- Checks if CommandLine.bios_file exists on disk
- If found, overwrites PM_BIOS with the real BIOS via
PokeMini_LoadBIOSFile(), sets PokeMini_FreeBIOS to 0
4. If bios.min is missing, FreeBIOS stays loaded and emulation
proceeds normally.
File path construction (libretro.c:565):
sprintf(CommandLine.bios_file, "%s%cbios.min", g_system_dir, slash)
The core looks for bios.min directly in the system directory root,
no subdirectory.
There is no core option to toggle FreeBIOS in the libretro port.
The standalone PokeMini has a forcefreebios setting, but the libretro
wrapper hardcodes it to 0 (always prefer real BIOS when available).
FreeBIOS (freebios/freebios.min) is 4096 bytes, a clean-room
reimplementation. It is NOT the official Nintendo Pokemon Mini BIOS.
files:
- name: "bios.min"
system: nintendo-pokemon-mini
description: "Pokemon Mini official BIOS"
required: false
size: 4096
md5: "1e4fb124a3a886865acb574f388c803d"
sha1: "daad4113713ed776fbd47727762bca81ba74915f"
source_ref: "source/PokeMini.c:189-206 (PokeMini_LoadBIOSFile), libretro/libretro.c:565 (path)"
notes: "Mapped at $000000-$000FFF (4 KB). Read via Hardware.c:144-145. Falls back to embedded FreeBIOS if missing."
platform_details:
bios_mapping:
target: "$000000-$000FFF in Pokemon Mini address space (4 KB)"
source_ref: "source/PokeMini.h:38, source/Hardware.c:144-145"
notes: |
PM_BIOS is a 4096-byte array. CPU reads from address range
$000000-$000FFF are served directly from this buffer. The BIOS
handles interrupt vectors, hardware init, and the startup logo.
freebios_fallback:
source_ref: "freebios/freebios.c, source/PokeMini.c:209-214"
notes: |
FreeBIOS is a 4096-byte open-source replacement embedded in the
binary as a C array. It provides basic interrupt vectors and
startup code. Loaded by default at PokeMini_Create() and used
as fallback when bios.min is not found on disk.
freebios_hashes:
md5: "d6c3ff5abc88f7c42f1a5edd6889f9cf"
sha1: "b40421defb005e836913e4e39dc1a18aa3b8887e"
size: 4096
load_priority:
source_ref: "source/PokeMini.c:515-523"
notes: |
During PokeMini_Reset(), the core first reloads FreeBIOS as a
safe baseline, then attempts to load bios.min from disk. If
the file exists and is exactly 4096 bytes, it replaces FreeBIOS.
The forcefreebios flag (hardcoded 0 in libretro) controls this:
when 0, the core always prefers real BIOS over FreeBIOS.

137
emulators/ppsspp.yml Normal file
View File

@@ -0,0 +1,137 @@
# PPSSPP emulator firmware profile
# Generated from source analysis of https://github.com/hrydgard/ppsspp
# Commit analyzed: HEAD as of 2026-03-17
emulator: PPSSPP
type: standalone
source: "https://github.com/hrydgard/ppsspp"
systems: [sony-psp]
firmware_required: false
firmware_detection: "none"
bios_directory: "N/A"
bios_selection: "N/A"
note: >
PPSSPP is a full HLE emulator - it does not require PSP firmware or BIOS files.
All PSP kernel modules (flash0:/kd/*.prx) are reimplemented in C++.
The emulator ships its own flash0/ directory with replacement fonts and assets.
default_firmware_version: 660 # PSP_DEFAULT_FIRMWARE in ConfigValues.h
source_ref_firmware: "Core/ConfigValues.h:40"
# Bundled assets (shipped with PPSSPP, not from Sony)
bundled_assets:
ppge_atlas:
files:
- {name: "ppge_atlas.zim", purpose: "UI texture atlas for dialogs, buttons, icons"}
- {name: "ppge_atlas.meta", purpose: "Atlas metadata (glyph positions, UV coords)"}
source_ref: "Core/Util/PPGeDraw.cpp:256-266"
note: >
PPGE (PlayStation Portable Graphics Engine) is PPSSPP's reimplementation of the
PSP system dialog renderer. The atlas contains button icons, dialog backgrounds,
and a basic font for system dialogs (save/load, network, etc).
Without ppge_atlas.zim, system dialogs render without graphics.
flash0_fonts:
path: "assets/flash0/font/"
source_ref: "Core/HLE/sceFont.cpp:88-106"
note: >
Replacement PGF font files shipped with PPSSPP. These are not the original Sony
fonts but open-source replacements that satisfy the sceFont API. Located in the
assets/flash0/font/ directory, mounted as flash0:/font/ at runtime.
files:
# Japanese
- {name: "jpn0.pgf", type: "FTT-NewRodin Pro DB", language: "Japanese", size: "standard"}
# Chinese
- {name: "zh_gb.pgf", type: "FTT-NewRodin Pro DB", language: "Chinese GB", note: "Also loaded from disc0: if present"}
# Korean
- {name: "kr0.pgf", type: "AsiaNHH(512Johab)", language: "Korean", size: "standard"}
# Latin - Standard size (0x288 height)
- {name: "ltn0.pgf", type: "FTT-NewRodin Pro Latin", style: "regular"}
- {name: "ltn1.pgf", type: "FTT-Matisse Pro Latin", style: "regular"}
- {name: "ltn2.pgf", type: "FTT-NewRodin Pro Latin", style: "italic"}
- {name: "ltn3.pgf", type: "FTT-Matisse Pro Latin", style: "italic"}
- {name: "ltn4.pgf", type: "FTT-NewRodin Pro Latin", style: "bold"}
- {name: "ltn5.pgf", type: "FTT-Matisse Pro Latin", style: "bold"}
- {name: "ltn6.pgf", type: "FTT-NewRodin Pro Latin", style: "bold_italic"}
- {name: "ltn7.pgf", type: "FTT-Matisse Pro Latin", style: "bold_italic"}
# Latin - Small size (0x1c0 height)
- {name: "ltn8.pgf", type: "FTT-NewRodin Pro Latin", style: "regular", size: "small"}
- {name: "ltn9.pgf", type: "FTT-Matisse Pro Latin", style: "regular", size: "small"}
- {name: "ltn10.pgf", type: "FTT-NewRodin Pro Latin", style: "italic", size: "small"}
- {name: "ltn11.pgf", type: "FTT-Matisse Pro Latin", style: "italic", size: "small"}
- {name: "ltn12.pgf", type: "FTT-NewRodin Pro Latin", style: "bold", size: "small"}
- {name: "ltn13.pgf", type: "FTT-Matisse Pro Latin", style: "bold", size: "small"}
- {name: "ltn14.pgf", type: "FTT-NewRodin Pro Latin", style: "bold_italic", size: "small"}
- {name: "ltn15.pgf", type: "FTT-Matisse Pro Latin", style: "bold_italic", size: "small"}
# HLE kernel modules (reimplemented, not loaded from firmware)
hle_modules:
source_ref: "Core/HLE/sceKernelModule.cpp:100-113"
note: >
When a PSP game tries to load these flash0:/kd/*.prx modules, PPSSPP intercepts
the load call and activates its built-in HLE implementation instead. No actual
PRX files are loaded from disk.
flash0_kd:
- {prx: "audiocodec.prx", hle: "sceAudiocodec_Driver"}
- {prx: "audiocodec_260.prx", hle: "sceAudiocodec_Driver"}
- {prx: "libatrac3plus.prx", hle: "sceATRAC3plus_Library"}
- {prx: "ifhandle.prx", hle: "sceNet_Service"}
- {prx: "pspnet.prx", hle: "sceNet_Library"}
- {prx: "pspnet_inet.prx", hle: "sceNetInet_Library"}
- {prx: "pspnet_apctl.prx", hle: "sceNetApctl_Library"}
- {prx: "pspnet_resolver.prx", hle: "sceNetResolver_Library"}
- {prx: "pspnet_adhoc.prx", hle: "sceNetAdhoc_Library"}
- {prx: "pspnet_adhocctl.prx", hle: "sceNetAdhocctl_Library"}
- {prx: "pspnet_adhoc_matching.prx", hle: "sceNetAdhocMatching_Library"}
- {prx: "pspnet_adhoc_download.prx", hle: "sceNetAdhocDownload_Library"}
- {prx: "pspnet_adhoc_discover.prx", hle: "sceNetAdhocDiscover_Library"}
# Flash0 filesystem layout
flash0_layout:
source_ref: "Core/HLE/sceIo.cpp:87,654"
note: >
flash0: is the PSP system partition. PPSSPP maps it to g_Config.flash0Directory
which is typically assets/flash0/ bundled with the emulator. The filesystem is
mounted read-only with FLASH flag.
directories:
font: "PGF/BWFON font files (mounted as flash0:/font/)"
kd: "Kernel drivers/modules (intercepted by HLE, not actually loaded)"
vsh: "Visual Shell resources"
dic: "Dictionary files"
data: "System data files"
# Font override path
font_override:
path: "ms0:/PSP/flash0/font/"
source_ref: "Core/HLE/sceFont.cpp:881"
note: >
Users can override bundled fonts by placing real PSP PGF files at
ms0:/PSP/flash0/font/ (inside the memory stick directory). PPSSPP
checks this path before falling back to the bundled flash0:/font/.
# Registry defaults relevant to fonts
registry_defaults:
font_path: "flash0:/font"
default_jpn_font: "jpn0.pgf"
default_latin_font: "ltn0.pgf"
source_ref: "Core/HLE/sceReg.cpp:81-281"
notes: |
PPSSPP does NOT require any firmware files, BIOS, or system software from Sony.
It is a complete HLE (High Level Emulation) implementation of the PSP operating system.
All PSP kernel modules (flash0:/kd/*.prx) are reimplemented in C++ within PPSSPP.
When games attempt to load these modules via sceKernelLoadModule, PPSSPP intercepts
the call and activates its built-in HLE implementation.
The bundled flash0/font/*.pgf files are open-source replacements for the original
Sony PSP fonts. They satisfy the sceFont API but are not identical to real PSP fonts.
For pixel-perfect font rendering, users can place original PGF files in the
ms0:/PSP/flash0/font/ override directory.
The ppge_atlas.zim/meta files provide PPSSPP's system dialog rendering (save/load
dialogs, on-screen keyboard, etc). These are PPSSPP-specific assets, not Sony firmware.
PPSSPP also exists as a libretro core (ppsspp_libretro), which uses the same HLE
approach and bundled assets.

47
emulators/prboom.yml Normal file
View File

@@ -0,0 +1,47 @@
emulator: PrBoom
type: libretro
source: "https://github.com/libretro/libretro-prboom"
systems: [doom]
notes: |
PrBoom is a Doom source port based on MBF (Marine's Best Friend), itself
derived from Boom. The libretro port plays Doom, Doom II, Final Doom,
FreeDoom, and custom WADs/PWADs.
The core requires prboom.wad, a small engine data WAD containing internal
resources: font glyphs, palette, colormaps, sine/tangent tables, gamma
tables, menu graphics, and a null sprite (TNT1A0). It is NOT a game WAD.
The file is generated at build time by the rdatawad tool from raw PPM
graphics and LMP lumps (see Makefile.prboomdata), but ships pre-built
in the repository root.
Without prboom.wad the core falls back to hardcoded internal defaults
(d_main.c:1073-1074), so the file is technically optional but expected
for correct rendering of menus, HUD digits, and extended features.
File search order (libretro.c I_FindFile, line 1743):
1. WAD directory (same folder as the loaded game WAD)
2. system/prboom/ subdirectory
3. system/ directory directly
4. Parent folders of WAD directory (recursive, if enabled)
The core accepts .wad, .iwad, .pwad, and .lmp extensions. Game IWADs
it recognizes (d_main.c:133-145): doom2f.wad, doom2.wad, plutonia.wad,
tnt.wad, freedoom2.wad, doom.wad, doomu.wad, freedoom1.wad,
freedoom.wad, doom1.wad.
The src/ directory contains a second, larger prboom.wad (228743 bytes,
md5 23afd6143cb1ffec99a46755f9209ea6) which is the upstream PrBoom
original. The root copy (143312 bytes) is the libretro-specific build.
files:
- name: "prboom.wad"
system: doom
description: "PrBoom engine data WAD (fonts, palette, colormaps, tables, menu graphics)"
required: false
size: 143312
md5: "72ae1b47820fcc93cc0df9c428d0face"
sha1: "5f4aed208301449c2e9514edfd325fe9dead76fa"
crc32: "a5751b99"
source_ref: "d_main.c:1069-1078 (PACKAGE .wad load), libretro.c:1743-1780 (I_FindFile search), config.h:46 (PACKAGE=prboom)"
notes: "Searched in system/prboom/ then system/. Falls back to internal defaults if missing, but menus and HUD may render incorrectly without it."

55
emulators/prosystem.yml Normal file
View File

@@ -0,0 +1,55 @@
emulator: ProSystem
type: libretro
source: "https://github.com/libretro/prosystem-libretro"
cores:
- prosystem
systems:
- atari-7800
notes: |
ProSystem is an Atari 7800 emulator ported to libretro.
BIOS loading is in core/libretro.c:579-588. Region is read from the
cartridge header byte 57 (core/Cartridge.c:214) or overridden by the
internal database (core/Database.c). PAL carts get the (E) BIOS,
everything else gets (U).
Both BIOS files are optional. The core runs games without them, but
some titles may have compatibility issues without the real BIOS
(startup encryption check, etc). bios_Store() maps the BIOS data
into the top of the 64K address space (65536 - bios_size).
No core option controls BIOS loading -- if the file exists in the
system directory, it is loaded automatically.
files:
- name: "7800 BIOS (U).rom"
system: atari-7800
required: false
size: 4096 # 4 KB
note: "NTSC/US Atari 7800 BIOS. Loaded when cartridge_region != REGION_PAL."
source_ref: "core/libretro.c:585"
- name: "7800 BIOS (E).rom"
system: atari-7800
required: false
size: 16384 # 16 KB (PAL BIOS is larger than NTSC)
note: "PAL/EU Atari 7800 BIOS. Loaded when cartridge_region == REGION_PAL."
source_ref: "core/libretro.c:583"
platform_details:
bios_mapping:
target: "top of 64K memory (65536 - bios_size)"
source_ref: "core/Bios.c:88"
notes: |
bios_Store() writes the BIOS into ROM at address (65536 - bios_size).
The BIOS size is read dynamically from the file, not hardcoded.
bios_enabled flag is set only if bios_Load() succeeds (file found
and read without error).
region_detection:
source_ref: "core/Cartridge.c:214, core/Database.c"
notes: |
Region byte is at offset 57 in the A7800 cartridge header.
The internal database (Database.c) can override the header value.
REGION_NTSC = 0, REGION_PAL = 1 (defined in Region.h).

255
emulators/puae.yml Normal file
View File

@@ -0,0 +1,255 @@
emulator: PUAE (P-UAE)
type: libretro
cores: [puae, puae2021]
source: "https://github.com/libretro/libretro-uae"
systems:
- commodore-amiga
- commodore-amiga-cd32
- commodore-cdtv
notes: |
PUAE is a port of UAE (Unix Amiga Emulator) to libretro. It emulates the
Amiga 500, 500+, 600, 1200, 2000, 4000, CD32, and CDTV. Kickstart ROMs
are loaded from the RetroArch system directory.
AROS (open-source Kickstart replacement) is available as a built-in fallback
when no Kickstart ROM is found. Compatibility is limited compared to real ROMs.
The core scans the system directory for files starting with "kick", "amiga-os",
or "KS ROM". Each filename is matched against a table of known naming
conventions: standard (kick*.A*), Amiga Forever (amiga-os-*.rom), and
TOSEC (Kickstart v*.rom). The first valid match is used.
Default kickstart per model (automatic selection):
A500, A500OG, A2000OG, CDTV -> kick34005.A500 (KS 1.3)
A500+ -> kick37175.A500 (KS 2.04)
A600 -> kick40063.A600 (KS 3.1)
A1200, A1200OG -> kick40068.A1200 (KS 3.1)
A2000 -> kick40063.A600 (KS 3.1)
A4030, A4040 -> kick40068.A4000 (KS 3.1)
CD32, CD32FR -> kick40060.CD32 (KS 3.1)
CDTV (ext) -> kick34005.CDTV
CD32 (ext) -> kick40060.CD32.ext
Extended ROM handling: CD32 and CDTV require an extended ROM in addition
to the main kickstart. If the main ROM filesize is <= 512 KB, the extended
ROM is loaded separately. Combined ROMs (main + ext in one file) skip the
extended ROM search.
WHDLoad support copies kick33180.A500, kick34005.A500, kick40063.A600,
kick40068.A1200 into saves/WHDLoad/Devs/Kickstarts/ for use by WHDLoad
slave files.
ROM search order (libretro-core.c retro_config_kickstart):
1. Exact filename in system directory
2. Amiga Forever naming (amiga-os-*.rom)
3. TOSEC modified naming (with [!] suffix)
4. TOSEC naming (without [!] suffix)
capsimg.so/capsimg.dll is an optional shared library for IPF floppy image
support (SPS/CAPS format). Not a BIOS file, loaded dynamically at runtime.
Source: libretro/libretro-core.h:140-245, libretro/libretro-core.c:5610-5750,
libretro/libretro-core.c:6044-6093
files:
# -------------------------------------------------------
# Amiga 1000
# -------------------------------------------------------
- name: "kick31034.A1000"
system: commodore-amiga
required: false
size: 262144 # 256 KB
note: "Kickstart 1.1 rev 31.34 (1985) NTSC. A1000 only."
aliases:
- "amiga-os-110-ntsc.rom"
- "Kickstart v1.1 rev 31.34 (1985)(Commodore)(A1000)(NTSC).rom"
source_ref: "libretro/libretro-core.h:170-174"
- name: "kick32034.A1000"
system: commodore-amiga
required: false
size: 262144 # 256 KB
note: "Kickstart 1.1 rev 32.34 (1986) PAL. A1000 only."
aliases:
- "amiga-os-110-pal.rom"
- "Kickstart v1.1 rev 32.34 (1986)(Commodore)(A1000)(PAL).rom"
source_ref: "libretro/libretro-core.h:176-179"
# -------------------------------------------------------
# Amiga 500 / 2000
# -------------------------------------------------------
- name: "kick33180.A500"
system: commodore-amiga
required: false
size: 262144 # 256 KB
note: "Kickstart 1.2 rev 33.180 (1986). A500/A2000. Also used by WHDLoad."
aliases:
- "amiga-os-120.rom"
- "Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A2000)[!].rom"
- "Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A1000-A2000).rom"
source_ref: "libretro/libretro-core.h:182-185"
- name: "kick34005.A500"
system: commodore-amiga
required: true
size: 262144 # 256 KB
note: "Kickstart 1.3 rev 34.5 (1987). Default for A500/A2000OG/CDTV models. Also used by WHDLoad."
aliases:
- "amiga-os-130.rom"
- "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom"
- "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV).rom"
source_ref: "libretro/libretro-core.h:187-190"
- name: "kick37175.A500"
system: commodore-amiga
required: false
size: 262144 # 256 KB
note: "Kickstart 2.04 rev 37.175 (1991). Default for A500+ model."
aliases:
- "amiga-os-204.rom"
- "Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+)[!].rom"
- "Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom"
source_ref: "libretro/libretro-core.h:192-195"
# -------------------------------------------------------
# Amiga 600
# -------------------------------------------------------
- name: "kick37350.A600"
system: commodore-amiga
required: false
size: 262144 # 256 KB
note: "Kickstart 2.05 rev 37.350 (1992). A600HD."
aliases:
- "amiga-os-205-a600.rom"
- "Kickstart v2.05 rev 37.350 (1992)(Commodore)(A600HD)[!].rom"
source_ref: "libretro/libretro-core.h:198-201"
- name: "kick40063.A600"
system: commodore-amiga
required: false
size: 524288 # 512 KB
note: "Kickstart 3.1 rev 40.63 (1993). Default for A600/A2000 models. Also used by WHDLoad."
aliases:
- "amiga-os-310-a600.rom"
- "Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000)[!].rom"
- "Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000).rom"
source_ref: "libretro/libretro-core.h:203-206"
# -------------------------------------------------------
# Amiga 1200
# -------------------------------------------------------
- name: "kick39106.A1200"
system: commodore-amiga
required: false
size: 524288 # 512 KB
note: "Kickstart 3.0 rev 39.106 (1992). A1200."
aliases:
- "amiga-os-300-a1200.rom"
- "Kickstart v3.0 rev 39.106 (1992)(Commodore)(A1200)[!].rom"
source_ref: "libretro/libretro-core.h:209-212"
- name: "kick40068.A1200"
system: commodore-amiga
required: true
size: 524288 # 512 KB
note: "Kickstart 3.1 rev 40.68 (1993). Default for A1200/A1200OG models. Also used by WHDLoad."
aliases:
- "amiga-os-310-a1200.rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200)[!].rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200).rom"
source_ref: "libretro/libretro-core.h:214-217"
# -------------------------------------------------------
# Amiga 4000
# -------------------------------------------------------
- name: "kick39106.A4000"
system: commodore-amiga
required: false
size: 524288 # 512 KB
note: "Kickstart 3.0 rev 39.106 (1992). A4000."
aliases:
- "amiga-os-300-a4000.rom"
- "Kickstart v3.0 rev 39.106 (1992)(Commodore)(A4000)[!].rom"
source_ref: "libretro/libretro-core.h:220-223"
- name: "kick40068.A4000"
system: commodore-amiga
required: false
size: 524288 # 512 KB
note: "Kickstart 3.1 rev 40.68 (1993). Default for A4030/A4040 models."
aliases:
- "amiga-os-310-a4000.rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A4000).rom"
source_ref: "libretro/libretro-core.h:225-228"
# -------------------------------------------------------
# Commodore CDTV
# -------------------------------------------------------
- name: "kick34005.CDTV"
system: commodore-cdtv
required: true
size: 262144 # 256 KB
note: "CDTV Extended ROM v1.0 (1991). Required as extended ROM for CDTV model. Main kickstart is kick34005.A500."
aliases:
- "amiga-os-130-cdtv-ext.rom"
- "CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom"
- "CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom"
source_ref: "libretro/libretro-core.h:231-234"
# -------------------------------------------------------
# Amiga CD32
# -------------------------------------------------------
- name: "kick40060.CD32"
system: commodore-amiga-cd32
required: true
size: 524288 # 512 KB
note: "CD32 Kickstart 3.1 rev 40.60 (1993). Main ROM for CD32 and CD32FR models."
aliases:
- "amiga-os-310-cd32.rom"
- "Kickstart v3.1 rev 40.60 (1993)(Commodore)(CD32).rom"
source_ref: "libretro/libretro-core.h:236-239"
- name: "kick40060.CD32.ext"
system: commodore-amiga-cd32
required: true
size: 524288 # 512 KB
note: "CD32 Extended ROM rev 40.60 (1993). Required when main ROM is <= 512 KB (not combined)."
aliases:
- "amiga-os-310-cd32-ext.rom"
- "CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom"
source_ref: "libretro/libretro-core.h:241-244"
model_kickstart_map:
A500: {kickstart: "kick34005.A500", ext: null}
A500OG: {kickstart: "kick34005.A500", ext: null}
A500PLUS: {kickstart: "kick37175.A500", ext: null}
A600: {kickstart: "kick40063.A600", ext: null}
A1200: {kickstart: "kick40068.A1200", ext: null}
A1200OG: {kickstart: "kick40068.A1200", ext: null}
A2000: {kickstart: "kick40063.A600", ext: null}
A2000OG: {kickstart: "kick34005.A500", ext: null}
A4030: {kickstart: "kick40068.A4000", ext: null}
A4040: {kickstart: "kick40068.A4000", ext: null}
CDTV: {kickstart: "kick34005.A500", ext: "kick34005.CDTV"}
CD32: {kickstart: "kick40060.CD32", ext: "kick40060.CD32.ext"}
CD32FR: {kickstart: "kick40060.CD32", ext: "kick40060.CD32.ext"}
whdload_kickstarts:
- "kick33180.A500" # KS 1.2, 256 KB
- "kick34005.A500" # KS 1.3, 256 KB
- "kick40063.A600" # KS 3.1, 512 KB
- "kick40068.A1200" # KS 3.1, 512 KB
platform_details:
rom_sizes:
ROM_SIZE_128: 131072 # 128 KB
ROM_SIZE_256: 262144 # 256 KB
ROM_SIZE_512: 524288 # 512 KB
aros_fallback: true
naming_conventions:
standard: "kick{rev}.{model}"
amiga_forever: "amiga-os-{version}.rom"
tosec: "Kickstart v{version} rev {rev} ({year})(Commodore)({model}).rom"
scan_prefixes: ["kick", "amiga-os", "KS ROM"]
source_ref: "libretro/libretro-core.c:2649-2676"

110
emulators/px68k.yml Normal file
View File

@@ -0,0 +1,110 @@
emulator: px68k
type: libretro
source: "https://github.com/libretro/px68k-libretro"
cores:
- px68k
systems:
- sharp-x68000
# PX68K is a Sharp X68000 emulator (originally Keropi) ported to libretro.
# All ROM files are loaded from <system_dir>/keropi/ subdirectory.
#
# ROM loading (libretro.c:848-893 WinX68k_LoadROMs):
# 1. Base path set to <system_dir>/keropi/ via file_setcd(winx68k_dir) at line 969
# 2. IPL ROM: iterates BIOSFILE[] = {iplrom.dat, iplrom30.dat, iplromco.dat, iplromxv.dat}
# and opens the first file found. Reads 0x20000 bytes (128 KB) into IPL buffer.
# Returns 0 (failure) if none found -- core will not start.
# 3. SCSI check (WinX68k_SCSICheck): if IPL contains SCSI vectors at offset 0x30600-0x30c00,
# patches a fake SCSI BIOS stub at $fc0000 with "Human68k" signature.
# 4. Byte-swaps IPL in 16-bit pairs (big-endian ROM on little-endian host).
# 5. Font ROM: opens cgrom.dat, falls back to cgrom.tmp if not found.
# Reads 0xc0000 bytes (768 KB) into FONT buffer. Returns 0 if neither exists.
#
# SRAM (x68k/sram.c:50-73):
# sram.dat is 16 KB of battery-backed SRAM, loaded on init and saved on cleanup.
# Not a BIOS -- runtime state. Created automatically if missing.
#
# Directory layout expected:
# <system_dir>/keropi/iplrom.dat (or iplrom30.dat, iplromco.dat, iplromxv.dat)
# <system_dir>/keropi/cgrom.dat (or cgrom.tmp)
# <system_dir>/keropi/sram.dat (auto-created)
# <system_dir>/keropi/config (auto-created, core settings)
files:
# IPL ROM -- the main system BIOS. The core tries four filenames in order and
# uses the first one found. Only one is needed. iplrom.dat is the original X68000,
# iplrom30.dat is X68030, iplromco.dat is X68000 Compact, iplromxv.dat is X68000 XVI.
- name: "iplrom.dat"
path: "keropi/iplrom.dat"
size: 131072
required: true
note: >
X68000 IPL ROM (original model). 128 KB, loaded at IPL buffer offset 0x20000.
The core tries iplrom.dat first, then iplrom30.dat, iplromco.dat, iplromxv.dat
in order. At least one must be present or the core fails to start.
source_ref: "libretro.c:850-867"
- name: "iplrom30.dat"
path: "keropi/iplrom30.dat"
size: 131072
required: false
note: >
X68030 IPL ROM. Alternative to iplrom.dat for X68030 model emulation.
Only used if iplrom.dat is not found.
source_ref: "libretro.c:851"
- name: "iplromco.dat"
path: "keropi/iplromco.dat"
size: 131072
required: false
note: >
X68000 Compact IPL ROM. Alternative to iplrom.dat.
Only used if iplrom.dat and iplrom30.dat are not found.
source_ref: "libretro.c:851"
- name: "iplromxv.dat"
path: "keropi/iplromxv.dat"
size: 131072
required: false
note: >
X68000 XVI IPL ROM. Last fallback in the IPL search order.
Only used if the three other IPL variants are not found.
source_ref: "libretro.c:851"
# Font ROM -- character generator ROM for text rendering.
- name: "cgrom.dat"
path: "keropi/cgrom.dat"
size: 786432
required: true
note: >
X68000 character generator ROM. 768 KB, provides the font glyphs for text
display. If missing, the core falls back to cgrom.tmp (user-generated font
cache). Core fails to start if neither file exists.
source_ref: "libretro.c:853, libretro.c:881-891"
- name: "cgrom.tmp"
path: "keropi/cgrom.tmp"
size: 786432
required: false
note: >
Alternative font file, used as fallback when cgrom.dat is absent.
Typically a font cache generated by the emulator itself on other platforms.
source_ref: "libretro.c:854, libretro.c:884-888"
notes:
subdirectory: >
All files must be placed in <system_dir>/keropi/ subdirectory. The core sets
this path at init via sprintf(retro_system_conf, "%s/keropi", system_dir) and
then calls file_setcd() to make it the base for all file_open_c() calls.
ipl_selection: >
The four IPL ROM variants correspond to different X68000 hardware revisions.
The core uses whichever it finds first in order: iplrom.dat (original X68000),
iplrom30.dat (X68030), iplromco.dat (Compact), iplromxv.dat (XVI). Most users
only need iplrom.dat. The IPL also determines SASI vs SCSI disk support based
on vectors found at offsets 0x30600-0x30c00.
sram: >
sram.dat (16 KB) is read/write runtime state, not a BIOS file. The core creates
it automatically on first shutdown. It stores X68000 NVRAM settings (boot count,
boot device preferences, SRAM-resident programs).

155
emulators/quasi88.yml Normal file
View File

@@ -0,0 +1,155 @@
emulator: QUASI88
type: libretro
source: "https://github.com/libretro/quasi88-libretro"
cores:
- quasi88
systems:
- pc-8801
# QUASI88 is a NEC PC-8801 emulator. The libretro port includes a pseudo-BIOS
# (pbios_n88, pbios_disk) compiled into the core that provides basic compatibility
# when real BIOS files are missing. With the pseudo-BIOS, many disk-based games
# will boot, but compatibility is lower than with real ROMs.
#
# ROM file search order (libretro.c:444-491):
# 1. <download_dir>/<filename>
# 2. <system_dir>/quasi88/<filename>
# 3. <system_dir>/<filename>
# Each ROM entry has up to 4 alternate filenames tried in order.
#
# ROM loading (libretro.c:550-594):
# N88.ROM and DISK.ROM (SUB_ROM) are the only two checked for failure.
# If missing, the core falls back to the built-in pseudo-BIOS.
# All other ROMs are loaded silently if present, ignored if absent.
#
# The original QUASI88 (memory.c:80-95) uses uppercase-first filenames
# (N88.ROM, N88EXT0.ROM, etc.) while the libretro .info file standardizes
# on lowercase with underscore variants (n88.rom, n88_0.rom, etc.).
# The core tries both naming conventions.
#
# FONT.ROM/FONT2.ROM/FONT3.ROM are not listed in the .info file.
# When missing, the core uses built-in fonts or falls back to kanji ROM glyphs.
notes: |
Files go in <system_dir>/quasi88/ or directly in <system_dir>/.
The pseudo-BIOS built into the core covers N88-BASIC V2 and the disk
subsystem at a basic level. For full compatibility (N-BASIC, V1H/V1S modes,
dictionary lookup, kanji display), real ROM files are needed.
N88_0.ROM (EXT0) is marked required in the .info file because it contains
the N88-BASIC V2 extension used by most software. EXT1-EXT3 are version-
specific extensions (V1H, V1S, older V2) needed only for specific titles.
The core option "quasi88_basic_mode" selects N88 V2, N88 V1H, N88 V1S,
or N mode. Each mode requires its corresponding ROM to be present.
files:
# -- Required for full operation --
- name: n88.rom
path: "quasi88/n88.rom"
size: 32768
required: true
note: "N88-BASIC main ROM (32 KB). Core falls back to pseudo-BIOS if missing."
source_ref: "src/LIBRETRO/libretro.c:550"
aliases: ["N88.ROM"]
- name: n88_0.rom
path: "quasi88/n88_0.rom"
size: 8192
required: true
note: "N88-BASIC V2 extension ROM 0 (8 KB). Needed for most PC-8801 software."
source_ref: "src/LIBRETRO/libretro.c:555"
aliases: ["N88_0.ROM", "N88EXT0.ROM", "n88ext0.rom"]
# -- Optional extensions --
- name: n88_1.rom
path: "quasi88/n88_1.rom"
size: 8192
required: false
note: "N88-BASIC V1H extension ROM 1 (8 KB). For V1 High-speed mode software."
source_ref: "src/LIBRETRO/libretro.c:556"
aliases: ["N88_1.ROM", "N88EXT1.ROM", "n88ext1.rom"]
- name: n88_2.rom
path: "quasi88/n88_2.rom"
size: 8192
required: false
note: "N88-BASIC V1S extension ROM 2 (8 KB). For V1 Standard mode software."
source_ref: "src/LIBRETRO/libretro.c:557"
aliases: ["N88_2.ROM", "N88EXT2.ROM", "n88ext2.rom"]
- name: n88_3.rom
path: "quasi88/n88_3.rom"
size: 8192
required: false
note: "N88-BASIC extension ROM 3 (8 KB). Older V2 extension, rarely needed."
source_ref: "src/LIBRETRO/libretro.c:558"
aliases: ["N88_3.ROM", "N88EXT3.ROM", "n88ext3.rom"]
- name: n88n.rom
path: "quasi88/n88n.rom"
size: 32768
required: false
note: "N-BASIC ROM (32 KB). For PC-8001 compatible N-BASIC mode."
source_ref: "src/LIBRETRO/libretro.c:559"
aliases: ["N88N.ROM", "N80.ROM", "n80.rom"]
- name: disk.rom
path: "quasi88/disk.rom"
size: 2048
required: false
note: "Disk subsystem ROM (2 KB, 2D type). Core falls back to pseudo-BIOS if missing. 8 KB variant (2HD type) also accepted."
source_ref: "src/LIBRETRO/libretro.c:552"
aliases: ["DISK.ROM", "N88SUB.ROM", "n88sub.rom"]
- name: n88knj1.rom
path: "quasi88/n88knj1.rom"
size: 131072
required: false
note: "Kanji ROM level 1 (128 KB). Required for Japanese text display. Also used as font fallback."
source_ref: "src/LIBRETRO/libretro.c:560"
aliases: ["N88KNJ1.ROM", "KANJI1.ROM", "kanji1.rom"]
- name: n88knj2.rom
path: "quasi88/n88knj2.rom"
size: 131072
required: false
note: "Kanji ROM level 2 (128 KB). Extended kanji character set."
source_ref: "src/LIBRETRO/libretro.c:561"
aliases: ["N88KNJ2.ROM", "KANJI2.ROM", "kanji2.rom"]
- name: n88jisho.rom
path: "quasi88/n88jisho.rom"
size: 524288
required: false
note: "Dictionary ROM (512 KB). Japanese dictionary lookup, very few titles use it."
source_ref: "src/LIBRETRO/libretro.c:562"
aliases: ["N88JISHO.ROM", "JISYO.ROM", "jisyo.rom"]
# -- Font ROMs (not in .info, core has built-in fallback) --
- name: font.rom
path: "quasi88/font.rom"
size: 4096
required: false
note: "ANK font ROM (4 KB). Falls back to built-in font or kanji ROM glyphs."
source_ref: "src/LIBRETRO/libretro.c:566"
aliases: ["FONT.ROM"]
- name: font2.rom
path: "quasi88/font2.rom"
size: 4096
required: false
note: "Second font ROM (4 KB). Falls back to built-in ANH font."
source_ref: "src/LIBRETRO/libretro.c:576"
aliases: ["FONT2.ROM"]
- name: font3.rom
path: "quasi88/font3.rom"
size: 4096
required: false
note: "Third font ROM (4 KB). Zeroed out if missing."
source_ref: "src/LIBRETRO/libretro.c:588"
aliases: ["FONT3.ROM"]

57
emulators/retrodream.yml Normal file
View File

@@ -0,0 +1,57 @@
emulator: RetroDream
type: libretro
source: "https://github.com/libretro/redream-next"
systems:
- sega-dreamcast
notes: |
Fork of the final open-source redream release (pre-relicense). Experimental
core with no HLE BIOS -- real BIOS files are required to boot games.
Flycast is recommended over this core for actual gameplay.
The libretro core sets appdir to the RetroArch system directory
(src/host/retro_host.c:216-217). boot.bin and flash.bin are loaded
directly from appdir (src/guest/rom/boot.c:17, src/guest/rom/flash.c:30).
The .info file declares paths as dc/boot.bin and dc/flash.bin, which means
RetroArch resolves them under {system_dir}/dc/.
boot.bin is validated against four known MD5 hashes at load time
(src/guest/rom/boot.c:25-30). If validation fails, the core logs a warning
but still attempts to run via HLE syscall hooks (bios.c:440-447).
flash.bin is read/write -- the core saves modified flash data back to disk
on shutdown (src/guest/rom/flash.c:197-199).
Boot ROM size: 2 MB (0x200000). Flash ROM size: 128 KB (0x20000).
files:
- name: "boot.bin"
system: sega-dreamcast
path: "dc/boot.bin"
required: true
size: 2097152 # 2 MB (0x200000)
md5:
- e10c53c2f8b90bab96ead2d368858623 # original US/EU BIOS
- a5c6a00818f97c5e3e91569ee22416dc # Chinese BIOS
- 37c921eb47532cae8fb70e5d987ce91c # Japanese BIOS
- f2cd29d09f3e29984bcea22ab2e006fe # revised BIOS without MIL-CD
note: "Dreamcast boot ROM. Validated against known MD5 hashes at load."
source_ref: "src/guest/rom/boot.c:12-80"
- name: "flash.bin"
system: sega-dreamcast
path: "dc/flash.bin"
required: true
size: 131072 # 128 KB (0x20000)
md5:
- 0a93f7940c455905bea6e392dfde92a4
note: "Dreamcast flash memory (date, time, language). Written back on shutdown."
source_ref: "src/guest/rom/flash.c:25-35"
platform_details:
dreamcast:
bios_size: 2097152 # 2 MB
flash_size: 131072 # 128 KB
hle_available: false
source_ref: "src/guest/rom/boot.c, src/guest/rom/flash.c"

318
emulators/rpcs3.yml Normal file
View File

@@ -0,0 +1,318 @@
# RPCS3 emulator firmware profile
# Generated from source analysis of https://github.com/RPCS3/rpcs3
# Commit analyzed: HEAD as of 2026-03-17
emulator: RPCS3
type: standalone
source: "https://github.com/RPCS3/rpcs3"
systems: [sony-playstation-3]
firmware_file: "PS3UPDAT.PUP"
firmware_source: "https://www.playstation.com/en-us/support/hardware/ps3/system-software/"
firmware_detection: "pup_header" # validates PUP magic bytes, HMAC-SHA1 hash per entry
firmware_install: "extracts dev_flash_* TAR packages from PUP into dev_flash/"
validation:
method: "pup_object"
magic: "SCEUF"
hash_algo: "HMAC-SHA1"
source_ref: "rpcs3/Loader/PUP.cpp:8-114"
note: "PUP file is validated by magic header, file count, HMAC-SHA1 per entry against PUP_KEY"
firmware_version:
path: "dev_flash/vsh/etc/version.txt"
source_ref: "rpcs3/util/sysinfo.cpp:686"
note: "Read at startup, displayed as 'Firmware version: X.XX'. Missing = 'Missing Firmware'"
# dev_flash filesystem layout extracted from PUP
dev_flash:
# -- sys/external/ : LLE firmware SPRX modules --
sys_external:
path: "dev_flash/sys/external/"
source_ref: "rpcs3/Emu/Cell/PPUModule.cpp:2579"
note: >
Primary firmware module directory. Contains decrypted .sprx modules loaded by
liblv2.sprx at boot. RPCS3 can run these via LLE (low-level emulation) or fall
back to HLE (high-level emulation) per module. liblv2.sprx is the kernel loader.
critical_file: "liblv2.sprx"
modules:
# Core system
- "liblv2.sprx" # LV2 kernel, loads all other modules
- "libsysmodule.sprx" # Module loader
- "libfs_utility_init.sprx" # FS init (sys/internal)
# Audio/Video codecs
- "libadec.sprx" # Audio decoder
- "libatrac3plus.sprx" # ATRAC3+ codec
- "libcelp8dec.sprx" # CELP-8 decoder
- "libcelpdec.sprx" # CELP decoder
- "libcelpenc.sprx" # CELP encoder
- "libddpdec.sprx" # Dolby Digital Plus
- "libdtslbrdec.sprx" # DTS-LBR decoder
- "libdtsdec.sprx" # DTS decoder
- "libdtshdcoredec.sprx" # DTS-HD Core decoder
- "libdtshddec.sprx" # DTS-HD decoder
- "libm2aac.sprx" # MPEG-2 AAC
- "libm2bc.sprx" # MPEG-2 BC
- "libm4aac.sprx" # MPEG-4 AAC
- "libm4aac2ch.sprx" # MPEG-4 AAC 2ch
- "libm4aac2chmod.sprx" # MPEG-4 AAC 2ch mod
- "libmp3dec.sprx" # MP3 decoder
- "libmp3sdec.sprx" # MP3 streaming decoder
- "libmpl1dec.sprx" # MPEG Layer 1
- "libtrhddec.sprx" # TRHD decoder
- "libwmadec.sprx" # WMA decoder
- "libwmaprodec.sprx" # WMA Pro decoder
- "libwmalslbrdec.sprx" # WMA Lossless LBR
- "libac3dec.sprx" # AC3 decoder
- "libvdec.sprx" # Video decoder
- "libdmux.sprx" # Demuxer
- "libdmuxpamf.sprx" # PAMF demuxer
- "libpamf.sprx" # PAMF container
- "libvpost.sprx" # Video post-processing
- "libsail.sprx" # Media framework
- "libsailrec.sprx" # Media recording
# Graphics
- "libgcm_sys.sprx" # GCM (RSX graphics)
- "libresc.sprx" # Resolution scaler
# Input/Peripherals
- "libio.sprx" # I/O system
- "libcamera.sprx" # Camera
- "libgem.sprx" # PS Move
- "libmic.sprx" # Microphone
- "libusbpspcm.sprx" # USB PSP communication
- "libusbd.sprx" # USB driver
# Networking
- "libnetctl.sprx" # Network control
- "librudp.sprx" # Reliable UDP
- "libssl.sprx" # SSL/TLS
- "libhttp.sprx" # HTTP
- "libhttps.sprx" # HTTPS
- "libhttputil.sprx" # HTTP utilities
- "libsysnet.sprx" # System networking
# System utilities
- "libsysutil.sprx" # System utilities
- "libsysutil_ap.sprx" # Access point
- "libsysutil_avc2.sprx" # AV chat
- "libsysutil_avc_ext.sprx"
- "libsysutil_np_eula.sprx" # NP EULA
- "libaudio.sprx" # Audio system
- "libvoice.sprx" # Voice chat
- "libavconfext.sprx" # AV config
- "libsavedata.sprx" # Save data
- "libgame.sprx" # Game utilities
- "libgameexec.sprx" # Game exec
- "libuserinfo.sprx" # User info
- "libosklialog.sprx" # On-screen keyboard
- "libsysconf.sprx" # System configuration
# Image codecs
- "libgifdec.sprx" # GIF decoder
- "libjpgdec.sprx" # JPEG decoder
- "libjpgenc.sprx" # JPEG encoder
- "libpngdec.sprx" # PNG decoder
- "libpngenc.sprx" # PNG encoder
# NP (PlayStation Network)
- "libsceNp.sprx" # NP base
- "libsceNp2.sprx" # NP v2
- "libsceNpBasicLimited.sprx"
- "libsceNpClans.sprx"
- "libsceNpCommerce2.sprx"
- "libsceNpMatchingInt.sprx"
- "libsceNpPlus.sprx"
- "libsceNpSns.sprx"
- "libsceNpTrophy.sprx"
- "libsceNpTus.sprx"
- "libsceNpUtil.sprx"
# Misc
- "libfont.sprx" # Font engine
- "libfontFT.sprx" # FreeType fonts
- "libfreetype2.sprx" # FreeType2 library
- "librtc.sprx" # Real-time clock
- "librtcalarm.sprx" # RTC alarm
- "libl10n.sprx" # Localization
- "libkey2char.sprx" # Key-to-char mapping
- "libimejp.sprx" # Japanese IME
- "libcrosscontroller.sprx" # Cross controller
- "libfiber.sprx" # Fiber (coroutines)
- "libspurs_jq.sprx" # SPURS job queue
- "libspudll.sprx" # SPU DLL
- "libmixer.sprx" # Audio mixer
- "libsnd3.sprx" # Sound 3
- "libsynth2.sprx" # Synthesizer
- "libovis.sprx" # OVis
- "libprint.sprx" # Print
- "librec.sprx" # Recording
- "libremoteplay.sprx" # Remote play
- "libscreenshot.sprx" # Screenshot
- "libsearch.sprx" # Content search
- "libmusic.sprx" # Music player
- "libmusicdecode.sprx" # Music decode
- "libmusicexport.sprx" # Music export
- "libphoto.sprx" # Photo decode
- "libphotoexport.sprx" # Photo export
- "libphotoimportutil.sprx"
- "libvideo.sprx" # Video export
- "libvideoplayer.sprx" # Video player
- "libvideoupload.sprx" # Video upload
- "libnetaoi.sprx" # NetAoI
- "libpesmutility.sprx" # PESM utility
- "libbgdl.sprx" # Background download
- "libsubdisplay.sprx" # Sub display
- "libdtcpiputility.sprx" # DTCP-IP utility
- "libsheap.sprx" # Simple heap
- "libsync2.sprx" # Sync 2
- "libminisSavedata.sprx" # Minis save data
- "libauthdialogutility.sprx" # Auth dialog
- "libcrashdump.sprx" # Crash dump
- "liblv2dbg.sprx" # LV2 debug
# -- sys/internal/ : Internal system modules --
sys_internal:
path: "dev_flash/sys/internal/"
source_ref: "rpcs3/Emu/Cell/lv2/sys_prx.cpp:33"
note: "Internal system modules, e.g. libfs_utility_init.sprx"
# -- vsh/ : Visual Shell (XMB) --
vsh:
path: "dev_flash/vsh/"
source_ref: "rpcs3/rpcs3qt/main_window.cpp:272,734"
note: "PS3 XMB interface. vsh.self is the main executable, booted via 'Boot VSH' menu."
files:
- path: "vsh/module/vsh.self"
purpose: "XMB main executable"
required_for: "Boot VSH / XrossMediaBar"
- path: "vsh/etc/version.txt"
purpose: "Firmware version string"
- path: "vsh/module/eseibrd.sprx"
purpose: "System module (precompiled at boot)"
- path: "vsh/module/msmw2.sprx"
purpose: "Media streaming"
- path: "vsh/resource/explore/user/*.png"
purpose: "User avatar icons (000.png - 025.png)"
- path: "vsh/resource/explore/icon/icon_home.png"
purpose: "Home icon for game list"
# -- data/font/ : System fonts --
fonts:
path: "dev_flash/data/font/"
source_ref: "rpcs3/Emu/Cell/Modules/cellFont.cpp:226-281"
note: >
PS3 system fonts used by cellFont API. Loaded from dev_flash/data/font/
and dev_flash/data/font/SONY-CC/ subdirectory. Games using cellFont will
fail to render text without these.
files:
# Rodin Sans Serif
- {name: "SCE-PS3-RD-R-LATIN.TTF", type: "Rodin Sans Serif Regular Latin", required: true}
- {name: "SCE-PS3-RD-L-LATIN.TTF", type: "Rodin Sans Serif Light Latin"}
- {name: "SCE-PS3-RD-B-LATIN.TTF", type: "Rodin Sans Serif Bold Latin"}
- {name: "SCE-PS3-RD-R-LATIN2.TTF", type: "Rodin Sans Serif Regular Latin2"}
- {name: "SCE-PS3-RD-L-LATIN2.TTF", type: "Rodin Sans Serif Light Latin2"}
- {name: "SCE-PS3-RD-B-LATIN2.TTF", type: "Rodin Sans Serif Bold Latin2"}
# Matisse Serif
- {name: "SCE-PS3-MT-R-LATIN.TTF", type: "Matisse Serif Regular Latin"}
# NewRodin Gothic (Japanese)
- {name: "SCE-PS3-NR-R-JPN.TTF", type: "NewRodin Gothic Regular Japanese"}
- {name: "SCE-PS3-NR-L-JPN.TTF", type: "NewRodin Gothic Light Japanese"}
- {name: "SCE-PS3-NR-B-JPN.TTF", type: "NewRodin Gothic Bold Japanese"}
# YD Gothic (Korean)
- {name: "SCE-PS3-YG-R-KOR.TTF", type: "YD Gothic Regular Korean"}
# Seurat Maru Gothic
- {name: "SCE-PS3-SR-R-LATIN.TTF", type: "Seurat Maru Gothic Regular Latin"}
- {name: "SCE-PS3-SR-R-LATIN2.TTF", type: "Seurat Maru Gothic Regular Latin2"}
- {name: "SCE-PS3-SR-R-JPN.TTF", type: "Seurat Maru Gothic Regular Japanese"}
# VAGR Sans Serif Round
- {name: "SCE-PS3-VR-R-LATIN.TTF", type: "VAGR Sans Serif Round Latin"}
- {name: "SCE-PS3-VR-R-LATIN2.TTF", type: "VAGR Sans Serif Round Latin2"}
# Chinese (in SONY-CC subdirectory)
- {name: "SCE-PS3-DH-R-CGB.TTF", type: "Chinese GB font", subdir: "SONY-CC/"}
# -- data/cert/ : SSL certificates --
certs:
path: "dev_flash/data/cert/"
source_ref: "rpcs3/Emu/Cell/Modules/cellSsl.cpp:110"
note: "SSL root certificates for PSN and HTTPS connections"
# -- ps1emu/ : PS1 backward compatibility --
ps1emu:
path: "dev_flash/ps1emu/"
source_ref: "rpcs3/Emu/System.cpp:1954"
note: "PS1 Classics emulator. Booted when running PS1 game via ps1_newemu.self"
files:
- {name: "ps1_newemu.self", purpose: "PS1 emulator binary"}
# -- ps2emu/ : PS2 backward compatibility --
ps2emu:
path: "dev_flash/ps2emu/"
source_ref: "rpcs3/Crypto/key_vault.h:219"
note: >
PS2 emulator components. Only present on fat PS3 models (CECHA/B/C/E).
Includes me_iso_for_ps2emu.self and sv_iso_for_ps2emu.self (since FW 3.70).
# -- pspemu/ : PSP backward compatibility --
pspemu:
path: "dev_flash/pspemu/"
source_ref: "rpcs3/Emu/System.cpp:1982, rpcs3/Crypto/key_vault.h:285-290"
note: "PSP emulator for PS3. Contains psp_emulator.self, psp_translator.self, and release/*.sprx"
files:
- {name: "psp_emulator.self", purpose: "PSP emulator main binary"}
- {name: "psp_translator.self", purpose: "PSP translator"}
- {name: "release/emulator_api.sprx", purpose: "Emulator API"}
- {name: "release/emulator_drm.sprx", purpose: "DRM handling"}
# -- bdplayer/ : Blu-ray player --
bdplayer:
path: "dev_flash/bdplayer/"
source_ref: "rpcs3/Crypto/key_vault.h:257-258"
note: "Blu-ray disc player modules"
files:
- {name: "bdp_bdmv.self", purpose: "BD-MV player"}
- {name: "bdj.self", purpose: "BD-J (Java) player"}
# Additional flash partitions
dev_flash2:
path: "dev_flash2/"
filesystem: "CELL_FS_FAT"
device: "CELL_FS_IOS:BUILTIN_FLSH2"
source_ref: "rpcs3/Emu/Cell/lv2/sys_fs.cpp:29"
note: "Second flash partition, used for additional system data"
dev_flash3:
path: "dev_flash3/"
filesystem: "CELL_FS_FAT"
device: "CELL_FS_IOS:BUILTIN_FLSH3"
source_ref: "rpcs3/Emu/Cell/lv2/sys_fs.cpp:28"
note: "Third flash partition"
notes: |
RPCS3 requires the official PS3 firmware (PS3UPDAT.PUP) from Sony. The PUP file is
a signed update package containing multiple TAR archives prefixed with "dev_flash_".
During installation, RPCS3 extracts these TARs into the dev_flash/ directory structure.
The most critical component is dev_flash/sys/external/liblv2.sprx - without it, no
PS3 game can boot. RPCS3 checks for its presence and shows a firmware install prompt
if missing.
Most sys/external modules can run in either LLE (real firmware code) or HLE (RPCS3
reimplementation) mode. By default, liblv2.sprx loads libsysmodule.sprx which chains
all other modules. Users can toggle individual modules between LLE/HLE.
The dev_flash/ structure mirrors the real PS3 NAND layout:
- sys/external/ : Loadable firmware PRX modules
- sys/internal/ : Internal system modules
- vsh/ : Visual Shell (XMB interface)
- data/font/ : System TTF fonts (16+ files)
- data/cert/ : SSL certificates
- ps1emu/ : PS1 backward compat emulator
- ps2emu/ : PS2 backward compat emulator (fat models only)
- pspemu/ : PSP emulator
- bdplayer/ : Blu-ray disc player
Firmware versions follow the X.XX format (e.g. 4.90). RPCS3 reads the version from
dev_flash/vsh/etc/version.txt at startup.

232
emulators/same_cdi.yml Normal file
View File

@@ -0,0 +1,232 @@
emulator: SAME CDi
type: libretro
cores: [same_cdi, cdi2015]
source: "https://github.com/libretro/same_cdi"
systems:
- cdi
notes: |
SAME CDi is a Single Arcade Machine Emulator fork of MAME libretro, stripped
down to just the Philips CD-i driver. The core hardcodes "cdimono1" as the
forced system (retro_init.cpp:86) and searches for MAME ROM ZIPs in:
<system_dir>/same_cdi/bios/
The ROM path (-rp) is built at retro_init.cpp:534 as:
<game_path>;<system_dir>/same_cdi/bios/
MAME expects each romset as a ZIP containing the individual ROM files listed
below. The ZIP filenames (cdimono1.zip, cdimono2.zip, cdibios.zip) match
the MAME driver names. Only cdimono1.zip is required for consumer CD-i games;
cdimono2.zip and cdibios.zip are optional (Mono-II and Quizard arcade).
cdi2015 is an older MAME 2015-based CD-i core with the same BIOS layout.
ROM definitions: src/mame/drivers/cdi.cpp lines 574-650.
System forced: src/osd/libretro/libretro-internal/retro_init.cpp:86.
BIOS path: src/osd/libretro/libretro-internal/retro_init.cpp:534.
Firmware list: same_cdi_libretro.info firmware0-2.
files:
# =====================================================
# cdimono1.zip - Philips CD-i Mono-I (PAL) - REQUIRED
# Contains main CPU BIOS + servo/slave MCU dumps
# =====================================================
# Main CPU BIOS (one of three, selected via MAME BIOS switch)
- name: "cdi200.rom"
zip: "cdimono1.zip"
system: cdi
region: [north-america]
required: true
size: 524288 # 0x80000
crc32: "40c4e6b9"
sha1: "d961de803c89b3d1902d656ceb9ce7c02dccb40a"
note: "Magnavox CD-i 200 BIOS. Default BIOS for cdimono1."
source_ref: "src/mame/drivers/cdi.cpp:577"
- name: "cdi220b.rom"
zip: "cdimono1.zip"
system: cdi
region: [europe]
required: true
size: 524288 # 0x80000
crc32: "279683ca"
sha1: "53360a1f21ddac952e95306ced64186a3fc0b93e"
note: "Philips CD-i 220 F2 BIOS. Alternate BIOS for cdimono1."
source_ref: "src/mame/drivers/cdi.cpp:579"
- name: "cdi220.rom"
zip: "cdimono1.zip"
system: cdi
region: [europe]
required: false
size: 524288 # 0x80000
crc32: "584c0af8"
sha1: "5d757ab46b8c8fc36361555d978d7af768342d47"
note: "Philips CD-i 220 BIOS (alternate, does not boot). Marked non-working."
source_ref: "src/mame/drivers/cdi.cpp:581"
# Servo MCU (MC68HC705C8A) - shared with cdi910 dump, BAD_DUMP
- name: "zx405037p__cdi_servo_2.1__b43t__llek9215.mc68hc705c8a_withtestrom.7201"
zip: "cdimono1.zip"
system: cdi
required: true
size: 8192 # 0x2000
crc32: "7a3af407"
sha1: "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f"
note: "Servo MCU 2.1, taken from cdi910 (BAD_DUMP, no Mono-I specific dump)."
source_ref: "src/mame/drivers/cdi.cpp:584"
# Slave MCU (MC68HC705C8A) - shared with cdi910 dump, BAD_DUMP
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
zip: "cdimono1.zip"
system: cdi
required: true
size: 8192 # 0x2000
crc32: "688cda63"
sha1: "56d0acd7caad51c7de703247cd6d842b36173079"
note: "Slave MCU 2.0, taken from cdi910 (BAD_DUMP, no Mono-I specific dump)."
source_ref: "src/mame/drivers/cdi.cpp:587"
# =====================================================
# cdimono2.zip - Philips CD-i Mono-II (NTSC) - OPTIONAL
# MACHINE_NOT_WORKING in MAME
# =====================================================
- name: "philips__cdi-220_ph3_r1.2__mb834200b-15__02f_aa__9402_z04.tc574200-le._1.7211"
zip: "cdimono2.zip"
system: cdi
required: false
size: 524288 # 0x80000
crc32: "17d723e7"
sha1: "6c317a82e35d60ca5e7a74fc99f665055693169d"
note: "Mono-II main CPU BIOS. Philips CDI-220 PH3 R1.2."
source_ref: "src/mame/drivers/cdi.cpp:623"
- name: "zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490"
zip: "cdimono2.zip"
system: cdi
required: false
size: 8192 # 0x2000
crc32: "2bc8e4e9"
sha1: "8cd052b532fc052d6b0077261c12f800e8655bb1"
note: "Mono-II servo MCU 4.1."
source_ref: "src/mame/drivers/cdi.cpp:626"
- name: "zc405352p__slave_cdi_4.1__0d67p__lltr9403.mc68hc705c8a.7206"
zip: "cdimono2.zip"
system: cdi
required: false
size: 8192 # 0x2000
crc32: "5b19da07"
sha1: "cf02d84977050c71e87a38f1249e83c43a93949b"
note: "Mono-II slave MCU 4.1."
source_ref: "src/mame/drivers/cdi.cpp:629"
# =====================================================
# cdibios.zip - CD-i BIOS for Quizard arcade - OPTIONAL
# Subset of cdimono1 ROMs + slave MCU, used by Quizard games
# =====================================================
# cdibios reuses cdi200.rom and cdi220b.rom (same hashes as cdimono1)
# plus the slave MCU. Listed here for completeness of the ZIP contents.
- name: "cdi200.rom"
zip: "cdibios.zip"
system: cdi
required: false
size: 524288 # 0x80000
crc32: "40c4e6b9"
sha1: "d961de803c89b3d1902d656ceb9ce7c02dccb40a"
note: "Magnavox CD-i 200 BIOS (same as cdimono1). For Quizard arcade."
source_ref: "src/mame/drivers/cdi.cpp:639"
- name: "cdi220b.rom"
zip: "cdibios.zip"
system: cdi
required: false
size: 524288 # 0x80000
crc32: "279683ca"
sha1: "53360a1f21ddac952e95306ced64186a3fc0b93e"
note: "Philips CD-i 220 F2 BIOS (same as cdimono1). For Quizard arcade."
source_ref: "src/mame/drivers/cdi.cpp:641"
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
zip: "cdibios.zip"
system: cdi
required: false
size: 8192 # 0x2000
crc32: "688cda63"
sha1: "56d0acd7caad51c7de703247cd6d842b36173079"
note: "Slave MCU 2.0 (BAD_DUMP, same as cdimono1). For Quizard arcade."
source_ref: "src/mame/drivers/cdi.cpp:645"
# =====================================================
# Additional MAME romsets (not in libretro .info firmware list)
# These are part of the MAME driver but not declared as
# required firmware by the libretro core.
# =====================================================
# cdi910 - CD-i 910-17P Mini-MMC (PAL) - MACHINE_NOT_WORKING
- name: "philips__cd-i_2.1__mb834200b-15__26b_aa__9224_z01.tc574200.7211"
zip: "cdi910.zip"
system: cdi
required: false
size: 524288 # 0x80000
crc32: "4ae3bee3"
sha1: "9729b4ee3ce0c17172d062339c47b1ab822b222b"
note: "CD-i 910-17P Mini-MMC BIOS. Not listed in libretro firmware."
source_ref: "src/mame/drivers/cdi.cpp:594"
- name: "cdi910.rom"
zip: "cdi910.zip"
system: cdi
required: false
size: 524288 # 0x80000
crc32: "2f3048d2"
sha1: "11c4c3e602060518b52e77156345fa01f619e793"
note: "CD-i 910 alternate BIOS. Not listed in libretro firmware."
source_ref: "src/mame/drivers/cdi.cpp:596"
# cdi490a - CD-i 490 - MACHINE_NOT_WORKING
- name: "cdi490a.rom"
zip: "cdi490a.zip"
system: cdi
required: false
size: 524288 # 0x80000
crc32: "e2f200f6"
sha1: "c9bf3c4c7e4fe5cbec3fe3fc993c77a4522ca547"
note: "CD-i 490 BIOS. Not listed in libretro firmware."
source_ref: "src/mame/drivers/cdi.cpp:633"
- name: "impega.rom"
zip: "cdi490a.zip"
system: cdi
required: false
size: 262144 # 0x40000
crc32: "84d6f6aa"
sha1: "02526482a0851ea2a7b582d8afaa8ef14a8bd914"
note: "CD-i 490 MPEG audio decoder ROM."
source_ref: "src/mame/drivers/cdi.cpp:636"
- name: "vmpega.rom"
zip: "cdi490a.zip"
system: cdi
required: false
size: 262144 # 0x40000
crc32: "db264e8b"
sha1: "be407fbc102f1731a0862554855e963e5a47c17b"
note: "CD-i 490 MPEG video decoder ROM."
source_ref: "src/mame/drivers/cdi.cpp:637"
platform_details:
cdi:
bios_path: "same_cdi/bios/"
forced_system: "cdimono1"
primary_zip: "cdimono1.zip"
optional_zips: ["cdimono2.zip", "cdibios.zip"]
mame_romsets: ["cdimono1", "cdimono2", "cdibios", "cdi910", "cdi490a"]
rom_path_flag: "-rp"
rom_search_path: "<game_path>;<system_dir>/same_cdi/bios/"
supported_extensions: ["chd", "iso", "cue"]
source_ref: "retro_init.cpp:86,534 same_cdi_libretro.info"

149
emulators/sameboy.yml Normal file
View File

@@ -0,0 +1,149 @@
emulator: SameBoy
type: libretro
source: "https://github.com/libretro/SameBoy"
cores:
- sameboy
systems:
- nintendo-gb
- nintendo-gbc
- nintendo-sgb
notes: |
SameBoy is a high-accuracy Game Boy, Game Boy Color and Super Game Boy
emulator written by Lior Halphon (LIJI32).
All boot ROMs are optional. SameBoy ships its own open-source boot ROM
replacements compiled from BootROMs/*.asm and embedded directly into
the libretro core binary (extern arrays dmg_boot, cgb_boot, agb_boot,
sgb_boot, sgb2_boot in libretro.c:129-130). These built-in boot ROMs
are SameBoy-authored replacements, not Nintendo originals.
The libretro port (libretro.c boot_rom_load(), line 513) tries to load
an external boot ROM from the system directory first. The filename is
constructed as "{model}_boot.bin" where model is one of: dmg0, dmg,
mgb, sgb, sgb2, cgb0, cgb, agb. If the file is missing or unreadable,
the embedded boot ROM is used as fallback.
Boot ROM type selection depends on the emulated model configured via
the sameboy_model core option (request_boot_rom in Core/gb.c:1588):
DMG_B -> GB_BOOT_ROM_DMG -> dmg_boot.bin
MGB -> GB_BOOT_ROM_MGB -> mgb_boot.bin
SGB/SGB_NTSC -> GB_BOOT_ROM_SGB -> sgb_boot.bin
SGB2 -> GB_BOOT_ROM_SGB2 -> sgb2_boot.bin
CGB_0 -> GB_BOOT_ROM_CGB_0 -> cgb0_boot.bin
CGB_A..CGB_E -> GB_BOOT_ROM_CGB -> cgb_boot.bin
AGB_A (GBA) -> GB_BOOT_ROM_AGB -> agb_boot.bin
Built-in fallback mapping (some models share a boot ROM):
DMG_0 and MGB reuse dmg_boot (not yet separately implemented)
CGB_0 reuses cgb_boot (not yet separately implemented)
The boot ROM buffer is 0x900 (2304) bytes. DMG/MGB/SGB/SGB2 boot ROMs
are 256 bytes (mapped at 0x0000-0x00FF). CGB/AGB boot ROMs are 2304
bytes (mapped at 0x0000-0x00FF and 0x0200-0x08FF).
SameDuck (MegaDuck emulator) is a separate project, not part of this
core.
files:
# --- DMG boot ROM (optional, built-in fallback) ---
- name: "dmg_boot.bin"
system: nintendo-gb
description: "Original Game Boy (DMG) boot ROM"
required: false
size: 256
source_ref: "libretro.c:519,530,556 (boot_rom_load)"
notes: "Also used as fallback for DMG_0 and MGB models when dedicated boot ROMs are absent."
# --- MGB boot ROM (optional, built-in fallback) ---
- name: "mgb_boot.bin"
system: nintendo-gb
description: "Game Boy Pocket (MGB) boot ROM"
required: false
size: 256
source_ref: "libretro.c:520,531,556"
notes: "Built-in fallback reuses dmg_boot (mgb not separately implemented yet)."
# --- SGB boot ROM (optional, built-in fallback) ---
- name: "sgb_boot.bin"
system: nintendo-sgb
description: "Super Game Boy (SGB) boot ROM"
required: false
size: 256
source_ref: "libretro.c:521,532,556"
notes: "Used for SGB and SGB_NTSC models. Also loaded temporarily when borrowing SGB border for non-SGB games."
# --- SGB2 boot ROM (optional, built-in fallback) ---
- name: "sgb2_boot.bin"
system: nintendo-sgb
description: "Super Game Boy 2 (SGB2) boot ROM"
required: false
size: 256
source_ref: "libretro.c:522,533,556"
notes: "Separate from sgb_boot.bin, unlike some other cores that merge SGB/SGB2."
# --- CGB boot ROM (optional, built-in fallback) ---
- name: "cgb_boot.bin"
system: nintendo-gbc
description: "Game Boy Color (CGB) boot ROM"
required: false
size: 2304
source_ref: "libretro.c:524,535,556"
notes: "Also used as fallback for CGB_0 model (not separately implemented yet)."
# --- CGB0 boot ROM (optional, built-in fallback) ---
- name: "cgb0_boot.bin"
system: nintendo-gbc
description: "Game Boy Color early revision (CGB-0) boot ROM"
required: false
size: 2304
source_ref: "libretro.c:523,534,556"
notes: "Built-in fallback reuses cgb_boot (cgb0 not separately implemented yet)."
# --- AGB boot ROM (optional, built-in fallback) ---
- name: "agb_boot.bin"
system: nintendo-gbc
description: "Game Boy Advance in GBC mode (AGB) boot ROM"
required: false
size: 2304
source_ref: "libretro.c:525,536,556"
notes: "Used when emulating a GBA running GB/GBC software. Enables GBA-enhanced palettes in compatible GBC games."
# --- DMG0 boot ROM (optional, built-in fallback) ---
- name: "dmg0_boot.bin"
system: nintendo-gb
description: "Original Game Boy early revision (DMG-0) boot ROM"
required: false
size: 256
source_ref: "SDL/main.c:640 (standalone), libretro.c:518,529"
notes: "Only referenced in standalone SDL build filename list. Built-in fallback reuses dmg_boot."
builtin_boot_roms:
description: |
SameBoy includes open-source boot ROM replacements compiled from
assembly source in BootROMs/ directory. These are NOT Nintendo
originals. They reproduce the boot animation and hardware
initialization but are clean-room implementations.
sources:
- "BootROMs/dmg_boot.asm -> dmg_boot (256 bytes)"
- "BootROMs/sgb_boot.asm -> sgb_boot (256 bytes)"
- "BootROMs/sgb2_boot.asm -> sgb2_boot (256 bytes)"
- "BootROMs/cgb_boot.asm -> cgb_boot (2304 bytes)"
- "BootROMs/agb_boot.asm -> agb_boot (2304 bytes)"
prebuilt_hashes:
dmg_boot.bin:
md5: "60f1d849a435e9053b8ac0fd5776804a"
sha1: "da853c8102acfff6b8e5a973ce0cd181f3dbb709"
sgb_boot.bin:
md5: "be77bbd03f8675478f6e3d2176f3cb56"
sha1: "27267e45c8408857267231ba6c18bfbd052536e2"
sgb2_boot.bin:
md5: "b4331a9e612b4738867a30af9c96df52"
sha1: "576678d0fc3892b80471d7067ce6014e6af77ed5"
cgb_boot.bin:
md5: "6b68be48dab6a7298a8c07e00c136b4e"
sha1: "9884b972110a63c9e86fb3bd241bd2e39ca82bb9"
agb_boot.bin:
md5: "7e095aa30941da3086fa0e9221335370"
sha1: "3b6231bdf840fb889f402d0ae89f21adb077323a"
notes: "These are SameBoy's own boot ROMs, not Nintendo originals. The hashes above identify the built-in versions."

445
emulators/scummvm.yml Normal file
View File

@@ -0,0 +1,445 @@
emulator: ScummVM
type: libretro
source: "https://github.com/libretro/scummvm"
systems: [scummvm]
# ScummVM is a multi-engine point-and-click adventure game interpreter.
# The libretro port uses a specific directory layout under the RetroArch
# system directory:
#
# <system>/scummvm/ - main ScummVM subdirectory
# <system>/scummvm/extra/ - engine data files, soundfonts, shaders
# <system>/scummvm/theme/ - GUI themes and related assets
#
# These paths are defined in Makefile.common:
# SCUMMVM_SYSTEM_SUBDIR = scummvm
# SCUMMVM_EXTRA_SUBDIR = extra
# SCUMMVM_THEME_SUBDIR = theme
#
# The bundled scummvm.zip release artifact contains the full directory
# tree pre-built. Extracting it into <system>/ is the easiest setup.
#
# MT-32/CM-32L ROM files go in scummvm/extra/ and are loaded by
# audio/softsynth/mt32.cpp. The core tries CM-32L first, then MT-32.
# These are NOT bundled (proprietary). Everything else is open-source
# data shipped with ScummVM releases.
# ----- scummvm.ini (config, auto-created) -----
# Stored at <system>/scummvm.ini. Created by the core on first run.
# Not listed here since it's not a distributable data file.
files:
# ================================================================
# MT-32 / CM-32L ROM files (proprietary, not bundled)
# Loaded from the extra path by audio/softsynth/mt32.cpp
# CM-32L is tried first, falls back to MT-32.
# ================================================================
- name: "MT32_CONTROL.ROM"
path: "scummvm/extra/MT32_CONTROL.ROM"
required: false
size: 65536
source_ref: "audio/softsynth/mt32.cpp:298,581"
note: >
Roland MT-32 control ROM. Required for MT-32 music emulation in games
that use MT-32 MIDI (e.g. Monkey Island, Indiana Jones). Not bundled
with ScummVM. Must be paired with MT32_PCM.ROM.
- name: "MT32_PCM.ROM"
path: "scummvm/extra/MT32_PCM.ROM"
required: false
size: 524288
source_ref: "audio/softsynth/mt32.cpp:298,581"
note: >
Roland MT-32 PCM ROM. Contains the sample data for MT-32 emulation.
Must be paired with MT32_CONTROL.ROM.
- name: "CM32L_CONTROL.ROM"
path: "scummvm/extra/CM32L_CONTROL.ROM"
required: false
size: 65536
source_ref: "audio/softsynth/mt32.cpp:293,582"
note: >
Roland CM-32L control ROM. Preferred over MT-32 ROMs when both are
present. The CM-32L is a rack-mount version of the MT-32 with extra
sound effects used by some LucasArts and Sierra games.
- name: "CM32L_PCM.ROM"
path: "scummvm/extra/CM32L_PCM.ROM"
required: false
size: 1048576
source_ref: "audio/softsynth/mt32.cpp:293,582"
note: >
Roland CM-32L PCM ROM. Contains sample data for CM-32L emulation.
Must be paired with CM32L_CONTROL.ROM.
# ================================================================
# SoundFont (bundled with ScummVM releases)
# Default filename defined in libretro-defs.h:32
# ================================================================
- name: "Roland_SC-55.sf2"
path: "scummvm/extra/Roland_SC-55.sf2"
required: false
source_ref: "libretro-defs.h:32, libretro-os-utils.cpp:196"
note: >
Roland SC-55 SoundFont for General MIDI playback. This is the default
soundfont (DEFAULT_SOUNDFONT_FILENAME). Bundled in official ScummVM
releases. Used as fallback when no MT-32 ROMs are available.
# ================================================================
# GUI themes - placed in scummvm/theme/
# Listed in dists/scummvm.rc
# ================================================================
- name: "scummmodern.zip"
path: "scummvm/theme/scummmodern.zip"
required: false
source_ref: "dists/scummvm.rc:24"
note: "Modern GUI theme for ScummVM launcher."
- name: "scummclassic.zip"
path: "scummvm/theme/scummclassic.zip"
required: false
source_ref: "dists/scummvm.rc:23"
note: "Classic GUI theme for ScummVM launcher."
- name: "scummremastered.zip"
path: "scummvm/theme/scummremastered.zip"
required: false
source_ref: "dists/scummvm.rc:25"
note: "Remastered GUI theme for ScummVM launcher."
- name: "residualvm.zip"
path: "scummvm/theme/residualvm.zip"
required: false
source_ref: "dists/scummvm.rc:26"
note: "ResidualVM theme for 3D adventure games (Grim Fandango, Myst III)."
- name: "gui-icons.dat"
path: "scummvm/theme/gui-icons.dat"
required: false
source_ref: "dists/scummvm.rc:27"
note: "GUI icon pack used by the ScummVM launcher interface."
- name: "shaders.dat"
path: "scummvm/theme/shaders.dat"
required: false
source_ref: "dists/scummvm.rc:28"
note: "Compiled shader pack for the GUI rendering pipeline."
- name: "translations.dat"
path: "scummvm/theme/translations.dat"
required: false
source_ref: "dists/scummvm.rc:43"
note: "GUI translation strings for ScummVM launcher localization."
# ================================================================
# Core engine data - placed in scummvm/extra/
# Listed in dists/engine-data/engine_data_core.mk (always included)
# ================================================================
- name: "achievements.dat"
path: "scummvm/extra/achievements.dat"
required: false
source_ref: "engine_data_core.mk"
note: "Achievement definitions for supported games."
- name: "classicmacfonts.dat"
path: "scummvm/extra/classicmacfonts.dat"
required: false
source_ref: "engine_data_core.mk"
note: "Classic Macintosh bitmap fonts for Mac game rendering."
- name: "encoding.dat"
path: "scummvm/extra/encoding.dat"
required: false
source_ref: "engine_data_core.mk"
note: "Character encoding tables for text rendering across languages."
- name: "helpdialog.zip"
path: "scummvm/extra/helpdialog.zip"
required: false
source_ref: "engine_data_core.mk"
note: "Help dialog assets for the in-game help system."
- name: "macgui.dat"
path: "scummvm/extra/macgui.dat"
required: false
source_ref: "engine_data_core.mk"
note: "Macintosh GUI widget data for Mac-style game interfaces."
# ================================================================
# Per-engine data files - placed in scummvm/extra/
# Listed in dists/engine-data/engine_data.mk (conditionally included)
# ================================================================
- name: "access.dat"
path: "scummvm/extra/access.dat"
required: false
source_ref: "engine_data.mk (ENABLE_ACCESS)"
note: "Engine data for Access Software games (e.g. Amazon, Martian Memorandum)."
- name: "bagel.dat"
path: "scummvm/extra/bagel.dat"
required: false
source_ref: "engine_data.mk (ENABLE_BAGEL)"
note: "Engine data for Bagel engine games."
- name: "cryo.dat"
path: "scummvm/extra/cryo.dat"
required: false
source_ref: "engine_data.mk (ENABLE_CRYO)"
note: "Engine data for Cryo Interactive games (e.g. Dune, Lost Eden)."
- name: "cryomni3d.dat"
path: "scummvm/extra/cryomni3d.dat"
required: false
source_ref: "engine_data.mk (ENABLE_CRYOMNI3D)"
note: "Engine data for CryOmni3D games (Versailles 1685)."
- name: "darkseed.dat"
path: "scummvm/extra/darkseed.dat"
required: false
source_ref: "engine_data.mk (ENABLE_DARKSEED)"
note: "Engine data for Dark Seed (H.R. Giger adventure game)."
- name: "drascula.dat"
path: "scummvm/extra/drascula.dat"
required: false
source_ref: "engine_data.mk (ENABLE_DRASCULA)"
note: "Engine data for Drascula: The Vampire Strikes Back."
- name: "freescape.dat"
path: "scummvm/extra/freescape.dat"
required: false
source_ref: "engine_data.mk (ENABLE_FREESCAPE)"
note: "Engine data for Freescape games (Driller, Dark Side, Total Eclipse)."
- name: "got.aud"
path: "scummvm/extra/got.aud"
required: false
source_ref: "engine_data.mk (ENABLE_GOT)"
note: "Audio data for Game of Thrones engine."
- name: "got.gfx"
path: "scummvm/extra/got.gfx"
required: false
source_ref: "engine_data.mk (ENABLE_GOT)"
note: "Graphics data for Game of Thrones engine."
- name: "hadesch_translations.dat"
path: "scummvm/extra/hadesch_translations.dat"
required: false
source_ref: "engine_data.mk (ENABLE_HADESCH)"
note: "Translation data for Hades Challenge."
- name: "hugo.dat"
path: "scummvm/extra/hugo.dat"
required: false
source_ref: "engine_data.mk (ENABLE_HUGO)"
note: "Engine data for Hugo's House of Horrors trilogy."
- name: "kyra.dat"
path: "scummvm/extra/kyra.dat"
required: false
source_ref: "engine_data.mk (ENABLE_KYRA)"
note: "Engine data for Kyrandia series (Legend of Kyrandia, Hand of Fate, Malcolm's Revenge)."
- name: "lure.dat"
path: "scummvm/extra/lure.dat"
required: false
source_ref: "engine_data.mk (ENABLE_LURE)"
note: "Engine data for Lure of the Temptress."
- name: "macventure.dat"
path: "scummvm/extra/macventure.dat"
required: false
source_ref: "engine_data.mk (ENABLE_MACVENTURE)"
note: "Engine data for MacVenture games (Shadowgate, Deja Vu, Uninvited)."
- name: "mm.dat"
path: "scummvm/extra/mm.dat"
required: false
source_ref: "engine_data.mk (ENABLE_MM)"
note: "Engine data for Might and Magic engine."
- name: "mort.dat"
path: "scummvm/extra/mort.dat"
required: false
source_ref: "engine_data.mk (ENABLE_MORTEVIELLE)"
note: "Engine data for Mortville Manor."
- name: "myst3.dat"
path: "scummvm/extra/myst3.dat"
required: false
source_ref: "engine_data.mk (ENABLE_MYST3)"
note: "Engine data for Myst III: Exile."
- name: "nancy.dat"
path: "scummvm/extra/nancy.dat"
required: false
source_ref: "engine_data.mk (ENABLE_NANCY)"
note: "Engine data for Nancy Drew adventure games."
- name: "neverhood.dat"
path: "scummvm/extra/neverhood.dat"
required: false
source_ref: "engine_data.mk (ENABLE_NEVERHOOD)"
note: "Engine data for The Neverhood."
- name: "prince_translation.dat"
path: "scummvm/extra/prince_translation.dat"
required: false
source_ref: "engine_data.mk (ENABLE_PRINCE)"
note: "Translation data for The Prince and the Coward."
- name: "queen.tbl"
path: "scummvm/extra/queen.tbl"
required: false
source_ref: "engine_data.mk (ENABLE_QUEEN)"
note: "Resource table for Flight of the Amazon Queen."
- name: "sky.cpt"
path: "scummvm/extra/sky.cpt"
required: false
source_ref: "engine_data.mk (ENABLE_SKY)"
note: "Compact table for Beneath a Steel Sky."
- name: "supernova.dat"
path: "scummvm/extra/supernova.dat"
required: false
source_ref: "engine_data.mk (ENABLE_SUPERNOVA)"
note: "Engine data for Mission Supernova."
- name: "teenagent.dat"
path: "scummvm/extra/teenagent.dat"
required: false
source_ref: "engine_data.mk (ENABLE_TEENAGENT)"
note: "Engine data for Teenagent."
- name: "titanic.dat"
path: "scummvm/extra/titanic.dat"
required: false
source_ref: "engine_data.mk (ENABLE_TITANIC)"
note: "Engine data for Starship Titanic."
- name: "tony.dat"
path: "scummvm/extra/tony.dat"
required: false
source_ref: "engine_data.mk (ENABLE_TONY)"
note: "Engine data for Tony Tough and the Night of Roasted Moths."
- name: "toon.dat"
path: "scummvm/extra/toon.dat"
required: false
source_ref: "engine_data.mk (ENABLE_TOON)"
note: "Engine data for Toonstruck."
- name: "ultima.dat"
path: "scummvm/extra/ultima.dat"
required: false
source_ref: "engine_data.mk (ENABLE_ULTIMA)"
note: "Engine data for Ultima series (Ultima IV-VIII, Savage Empire, Martian Dreams)."
- name: "ultima8.dat"
path: "scummvm/extra/ultima8.dat"
required: false
source_ref: "engine_data.mk (ENABLE_ULTIMA)"
note: "Engine data specific to Ultima VIII: Pagan."
- name: "wintermute.zip"
path: "scummvm/extra/wintermute.zip"
required: false
source_ref: "engine_data.mk (ENABLE_WINTERMUTE)"
note: "Engine data for Wintermute engine games."
- name: "fonts.dat"
path: "scummvm/extra/fonts.dat"
required: false
source_ref: "engine_data.mk (USE_FREETYPE2)"
note: "FreeType2 font data for text rendering."
- name: "fonts-cjk.dat"
path: "scummvm/extra/fonts-cjk.dat"
required: false
source_ref: "engine_data_big.mk (USE_FREETYPE2)"
note: "CJK (Chinese/Japanese/Korean) font data. Large file, only for systems with enough memory."
- name: "fonts-imgui.dat"
path: "scummvm/extra/fonts-imgui.dat"
required: false
source_ref: "engine_data.mk (USE_IMGUI)"
note: "ImGui font data for debug overlay rendering."
- name: "grim-patch.lab"
path: "scummvm/extra/grim-patch.lab"
required: false
source_ref: "engine_data.mk (ENABLE_GRIM)"
note: "Patch data for Grim Fandango."
- name: "monkey4-patch.m4b"
path: "scummvm/extra/monkey4-patch.m4b"
required: false
source_ref: "engine_data.mk (ENABLE_MONKEY4)"
note: "Patch data for Escape from Monkey Island."
# ================================================================
# AGI engine dictionary
# ================================================================
- name: "pred.dic"
path: "scummvm/extra/pred.dic"
required: false
source_ref: "engine_data.mk (ENABLE_AGI)"
note: "Predictive text dictionary for AGI engine text input (King's Quest, Space Quest, etc)."
# ================================================================
# Virtual keyboard pack
# ================================================================
- name: "vkeybd_default.zip"
path: "scummvm/extra/vkeybd_default.zip"
required: false
source_ref: "bundle_datafiles.sh (hardcoded addition)"
note: "Default virtual keyboard layout. Added to the extra path by the build script."
# ================================================================
# Shaders - placed in scummvm/extra/shaders/
# Grim Fandango, Escape from Monkey Island, Myst III, The Longest
# Journey (Stark), Wintermute 3D, Freescape, HPL1 (Penumbra),
# Playground3D test engine. Listed in dists/scummvm.rc.
# Individual shader files are NOT listed here since they are
# bundled in shaders.dat for the theme path and as individual
# files in the extra/shaders/ directory. The build bundles them
# automatically via bundle_datafiles.sh.
# ================================================================
notes:
directory_layout: >
The libretro core expects: <system>/scummvm/extra/ for engine data and
soundfonts, <system>/scummvm/theme/ for GUI themes. The bundled
scummvm.zip release contains the full tree and can be extracted
directly into the system directory. Individual shader files go in
<system>/scummvm/extra/shaders/.
mt32_emulation: >
MT-32 emulation requires either MT32_CONTROL.ROM + MT32_PCM.ROM or
CM32L_CONTROL.ROM + CM32L_PCM.ROM in the extra directory. These are
proprietary Roland ROM dumps, not shipped with ScummVM. CM-32L ROMs
are preferred when both sets are present. Without these, games that
use MT-32 MIDI fall back to General MIDI with the Roland SC-55
soundfont.
scummvm_zip: >
Official ScummVM libretro releases include scummvm.zip which bundles
all themes, engine data, shaders, and the SC-55 soundfont. This
single file extracted to <system>/ provides a complete setup minus
the proprietary MT-32/CM-32L ROMs.
config_file: >
ScummVM stores its configuration in <system>/scummvm.ini. This file
is auto-created on first launch and stores game entries, paths, and
user preferences. Not a distributable data file.
shaders: >
OpenGL shaders for 3D engines (Grim Fandango, Myst III, The Longest
Journey, Penumbra, Wintermute 3D, Freescape) are placed as individual
.vertex/.fragment files in <system>/scummvm/extra/shaders/. There are
roughly 130 shader files across all engines.

81
emulators/smsplus.yml Normal file
View File

@@ -0,0 +1,81 @@
emulator: SMS Plus GX
type: libretro
source: "https://github.com/libretro/smsplus-gx"
cores:
- smsplus
systems:
- sega-master-system
- sega-game-gear
- colecovision
- sega-sg1000
notes: |
SMS Plus GX is a Sega Master System / Game Gear emulator with additional
support for ColecoVision, SG-1000 and Sord M5 via TMS9918 VDP emulation.
BIOS loading happens in bios_init() (smsplus_libretro.c:203-252).
Two BIOS files are supported:
1. bios.sms -- Sega Master System boot ROM. Optional. Loaded for all
console types. A core option "smsplus_sms_bios" (default: disabled)
controls whether it is used. When set to "auto" and the file exists,
bios.enabled is set and the SMS boot sequence plays before games.
2. BIOS.col -- ColecoVision BIOS. Required for ColecoVision ROMs only.
Loaded into coleco.rom (0x2000 bytes = 8 KB). Without it, ColecoVision
games will not start and the core logs an error. The filename is
case-sensitive (uppercase BIOS, lowercase .col).
Both files are read from the system directory root (no subdirectory).
Path is built as: system_dir + "/" + filename (smsplus_libretro.c:211,234).
Console type is auto-detected from ROM file extension:
.col -> CONSOLE_COLECO
.sg -> CONSOLE_SG1000
Or forced via the "smsplus_hardware" core option.
files:
- name: "bios.sms"
system: sega-master-system
description: "Sega Master System boot ROM"
required: false
source_ref: "smsplus_libretro.c:211-229"
notes: |
Loaded into bios.rom (up to 1 MB allocated). Only active when the
core option smsplus_sms_bios is set to "auto". Displays the Sega
Master System startup screen before game execution.
- name: "BIOS.col"
system: colecovision
description: "ColecoVision BIOS ROM"
required: true
size: 8192
source_ref: "smsplus_libretro.c:232-248"
notes: |
Required for ColecoVision games. Read as 0x2000 (8192) raw bytes
into coleco.rom. Without this file, retro_load_game() returns false
when loading .col files. Filename is case-sensitive on Linux.
platform_details:
bios_mapping:
sms:
target: "bios.rom buffer, mapped via slot system"
source_ref: "smsplus_libretro.c:208-229, source/memz80.c"
notes: |
When bios.enabled has both bits set (file present + option enabled),
the BIOS ROM is paged into the Z80 address space at startup. The
BIOS executes the boot animation, then hands off to the cartridge.
coleco:
target: "coleco.rom, mapped at 0x0000-0x1FFF"
source_ref: "smsplus_libretro.c:245, source/memz80.c"
notes: |
The ColecoVision BIOS provides the interrupt handler, I/O routines
and startup code. Mapped into the first 8 KB of Z80 address space.
console_detection:
source_ref: "smsplus_libretro.c:605-609, source/loadrom.c:402"
notes: |
File extension .col forces CONSOLE_COLECO with MAPPER_NONE.
Extension .sg forces CONSOLE_SG1000.
The core option smsplus_hardware can override to: master system,
master system II, game gear, game gear (sms compatibility), coleco.

132
emulators/snes9x.yml Normal file
View File

@@ -0,0 +1,132 @@
emulator: snes9x
type: libretro
source: "https://github.com/libretro/snes9x"
systems: [nintendo-snes, nintendo-satellaview, nintendo-sufami-turbo]
# snes9x uses HLE for all coprocessors: DSP1-4, ST010, ST011, ST018, CX4.
# No external firmware files are needed for these chips - the emulation
# logic and lookup tables are hardcoded in dsp1.cpp, dsp2.cpp, dsp3.cpp,
# dsp4.cpp, seta010.cpp, seta011.cpp, seta018.cpp, c4emu.cpp.
#
# Unlike bsnes, snes9x does NOT support LLE coprocessor firmware.
# It also does NOT support Super Game Boy (RETRO_GAME_TYPE_SUPER_GAME_BOY
# is defined but never loads a SGB BIOS or boot ROM).
#
# The only external BIOS files used are for Satellaview (BS-X) and
# Sufami Turbo, loaded by LoadBIOS() in libretro/libretro.cpp and
# BSX_LoadBIOS() in bsx.cpp.
#
# BIOS lookup order (LoadBIOS):
# 1. ROM directory (same folder as the game)
# 2. RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (system dir)
cores:
snes9x:
source: "https://github.com/libretro/snes9x"
firmware_loading: true
hle_only: true
notes: |
Current snes9x. Loads BS-X.bin (tries BS-X.bios as fallback)
and STBIOS.bin via LoadBIOS() in libretro.cpp.
Auto-detects Sufami Turbo carts (is_SufamiTurbo_Cart) and
BS-X games (is_bsx) when loading via retro_load_game().
Also handles retro_load_game_special() for multi-cart and
subsystem types (RETRO_GAME_TYPE_BSX, RETRO_GAME_TYPE_SUFAMI_TURBO,
RETRO_GAME_TYPE_MULTI_CART).
snes9x2010:
source: "https://github.com/libretro/snes9x2010"
firmware_loading: true
hle_only: true
notes: |
Based on snes9x 1.52. Same BIOS loading as snes9x current.
BSX_LoadBIOS() in src/bsx.c loads BS-X.bin (fallback BS-X.bios).
STBIOS.bin loaded in src/memmap.c for Sufami Turbo.
snes9x2005:
source: "https://github.com/libretro/snes9x2005"
firmware_loading: false
hle_only: true
notes: |
Based on snes9x 1.43. Detects BS-X and Sufami Turbo ROM headers
in source/memmap.c but has no LoadBIOS function - does not load
external BIOS files. No firmware needed.
snes9x2005_plus:
source: "https://github.com/libretro/snes9x2005"
firmware_loading: false
hle_only: true
notes: |
Same codebase as snes9x2005 with video enhancements.
No external BIOS loading. No firmware needed.
snes9x2002:
source: "https://github.com/libretro/snes9x2002"
firmware_loading: false
hle_only: true
notes: |
Based on snes9x 1.39 (PocketSNES). Minimal core for low-end
devices. No BS-X, no Sufami Turbo, no external BIOS loading.
No firmware needed.
files:
# -- BS-X Satellaview BIOS --
# Required by: snes9x, snes9x2010
# Loaded by: LoadBIOS() in libretro.cpp (snes9x) / BSX_LoadBIOS() in bsx.c (snes9x2010)
# Auto-detected when game ROM header matches BS-X signature at 0x7FC0 or 0xFFC0.
# Size validated: must be exactly BIOS_SIZE (0x100000 = 1048576 bytes).
# Filename fallback: BS-X.bin -> BS-X.bios (bsx.cpp:1209-1215)
- name: "BS-X.bin"
system: nintendo-satellaview
description: "Satellaview BS-X BIOS (Japanese)"
required: false
size: 1048576
md5: "fed4d8242cfbed61343d53d48432aced"
sha1: "604556b2e62860af18db5a77f2956ebc75450020"
source_ref: "libretro.cpp:1209 (LoadBIOS, 'BS-X.bin'), bsx.cpp:1209-1215 (BSX_LoadBIOS)"
notes: "Needed for Satellaview (.bs) game support. Core also accepts BS-X.bios as filename. Without this file, BS-X games will fail to load."
# -- Sufami Turbo BIOS --
# Required by: snes9x, snes9x2010
# Loaded by: LoadBIOS() in libretro.cpp (snes9x) / memmap.c (snes9x2010)
# Auto-detected when cart has "BANDAI SFC-ADX" at offset 0, without "SFC-ADX BACKUP" at 0x10.
# Size: 0x40000 (262144 bytes). Validated by is_SufamiTurbo_BIOS().
- name: "STBIOS.bin"
system: nintendo-sufami-turbo
description: "Bandai SuFami Turbo BIOS (Mini Cartridge add-on)"
required: false
size: 262144
md5: "d3a44ba7d42a74d3ac58cb9c14c6a5ca"
sha1: "ef86ea192eed03d5c413fdbbfd46043be1d7a127"
source_ref: "libretro.cpp:1203,1317,1348 (LoadBIOS, 'STBIOS.bin'), memmap.cpp:1672"
notes: "Needed for Sufami Turbo multi-cart games. Validated by is_SufamiTurbo_BIOS() which checks for 'BANDAI SFC-ADX' + 'SFC-ADX BACKUP' headers."
notes:
coprocessor_hle: |
All SNES coprocessor chips are emulated in software (HLE) across
every snes9x variant. No external firmware files are needed for:
- DSP1/DSP1B (dsp1.cpp, static DSP1ROM[1024] lookup table)
- DSP2 (dsp2.cpp)
- DSP3 (dsp3.cpp)
- DSP4 (dsp4.cpp)
- ST010 (seta010.cpp, static ST010_SinTable)
- ST011 (seta011.cpp)
- ST018 (seta018.cpp)
- CX4/Cx4 (c4.cpp, c4emu.cpp, math-based HLE)
This is the key difference from bsnes, which supports both HLE and
LLE (with optional external firmware ROM files).
sgb_status: |
RETRO_GAME_TYPE_SUPER_GAME_BOY (0x104) is defined in libretro.cpp
but no actual SGB emulation exists. No SGB BIOS or boot ROM is
loaded or used by any snes9x variant.
bsx_detection: |
BS-X games are auto-detected by is_bsx() which checks for the
"Satellaview BS-X" signature in the ROM header. When detected,
the BIOS is loaded automatically without user intervention.
sufami_detection: |
Sufami Turbo carts are auto-detected by is_SufamiTurbo_Cart()
which checks for "BANDAI SFC-ADX" at ROM offset 0 and absence
of "SFC-ADX BACKUP" at offset 0x10 (which would indicate BIOS,
not cart). Multi-cart support uses retro_load_game_special().

54
emulators/stella.yml Normal file
View File

@@ -0,0 +1,54 @@
emulator: Stella
type: libretro
source: "https://github.com/libretro/stella2014-libretro"
cores:
- stella
- stella2014
- stella2023
systems:
- atari-2600
notes: |
Stella is an Atari 2600 (VCS) emulator. The libretro port available is
stella2014, which is a fork frozen at the 2014 codebase. The upstream
"stella-libretro" repo redirects to stella2014-libretro. There is no
separate stella2023 libretro core published at this time.
The Atari 2600 console has no BIOS ROM. Games run directly on the
hardware with no boot firmware.
The Starpath/Arcadia Supercharger add-on had a 2K BIOS ROM on the
physical hardware. Stella does NOT load this BIOS from an external
file. Instead, the core contains a built-in dummy BIOS
(ourDummyROMCode, 294 bytes in CartAR.cxx) that simulates the
Supercharger load sequence. The initializeROM() function copies this
dummy code into the ROM bank (bank 3) at reset, sets up the 6502
reset vector to 0xF80A, and handles multiload via a hotspot at
address 0x1850.
The "fastscbios" setting (offset 109 in the dummy ROM) controls
whether the SC load progress bars are shown (0x00) or skipped
(0xFF). This is toggled automatically during ROM format detection
(Console.cxx:119-120).
The real Supercharger BIOS ROM (MD5 4565c1a7abce773e53c75b35414adefd)
is recognized in DefProps.hxx as a known cartridge entry but is not
required or loaded as a system file.
The libretro interface (retro_set_environment) does not call
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and declares no firmware
requirements. No core option references BIOS loading.
files: []
platform_details:
supercharger_emulation:
source_ref: "stella/src/emucore/CartAR.cxx, CartAR.hxx"
notes: |
The Supercharger (type AR) uses 4 banks: 3x 2K RAM + 1x 2K ROM.
The ROM bank is filled with ourDummyROMCode at reset. SC games
are multi-load images (8448 bytes per load: 8192 data + 256 header).
loadIntoRAM() handles loading game data when the hotspot at 0x1850
is accessed with the ROM bank mapped. The bank switching byte and
start address are written to zero-page RAM (0xFE, 0xFF, 0x80) for
the dummy BIOS to read.

30
emulators/theodore.yml Normal file
View File

@@ -0,0 +1,30 @@
# Theodore - Thomson MO/TO computer emulator
# https://github.com/Zlika/theodore
# Emulates: TO7, TO7/70, TO8, TO8D, TO9, TO9+, MO5, MO6, PC128 (Olivetti Prodest)
# Based on Daniel Coulom's DCTO8D, DCTO9P, and DCMO5 emulators
core_name: theodore
systems:
- Thomson MO5
- Thomson MO6
- Thomson TO7
- Thomson TO7/70
- Thomson TO8
- Thomson TO8D
- Thomson TO9
- Thomson TO9+
- Olivetti Prodest PC128
bios_files: []
# All system ROMs are embedded directly in the source code as C arrays:
# rom_to7.inc, rom_to770.inc, rom_to8.inc, rom_to8d.inc,
# rom_to9.inc, rom_to9p.inc, rom_mo5.inc, rom_mo6.inc,
# rom_pc128.inc, basic-1_memo7.inc, basic-128_memo7.inc
# No external BIOS or firmware files are required.
notes: |
Theodore embeds all Thomson monitor ROMs and BASIC ROMs at compile time.
The core option "theodore_rom" selects the emulated model (Auto by default).
TO7 and TO7/70 auto-load the BASIC 1 cartridge when no cartridge is provided.
Supported file formats: fd, sap, k7, m7, m5, rom.
The core can run without any game loaded (SET_SUPPORT_NO_GAME = true).

24
emulators/tyrquake.yml Normal file
View File

@@ -0,0 +1,24 @@
emulator: TyrQuake
type: libretro
source: "https://github.com/libretro/tyrquake"
cores: [tyrquake]
systems: [quake]
verification: existence
notes: >
Quake engine source port. Plays Quake (id1), mission packs Scourge of Armagon
(hipnotic) and Dissolution of Eternity (rogue), Quoth mod, and custom mods via
-game parameter. The core accepts .pak extensions (retro_get_system_info sets
valid_extensions = "pak"). Content is loaded directly from the PAK file path -
the directory containing the PAK becomes basedir (libretro.c:988,1050).
The engine auto-detects game variant by checking the content path for id1,
hipnotic, rogue, or quoth substrings (libretro.c:1030-1070) and passes the
corresponding command-line flag. For non-standard paths it uses -game with the
directory basename. PAK files are game data (maps, textures, models, sounds)
shipped with the original retail game, not engine firmware. The engine checks
for gfx/pop.lmp inside pak0.pak to distinguish registered vs shareware
(common.c:974-991). COM_AddGameDirectory (common.c:1709) loads pak0.pak through
pak9.pak sequentially from the game directory, trying both lowercase and
uppercase filenames. No engine data files are required in the RetroArch system
directory. The core needs no BIOS or firmware.
files: []

42
emulators/uzem.yml Normal file
View File

@@ -0,0 +1,42 @@
emulator: uzem
type: libretro
source: "https://github.com/libretro/libretro-uzem"
cores:
- uzem
systems:
- uzebox
# Uzem emulates the Uzebox, an open-source 8-bit game console based on an
# ATmega644 AVR microcontroller. The console was designed by Alec Bourque (Uze)
# and all hardware/software is open-source.
#
# No BIOS or firmware files are required. The core loads .uze ROM files directly
# into progmem (uzem_libretro.cpp:254-286). The .uze format includes a "UZEBOX"
# magic header followed by a RomHeader struct (uzerom.h) and raw program data.
#
# The standalone uzem (oldsrcs/uzem.cpp:90) has a --boot flag that sets PC to
# 0xF000 for bootloader mode, but this is NOT exposed in the libretro port.
# The libretro core has no retro_environment calls for RETRO_ENVIRONMENT_SET_SYSTEM_DIR
# or any firmware loading paths.
#
# SD card emulation uses RETRO_ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY
# (uzem_libretro.cpp:186-192) for virtual FAT16 filesystem access via SDEmulator.cpp,
# but this is optional game data, not system firmware.
#
# The .info file declares no firmware entries.
files: []
notes:
open_source_console: >
The Uzebox is fully open-source hardware and software. There is no proprietary
BIOS or bootloader required. Games are self-contained .uze files that include
all code needed to run on the ATmega644 MCU emulation.
sd_card: >
Some games use SD card access for loading assets. The core reads from the
libretro core assets directory to emulate a FAT16 SD card, but this is game
data, not system firmware.
standalone_bootloader: >
The original standalone uzem supports a --boot flag for bootloader mode
(PC starts at 0xF000 instead of 0x0000). This feature is not available in
the libretro port.

69
emulators/vba_next.yml Normal file
View File

@@ -0,0 +1,69 @@
emulator: VBA-Next
type: libretro
source: "https://github.com/libretro/vba-next"
cores:
- vba_next
systems:
- nintendo-gba
notes: |
VBA-Next is a Game Boy Advance emulator forked from VBA-M, optimized for
libretro. It includes a built-in HLE BIOS (myROM array in src/gba.cpp:8423)
that handles all standard SWI calls, so no external BIOS file is needed for
most games.
BIOS loading is gated behind HAVE_HLE_BIOS (defined in build/Makefile.common)
and controlled by core option vbanext_bios (default: enabled). When enabled,
the libretro port looks for gba_bios.bin in RetroArch's system directory
(libretro/libretro.cpp:198-203). CPUInit() loads the file via utilLoad(),
validates it is exactly 0x4000 bytes (16 KB), and sets useBios = true
(src/gba.cpp:12413-12443). If loading fails or the option is off, the HLE
BIOS (myROM) is memcpy'd into the bios buffer instead.
CPUIsGBABios() accepts extensions: .gba, .agb, .bin, .bios, .rom
(src/gba.cpp:8851-8873).
When useBios is true and skipBios is false, execution starts at 0x00000000
(real BIOS entry). Otherwise it jumps straight to 0x08000000 (ROM entry),
skipping the boot animation (src/gba.cpp:12657-12675).
The HLE BIOS covers: SoftReset, RegisterRamReset, Halt, VBlankIntrWait,
Div, Sqrt, ArcTan, ArcTan2, CpuSet, CpuFastSet, GetBiosChecksum,
BgAffineSet, ObjAffineSet, BitUnPack, LZ77UnComp (WRAM/VRAM),
HuffUnComp, RLUnComp (WRAM/VRAM), Diff8bitUnFilter (WRAM/VRAM),
Diff16bitUnFilter, MidiKey2Freq, SndDriverJmpTableCopy
(src/gba.cpp:2369-2578).
Some per-game overrides in gbaover[] (libretro/libretro.cpp:235) have a
useBios field, but all entries currently set it to 0 (no game forces BIOS).
files:
# -------------------------------------------------------
# Game Boy Advance - BIOS (optional, HLE fallback)
# -------------------------------------------------------
- name: gba_bios.bin
system: nintendo-gba
required: false
size: 16384 # 16 KB (0x4000)
note: "GBA BIOS. Optional -- HLE replacement (myROM) handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy."
source_ref: "libretro/libretro.cpp:198-203, src/gba.cpp:12413-12443"
platform_details:
gba:
bios_size: 16384 # 0x4000
hle_bios: true
source_ref: "src/gba.cpp:8423 (myROM), src/gba.cpp:2369-2578 (SWI handlers)"
notes: |
BIOS buffer is always allocated at 0x4000 bytes (src/gba.cpp:8963).
If the real BIOS loads successfully (exactly 0x4000 bytes), useBios is
set to true and CPUReset starts at address 0x00000000 with IRQ disabled.
Otherwise myROM (built-in HLE stub) is copied in and execution starts
at 0x08000000 with standard register init.
The core option vbanext_bios defaults to "enabled", so if gba_bios.bin
is present in the system directory it will be loaded automatically.
BIOS reads at runtime go through the memory map (src/gba.cpp:792-1076).
Address range 0x0000-0x3FFF maps to the bios buffer. A biosProtected[4]
array at 0x00f029e1 is returned when reading outside the current PC
region, matching real GBA BIOS protection behavior.

60
emulators/vecx.yml Normal file
View File

@@ -0,0 +1,60 @@
emulator: vecx
type: libretro
source: "https://github.com/libretro/libretro-vecx"
cores:
- vecx
systems:
- gce-vectrex
notes: |
vecx is a GCE Vectrex emulator ported to libretro.
The Vectrex system ROM (8192 bytes) is fully embedded in the binary.
There are three compile-time BIOS variants in bios/:
- system.h (STANDARD_BIOS, default) - original Vectrex ROM
- fast.h (FAST_BIOS) - modified BIOS with faster boot
- skip.h - modified BIOS that skips the intro
The default build uses STANDARD_BIOS via #define at libretro.c:20.
At load time (retro_load_game, libretro.c:736):
memcpy(rom, bios_data, bios_data_size);
This copies the compiled-in BIOS data into the rom[8192] array
(vecx.c:40, mapped at 0xE000-0xFFFF via vecx.c:437-439).
The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and has
no code path to load an external BIOS file from disk. No .info file
is shipped with the repo declaring firmware requirements.
rom.dat in the repo root is identical to bios/system.bin (same MD5:
ab082fa8c8e632dd68589a8c7741388f), likely kept for standalone builds.
files: []
platform_details:
bios_mapping:
target: "0xE000-0xFFFF in Vectrex address space (8 KB)"
source_ref: "vecx.c:40 (unsigned char rom[8192]), vecx.c:437-439 (read handler)"
notes: |
CPU reads from 0xE000-0xFFFF are served from rom[] via
address & 0x1FFF masking. The array is populated from the
compiled-in bios_data at retro_load_game() time.
embedded_bios:
source_ref: "libretro.c:20-30, bios/system.h"
standard_bios:
md5: "ab082fa8c8e632dd68589a8c7741388f"
sha1: "65d07426b520ddd3115d40f255511e0fd2e20ae7"
size: 8192
fast_bios:
md5: "a970aed37cffd29ab3740f8e79518858"
sha1: "e0900be6d6858b985fd7f0999d864b2fceaf01a1"
size: 8192
skip_bios:
md5: "05f32c2b18b6fb168ab976989e86dfb1"
sha1: "6c891bd74acb201d54071b310bd6df6617cdf205"
size: 8192
notes: |
All three variants are 8192 bytes, compiled as C arrays in
bios/*.h headers. STANDARD_BIOS is the authentic Vectrex ROM.
FAST_BIOS and skip are modified versions for faster startup.
Selection is compile-time only (#ifdef chain, libretro.c:20-30).

934
emulators/vice.yml Normal file
View File

@@ -0,0 +1,934 @@
emulator: VICE
type: libretro
cores:
- vice_x64
- vice_x64sc
- vice_x64dtv
- vice_x128
- vice_xvic
- vice_xplus4
- vice_xpet
- vice_xcbm2
- vice_xcbm5x0
- vice_xscpu64
source: "https://github.com/libretro/vice-libretro"
systems:
- commodore-c64
- commodore-c128
- commodore-c64dtv
- commodore-vic20
- commodore-plus4
- commodore-pet
- commodore-cbm-ii
notes: |
VICE is a multi-machine Commodore emulator covering C64, C128, VIC-20,
Plus/4, PET, CBM-II, C64 DTV, and SuperCPU64. Each machine is built as a
separate libretro core.
All standard ROMs (kernal, basic, chargen, drive DOS, editor) are embedded
in the core binary via USE_EMBEDDED. External ROM files are NOT required
for normal operation. The embedded ROMs are compiled from vice/data/<machine>/
and ship with every build.
The core looks for optional external data in system/vice/<machine>/
(e.g. system/vice/C64/, system/vice/C128/). This is used for:
- JiffyDOS replacement kernals (proprietary, not included)
- SuperCPU external kernals (scpu-dos-1.4.bin, scpu-dos-2.04.bin)
- Cartridge images placed in system/vice/<machine>/
- Custom keymaps (.vkm files)
- Custom vicerc configuration
JiffyDOS support (C64/C64SC/C128/SCPU64 only):
Requires True Drive Emulation enabled and 1541/1571/1581 drive type.
ROMs are loaded from system/vice/:
- JiffyDOS_C64.bin (C64 kernal replacement)
- JiffyDOS_SX-64.bin (SX-64 model kernal replacement)
- JiffyDOS_C128.bin (C128 kernal replacement, C128 core only)
- JiffyDOS_1541-II.bin (1541-II drive DOS replacement)
- JiffyDOS_1571_repl310654.bin (1571 drive DOS replacement)
- JiffyDOS_1581.bin (1581 drive DOS replacement)
SuperCPU kernal (SCPU64 core only):
Option "SuperCPU Kernal" selects between Internal (embedded), 1.40, or 2.04.
External kernals loaded from system/vice/SCPU64/:
- scpu-dos-1.4.bin
- scpu-dos-2.04.bin
These files are blacklisted from the cartridge scanner to prevent accidental
loading as cartridges.
C128 libretro specifics: the C128 core reuses C64 ROM filenames for C64 mode
(basic-901226-01.bin, kernal-901227-03.bin) instead of the standalone VICE
names (basic64-901226-01.bin, kernal64-901227-03.bin). This is controlled
by #ifdef __LIBRETRO__ in c128rom.h.
Drive ROM notes: dos2000, dos4000, and CMDHD boot ROM are defined in
driverom.h but not shipped in vice/data/DRIVES/. These are for CMD hardware
(FD-2000, FD-4000, CMD HD) which are rare peripherals.
Source: retrodep/embedded/*.c (embedded ROM tables),
vice/src/*/rom.h (ROM name defines), vice/src/drive/driverom.h (drive ROMs),
retrodep/ui.c:274-315 (JiffyDOS loading), retrodep/ui.c:258-271 (SCPU kernal),
libretro/libretro-core.c:2800-2865 (core options for JiffyDOS/SCPU)
files:
# -------------------------------------------------------
# C64 ROMs (vice_x64, vice_x64sc)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/C64/basic-901226-01.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "C64 BASIC V2 ROM. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:31"
- name: "vice/C64/kernal-901227-03.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "C64 Kernal Rev 3 (default). Embedded in core."
source_ref: "vice/src/c64/c64rom.h:52"
- name: "vice/C64/kernal-901227-01.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "C64 Kernal Rev 1. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:50"
- name: "vice/C64/kernal-901227-02.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "C64 Kernal Rev 2. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:51"
- name: "vice/C64/kernal-390852-01.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "C64 GS (Games System) Kernal. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:53"
- name: "vice/C64/kernal-251104-04.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "SX-64 Kernal. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:54"
- name: "vice/C64/kernal-901246-01.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "PET64/Educator64 (4064) Kernal. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:55"
- name: "vice/C64/kernal-906145-02.bin"
system: commodore-c64
required: false
embedded: true
size: 8192
note: "C64 Japanese Kernal. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:49"
- name: "vice/C64/chargen-901225-01.bin"
system: commodore-c64
required: false
embedded: true
size: 4096
note: "C64 Character Generator ROM (default). Embedded in core."
source_ref: "vice/src/c64/c64rom.h:60"
- name: "vice/C64/chargen-906143-02.bin"
system: commodore-c64
required: false
embedded: true
size: 4096
note: "C64 Japanese Character Generator ROM. Embedded in core."
source_ref: "vice/src/c64/c64rom.h:61"
# -------------------------------------------------------
# C128 ROMs (vice_x128)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/C128/kernal-318020-05.bin"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal (default international). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:103"
- name: "vice/C128/kernal-315078-03.bin"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal German. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:105"
- name: "vice/C128/kernal-325172-01.bin"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal Swiss. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:104"
- name: "vice/C128/kernal-318034-01.bin"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal Swedish. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:110"
- name: "vice/C128/kernalfi"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal Finnish (unidentified part number). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:106"
- name: "vice/C128/kernalfr"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal French (unidentified part number). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:107"
- name: "vice/C128/kernalit"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal Italian (unidentified part number). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:108"
- name: "vice/C128/kernalno"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 Kernal Norwegian (unidentified part number). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:109"
- name: "vice/C128/basiclo-318018-04.bin"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 BASIC low (BASIC part). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:115"
- name: "vice/C128/basichi-318019-04.bin"
system: commodore-c128
required: false
embedded: true
size: 16384
note: "C128 BASIC high (Editor part). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:116"
- name: "vice/C128/basic-901226-01.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C64 BASIC V2 ROM, used by C128 in C64 mode. Libretro build uses C64 filename instead of basic64-901226-01.bin."
source_ref: "vice/src/c128/c128rom.h:123-127"
- name: "vice/C128/kernal-901227-03.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C64 Kernal Rev 3, used by C128 in C64 mode. Libretro build uses C64 filename instead of kernal64-901227-03.bin."
source_ref: "vice/src/c128/c128rom.h:130-134"
- name: "vice/C128/kernal64-325179-01.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 C64-mode Kernal Norwegian. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:136"
- name: "vice/C128/kernal64-325182-01.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 C64-mode Kernal Swedish. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:137"
- name: "vice/C128/chargen-390059-01.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 Character Generator (default international). Embedded in core."
source_ref: "vice/src/c128/c128rom.h:92"
- name: "vice/C128/chargen-315079-01.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 Character Generator German. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:95"
- name: "vice/C128/chargen-325167-02.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 Character Generator Italian/French/Belgian. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:93"
- name: "vice/C128/chargen-325173-01D.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 Character Generator Swiss. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:94"
- name: "vice/C128/chargen-325078-02.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 Character Generator Norwegian. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:99"
- name: "vice/C128/chargen-325181-01.bin"
system: commodore-c128
required: false
embedded: true
size: 8192
note: "C128 Character Generator Finnish/Swedish. Embedded in core."
source_ref: "vice/src/c128/c128rom.h:96"
# -------------------------------------------------------
# C64 DTV ROMs (vice_x64dtv)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/C64DTV/dtvrom.bin"
system: commodore-c64dtv
required: false
embedded: true
size: 2097152
note: "C64 DTV flash ROM (2 MB). Contains kernal, basic, chargen. Embedded in core."
source_ref: "vice/src/c64dtv/c64dtvflash.c:59-64"
- name: "vice/C64DTV/basic-901226-01.bin"
system: commodore-c64dtv
required: false
embedded: true
size: 8192
note: "C64 BASIC V2 ROM (DTV copy). Embedded in core."
source_ref: "vice/data/C64DTV/"
- name: "vice/C64DTV/chargen-901225-01.bin"
system: commodore-c64dtv
required: false
embedded: true
size: 4096
note: "C64 Character Generator (DTV copy). Embedded in core."
source_ref: "vice/data/C64DTV/"
- name: "vice/C64DTV/kernal-901227-03.bin"
system: commodore-c64dtv
required: false
embedded: true
size: 8192
note: "C64 Kernal Rev 3 (DTV copy). Embedded in core."
source_ref: "vice/data/C64DTV/"
# -------------------------------------------------------
# VIC-20 ROMs (vice_xvic)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/VIC20/basic-901486-01.bin"
system: commodore-vic20
required: false
embedded: true
size: 8192
note: "VIC-20 BASIC ROM. Embedded in core."
source_ref: "vice/src/vic20/vic20rom.h:43"
- name: "vice/VIC20/kernal.901486-07.bin"
system: commodore-vic20
required: false
embedded: true
size: 8192
note: "VIC-20 Kernal PAL (default). Embedded in core."
source_ref: "vice/src/vic20/vic20rom.h:53"
- name: "vice/VIC20/kernal.901486-06.bin"
system: commodore-vic20
required: false
embedded: true
size: 8192
note: "VIC-20 Kernal NTSC. Embedded in core."
source_ref: "vice/src/vic20/vic20rom.h:52"
- name: "vice/VIC20/kernal.901486-02.bin"
system: commodore-vic20
required: false
embedded: true
size: 8192
note: "VIC-20 Kernal Japanese NTSC Rev 2. Embedded in core."
source_ref: "vice/src/vic20/vic20rom.h:51"
- name: "vice/VIC20/chargen-901460-03.bin"
system: commodore-vic20
required: false
embedded: true
size: 4096
note: "VIC-20 Character Generator (default). Embedded in core."
source_ref: "vice/src/vic20/vic20rom.h:56"
- name: "vice/VIC20/chargen-901460-02.bin"
system: commodore-vic20
required: false
embedded: true
size: 4096
note: "VIC-20 Japanese Character Generator. Embedded in core."
source_ref: "vice/src/vic20/vic20rom.h:57"
# -------------------------------------------------------
# Plus/4 ROMs (vice_xplus4)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/PLUS4/basic-318006-01.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "Plus/4 BASIC ROM. Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:33"
- name: "vice/PLUS4/kernal-318004-05.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "Plus/4 Kernal PAL Rev 5 (default PAL). Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:36"
- name: "vice/PLUS4/kernal-318005-05.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "Plus/4 Kernal NTSC Rev 5 (default NTSC). Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:37"
- name: "vice/PLUS4/kernal-318004-01.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "Plus/4 Kernal NTSC Rev 1 (V232 prototype). Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:35"
- name: "vice/PLUS4/kernal-364.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "Commodore 364 prototype Kernal. Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:38"
- name: "vice/PLUS4/3plus1-317053-01.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "3-Plus-1 software ROM low. Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:40"
- name: "vice/PLUS4/3plus1-317054-01.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "3-Plus-1 software ROM high. Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:41"
- name: "vice/PLUS4/c2lo-364.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "Commodore 364 prototype function ROM low. Embedded in core."
source_ref: "vice/src/plus4/plus4rom.h:43"
# -------------------------------------------------------
# PET ROMs (vice_xpet)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/PET/basic-1.901439-09-05-02-06.bin"
system: commodore-pet
required: false
embedded: true
size: 8192
note: "PET BASIC 1.0 ROM (PET 2001). Embedded in core."
source_ref: "vice/src/pet/petrom.h:55"
- name: "vice/PET/basic-2.901465-01-02.bin"
system: commodore-pet
required: false
embedded: true
size: 8192
note: "PET BASIC 2.0 ROM. Embedded in core."
source_ref: "vice/src/pet/petrom.h:56"
- name: "vice/PET/basic-4.901465-23-20-21.bin"
system: commodore-pet
required: false
embedded: true
size: 12288
note: "PET BASIC 4.0 ROM. Embedded in core."
source_ref: "vice/src/pet/petrom.h:57"
- name: "vice/PET/kernal-1.901439-04-07.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "PET Kernal 1.0 (PET 2001). Embedded in core."
source_ref: "vice/src/pet/petrom.h:51"
- name: "vice/PET/kernal-2.901465-03.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "PET Kernal 2.0. Embedded in core."
source_ref: "vice/src/pet/petrom.h:52"
- name: "vice/PET/kernal-4.901465-22.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "PET Kernal 4.0. Embedded in core."
source_ref: "vice/src/pet/petrom.h:53"
- name: "vice/PET/edit-1-n.901439-03.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Editor 1.0 Normal (graphics keyboard). Embedded in core."
source_ref: "vice/src/pet/petrom.h:59"
- name: "vice/PET/edit-2-n.901447-24.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Editor 2.0 Normal (graphics keyboard). Embedded in core."
source_ref: "vice/src/pet/petrom.h:60"
- name: "vice/PET/edit-2-b.901474-01.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Editor 2.0 Business keyboard. Embedded in core."
source_ref: "vice/src/pet/petrom.h:61"
- name: "vice/PET/edit-4-40-n-50Hz.901498-01.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Editor 4.0, 40 col, Normal keyboard, 50Hz. Embedded in core."
source_ref: "vice/src/pet/petrom.h:62"
- name: "vice/PET/edit-4-40-b-50Hz.ts.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Editor 4.0, 40 col, Business keyboard, 50Hz. Embedded in core."
source_ref: "vice/src/pet/petrom.h:65"
- name: "vice/PET/edit-4-80-b-50Hz.901474-04_.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Editor 4.0, 80 col, Business keyboard, 50Hz. Embedded in core."
source_ref: "vice/src/pet/petrom.h:63"
- name: "vice/PET/characters-1.901447-08.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Character Generator 1 (original PET 2001). Embedded in core."
source_ref: "vice/src/pet/petrom.h:46"
- name: "vice/PET/characters-2.901447-10.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "PET Character Generator 2. Embedded in core."
source_ref: "vice/src/pet/petrom.h:47"
- name: "vice/PET/characters.901640-01.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "SuperPET Character Generator. Embedded in core."
source_ref: "vice/src/pet/petrom.h:48"
- name: "vice/PET/waterloo-a000.901898-01.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "SuperPET Waterloo microEngine 6809 ROM at $A000. Embedded in core."
source_ref: "vice/src/pet/petrom.h:75"
- name: "vice/PET/waterloo-b000.901898-02.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "SuperPET Waterloo microEngine 6809 ROM at $B000. Embedded in core."
source_ref: "vice/src/pet/petrom.h:76"
- name: "vice/PET/waterloo-c000.901898-03.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "SuperPET Waterloo microEngine 6809 ROM at $C000. Embedded in core."
source_ref: "vice/src/pet/petrom.h:77"
- name: "vice/PET/waterloo-d000.901898-04.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "SuperPET Waterloo microEngine 6809 ROM at $D000. Embedded in core."
source_ref: "vice/src/pet/petrom.h:78"
- name: "vice/PET/waterloo-e000.901897-01.bin"
system: commodore-pet
required: false
embedded: true
size: 2048
note: "SuperPET Waterloo microEngine 6809 ROM at $E000. Embedded in core."
source_ref: "vice/src/pet/petrom.h:79"
- name: "vice/PET/waterloo-f000.901898-05.bin"
system: commodore-pet
required: false
embedded: true
size: 4096
note: "SuperPET Waterloo microEngine 6809 ROM at $F000. Embedded in core."
source_ref: "vice/src/pet/petrom.h:80"
# -------------------------------------------------------
# CBM-II ROMs (vice_xcbm2, vice_xcbm5x0)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/CBM-II/basic-901242+3-04a.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 16384
note: "CBM-II BASIC 128 (CBM 610/620/710/720). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:41"
- name: "vice/CBM-II/basic-901240+1-03.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 16384
note: "CBM-II BASIC 256 (CBM 710/720 with 256K). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:42"
- name: "vice/CBM-II/basic-901235+6-02.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 16384
note: "CBM-II BASIC 500 (CBM 510/P500). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:43"
- name: "vice/CBM-II/kernal-901244-04a.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 8192
note: "CBM-II Kernal (CBM 610/620/710/720). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:45"
- name: "vice/CBM-II/kernal-901234-02.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 8192
note: "CBM-II Kernal 500 (CBM 510/P500). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:46"
- name: "vice/CBM-II/chargen-901225-01.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 4096
note: "CBM-II Character Generator 500 (VIC-II based, CBM 510/P500). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:37"
- name: "vice/CBM-II/chargen-901237-01.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 4096
note: "CBM-II Character Generator 600 (CBM 610/620). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:38"
- name: "vice/CBM-II/chargen-901232-01.bin"
system: commodore-cbm-ii
required: false
embedded: true
size: 4096
note: "CBM-II Character Generator 700 (CBM 710/720). Embedded in core."
source_ref: "vice/src/cbm2/cbm2rom.h:39"
# -------------------------------------------------------
# SCPU64 ROMs (vice_xscpu64)
# chargen embedded, SCPU ROM embedded as "scpu64"
# -------------------------------------------------------
- name: "vice/SCPU64/scpu64"
system: commodore-c64
required: false
embedded: true
size: 65536
note: "SuperCPU64 internal ROM (default). Embedded in core."
source_ref: "retrodep/ui.c:269"
- name: "vice/SCPU64/chargen-901225-01.bin"
system: commodore-c64
required: false
embedded: true
size: 4096
note: "C64 Character Generator (used by SCPU64). Embedded in core."
source_ref: "vice/src/scpu64/scpu64rom.h:36"
- name: "vice/SCPU64/chargen-906143-02.bin"
system: commodore-c64
required: false
embedded: true
size: 4096
note: "C64 Japanese Character Generator (used by SCPU64). Embedded in core."
source_ref: "vice/src/scpu64/scpu64rom.h:37"
- name: "vice/SCPU64/scpu-dos-1.4.bin"
system: commodore-c64
required: false
embedded: false
note: "SuperCPU DOS v1.40 external kernal. Optional, selected via core option. Goes in system/vice/SCPU64/."
source_ref: "retrodep/ui.c:266, libretro/libretro-core.c:2823"
- name: "vice/SCPU64/scpu-dos-2.04.bin"
system: commodore-c64
required: false
embedded: false
note: "SuperCPU DOS v2.04 external kernal. Optional, selected via core option. Goes in system/vice/SCPU64/."
source_ref: "retrodep/ui.c:263, libretro/libretro-core.c:2825"
# -------------------------------------------------------
# Drive ROMs (shared across all cores with True Drive Emulation)
# embedded in binary, listed for reference
# -------------------------------------------------------
- name: "vice/DRIVES/dos1540-325302+3-01.bin"
system: commodore-c64
required: false
embedded: true
size: 16384
note: "1540 drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:88"
- name: "vice/DRIVES/dos1541-325302-01+901229-05.bin"
system: commodore-c64
required: false
embedded: true
size: 16384
note: "1541 drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:89"
- name: "vice/DRIVES/dos1541ii-251968-03.bin"
system: commodore-c64
required: false
embedded: true
size: 16384
note: "1541-II drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:90"
- name: "vice/DRIVES/dos1551-318008-01.bin"
system: commodore-plus4
required: false
embedded: true
size: 16384
note: "1551 drive DOS ROM (Plus/4 specific). Embedded in core."
source_ref: "vice/src/drive/driverom.h:92"
- name: "vice/DRIVES/dos1570-315090-01.bin"
system: commodore-c64
required: false
embedded: true
size: 32768
note: "1570 drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:93"
- name: "vice/DRIVES/dos1571-310654-05.bin"
system: commodore-c64
required: false
embedded: true
size: 32768
note: "1571 drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:94"
- name: "vice/DRIVES/dos1571cr-318047-01.bin"
system: commodore-c128
required: false
embedded: true
size: 32768
note: "1571CR drive DOS ROM (cost-reduced, C128D internal). Embedded in core."
source_ref: "vice/src/drive/driverom.h:95"
- name: "vice/DRIVES/dos1581-318045-02.bin"
system: commodore-c64
required: false
embedded: true
size: 32768
note: "1581 drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:96"
- name: "vice/DRIVES/dos1001-901887+8-01.bin"
system: commodore-pet
required: false
embedded: true
size: 16384
note: "CBM 1001 (SFD-1001) drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:70"
- name: "vice/DRIVES/dos2031-901484-03+05.bin"
system: commodore-pet
required: false
embedded: true
size: 16384
note: "CBM 2031 drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:73"
- name: "vice/DRIVES/dos2040-901468-06+07.bin"
system: commodore-pet
required: false
embedded: true
size: 8192
note: "CBM 2040 dual drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:76"
- name: "vice/DRIVES/dos3040-901468-11-13.bin"
system: commodore-pet
required: false
embedded: true
size: 12288
note: "CBM 3040 dual drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:79"
- name: "vice/DRIVES/dos4040-901468-14-16.bin"
system: commodore-pet
required: false
embedded: true
size: 12288
note: "CBM 4040 dual drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:82"
- name: "vice/DRIVES/dos9000-300516+7-revC.bin"
system: commodore-pet
required: false
embedded: true
size: 16384
note: "CBM D9090/D9060 hard drive DOS ROM. Embedded in core."
source_ref: "vice/src/drive/driverom.h:85"
# -------------------------------------------------------
# JiffyDOS ROMs (optional, proprietary, not included)
# C64/C64SC/C128/SCPU64 cores only
# -------------------------------------------------------
- name: "vice/JiffyDOS_C64.bin"
system: commodore-c64
required: false
embedded: false
note: "JiffyDOS C64 kernal replacement. Optional, proprietary. Requires True Drive Emulation + 1541/1571/1581 drive."
source_ref: "retrodep/ui.c:302, libretro/libretro-core.c:2853"
- name: "vice/JiffyDOS_SX-64.bin"
system: commodore-c64
required: false
embedded: false
note: "JiffyDOS SX-64 kernal replacement. Used instead of JiffyDOS_C64.bin when SX-64 model is selected."
source_ref: "retrodep/ui.c:295"
- name: "vice/JiffyDOS_C128.bin"
system: commodore-c128
required: false
embedded: false
note: "JiffyDOS C128 kernal replacement. Optional, proprietary. C128 core only."
source_ref: "retrodep/ui.c:309, libretro/libretro-core.c:2855"
- name: "vice/JiffyDOS_1541-II.bin"
system: commodore-c64
required: false
embedded: false
note: "JiffyDOS 1541-II drive ROM replacement. Optional, proprietary."
source_ref: "retrodep/ui.c:283"
- name: "vice/JiffyDOS_1571_repl310654.bin"
system: commodore-c64
required: false
embedded: false
note: "JiffyDOS 1571 drive ROM replacement. Optional, proprietary."
source_ref: "retrodep/ui.c:285"
- name: "vice/JiffyDOS_1581.bin"
system: commodore-c64
required: false
embedded: false
note: "JiffyDOS 1581 drive ROM replacement. Optional, proprietary."
source_ref: "retrodep/ui.c:287"
rom_path: "system/vice/"
machine_directories:
vice_x64: "C64"
vice_x64sc: "C64"
vice_x64dtv: "C64DTV"
vice_x128: "C128"
vice_xvic: "VIC20"
vice_xplus4: "PLUS4"
vice_xpet: "PET"
vice_xcbm2: "CBM-II"
vice_xcbm5x0: "CBM-II"
vice_xscpu64: "SCPU64"

80
emulators/vircon32.yml Normal file
View File

@@ -0,0 +1,80 @@
emulator: Vircon32
type: libretro
source: "https://github.com/vircon32/vircon32-libretro"
cores:
- vircon32
systems:
- vircon32
notes: |
Vircon32 is a libretro core for the Vircon32 fantasy console, a 32-bit
virtual game console with fixed hardware specs (60 fps, 640x360, 16
sound channels, up to 4 gamepads).
The Standard BIOS v1.2 is embedded directly into the core binary as a
C header (embedded/StandardBios.h), generated from Assets/StandardBios.v32
at build time. The core never strictly requires an external BIOS file.
BIOS loading logic (libretro.cpp:416-429):
1. Check if system_dir/Vircon32Bios.v32 exists on disk
2. If found, load it via Console.LoadBiosFile() (external override)
3. If not found, load the embedded BIOS via LoadEmbeddedBios()
This runs inside context_reset() (libretro.cpp:473-474), which is called
whenever the OpenGL context is (re)created.
The BIOS file format is a V32 ROM with a specific signature
(ROMFileFormat::BiosSignature). It must contain exactly 1 texture and
1 sound. The loader validates the signature, file structure, and version
compatibility before loading program ROM, video ROM and audio ROM
(V32Console.cpp:259-431).
The external BIOS file allows users to replace the boot animation with
a custom one. Game compatibility is not affected by BIOS choice.
files:
- name: "Vircon32Bios.v32"
system: vircon32
description: "Vircon32 console BIOS (custom override)"
required: false
size: 1073060
md5: "73f04397cbb2dafcf2047b19a856153a"
sha1: "67ddbcd018f03ed74b6e013074d92cc5f1f51c80"
source_ref: "libretro.cpp:423-426"
notes: |
Optional external BIOS placed in the system directory root.
If present, overrides the embedded Standard BIOS v1.2.
The hashes above correspond to the Standard BIOS v1.2 bundled
in Assets/StandardBios.v32 of the source repo. Custom BIOSes
will have different hashes but must follow the V32 BIOS format.
platform_details:
embedded_bios:
version: "Standard BIOS v1.2"
source_ref: "libretro.cpp:28, Assets/StandardBios.v32"
file_size: 1073060
md5: "73f04397cbb2dafcf2047b19a856153a"
sha1: "67ddbcd018f03ed74b6e013074d92cc5f1f51c80"
notes: |
The standard BIOS is compiled into the core binary as
embedded_StandardBios[] via a generated header file. It provides
the boot animation (Vircon32 logo + startup sound). LoadEmbeddedBios()
writes the raw bytes into a stringstream and passes it to
Console.LoadBiosData().
bios_format:
source_ref: "VirconDefinitions/FileFormats.hpp, V32Console.cpp:259-431"
notes: |
A V32 BIOS ROM file must have:
- BiosSignature in the header (distinct from CartridgeSignature)
- Exactly 1 texture (boot screen graphics)
- Exactly 1 sound (boot sound)
- Program ROM, Video ROM and Audio ROM in sequential layout
The loader validates all of this before accepting the file.
cartridge_format:
extensions: "v32"
source_ref: "V32Console.cpp:468-696"
notes: |
Cartridges use CartridgeSignature with up to 256 textures and
1024 sounds. Program ROM can be up to 128M words (512 MB).

112
emulators/virtualjaguar.yml Normal file
View File

@@ -0,0 +1,112 @@
emulator: Virtual Jaguar
type: libretro
source: "https://github.com/libretro/virtualjaguar-libretro"
cores:
- virtualjaguar
systems:
- atari-jaguar
notes: |
Virtual Jaguar embeds all BIOS ROMs directly in the source code as C arrays
(bin2c generated). No external BIOS files are loaded at runtime. The core
selects between K-series and M-series boot ROMs based on vjs.biosType,
then copies 0x20000 bytes to jagMemSpace + 0xE00000 (libretro.c:902-904).
The "BIOS" core option (virtualjaguar_bios, disabled by default) controls
whether the embedded boot ROM is executed at startup. When enabled, the
boot ROM entry point is copied to jaguarMainRAM (jaguar.c:644-645).
When disabled, jaguarRunAddress is written directly, skipping the boot
animation. Either way the embedded ROM data is always present in memory.
The jagBootPath and CDBootPath fields in VJSettings exist in the struct
(settings.h:36-37) but are never populated or used in the libretro port.
No call to RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY or fopen for BIOS files.
Jaguar CD emulation: the CD boot ROM (jaguarCDBootROM, 0x40000 bytes) is
also embedded but Jaguar CD support is incomplete in this core. The
cdrom.c references "CD BIOS" in comments only.
No external BIOS files are required or loaded by this core.
files: []
analysis:
embedded_bios:
k_series_boot_rom:
source_file: src/jagbios.c
header: src/jagbios.h
symbol: jaguarBootROM
size: 131072 # 0x20000, 128 KB
description: "Jaguar K-series boot ROM"
filedb_crc: "0xFB731AAA"
filedb_name: "[BIOS] Atari Jaguar (World)"
m_series_boot_rom:
source_file: src/jagbios2.c
header: src/jagbios2.h
symbol: jaguarBootROM2
size: 131072 # 0x20000, 128 KB
description: "Jaguar M-series boot ROM"
cd_boot_rom:
source_file: src/jagcdbios.c
header: src/jagcdbios.h
symbol: jaguarCDBootROM
size: 262144 # 0x40000, 256 KB
description: "Jaguar CD boot ROM"
filedb_crc: "0x687068D5"
filedb_name: "[BIOS] Atari Jaguar CD (World)"
stubulator_93:
source_file: src/jagstub1bios.c
header: src/jagstub1bios.h
symbol: jaguarDevBootROM1
size: 131072 # 0x20000, 128 KB
description: "Jaguar Stubulator '93 dev BIOS"
filedb_crc: "0xE60277BB"
filedb_name: "[BIOS] Atari Jaguar Stubulator '93 (World)"
stubulator_94:
source_file: src/jagstub2bios.c
header: src/jagstub2bios.h
symbol: jaguarDevBootROM2
size: 131072 # 0x20000, 128 KB
description: "Jaguar Stubulator '94 dev BIOS"
filedb_crc: "0x8D15DBC6"
filedb_name: "[BIOS] Atari Jaguar Stubulator '94 (World)"
dev_cd_boot_rom:
source_file: src/jagdevcdbios.c
header: src/jagdevcdbios.h
symbol: jaguarDevCDBootROM
size: 262144 # 0x40000, 256 KB
description: "Jaguar Developer CD boot ROM"
filedb_crc: "0x55A0669C"
filedb_name: "[BIOS] Atari Jaguar Developer CD (World)"
bios_type_enum:
source_ref: "settings.h:46"
values:
- BT_K_SERIES
- BT_M_SERIES
- BT_STUBULATOR_1
- BT_STUBULATOR_2
core_option:
key: virtualjaguar_bios
label: "BIOS"
description: "Use the Jaguar BIOS, required for some games."
default: disabled
source_ref: "libretro_core_options.h:123"
bios_loading:
mechanism: embedded
load_address: "0xE00000"
load_size: "0x20000"
source_ref: "libretro.c:902-904"
selection_logic: "biosType == BT_K_SERIES ? jaguarBootROM : jaguarBootROM2"
external_loading: false
notes: |
jagBootPath and CDBootPath struct fields are never set in the libretro
port. The standalone Virtual Jaguar GUI uses them but that code path
is not compiled into the libretro core.

295
emulators/vita3k.yml Normal file
View File

@@ -0,0 +1,295 @@
# Vita3K emulator firmware profile
# Generated from source analysis of https://github.com/Vita3K/Vita3K
# Commit analyzed: HEAD as of 2026-03-17
emulator: Vita3K
type: standalone
source: "https://github.com/Vita3K/Vita3K"
systems: [sony-playstation-vita]
firmware_file: "PSVUPDAT.PUP"
firmware_source: "https://www.playstation.com/en-us/support/hardware/psvita/system-software/"
firmware_detection: "pup_decrypt"
firmware_install: "decrypts PUP, extracts FAT/exFAT images into os0/, vs0/, sa0/, pd0/"
validation:
method: "pup_decrypt_and_extract"
source_ref: "vita3k/packages/src/pup.cpp:260-314"
note: >
PUP is decrypted using SCE keys (register_keys), then four filesystem images are
extracted: os0.img (FAT), pd0.img (exFAT), sa0.img (FAT), vs0.img (FAT).
Each image is mounted to its respective partition path.
firmware_version:
path: "PUP_DEC/PUP/version.txt"
source_ref: "vita3k/packages/src/pup.cpp:303-309"
note: "Read from version.txt inside the decrypted PUP during installation"
# Firmware partitions extracted from PSVUPDAT.PUP
partitions:
os0:
image: "os0.img"
filesystem: "FAT"
source_ref: "vita3k/packages/src/pup.cpp:293"
note: "Core OS partition. Contains kernel modules and low-level system components."
vs0:
image: "vs0.img"
filesystem: "FAT"
source_ref: "vita3k/packages/src/pup.cpp:299"
note: >
Main system partition. Contains firmware modules (sys/external/*.suprx),
system apps (app/), LiveArea resources, themes, and system configuration.
directories:
sys_external:
path: "vs0/sys/external/"
source_ref: "vita3k/modules/module_parent.cpp:332"
note: >
Primary firmware module directory. Modules are loaded as .suprx files.
RPCS3-style LLE/HLE toggle: Vita3K can load real firmware modules (LLE)
or use built-in reimplementations (HLE) per module.
app:
path: "vs0/app/"
note: "System applications (settings, browser, store, etc)"
data_internal:
path: "vs0/data/internal/"
note: "Internal system data: themes, LiveArea defaults"
files:
- {path: "theme/", purpose: "Default system themes"}
- {path: "livearea/default/sce_sys/icon0.png", purpose: "Default app icon"}
sa0:
image: "sa0.img"
filesystem: "FAT"
source_ref: "vita3k/packages/src/pup.cpp:297"
note: "System assets partition. Contains firmware fonts (PVF files)."
directories:
fonts:
path: "sa0/data/font/pvf/"
source_ref: "vita3k/gui/src/gui.cpp:228-267"
note: >
PS Vita system fonts in PVF format (PlayStation Vita Font). Used for
system UI, LiveArea, and games that use the sceFt2/libpvf font API.
Without these, Vita3K falls back to bundled open-source fonts.
files:
- {name: "ltn0.pvf", type: "Latin Regular", required: true, note: "Primary UI font, checked at startup"}
- {name: "jpn0.pvf", type: "Japanese", required: false}
- {name: "kr0.pvf", type: "Korean", required: false}
- {name: "cn0.pvf", type: "Chinese Simplified", required: false}
pd0:
image: "pd0.img"
filesystem: "exFAT"
source_ref: "vita3k/packages/src/pup.cpp:295"
note: "System data partition. Contains system BGM and other data."
files:
- {path: "data/systembgm/initialsetup.at9", purpose: "Initial setup background music"}
# Firmware modules (vs0/sys/external/*.suprx)
firmware_modules:
# Auto-LLE modules (loaded from firmware by default)
auto_lle:
source_ref: "vita3k/module/src/load_module.cpp:142-161"
note: "These modules are automatically loaded via LLE when firmware is present"
modules:
- {id: "SCE_SYSMODULE_HTTP", libs: ["libhttp"]}
- {id: "SCE_SYSMODULE_SSL", libs: ["libssl"]}
- {id: "SCE_SYSMODULE_HTTPS", libs: ["libhttp", "libssl"]}
- {id: "SCE_SYSMODULE_ULT", libs: ["libult"]}
- {id: "SCE_SYSMODULE_SAS", libs: ["libsas"]}
- {id: "SCE_SYSMODULE_PGF", libs: ["libpgf"]}
- {id: "SCE_SYSMODULE_FIOS2", libs: ["libfios2"]}
- {id: "SCE_SYSMODULE_SYSTEM_GESTURE", libs: ["libsystemgesture"]}
- {id: "SCE_SYSMODULE_XML", libs: ["libSceXml"]}
- {id: "SCE_SYSMODULE_SQLITE", libs: ["libSceSqlite"]}
- {id: "SCE_SYSMODULE_RUDP", libs: ["librudp"]}
- {id: "SCE_SYSMODULE_NET_ADHOC_MATCHING", libs: ["adhoc_matching"]}
- {id: "SCE_SYSMODULE_MP4", libs: ["libscemp4"]}
- {id: "SCE_SYSMODULE_ATRAC", libs: ["libatrac"]}
- {id: "SCE_SYSMODULE_FACE", libs: ["libface"]}
- {id: "SCE_SYSMODULE_SMART", libs: ["libsmart"]}
- {id: "SCE_SYSMODULE_AVPLAYER", libs: ["libsceavplayer", "libscemp4"]}
- {id: "SCE_SYSMODULE_JSON", libs: ["libSceJson"]}
# Always-LLE preload modules
preload:
source_ref: "vita3k/interface.cpp:497-504, vita3k/module/src/load_module.cpp:187"
note: "These modules are always loaded from firmware (LLE), never HLE"
modules:
- {name: "libc", note: "C standard library"}
- {name: "libSceFt2", note: "FreeType2 font engine"}
- {name: "libpvf", note: "PlayStation Vita Font library"}
- {name: "libcdlg", note: "Common dialog library"}
# All registered sysmodule mappings
sysmodule_map:
source_ref: "vita3k/module/src/load_module.cpp:25-109"
note: "Complete mapping of SCE_SYSMODULE IDs to firmware library filenames"
modules:
# Networking
- {id: "SCE_SYSMODULE_NET", libs: ["libnet", "libnetctl"]}
- {id: "SCE_SYSMODULE_HTTP", libs: ["libhttp"]}
- {id: "SCE_SYSMODULE_SSL", libs: ["libssl"]}
- {id: "SCE_SYSMODULE_HTTPS", libs: ["libhttp", "libssl"]}
# Performance / Threading
- {id: "SCE_SYSMODULE_PERF", libs: ["libperf"]}
- {id: "SCE_SYSMODULE_FIBER", libs: ["libfiber"]}
- {id: "SCE_SYSMODULE_ULT", libs: ["libult"]}
# Debug
- {id: "SCE_SYSMODULE_DBG", libs: ["librazorcapture_es4", "librazorhud_es4"]}
- {id: "SCE_SYSMODULE_RAZOR_CAPTURE", libs: ["librazorcapture_es4"]}
- {id: "SCE_SYSMODULE_RAZOR_HUD", libs: ["librazorhud_es4"]}
# Audio
- {id: "SCE_SYSMODULE_NGS", libs: ["libngs"]}
- {id: "SCE_SYSMODULE_SULPHA", libs: ["libsulpha"]}
- {id: "SCE_SYSMODULE_SAS", libs: ["libsas"]}
- {id: "SCE_SYSMODULE_AUDIOCODEC", libs: ["libaudiocodec"]}
- {id: "SCE_SYSMODULE_AACENC", libs: ["libnaac"]}
- {id: "SCE_SYSMODULE_ATRAC", libs: ["libatrac"]}
- {id: "SCE_SYSMODULE_VOICE", libs: ["libvoice"]}
- {id: "SCE_SYSMODULE_VOICEQOS", libs: ["libvoiceqos"]}
# Font / Text
- {id: "SCE_SYSMODULE_PGF", libs: ["libpgf"]}
- {id: "SCE_SYSMODULE_IME", libs: ["libime"]}
- {id: "SCE_SYSMODULE_HANDWRITING", libs: ["libhandwriting"]}
# System
- {id: "SCE_SYSMODULE_APPUTIL", libs: ["apputil"]}
- {id: "SCE_SYSMODULE_FIOS2", libs: ["libfios2"]}
- {id: "SCE_SYSMODULE_SYSTEM_GESTURE", libs: ["libsystemgesture"]}
- {id: "SCE_SYSMODULE_LOCATION", libs: ["liblocation"]}
- {id: "SCE_SYSMODULE_CLIPBOARD", libs: ["libclipboard"]}
- {id: "SCE_SYSMODULE_TRIGGER_UTIL", libs: ["trigger_util"]}
- {id: "SCE_SYSMODULE_LIVEAREA", libs: ["livearea_util"]}
- {id: "SCE_SYSMODULE_BG_APP_UTIL", libs: ["bgapputil"]}
- {id: "SCE_SYSMODULE_INCOMING_DIALOG", libs: ["incoming_dialog"]}
- {id: "SCE_SYSMODULE_IPMI", libs: ["libipmi_nongame"]}
- {id: "SCE_SYSMODULE_NOTIFICATION_UTIL", libs: ["notification_util"]}
- {id: "SCE_SYSMODULE_SHUTTER_SOUND", libs: ["libSceShutterSound"]}
- {id: "SCE_SYSMODULE_SCREEN_SHOT", libs: ["libSceScreenShot"]}
# PlayStation Network
- {id: "SCE_SYSMODULE_NP_BASIC", libs: ["np_basic"]}
- {id: "SCE_SYSMODULE_NP", libs: ["np_common", "np_manager", "np_basic"]}
- {id: "SCE_SYSMODULE_NP_COMMERCE2", libs: ["np_commerce2"]}
- {id: "SCE_SYSMODULE_NP_UTILITY", libs: ["np_utility"]}
- {id: "SCE_SYSMODULE_NP_MATCHING2", libs: ["np_matching2"]}
- {id: "SCE_SYSMODULE_NP_SCORE_RANKING", libs: ["np_ranking"]}
- {id: "SCE_SYSMODULE_NP_ACTIVITY", libs: ["np_activity_sdk"]}
- {id: "SCE_SYSMODULE_NP_TROPHY", libs: ["np_trophy"]}
- {id: "SCE_SYSMODULE_NP_MESSAGE", libs: ["np_message_padding", "np_message"]}
- {id: "SCE_SYSMODULE_NP_PARTY", libs: ["np_party"]}
- {id: "SCE_SYSMODULE_NP_TUS", libs: ["np_tus"]}
- {id: "SCE_SYSMODULE_NP_SNS_FACEBOOK", libs: ["np_sns_facebook"]}
- {id: "SCE_SYSMODULE_NP_SIGNALING", libs: ["np_signaling"]}
- {id: "SCE_SYSMODULE_NP_WEBAPI", libs: ["np_webapi"]}
# Media
- {id: "SCE_SYSMODULE_MP4", libs: ["libscemp4"]}
- {id: "SCE_SYSMODULE_AVPLAYER", libs: ["libsceavplayer", "libscemp4"]}
- {id: "SCE_SYSMODULE_AVCDEC", libs: ["avcdec_for_player"]}
- {id: "SCE_SYSMODULE_MP4_RECORDER", libs: ["libSceMp4Rec"]}
- {id: "SCE_SYSMODULE_PHOTO_EXPORT", libs: ["libScePhotoExport"]}
- {id: "SCE_SYSMODULE_VIDEO_EXPORT", libs: ["libSceVideoExport"]}
- {id: "SCE_SYSMODULE_MUSIC_EXPORT", libs: ["libSceMusicExport"]}
# Other
- {id: "SCE_SYSMODULE_XML", libs: ["libSceXml"]}
- {id: "SCE_SYSMODULE_JSON", libs: ["libSceJson"]}
- {id: "SCE_SYSMODULE_SQLITE", libs: ["libSceSqlite"]}
- {id: "SCE_SYSMODULE_RUDP", libs: ["librudp"]}
- {id: "SCE_SYSMODULE_NET_ADHOC_MATCHING", libs: ["adhoc_matching"]}
- {id: "SCE_SYSMODULE_PSPNET_ADHOC", libs: ["pspnet_adhoc"]}
- {id: "SCE_SYSMODULE_FACE", libs: ["libface"]}
- {id: "SCE_SYSMODULE_SMART", libs: ["libsmart"]}
- {id: "SCE_SYSMODULE_MARLIN", libs: ["libmln"]}
- {id: "SCE_SYSMODULE_MARLIN_DOWNLOADER", libs: ["libmlndownloader"]}
- {id: "SCE_SYSMODULE_MARLIN_APP_LIB", libs: ["libmlnapplib"]}
- {id: "SCE_SYSMODULE_TELEPHONY_UTIL", libs: ["libSceTelephonyUtil"]}
- {id: "SCE_SYSMODULE_DTCP_IP", libs: ["libSceDtcpIp"]}
- {id: "SCE_SYSMODULE_VIDEO_SEARCH_EMPR", libs: ["libSceVideoSearchEmpr"]}
- {id: "SCE_SYSMODULE_BEISOBMF", libs: ["libSceBeisobmf"]}
- {id: "SCE_SYSMODULE_BEMP2SYS", libs: ["libSceBemp2sys"]}
- {id: "SCE_SYSMODULE_NEAR_UTIL", libs: ["libScenNearUtil"]}
- {id: "SCE_SYSMODULE_NEAR_DIALOG_UTIL", libs: ["libSceNearDialogUtil"]}
- {id: "SCE_SYSMODULE_LOCATION_EXTENSION", libs: ["liblocation_extension"]}
- {id: "SCE_SYSMODULE_MAIL_API", libs: ["mail_api_for_local_libc"]}
- {id: "SCE_SYSMODULE_TELEPORT_CLIENT", libs: ["libSceTeleportClient"]}
- {id: "SCE_SYSMODULE_TELEPORT_SERVER", libs: ["libSceTeleportServer"]}
- {id: "SCE_SYSMODULE_APPUTIL_EXT", libs: ["apputil_ext"]}
- {id: "SCE_SYSMODULE_CODECENGINE_PERF", libs: ["libcodecengine_perf"]}
# Internal sysmodule mappings
internal_modules:
source_ref: "vita3k/module/src/load_module.cpp:114-136"
modules:
- {id: "SCE_SYSMODULE_INTERNAL_JPEG_ENC_ARM", libs: ["libscejpegencarm"]}
- {id: "SCE_SYSMODULE_INTERNAL_AUDIOCODEC", libs: ["audiocodec"]}
- {id: "SCE_SYSMODULE_INTERNAL_BXCE", libs: ["bXCe"]}
- {id: "SCE_SYSMODULE_INTERNAL_INI_FILE_PROCESSOR", libs: ["ini_file_processor"]}
- {id: "SCE_SYSMODULE_INTERNAL_NP_ACTIVITY_NET", libs: ["np_activity"]}
- {id: "SCE_SYSMODULE_INTERNAL_PAF", libs: ["libpaf"]}
- {id: "SCE_SYSMODULE_INTERNAL_SQLITE_VSH", libs: ["sqlite"]}
- {id: "SCE_SYSMODULE_INTERNAL_DBUTIL", libs: ["dbutil"]}
- {id: "SCE_SYSMODULE_INTERNAL_ACTIVITY_DB", libs: ["activity_db"]}
- {id: "SCE_SYSMODULE_INTERNAL_COMMON_GUI_DIALOG", libs: ["common_gui_dialog"]}
- {id: "SCE_SYSMODULE_INTERNAL_MSG_DIALOG", libs: ["libcdlg_msg"]}
- {id: "SCE_SYSMODULE_INTERNAL_SAVEDATA_DIALOG", libs: ["libcdlg_savedata"]}
- {id: "SCE_SYSMODULE_INTERNAL_IME_DIALOG", libs: ["libcdlg_ime"]}
- {id: "SCE_SYSMODULE_INTERNAL_COMMON_DIALOG_MAIN", libs: ["libcdlg_main"]}
- {id: "SCE_SYSMODULE_INTERNAL_DB_RECOVERY_UTILITY", libs: ["dbrecovery_utility"]}
- {id: "SCE_SYSMODULE_INTERNAL_DRM_PSM_KDC", libs: ["psmkdc"]}
- {id: "SCE_SYSMODULE_INTERNAL_LOCATION_INTERNAL", libs: ["liblocation_internal"]}
# IO device layout (full Vita filesystem)
io_devices:
source_ref: "vita3k/io/include/io/VitaIoDevice.h:22-50"
firmware_partitions:
- {device: "os0", purpose: "Core OS kernel modules"}
- {device: "vs0", purpose: "System firmware modules and apps"}
- {device: "sa0", purpose: "System assets (fonts)"}
- {device: "pd0", purpose: "System data (BGM, resources)"}
user_partitions:
- {device: "ux0", purpose: "Main storage (memory card)"}
- {device: "ur0", purpose: "Internal user storage"}
- {device: "uma0", purpose: "USB mass storage (PSTV)"}
- {device: "imc0", purpose: "Internal memory card (Slim)"}
- {device: "grw0", purpose: "Game card (writable area)"}
- {device: "gro0", purpose: "Game card (read-only area)"}
app_partitions:
- {device: "app0", purpose: "Current running application"}
- {device: "addcont0", purpose: "Additional content (DLC)"}
- {device: "savedata0", purpose: "Save data (slot 0)"}
- {device: "savedata1", purpose: "Save data (slot 1)"}
# Fallback fonts when firmware is not installed
fallback_fonts:
source_ref: "vita3k/gui/src/gui.cpp:276-318"
path: "data/fonts/"
files:
- {name: "mplus-1mn-bold.ttf", purpose: "Primary fallback monospaced font"}
- {name: "SourceHanSansSC-Bold-Min.ttf", purpose: "Chinese fallback font"}
- {name: "neodgm.ttf", purpose: "Korean fallback font"}
note: "Open-source fonts bundled with Vita3K, used when firmware fonts (sa0) are not installed"
notes: |
Vita3K requires the official PS Vita firmware (PSVUPDAT.PUP) from Sony for full
compatibility. The firmware is decrypted using SCE keys and extracted into four
partition images: os0 (kernel), vs0 (system), sa0 (assets), pd0 (data).
The most important firmware components are:
1. vs0/sys/external/*.suprx - Firmware modules loaded by games
2. sa0/data/font/pvf/*.pvf - System fonts (ltn0.pvf is checked at startup)
3. vs0/data/internal/ - LiveArea resources and default themes
Vita3K uses a hybrid LLE/HLE approach:
- Some modules (libc, libSceFt2, libpvf, libcdlg) are always loaded from firmware (LLE)
- Others can be toggled between LLE and HLE per module via settings
- Without firmware, many games will fail to load required modules
The module loading path is: first check app0:sce_module/{name}.suprx (game-bundled),
then fall back to vs0:sys/external/{name}.suprx (firmware). This allows games to
ship their own module versions.
CLI firmware install: vita3k --firmware /path/to/PSVUPDAT.PUP
GUI: File > Install Firmware
Vita3K does not have a libretro core. It is standalone only.

80
emulators/x1.yml Normal file
View File

@@ -0,0 +1,80 @@
emulator: "X Millennium"
type: libretro
source: "https://github.com/libretro/xmil-libretro"
cores:
- x1
systems:
- sharp-x1
# X Millennium (XMIL) is a Sharp X1 series emulator by yui. The libretro port
# supports X1, X1 Turbo, and X1 TurboZ models via the "X1_ROMTYPE" core option
# (values: X1, TURBO, TURBOZ; default: X1 = ROM_TYPE 1).
#
# All system files go under: <system_dir>/xmil/
# (libretro.c:597 builds the path as "<system_dir>/xmil")
#
# IPL ROM loading (memio.c:88-116):
# ROM_TYPE 0: uses built-in default IPL (575 bytes, basic boot stub from defipl.res)
# ROM_TYPE 1 (X1): loads xmil/IPLROM.X1 (32 KB)
# ROM_TYPE 2 (Turbo): loads xmil/IPLROM.X1T (32 KB)
# ROM_TYPE 3 (TurboZ): loads xmil/IPLROM.X1T (32 KB, same file as Turbo)
# If the file is missing, the core falls back to the built-in default IPL.
#
# Font loading (font.c:90-127, fontx1.c:70-123):
# font_load() calls x1fontread() which looks for font files using fontopen().
# fontopen() resolves paths relative to the working directory (file_getcd()),
# which in libretro context is the xmil subdirectory.
# Built-in defaults (defrom_ank, defrom_txt) are used for basic ASCII rendering.
# External font ROMs add full Japanese character support.
#
# The .info file only lists IPLROM.X1 and IPLROM.X1T as required BIOS files.
# Font ROMs are optional -- the core renders basic text without them but Japanese
# kanji display requires the external font files.
notes: |
Place all files in: <system_dir>/xmil/
The core selects between IPLROM.X1 and IPLROM.X1T based on the "X1_ROMTYPE"
core option. A built-in fallback IPL exists but lacks full boot functionality.
Font files are optional; without them, kanji/JIS characters won't render.
files:
# -- IPL ROMs --
- name: IPLROM.X1
path: xmil/IPLROM.X1
size: 32768
md5: eeeea1cd29c6e0e8b094790ae969bfa7
required: true
note: "X1 IPL ROM (32 KB). Loaded when ROM_TYPE=1 (X1 model). Listed in .info."
source_ref: "io/memio.c:82,96-103"
- name: IPLROM.X1T
path: xmil/IPLROM.X1T
size: 32768
md5: 851e4a5936f17d13f8c39a980cf00d77
required: true
note: "X1 Turbo/TurboZ IPL ROM (32 KB). Loaded when ROM_TYPE=2 or 3. Listed in .info."
source_ref: "io/memio.c:83,97-99"
# -- Font ROMs (optional, for Japanese text rendering) --
- name: FNT0808.X1
path: xmil/FNT0808.X1
size: 2048
required: false
note: "8x8 ANK font ROM (2 KB). Provides half-width ASCII/kana characters."
source_ref: "font/fontdata.c:6, font/fontx1.c:79-87"
- name: FNT0816.X1
path: xmil/FNT0816.X1
size: 4096
required: false
note: "8x16 ANK font ROM (4 KB). Provides taller half-width characters for text mode."
source_ref: "font/fontdata.c:7, font/fontx1.c:89-103"
- name: FNT1616.X1
path: xmil/FNT1616.X1
size: 306176
required: false
note: "16x16 Kanji font ROM (~299 KB). Full JIS kanji character set for Japanese text."
source_ref: "font/fontdata.c:8, font/fontx1.c:105-120"

75
emulators/xemu.yml Normal file
View File

@@ -0,0 +1,75 @@
emulator: Xemu
type: standalone
source: "https://github.com/xemu-project/xemu"
systems: [microsoft-xbox]
notes: |
Xemu is a free, open-source Xbox emulator based on QEMU.
Three firmware files are required for operation: MCPX boot ROM,
flash ROM (BIOS), and EEPROM image. A pre-built HDD image is
also needed. The EEPROM can be auto-generated by xemu if not
provided. Config stored in xemu.toml under sys.files section.
files:
- name: "mcpx_1.0.bin"
description: "MCPX HLE boot ROM (v1.0)"
required: true
size: 512
source_ref: "hw/xbox/xbox.c:151 (bootrom_size != 512 -> error)"
config_key: "sys.files.bootrom_path"
notes: |
Overlaid on the last 512 bytes of the flash ROM region at boot.
Mapped to 0xFFFFFE00-0xFFFFFFFF. Disabled after early init
via LPC config register write (hw/xbox/xbox_pci.c:362).
Machine property: -machine xbox,bootrom=<path>
- name: "Complex_4627.bin"
description: "Xbox flash ROM / BIOS (256 KB, kernel 4627)"
required: true
size_options: [262144, 524288, 1048576]
size_note: "Must be a multiple of 64 KB. Default 256 KB."
source_ref: "hw/xbox/xbox.c:70-81 (bios_name, bios_size validation)"
config_key: "sys.files.flashrom_path"
notes: |
Loaded as -bios argument (system/vl.c:3052-3053).
Mapped to 0xFF000000-0xFFFFFFFF with mirroring.
Common variants: Complex_4627 (1.0), Complex_4034 (debug),
Complex_4817 (1.1). Any valid Xbox BIOS dump works.
- name: "eeprom.bin"
description: "Xbox EEPROM dump (256 bytes)"
required: false
size: 256
source_ref: "system/vl.c:2939 (size != 256 -> error)"
config_key: "sys.files.eeprom_path"
notes: |
Loaded via smbus-storage device (hw/xbox/smbus_storage.c:157).
Auto-generated as XBOX_EEPROM_VERSION_R1 if missing
(system/vl.c:2918-2919). Default path: <config_dir>/eeprom.bin.
Contains serial, MAC, HDD key, region, video standard.
Structure defined in hw/xbox/eeprom_generation.h.
- name: "xbox_hdd.qcow2"
description: "Xbox HDD image (8 GB, qcow2 format)"
required: true
source_ref: "system/vl.c:3060-3073 (hdd_path loading)"
config_key: "sys.files.hdd_path"
notes: |
Attached as IDE drive index=0 with locked=on.
Must contain Xbox partitions (C, E, X, Y, Z).
Pre-built images available from xemu project.
Not a BIOS file - excluded from retrobios packs.
machine_properties:
bootrom: "MCPX boot ROM path (string)"
avpack: "Video connector type: composite, scart, svideo, vga, rfu, hdtv, none"
short-animation: "Skip Xbox boot animation (bool)"
smc-version: "SMC version string, 3 chars, default P01"
video-encoder: "Video encoder chip: conexant (default), focus, xcalibur"
source_ref: "hw/xbox/xbox.c:446-497"
memory_layout:
ram: "64 MB or 128 MB (configurable via sys.mem_limit)"
flash_rom: "0xFF000000-0xFFFFFFFF (mirrored per bios_size)"
mcpx_overlay: "Last bios_size bytes, overlays flash ROM at reset"
source_ref: "hw/xbox/xbox.c:64-173"

View File

@@ -15,6 +15,7 @@ platforms:
source_format: clrmamepro_dat
hash_type: sha1
schedule: weekly
emulators: [pcsx_rearmed, beetle_psx, genesis_plus_gx, flycast, melonds, mgba, snes9x, mupen64plus, beetle_saturn, dolphin]
batocera:
config: batocera.yml
@@ -52,6 +53,7 @@ platforms:
source_format: bash_script+csv
hash_type: md5
schedule: weekly
emulators: [duckstation, pcsx2, dolphin, rpcs3, ppsspp, cemu, xemu, vita3k, citra, melonds]
# dragoonDorise/EmuDeck = official repo (creator's account, 3.4k stars)
# EmuDeck/emudeck.github.io = official wiki (org account)

View File

@@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Emulator BIOS Profile",
"type": "object",
"required": ["emulator", "source", "systems", "files"],
"properties": {
"emulator": { "type": "string" },
"type": {
"type": "string",
"enum": ["standalone", "libretro", "standalone + libretro"]
},
"source": { "type": "string", "format": "uri" },
"systems": {
"type": "array",
"items": { "type": "string" }
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string" },
"region": { "type": "string" },
"required": { "type": "boolean", "default": false },
"md5": { "type": "string", "pattern": "^[a-fA-F0-9]{32}$" },
"sha1": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
"size": { "type": "integer" },
"source_ref": { "type": "string" },
"note": { "type": "string" }
}
}
}
}
}

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