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.
This commit is contained in:
Abdessamad Derraz
2026-03-17 19:56:51 +01:00
parent 60d9d38d69
commit ff82f64cb6
14 changed files with 1499 additions and 0 deletions

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.

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."

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."

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)."

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"

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."

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)"

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.

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"

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.

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).