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.
This commit is contained in:
Abdessamad Derraz
2026-03-17 19:39:19 +01:00
parent 4bc7085c1c
commit 99581d8aba
10 changed files with 712 additions and 0 deletions

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

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

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.

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

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.

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

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"

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

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.

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"