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.
This commit is contained in:
Abdessamad Derraz
2026-03-17 19:27:35 +01:00
parent 8768aed7aa
commit 9eede1c957
10 changed files with 761 additions and 0 deletions

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: []

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.

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)

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"

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.

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.

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.

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"