mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
feat: add 10 emulator profiles (batch 3)
freechaf (Channel F, 3 ROMs), freeintv (Intellivision, exec+grom), ep128emu (Enterprise/TVC/CPC/ZX, 22 ROMs all built-in), kronos (Saturn + 14 ST-V blobs), gambatte (GB/GBC boot ROMs), mgba (GBA/GB/GBC/SGB, 10 CRC32 revisions), nestopia (FDS + NstDatabase), px68k (X68000, 6 ROMs in keropi/), fuse (ZX Spectrum, 17 machines), o2em (Odyssey2/Videopac, 4 BIOS by CRC32) 41 total profiles. Cross-reference: 644 undeclared, 167 in repo.
This commit is contained in:
309
emulators/ep128emu.yml
Normal file
309
emulators/ep128emu.yml
Normal file
@@ -0,0 +1,309 @@
|
||||
emulator: ep128emu-core
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/ep128emu-core"
|
||||
cores:
|
||||
- ep128emu_core
|
||||
systems:
|
||||
- enterprise-64
|
||||
- enterprise-128
|
||||
- videoton-tvc
|
||||
- amstrad-cpc
|
||||
- zx-spectrum
|
||||
|
||||
# ep128emu-core emulates Enterprise 64/128, Videoton TVC, Amstrad CPC 464/664/6128,
|
||||
# and ZX Spectrum 48/128. All ROMs are optional because the core ships built-in
|
||||
# fallback ROMs compiled into roms.hpp. External ROM files override the built-ins
|
||||
# and provide better accuracy for some systems.
|
||||
#
|
||||
# ROM path: <system_dir>/ep128emu/roms/
|
||||
#
|
||||
# Machine selection (core/core.cpp:62-118):
|
||||
# Content file extension determines machine type:
|
||||
# .cas/.tap/.bas/.128/.com/.trn -> Enterprise
|
||||
# .tvcwav/.cas(TVC) -> Videoton TVC
|
||||
# .cdt/.tzx -> Amstrad CPC or ZX Spectrum (autodetect)
|
||||
# .img/.dsk -> Enterprise disk (default) or CPC/TVC depending on content
|
||||
#
|
||||
# Enterprise ROM layout (core/core.cpp:195-307):
|
||||
# EP128 (default): exos21.rom (segments 0-1) + basic21.rom (segment 4/5)
|
||||
# EP64: exos20.rom (segments 0-1) + basic20.rom (segment 4/5)
|
||||
# EP128 enhanced: exos24uk.rom (segments 0-3, 64K)
|
||||
# Disk mode: exdos13.rom (segments 0x20-0x21)
|
||||
# IS-DOS mode: exdos14isdos10uk.rom (segments 0x20-0x21)
|
||||
# File I/O mode: epfileio.rom (segment 0x10)
|
||||
# DTF mode: zt19uk.rom (segments 0x40-0x41)
|
||||
# Hungarian locale: hun.rom + epdos16f.rom
|
||||
# German locale: brd.rom
|
||||
#
|
||||
# Built-in fallbacks (roms/roms.hpp:46516-46538):
|
||||
# All 22 ROMs have compiled-in defaults. The core prepends "_default_" to
|
||||
# the filename and looks up the builtin_rom map when no external file is found.
|
||||
# This means the core works out of the box without any user-supplied ROMs.
|
||||
#
|
||||
# TOSEC alternate names (core/core.hpp:80-118):
|
||||
# The core tries TOSEC naming conventions as fallback before using built-in ROMs.
|
||||
# For example exos21.rom -> "Expandible OS v2.1 (1985)(Intelligent Software).bin"
|
||||
# CPC ROMs can also be split into page-sized files (OS.ROM + BASIC.ROM).
|
||||
|
||||
notes: |
|
||||
All ROMs go under <system_dir>/ep128emu/roms/. The core has built-in ROM
|
||||
fallbacks for every file, so it works without any user-supplied ROMs.
|
||||
External ROMs provide byte-exact originals vs the built-in copies.
|
||||
|
||||
Enterprise EP128 is the default machine. EP64 is selected when content
|
||||
requires it. Machine type can also be forced via core options.
|
||||
|
||||
Hungarian and German locale ROMs are loaded automatically when content
|
||||
metadata indicates the locale. The IS-DOS disk system is an alternative
|
||||
to the standard EXDOS disk controller.
|
||||
|
||||
files:
|
||||
# ============================================================
|
||||
# Enterprise 64/128 - EXOS (Expandible OS)
|
||||
# ============================================================
|
||||
|
||||
- name: exos21.rom
|
||||
path: ep128emu/roms/exos21.rom
|
||||
md5: f36f24cbb87745fbd2714e4df881db09
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "Enterprise 128 EXOS 2.1. Default OS for EP128 machines."
|
||||
source_ref: "core/core.cpp:234-237"
|
||||
|
||||
- name: exos20.rom
|
||||
path: ep128emu/roms/exos20.rom
|
||||
md5: 5ad3baaad3b5156d6b60b34229a676fb
|
||||
required: false
|
||||
system: enterprise-64
|
||||
has_builtin: true
|
||||
note: "Enterprise 64 EXOS 2.0. Used when EP64 machine type is selected."
|
||||
source_ref: "core/core.cpp:226-229"
|
||||
|
||||
- name: exos24uk.rom
|
||||
path: ep128emu/roms/exos24uk.rom
|
||||
md5: 55af78f877a21ca45eb2df68a74fcc60
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "Enterprise 128 EXOS 2.4 (UK). Used when enhanced ROM mode is enabled. 64K, loaded across segments 0-3."
|
||||
source_ref: "core/core.cpp:214-221"
|
||||
|
||||
# ============================================================
|
||||
# Enterprise 64/128 - BASIC interpreter
|
||||
# ============================================================
|
||||
|
||||
- name: basic21.rom
|
||||
path: ep128emu/roms/basic21.rom
|
||||
md5: e972fe42b398c9ff1d93ff014786aec6
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "Enterprise 128 BASIC 2.1. Loaded when cartridge mode is active (default)."
|
||||
source_ref: "core/core.cpp:248,276"
|
||||
|
||||
- name: basic20.rom
|
||||
path: ep128emu/roms/basic20.rom
|
||||
md5: 8e18edce4a7acb2c33cc0ab18f988482
|
||||
required: false
|
||||
system: enterprise-64
|
||||
has_builtin: true
|
||||
note: "Enterprise 64 BASIC 2.0. Used with EP64 machine type."
|
||||
source_ref: "core/core.cpp:246,264,274"
|
||||
|
||||
# ============================================================
|
||||
# Enterprise 64/128 - disk controllers
|
||||
# ============================================================
|
||||
|
||||
- name: exdos13.rom
|
||||
path: ep128emu/roms/exdos13.rom
|
||||
md5: ddff70c014d1958dc75378b6c9aab6f8
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "EXDOS 1.3 disk controller. Loaded for EP128_DISK and EP64_DISK modes. 32K across segments 0x20-0x21."
|
||||
source_ref: "core/core.cpp:303-306"
|
||||
|
||||
- name: exdos14isdos10uk.rom
|
||||
path: ep128emu/roms/exdos14isdos10uk.rom
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "EXDOS 1.4 + IS-DOS 1.0 (UK). Used for IS-DOS disk mode instead of exdos13.rom."
|
||||
source_ref: "core/core.cpp:295-298"
|
||||
|
||||
# ============================================================
|
||||
# Enterprise 64/128 - file I/O and extensions
|
||||
# ============================================================
|
||||
|
||||
- name: epfileio.rom
|
||||
path: ep128emu/roms/epfileio.rom
|
||||
md5: a68ebcbc73a4d2178d755b7755bf18fe
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
bundled: true
|
||||
note: "Direct file I/O extension. Loaded for EP128_FILE and EP64_FILE modes. Source included in roms/ directory."
|
||||
source_ref: "core/core.cpp:283-284"
|
||||
|
||||
- name: zt19uk.rom
|
||||
path: ep128emu/roms/zt19uk.rom
|
||||
md5: 228540b6be83ae2acd7569c8ff0f91d0
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "ZozoTools 1.9 (UK). Loaded for DTF (direct tape file) mode. 32K across segments 0x40-0x41."
|
||||
source_ref: "core/core.cpp:287-290"
|
||||
|
||||
# ============================================================
|
||||
# Enterprise 64/128 - locale extensions
|
||||
# ============================================================
|
||||
|
||||
- name: hun.rom
|
||||
path: ep128emu/roms/hun.rom
|
||||
md5: 22167938f142c222f40992839aa21a06
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "Hungarian language extension. Auto-loaded when content locale is Hungarian."
|
||||
source_ref: "core/core.cpp:242-243"
|
||||
|
||||
- name: epdos16f.rom
|
||||
path: ep128emu/roms/epdos16f.rom
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "EP-DOS 1.6f. Provides HFONT and CLKOFF for Hungarian locale. 32K across segments 0x06-0x07."
|
||||
source_ref: "core/core.cpp:252-255"
|
||||
|
||||
- name: brd.rom
|
||||
path: ep128emu/roms/brd.rom
|
||||
md5: 6af0402906944fd134004b85097c8524
|
||||
required: false
|
||||
system: enterprise-128
|
||||
has_builtin: true
|
||||
note: "German (BRD) language extension. Auto-loaded when content locale is German."
|
||||
source_ref: "core/core.cpp:260-261"
|
||||
|
||||
# ============================================================
|
||||
# Enterprise 64/128 - optional extras (in .info, not in source)
|
||||
# ============================================================
|
||||
|
||||
- name: epd19hft.rom
|
||||
path: ep128emu/roms/epd19hft.rom
|
||||
md5: 12cfc9c7e48c8a16c2e09edbd926d467
|
||||
required: false
|
||||
system: enterprise-128
|
||||
note: "EP-DOS 1.9 with Hungarian font. Listed in .info file as optional firmware."
|
||||
source_ref: "ep128emu_core_libretro.info:firmware8"
|
||||
|
||||
- name: zt19hfnt.rom
|
||||
path: ep128emu/roms/zt19hfnt.rom
|
||||
md5: 653daaf7b9b29c2c4e577f489580f247
|
||||
required: false
|
||||
system: enterprise-128
|
||||
note: "ZozoTools 1.9 with Hungarian font. Listed in .info file as optional firmware."
|
||||
source_ref: "ep128emu_core_libretro.info:firmware9"
|
||||
|
||||
# ============================================================
|
||||
# Videoton TVC
|
||||
# ============================================================
|
||||
|
||||
- name: tvc22_sys.rom
|
||||
path: ep128emu/roms/tvc22_sys.rom
|
||||
md5: 8c54285f541930cde766069942bad0f2
|
||||
required: false
|
||||
system: videoton-tvc
|
||||
has_builtin: true
|
||||
note: "TVC system ROM v2.2. Main BIOS for all TVC modes."
|
||||
source_ref: "core/core.cpp:313-314"
|
||||
|
||||
- name: tvc22_ext.rom
|
||||
path: ep128emu/roms/tvc22_ext.rom
|
||||
md5: 5ce95a26ceed5bec73995d83568da9cf
|
||||
required: false
|
||||
system: videoton-tvc
|
||||
has_builtin: true
|
||||
note: "TVC extension ROM v2.2. Loaded alongside tvc22_sys.rom."
|
||||
source_ref: "core/core.cpp:315-316"
|
||||
|
||||
- name: tvcfileio.rom
|
||||
path: ep128emu/roms/tvcfileio.rom
|
||||
md5: a2cf86ba8e7fc58b242137fe59036832
|
||||
required: false
|
||||
system: videoton-tvc
|
||||
has_builtin: true
|
||||
bundled: true
|
||||
note: "TVC direct file I/O extension. Used for TVC64_FILE mode. Source included in roms/ directory."
|
||||
source_ref: "core/core.cpp:319-320"
|
||||
|
||||
- name: tvc_dos12d.rom
|
||||
path: ep128emu/roms/tvc_dos12d.rom
|
||||
md5: 88dc7876d584f90e4106f91444ab23b7
|
||||
required: false
|
||||
system: videoton-tvc
|
||||
has_builtin: true
|
||||
note: "TVC DOS 1.2d. Loaded for TVC64_DISK mode."
|
||||
source_ref: "core/core.cpp:324-325"
|
||||
|
||||
# ============================================================
|
||||
# Amstrad CPC
|
||||
# ============================================================
|
||||
|
||||
- name: cpc464.rom
|
||||
path: ep128emu/roms/cpc464.rom
|
||||
md5: a993f85b88ac4350cf4d41554e87fe4f
|
||||
required: false
|
||||
system: amstrad-cpc
|
||||
has_builtin: true
|
||||
note: "CPC 464 combined ROM (OS + BASIC). 32K loaded at segments 0x10 (OS) and 0x00 (BASIC) with offset."
|
||||
source_ref: "core/core.cpp:335-338"
|
||||
|
||||
- name: cpc664.rom
|
||||
path: ep128emu/roms/cpc664.rom
|
||||
md5: 5a384a2310f472c7857888371c00ed66
|
||||
required: false
|
||||
system: amstrad-cpc
|
||||
has_builtin: true
|
||||
note: "CPC 664 combined ROM (OS + BASIC). Used for CPC_664_DISK mode."
|
||||
source_ref: "core/core.cpp:343-346"
|
||||
|
||||
- name: cpc6128.rom
|
||||
path: ep128emu/roms/cpc6128.rom
|
||||
md5: b96280dc6c95a48857b4b8eb931533ae
|
||||
required: false
|
||||
system: amstrad-cpc
|
||||
has_builtin: true
|
||||
note: "CPC 6128 combined ROM (OS + BASIC). Default CPC machine when no specific model requested."
|
||||
source_ref: "core/core.cpp:352-355"
|
||||
|
||||
- name: cpc_amsdos.rom
|
||||
path: ep128emu/roms/cpc_amsdos.rom
|
||||
md5: 25629dfe870d097469c217b95fdc1c95
|
||||
required: false
|
||||
system: amstrad-cpc
|
||||
has_builtin: true
|
||||
note: "AMSDOS disk controller ROM. Loaded for CPC_DISK and CPC_664_DISK modes."
|
||||
source_ref: "core/core.cpp:359-360"
|
||||
|
||||
# ============================================================
|
||||
# ZX Spectrum
|
||||
# ============================================================
|
||||
|
||||
- name: zx128.rom
|
||||
path: ep128emu/roms/zx128.rom
|
||||
md5: 85fede415f4294cc777517d7eada482e
|
||||
required: false
|
||||
system: zx-spectrum
|
||||
has_builtin: true
|
||||
note: "ZX Spectrum 128K ROM. 32K loaded at segments 0x00-0x01."
|
||||
source_ref: "core/core.cpp:382-385"
|
||||
|
||||
- name: zx48.rom
|
||||
path: ep128emu/roms/zx48.rom
|
||||
md5: 4c42a2f075212361c3117015b107ff68
|
||||
required: false
|
||||
system: zx-spectrum
|
||||
has_builtin: true
|
||||
note: "ZX Spectrum 48K ROM. Used for ZX16 and ZX48 modes."
|
||||
source_ref: "core/core.cpp:389-390"
|
||||
81
emulators/freechaf.yml
Normal file
81
emulators/freechaf.yml
Normal file
@@ -0,0 +1,81 @@
|
||||
emulator: FreeChaF
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/FreeChaF"
|
||||
cores:
|
||||
- freechaf
|
||||
systems:
|
||||
- fairchild-channelf
|
||||
|
||||
notes: |
|
||||
FreeChaF is a Fairchild Channel F emulator ported to libretro.
|
||||
|
||||
BIOS loading is in src/libretro.c:186-208. The core first tries to load
|
||||
sl90025.bin (Channel F II PSU1) at address 0x000. If that fails, it falls
|
||||
back to sl31253.bin (original Channel F PSU1) at the same address. PSU2
|
||||
(sl31254.bin) is always loaded at address 0x400.
|
||||
|
||||
Memory layout from src/memory.h:27-30:
|
||||
0x000-0x3FF PSU1 ROM (sl31253 or sl90025)
|
||||
0x400-0x7FF PSU2 ROM (sl31254)
|
||||
0x800-0x1FFF cartridge ROM
|
||||
0x2000+ VRAM
|
||||
|
||||
If either PSU ROM fails to load, the core switches to experimental HLE
|
||||
(high-level emulation) for that PSU. A warning message is shown to the
|
||||
user recommending real BIOS files. HLE state is tracked per-PSU via
|
||||
hle_state.psu1_hle and hle_state.psu2_hle (src/channelf_hle.c).
|
||||
|
||||
The .info file declares all three firmware files as required (opt=false),
|
||||
but the core does not abort on missing BIOS -- it falls back to HLE.
|
||||
|
||||
files:
|
||||
- name: "sl31253.bin"
|
||||
system: fairchild-channelf
|
||||
required: false
|
||||
md5: ac9804d4c0e9d07e33472e3726ed15c3
|
||||
size: 1024 # 1 KB, fills 0x000-0x3FF
|
||||
note: "Channel F PSU1 ROM (original). Fallback if sl90025.bin is missing."
|
||||
source_ref: "src/libretro.c:192"
|
||||
|
||||
- name: "sl31254.bin"
|
||||
system: fairchild-channelf
|
||||
required: false
|
||||
md5: da98f4bb3242ab80d76629021bb27585
|
||||
size: 1024 # 1 KB, fills 0x400-0x7FF
|
||||
note: "Channel F PSU2 ROM. Always loaded at address 0x400."
|
||||
source_ref: "src/libretro.c:202"
|
||||
|
||||
- name: "sl90025.bin"
|
||||
system: fairchild-channelf
|
||||
required: false
|
||||
md5: 95d339631d867c8f1d15a5f2ec26069d
|
||||
size: 1024 # 1 KB, fills 0x000-0x3FF
|
||||
note: "Channel F II PSU1 ROM. Tried first, preferred over sl31253.bin."
|
||||
source_ref: "src/libretro.c:186"
|
||||
|
||||
platform_details:
|
||||
bios_mapping:
|
||||
target: "0x000-0x7FF in 64K memory space"
|
||||
source_ref: "src/memory.h:27-29, src/memory.c:30-61"
|
||||
notes: |
|
||||
MEMORY_loadSysROM_libretro() reads the file and copies it into
|
||||
Memory[] at the given address offset. PSU1 is loaded at 0x000,
|
||||
PSU2 at 0x400. The loader caps file size to (MEMORY_SIZE - address)
|
||||
to prevent overflow. MEMORY_RAMStart is advanced past the loaded
|
||||
ROM to protect it from writes.
|
||||
|
||||
hle_fallback:
|
||||
source_ref: "src/channelf_hle.c"
|
||||
notes: |
|
||||
When BIOS files are missing, FreeChaF uses HLE to emulate the
|
||||
PSU routines in software. This is marked as experimental and may
|
||||
cause compatibility issues with some games. Each PSU can
|
||||
independently fall back to HLE.
|
||||
|
||||
load_priority:
|
||||
source_ref: "src/libretro.c:186-198"
|
||||
notes: |
|
||||
PSU1 loading order: sl90025.bin (Channel F II) first, then
|
||||
sl31253.bin (original Channel F) as fallback. If both fail,
|
||||
HLE is used. sl90025.bin is the preferred BIOS as it includes
|
||||
Channel F II improvements.
|
||||
71
emulators/freeintv.yml
Normal file
71
emulators/freeintv.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
emulator: FreeIntv
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/FreeIntv"
|
||||
cores:
|
||||
- freeintv
|
||||
systems:
|
||||
- intellivision
|
||||
|
||||
notes: |
|
||||
FreeIntv is a Mattel Intellivision emulator for libretro.
|
||||
|
||||
BIOS loading happens in retro_init() (src/libretro.c:1166-1174). The core
|
||||
calls retro_get_system_directory() then joins exec.bin and grom.bin paths
|
||||
directly. No subdirectory, no core option to disable BIOS loading.
|
||||
|
||||
loadExec() in src/intv.c:47-71 reads exec.bin as big-endian 16-bit words
|
||||
into memory range 0x1000-0x1FFF (Executive ROM, 8 KB file).
|
||||
|
||||
loadGrom() in src/intv.c:73-98 reads grom.bin as raw bytes into memory
|
||||
range 0x3000-0x37FF (Graphics ROM, 2 KB file).
|
||||
|
||||
Both files are required. Without them the core prints an error and shows
|
||||
"PUT GROM/EXEC IN SYSTEM DIRECTORY" on the OSD, but does not abort.
|
||||
Games will not run correctly without both BIOS files.
|
||||
|
||||
The .info file declares firmware_count = 2 with both marked opt = false.
|
||||
|
||||
No ECS (Entertainment Computer System) BIOS support exists in this core.
|
||||
There is no ecs.bin loading code anywhere in the source.
|
||||
|
||||
files:
|
||||
- name: "exec.bin"
|
||||
system: intellivision
|
||||
required: true
|
||||
size: 8192 # 8 KB (4096 x 16-bit words, 0x1000-0x1FFF)
|
||||
md5: 62e761035cb657903761800f4437b8af
|
||||
note: "Executive ROM. Big-endian 16-bit words loaded at 0x1000-0x1FFF."
|
||||
source_ref: "src/intv.c:47-71, src/libretro.c:1169"
|
||||
|
||||
- name: "grom.bin"
|
||||
system: intellivision
|
||||
required: true
|
||||
size: 2048 # 2 KB (bytes, 0x3000-0x37FF)
|
||||
md5: 0cd5946c6473e42e8e4c2137785e427f
|
||||
note: "Graphics ROM. Raw bytes loaded at 0x3000-0x37FF."
|
||||
source_ref: "src/intv.c:73-98, src/libretro.c:1173"
|
||||
|
||||
platform_details:
|
||||
bios_mapping:
|
||||
exec:
|
||||
target: "0x1000-0x1FFF (Executive ROM)"
|
||||
format: "big-endian 16-bit words"
|
||||
source_ref: "src/intv.c:55-58"
|
||||
grom:
|
||||
target: "0x3000-0x37FF (Graphics ROM)"
|
||||
format: "raw 8-bit bytes"
|
||||
source_ref: "src/intv.c:81-84"
|
||||
notes: |
|
||||
Memory[] is a 64K array of unsigned int (src/memory.c:26).
|
||||
EXEC region (0x1000-0x1FFF) is write-protected in writeMem()
|
||||
(src/memory.c:60-61). GROM region (0x3000-0x37FF) is also
|
||||
write-protected (src/memory.c:62).
|
||||
|
||||
cartridge_loading:
|
||||
formats: "int, bin, rom"
|
||||
methods: "Intellicart (magic byte 0xA8), raw ROM with fingerprint DB"
|
||||
source_ref: "src/cart.c"
|
||||
notes: |
|
||||
Raw ROMs use a fingerprint database (sum of first 256 bytes)
|
||||
to select one of 10 memory map configurations (load0-load9).
|
||||
Intellicart format is auto-detected by 0xA8 magic byte.
|
||||
396
emulators/fuse.yml
Normal file
396
emulators/fuse.yml
Normal file
@@ -0,0 +1,396 @@
|
||||
emulator: Fuse
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/fuse-libretro"
|
||||
cores:
|
||||
- fuse
|
||||
systems:
|
||||
- sinclair-zxspectrum
|
||||
|
||||
notes: |
|
||||
Fuse (Free Unix Spectrum Emulator) ported to libretro. Emulates the ZX
|
||||
Spectrum family: 16K, 48K, 48K NTSC, 128K, +2, +2A, +3, +3e, SE, Timex
|
||||
TC2048, TC2068, TS2068, Pentagon 128K/512K/1024, and Scorpion 256K.
|
||||
|
||||
ROM loading is in src/compat/file.c:91-118. The core first checks an
|
||||
internal table of embedded ROMs (mem_entries[]). If the ROM filename is
|
||||
not found there, it falls back to the filesystem at
|
||||
{system_dir}/fuse/{rom_filename} (file.c:160-175).
|
||||
|
||||
Embedded ROMs cover 48K-family, 128K, +2, +3, +3e, SE, TC2048, TC2068.
|
||||
Pentagon, Scorpion, and peripheral ROMs are NOT embedded and must be
|
||||
placed in {system_dir}/fuse/ by the user.
|
||||
|
||||
Default ROM filenames are set in fuse/settings.c:209-260. Each machine
|
||||
type loads its ROMs during reset via machine_load_rom() calls in
|
||||
fuse/machines/*.c files.
|
||||
|
||||
The +2A reuses the +3 ROMs (plus3-0/1/2/3.rom) per settings.c:234-237.
|
||||
The TS2068 reuses TC2068 ROMs (tc2068-0/1.rom) per settings.c:257-258.
|
||||
Spectrum 16K uses 48.rom per settings.c:211.
|
||||
|
||||
files:
|
||||
# -- Embedded ROMs (compiled into the core, not required on disk) --
|
||||
|
||||
- name: "fuse/48.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 4c42a2f075212361c3117015b107ff68
|
||||
sha1: 5ea7c2b824672e914525d1d5c419d71b84a426a2
|
||||
size: 16384
|
||||
note: "Spectrum 48K ROM. Also used for 16K and 48K NTSC. Embedded in core."
|
||||
source_ref: "fuse/settings.c:211-212, fuse/machines/spec48.c:76"
|
||||
|
||||
- name: "fuse/128-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: b4d2692115a9f2924df92a3cbfb358fb
|
||||
sha1: 4f4b11ec22326280bdb96e3baf9db4b4cb1d02c5
|
||||
size: 16384
|
||||
note: "Spectrum 128K ROM 0 (editor). Embedded in core."
|
||||
source_ref: "fuse/settings.c:209, fuse/machines/spec128.c:70"
|
||||
|
||||
- name: "fuse/128-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 6e09e5d3c4aef166601669feaaadc01c
|
||||
sha1: 80080644289ed93d71a1103992a154cc9802b2fa
|
||||
size: 16384
|
||||
note: "Spectrum 128K ROM 1 (48 BASIC). Embedded in core."
|
||||
source_ref: "fuse/settings.c:210, fuse/machines/spec128.c:73"
|
||||
|
||||
- name: "fuse/plus2-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 4ed7af4636308b8a48d7a35e6c5b546b
|
||||
sha1: 72703f9a3e734f3c23ec34c0727aae4ccbef9a91
|
||||
size: 16384
|
||||
note: "Spectrum +2 ROM 0. Embedded in core."
|
||||
source_ref: "fuse/settings.c:232, fuse/machines/specplus2.c:70"
|
||||
|
||||
- name: "fuse/plus2-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: b3db95931cc844efaeb82db9c171b9f3
|
||||
sha1: de8b0d2d0379cfe7c39322a086ca6da68c7f23cb
|
||||
size: 16384
|
||||
note: "Spectrum +2 ROM 1. Embedded in core."
|
||||
source_ref: "fuse/settings.c:233, fuse/machines/specplus2.c:73"
|
||||
|
||||
- name: "fuse/plus3-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 9833b8b73384dd5fa3678377ff00a2bb
|
||||
sha1: e319ed08b4d53a5e421a75ea00ea02039ba6555b
|
||||
size: 16384
|
||||
note: "Spectrum +3 ROM 0. Also used for +2A. Embedded in core."
|
||||
source_ref: "fuse/settings.c:234,238, fuse/machines/specplus3.c:197"
|
||||
|
||||
- name: "fuse/plus3-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 0f711ceb5ab801b4701989982e0f334c
|
||||
sha1: c9969fc36095a59787554026a9adc3b87678c794
|
||||
size: 16384
|
||||
note: "Spectrum +3 ROM 1. Also used for +2A. Embedded in core."
|
||||
source_ref: "fuse/settings.c:235,239, fuse/machines/specplus3.c:200"
|
||||
|
||||
- name: "fuse/plus3-2.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 3b6dd659d5e4ec97f0e2f7878152c987
|
||||
sha1: 22e50c6ba4157a3f6a821bd9937cd26e292775c6
|
||||
size: 16384
|
||||
note: "Spectrum +3 ROM 2. Also used for +2A. Embedded in core."
|
||||
source_ref: "fuse/settings.c:236,240, fuse/machines/specplus3.c:203"
|
||||
|
||||
- name: "fuse/plus3-3.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: a148bcc575e51389e84fdf5d555c3196
|
||||
sha1: 65f031caa8148a5493afe42c41f4929deab26b4e
|
||||
size: 16384
|
||||
note: "Spectrum +3 ROM 3. Also used for +2A. Embedded in core."
|
||||
source_ref: "fuse/settings.c:237,241, fuse/machines/specplus3.c:206"
|
||||
|
||||
- name: "fuse/plus3e-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: bc123f625e245c225f92ef05933ed134
|
||||
sha1: 649fbd233490bf58b35350b0123d36caaaa011eb
|
||||
size: 16384
|
||||
note: "Spectrum +3e ROM 0. Embedded in core."
|
||||
source_ref: "fuse/settings.c:242, fuse/machines/specplus3e.c:70"
|
||||
|
||||
- name: "fuse/plus3e-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 617364264c587d20c9fc4746c29679f2
|
||||
sha1: f12198108cbb14de4f03c6695bc16d08c85ee214
|
||||
size: 16384
|
||||
note: "Spectrum +3e ROM 1. Embedded in core."
|
||||
source_ref: "fuse/settings.c:243, fuse/machines/specplus3e.c:73"
|
||||
|
||||
- name: "fuse/plus3e-2.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: c363e95dcd0a90e6e7f847e6e47e0179
|
||||
sha1: 773633dce5ba323a9e00d9d0f9e4d8c295df7c87
|
||||
size: 16384
|
||||
note: "Spectrum +3e ROM 2. Embedded in core."
|
||||
source_ref: "fuse/settings.c:244, fuse/machines/specplus3e.c:76"
|
||||
|
||||
- name: "fuse/plus3e-3.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: a148bcc575e51389e84fdf5d555c3196
|
||||
sha1: 65f031caa8148a5493afe42c41f4929deab26b4e
|
||||
size: 16384
|
||||
note: "Spectrum +3e ROM 3. Same as plus3-3.rom. Embedded in core."
|
||||
source_ref: "fuse/settings.c:245, fuse/machines/specplus3e.c:79"
|
||||
|
||||
- name: "fuse/se-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: fb3f86eb1e5a695d9c50c124e7cfb875
|
||||
sha1: 8608328d7dd66602a4846f046b24fed500f7d828
|
||||
size: 16384
|
||||
note: "Spectrum SE ROM 0. Embedded in core."
|
||||
source_ref: "fuse/settings.c:251, fuse/machines/spec_se.c:89"
|
||||
|
||||
- name: "fuse/se-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 88de4a3129086f34bb9ca559acc51e6c
|
||||
sha1: 3be5de57dd3bd0a9d15c57cabe9179afe2906a52
|
||||
size: 16384
|
||||
note: "Spectrum SE ROM 1. Embedded in core."
|
||||
source_ref: "fuse/settings.c:252, fuse/machines/spec_se.c:92"
|
||||
|
||||
- name: "fuse/tc2048.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 9dd7ecf784a6c04265c073c236f5fadb
|
||||
sha1: febb2d495b6eda7cdcb4074935d6e9d9f328972d
|
||||
size: 16384
|
||||
note: "Timex TC2048 ROM. Embedded in core."
|
||||
source_ref: "fuse/settings.c:254, fuse/machines/tc2048.c:80"
|
||||
|
||||
- name: "fuse/tc2068-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 55d462fccc6c536037404ef4ced08bec
|
||||
sha1: 1446cb2780a9dedf640404a639fa3ae518b2d8aa
|
||||
size: 16384
|
||||
note: "Timex TC2068 ROM 0. Also used for TS2068. Embedded in core."
|
||||
source_ref: "fuse/settings.c:255,257, fuse/machines/tc2068.c:138"
|
||||
|
||||
- name: "fuse/tc2068-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 575d203c6e15e679fba0b73f854ec7a2
|
||||
sha1: 7e265a2c1f621ed365ea23bdcafdedbc79c1299c
|
||||
size: 8192
|
||||
note: "Timex TC2068 ROM 1 (EXROM). Also used for TS2068. Embedded in core."
|
||||
source_ref: "fuse/settings.c:256,258, fuse/machines/tc2068.c:141"
|
||||
|
||||
# -- External ROMs (NOT embedded, must be in {system_dir}/fuse/) --
|
||||
|
||||
# Pentagon family
|
||||
- name: "fuse/128p-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Pentagon 128K/512K/1024 ROM 0. Required for Pentagon machines."
|
||||
source_ref: "fuse/settings.c:221,225,229, fuse/machines/pentagon.c:135"
|
||||
|
||||
- name: "fuse/128p-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Pentagon 128K/512K/1024 ROM 1. Required for Pentagon machines."
|
||||
source_ref: "fuse/settings.c:222,226,230, fuse/machines/pentagon.c:138"
|
||||
|
||||
- name: "fuse/trdos.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "TR-DOS ROM (Beta 128 disk interface). Used by Pentagon and Scorpion."
|
||||
source_ref: "fuse/settings.c:223,227,231, fuse/machines/pentagon.c:141"
|
||||
|
||||
- name: "fuse/gluck.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Gluck ROM. Required for Pentagon 512K and 1024."
|
||||
source_ref: "fuse/settings.c:224,228, fuse/machines/pentagon512.c:82"
|
||||
|
||||
# Scorpion
|
||||
- name: "fuse/256s-0.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Scorpion 256K ROM 0. Required for Scorpion machine."
|
||||
source_ref: "fuse/settings.c:247, fuse/machines/scorpion.c:76"
|
||||
|
||||
- name: "fuse/256s-1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Scorpion 256K ROM 1. Required for Scorpion machine."
|
||||
source_ref: "fuse/settings.c:248, fuse/machines/scorpion.c:79"
|
||||
|
||||
- name: "fuse/256s-2.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Scorpion 256K ROM 2. Required for Scorpion machine."
|
||||
source_ref: "fuse/settings.c:249, fuse/machines/scorpion.c:82"
|
||||
|
||||
- name: "fuse/256s-3.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: true
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Scorpion 256K ROM 3 (TR-DOS). Required for Scorpion machine."
|
||||
source_ref: "fuse/settings.c:250, fuse/machines/scorpion.c:85"
|
||||
|
||||
# Peripheral ROMs (optional, only needed if peripheral is enabled)
|
||||
- name: "fuse/if1-2.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
size: 16384
|
||||
note: "Interface 1 ROM (edition 2). Loaded by peripherals/if1.c:403."
|
||||
source_ref: "fuse/settings.c:216, fuse/peripherals/if1.c:403"
|
||||
|
||||
- name: "fuse/disciple.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 78e61a2a02121873c1756b21fd1398b1
|
||||
sha1: 9a75ed4b293f968985be4c9aa893cd88276d1ced
|
||||
size: 8192
|
||||
note: "DISCiPLE disk interface ROM. Bundled in repo but not in mem_entries[]."
|
||||
source_ref: "fuse/settings.c:215, fuse/peripherals/disk/disciple.c:279"
|
||||
|
||||
- name: "fuse/plusd.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: 42e5de16fb5e50082bb954ec7ce45851
|
||||
sha1: 6b841dc5797ef7eb219ad455cd1e434ca3b9d30d
|
||||
size: 8192
|
||||
note: "+D disk interface ROM. Bundled in repo but not in mem_entries[]."
|
||||
source_ref: "fuse/settings.c:246, fuse/peripherals/disk/plusd.c:239"
|
||||
|
||||
- name: "fuse/didaktik80.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
note: "Didaktik 80 disk interface ROM. Not embedded."
|
||||
source_ref: "fuse/settings.c:214, fuse/peripherals/disk/didaktik.c:236"
|
||||
|
||||
- name: "fuse/opus.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
note: "Opus Discovery disk interface ROM. Not embedded."
|
||||
source_ref: "fuse/settings.c:220, fuse/peripherals/disk/opus.c:210"
|
||||
|
||||
- name: "fuse/mf1.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
note: "Multiface 1 ROM. Not embedded."
|
||||
source_ref: "fuse/settings.c:217, fuse/peripherals/multiface.c:224"
|
||||
|
||||
- name: "fuse/mf128.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
note: "Multiface 128 ROM. Not embedded."
|
||||
source_ref: "fuse/settings.c:218, fuse/peripherals/multiface.c:225"
|
||||
|
||||
- name: "fuse/mf3.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
note: "Multiface 3 ROM. Not embedded."
|
||||
source_ref: "fuse/settings.c:219, fuse/peripherals/multiface.c:226"
|
||||
|
||||
- name: "fuse/speccyboot-1.4.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: c54aa8f374b0971f51546c29d5d1eba1
|
||||
sha1: 16af6f052b38a027dd49ba6e96e3a59d16b62672
|
||||
size: 8192
|
||||
note: "SpeccyBoot ethernet ROM. Bundled in repo but not in mem_entries[]."
|
||||
source_ref: "fuse/settings.c:253, fuse/peripherals/speccyboot.c:148"
|
||||
|
||||
- name: "fuse/ttx2000s.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
note: "TTX2000S teletext adapter ROM. Not embedded."
|
||||
source_ref: "fuse/settings.c:259, fuse/peripherals/ttx2000s.c:198"
|
||||
|
||||
- name: "fuse/usource.rom"
|
||||
system: sinclair-zxspectrum
|
||||
required: false
|
||||
md5: ""
|
||||
note: "Currah uSource ROM. Not embedded."
|
||||
source_ref: "fuse/settings.c:260, fuse/peripherals/usource.c:129"
|
||||
|
||||
platform_details:
|
||||
bios_mapping:
|
||||
source_ref: "src/compat/file.c:55-89, 129-223"
|
||||
notes: |
|
||||
ROM resolution order in compat_file_open():
|
||||
1. Check mem_entries[] (18 embedded ROMs compiled as .h arrays)
|
||||
2. If not found, try {system_dir}/fuse/{filename} on filesystem
|
||||
The path is constructed by concatenating system_dir + "/fuse" + path
|
||||
where path includes the leading slash from fuse's internal path.
|
||||
|
||||
embedded_roms:
|
||||
source_ref: "src/compat/file.c:55-73"
|
||||
notes: |
|
||||
18 ROMs embedded in the binary via .h headers generated from .rom files:
|
||||
48.rom, 128-0.rom, 128-1.rom, plus2-0.rom, plus2-1.rom,
|
||||
plus3-0/1/2/3.rom, plus3e-0/1/2/3.rom, se-0.rom, se-1.rom,
|
||||
tc2048.rom, tc2068-0.rom, tc2068-1.rom.
|
||||
disciple.rom, plusd.rom, speccyboot-1.4.rom are present in the repo
|
||||
fuse/roms/ directory but NOT in mem_entries[], so they are loaded
|
||||
from the filesystem only.
|
||||
|
||||
machine_rom_map:
|
||||
source_ref: "fuse/settings.c:209-260, fuse/machines/*.c"
|
||||
notes: |
|
||||
Spectrum 16K: 48.rom (1 ROM)
|
||||
Spectrum 48K: 48.rom (1 ROM)
|
||||
Spectrum 48K NTSC: 48.rom (1 ROM)
|
||||
Spectrum 128K: 128-0.rom, 128-1.rom (2 ROMs)
|
||||
Spectrum +2: plus2-0.rom, plus2-1.rom (2 ROMs)
|
||||
Spectrum +2A: plus3-0.rom, plus3-1.rom, plus3-2.rom, plus3-3.rom (4 ROMs)
|
||||
Spectrum +3: plus3-0.rom, plus3-1.rom, plus3-2.rom, plus3-3.rom (4 ROMs)
|
||||
Spectrum +3e: plus3e-0/1/2/3.rom (4 ROMs)
|
||||
Spectrum SE: se-0.rom, se-1.rom (2 ROMs)
|
||||
Timex TC2048: tc2048.rom (1 ROM)
|
||||
Timex TC2068: tc2068-0.rom, tc2068-1.rom (2 ROMs)
|
||||
Timex TS2068: tc2068-0.rom, tc2068-1.rom (2 ROMs, same files)
|
||||
Pentagon 128K: 128p-0.rom, 128p-1.rom, trdos.rom (3 ROMs)
|
||||
Pentagon 512K: 128p-0.rom, 128p-1.rom, trdos.rom, gluck.rom (4 ROMs)
|
||||
Pentagon 1024: 128p-0.rom, 128p-1.rom, trdos.rom, gluck.rom (4 ROMs)
|
||||
Scorpion 256K: 256s-0.rom, 256s-1.rom, 256s-2.rom, 256s-3.rom (4 ROMs)
|
||||
|
||||
rom_copyright:
|
||||
source_ref: "fuse/roms/README.copyright"
|
||||
notes: |
|
||||
Most ROMs are copyright Amstrad. Amstrad allows free distribution but
|
||||
retains copyright. Selling ROMs standalone is not permitted. SE ROMs
|
||||
are GPLv2+. DISCiPLE/+D ROMs are copyright Datel, distribution allowed.
|
||||
SpeccyBoot ROM is MIT licensed.
|
||||
53
emulators/gambatte.yml
Normal file
53
emulators/gambatte.yml
Normal file
@@ -0,0 +1,53 @@
|
||||
emulator: Gambatte
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/gambatte-libretro"
|
||||
systems: [nintendo-gb, nintendo-gbc]
|
||||
|
||||
notes: |
|
||||
Gambatte is a Game Boy / Game Boy Color emulator focused on accuracy.
|
||||
No BIOS is required for normal operation. The core has a built-in
|
||||
HLE boot sequence that skips the Nintendo logo animation by default.
|
||||
|
||||
When the core option "gambatte_gb_bootloader" is set to "enabled"
|
||||
(the default), the core looks for official boot ROMs in the system
|
||||
directory to play the real startup logo animation. If the files are
|
||||
missing, emulation still works without them.
|
||||
|
||||
The boot ROM loaded depends on the hardware mode:
|
||||
- DMG (original Game Boy): gb_bios.bin (256 bytes, 0x100)
|
||||
- CGB (Game Boy Color) or GBA mode: gbc_bios.bin (2304 bytes, 0x900)
|
||||
|
||||
In GBA mode the core patches the CGB boot ROM at 0xF2 to fake
|
||||
GBA detection (ld b,0x01), enabling GBA-enhanced features in
|
||||
compatible GBC games (Shantae, Zelda Oracle series, etc.).
|
||||
|
||||
File path construction: libretro.cpp get_bootloader_from_file()
|
||||
joins RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY with each filename
|
||||
directly - no subdirectories.
|
||||
|
||||
Gambatte does NOT use sgb_bios.bin. The SGB palette references in
|
||||
the source are color lookup tables for DMG palette colorization,
|
||||
not actual Super Game Boy boot ROM loading.
|
||||
|
||||
files:
|
||||
# --- DMG boot ROM (optional, enables startup animation) ---
|
||||
- name: "gb_bios.bin"
|
||||
system: nintendo-gb
|
||||
description: "Original Game Boy (DMG-01) boot ROM"
|
||||
required: false
|
||||
size: 256
|
||||
md5: "32fbbd84168d3482956eb3c5051637f5"
|
||||
sha1: "4ed31ec6b0b175bb109c0eb5fd3d193da823339f"
|
||||
source_ref: "libretro.cpp:1304-1364 (get_bootloader_from_file), bootloader.cpp:20-55 (load)"
|
||||
notes: "Mapped at 0x0000-0x00FF, swapped out when register 0xFF50 is written. Core option gambatte_gb_bootloader must be enabled."
|
||||
|
||||
# --- CGB boot ROM (optional, enables startup animation) ---
|
||||
- name: "gbc_bios.bin"
|
||||
system: nintendo-gbc
|
||||
description: "Game Boy Color (CGB-001) boot ROM"
|
||||
required: false
|
||||
size: 2304
|
||||
md5: "dbfce9db9deaa2567f6a84fde55f9680"
|
||||
sha1: "1293d68bf9643bc4f36954c1e80e38f39864528d"
|
||||
source_ref: "libretro.cpp:1304-1364 (get_bootloader_from_file), bootloader.cpp:20-55 (load)"
|
||||
notes: "Mapped at 0x0000-0x08FF with cartridge data preserved at 0x0100-0x01FF. Also used for GBA-enhanced mode with a patch at 0xF2. Presence required for FORCE_CGB flag when hw mode is set to GBC or GBA."
|
||||
238
emulators/kronos.yml
Normal file
238
emulators/kronos.yml
Normal file
@@ -0,0 +1,238 @@
|
||||
emulator: Kronos
|
||||
type: libretro
|
||||
cores:
|
||||
- kronos_libretro
|
||||
- yabause_libretro
|
||||
source: "https://github.com/FCare/Kronos"
|
||||
systems:
|
||||
- sega-saturn
|
||||
- sega-stv
|
||||
|
||||
notes: |
|
||||
Kronos is a Sega Saturn and ST-V arcade emulator forked from Yabause.
|
||||
The libretro repo at libretro/yabause ships the older "Yabause" core
|
||||
(yabause_libretro) which handles Saturn only and has no STV support.
|
||||
|
||||
Saturn BIOS search order (Kronos):
|
||||
1. {system}/kronos/saturn_bios.bin
|
||||
2. {system}/saturn_bios.bin
|
||||
3. {system}/sega_101.bin
|
||||
4. {system}/mpr-17933.bin
|
||||
First file found wins. Real BIOS required, HLE is deprecated and causes
|
||||
issues. Multi-disc (m3u) also forces real BIOS.
|
||||
|
||||
Saturn BIOS search order (YabaSanshiro / Yabause):
|
||||
1. {system}/saturn_bios.bin
|
||||
2. {system}/sega_101.bin
|
||||
3. {system}/mpr-17933.bin
|
||||
Falls back to HLE if none found, but HLE is not recommended.
|
||||
|
||||
ST-V BIOS (Kronos only):
|
||||
{system}/kronos/stvbios.zip or {system}/stvbios.zip
|
||||
The ZIP is a MAME-style romset containing region-specific EPROMs.
|
||||
Kronos picks the first matching BIOS by region, with a configurable
|
||||
"favorite region" core option (EU/US/JP/TW). The ZIP must contain
|
||||
at least one of the BIOS blobs listed below. ST-V games are detected
|
||||
automatically when loading a .zip file.
|
||||
|
||||
BIOS loading: libretro.c retro_load_game() lines 1601-1727.
|
||||
STV blob table: ctrl/src/stv.c BiosList lines 112-136.
|
||||
Region enums: ctrl/include/stv.h lines 47-52.
|
||||
|
||||
files:
|
||||
# -----------------------------------------------------------
|
||||
# Saturn BIOS - generic (any region accepted)
|
||||
# -----------------------------------------------------------
|
||||
- name: "saturn_bios.bin"
|
||||
system: sega-saturn
|
||||
required: true
|
||||
size: 524288 # 512 KB (0x80000)
|
||||
note: "Primary Saturn BIOS. Any region. Searched first by both cores."
|
||||
source_ref: "libretro.c:1619-1623 (kronos), libretro.c:1035 (yabause)"
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# Saturn BIOS - Japan v1.01
|
||||
# -----------------------------------------------------------
|
||||
- name: "sega_101.bin"
|
||||
system: sega-saturn
|
||||
region: [japan]
|
||||
required: false
|
||||
size: 524288
|
||||
md5: "85ec9ca47d8f6807718151cbcca8b964"
|
||||
note: "Saturn BIOS v1.01 (Japan). Fallback if saturn_bios.bin missing."
|
||||
source_ref: "libretro.c:1627 (kronos), libretro.c:1039 (yabause)"
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# Saturn BIOS - NA/EU
|
||||
# -----------------------------------------------------------
|
||||
- name: "mpr-17933.bin"
|
||||
system: sega-saturn
|
||||
region: [north-america, europe]
|
||||
required: false
|
||||
size: 524288
|
||||
md5: "3240872c70984b6cbfda1586cab68dbe"
|
||||
note: "Saturn BIOS (NA/EU). Last fallback for Saturn mode."
|
||||
source_ref: "libretro.c:1631 (kronos), libretro.c:1043 (yabause)"
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# ST-V Arcade BIOS (stvbios.zip) - Kronos only
|
||||
# -----------------------------------------------------------
|
||||
- name: "stvbios.zip"
|
||||
system: sega-stv
|
||||
required: true
|
||||
note: >
|
||||
MAME-style ZIP containing ST-V region BIOS EPROMs. Required for
|
||||
ST-V arcade games. Kronos picks the best match based on game
|
||||
region and the stv_favorite_region core option. At least one
|
||||
BIOS blob must be present. Searched in kronos/ subdir first.
|
||||
source_ref: "libretro.c:1608-1617, ctrl/src/stv.c:112-136"
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# ST-V BIOS blobs inside stvbios.zip
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# Japan
|
||||
- name: "epr-23603.ic8"
|
||||
system: sega-stv
|
||||
region: [japan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "f688ae60"
|
||||
note: "STV BIOS Japan (latest). Inside stvbios.zip."
|
||||
source_ref: "stv.c:120"
|
||||
|
||||
- name: "epr-20091.ic8"
|
||||
system: sega-stv
|
||||
region: [japan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "59ed40f4"
|
||||
note: "STV BIOS Japan v1. Inside stvbios.zip."
|
||||
source_ref: "stv.c:121"
|
||||
|
||||
- name: "epr-19730.ic8"
|
||||
system: sega-stv
|
||||
region: [japan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "d0e0889d"
|
||||
note: "STV BIOS Japan v2. Inside stvbios.zip."
|
||||
source_ref: "stv.c:122"
|
||||
|
||||
- name: "epr-17951a.ic8"
|
||||
system: sega-stv
|
||||
region: [japan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "2672f9d8"
|
||||
note: "STV BIOS Japan v3. Inside stvbios.zip."
|
||||
source_ref: "stv.c:123"
|
||||
|
||||
- name: "epr-17740a.ic8"
|
||||
system: sega-stv
|
||||
region: [japan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "3e23c81f"
|
||||
note: "STV BIOS Japan v4. Inside stvbios.zip."
|
||||
source_ref: "stv.c:124"
|
||||
|
||||
- name: "epr-17740.ic8"
|
||||
system: sega-stv
|
||||
region: [japan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "5c5aa63d"
|
||||
note: "STV BIOS Japan v5. Inside stvbios.zip."
|
||||
source_ref: "stv.c:125"
|
||||
|
||||
# Europe
|
||||
- name: "epr-17954a.ic8"
|
||||
system: sega-stv
|
||||
region: [europe]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "f7722da3"
|
||||
note: "STV BIOS Europe. Inside stvbios.zip."
|
||||
source_ref: "stv.c:126"
|
||||
|
||||
# USA
|
||||
- name: "epr-17952a.ic8"
|
||||
system: sega-stv
|
||||
region: [north-america]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "d1be2adf"
|
||||
note: "STV BIOS USA. Inside stvbios.zip."
|
||||
source_ref: "stv.c:127"
|
||||
|
||||
- name: "epr-17741a.ic8"
|
||||
system: sega-stv
|
||||
region: [north-america]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "4166c663"
|
||||
note: "STV BIOS USA v1. Inside stvbios.zip."
|
||||
source_ref: "stv.c:128"
|
||||
|
||||
# Taiwan
|
||||
- name: "epr-19854.ic8"
|
||||
system: sega-stv
|
||||
region: [taiwan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "e09d1f60"
|
||||
note: "STV BIOS Taiwan. Inside stvbios.zip."
|
||||
source_ref: "stv.c:129"
|
||||
|
||||
- name: "epr-17953a.ic8"
|
||||
system: sega-stv
|
||||
region: [taiwan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "a4c47570"
|
||||
note: "STV BIOS Taiwan v1. Inside stvbios.zip."
|
||||
source_ref: "stv.c:130"
|
||||
|
||||
- name: "epr-17742a.ic8"
|
||||
system: sega-stv
|
||||
region: [taiwan]
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "02daf123"
|
||||
note: "STV BIOS Taiwan v2. Inside stvbios.zip."
|
||||
source_ref: "stv.c:131"
|
||||
|
||||
# Debug / Dev
|
||||
- name: "stv110.bin"
|
||||
system: sega-stv
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "3dfeda92"
|
||||
note: "STV debug BIOS. Inside stvbios.zip. Not used in normal operation."
|
||||
source_ref: "stv.c:132"
|
||||
|
||||
- name: "stv1061.bin"
|
||||
system: sega-stv
|
||||
required: false
|
||||
size: 524288
|
||||
crc32: "728dbca3"
|
||||
note: "STV dev BIOS. Inside stvbios.zip. Not used in normal operation."
|
||||
source_ref: "stv.c:133"
|
||||
|
||||
platform_details:
|
||||
saturn:
|
||||
bios_size: 524288
|
||||
bios_address: "0x00000000-0x0007FFFF"
|
||||
hle_available: true
|
||||
hle_recommended: false
|
||||
kronos_bios_subdir: "kronos"
|
||||
source_ref: "sys/memory/src/memory.c:1346, libretro.c:1619-1638"
|
||||
stv:
|
||||
bios_format: "MAME-style ZIP (stvbios.zip)"
|
||||
blob_size: 524288
|
||||
blob_load_address: "0x000000"
|
||||
regions: [japan, europe, north-america, taiwan]
|
||||
region_selection: "automatic per game, overridable via kronos_stv_favorite_region"
|
||||
kronos_bios_subdir: "kronos"
|
||||
source_ref: "ctrl/src/stv.c:112-136, ctrl/include/stv.h:47-52"
|
||||
118
emulators/mgba.yml
Normal file
118
emulators/mgba.yml
Normal file
@@ -0,0 +1,118 @@
|
||||
emulator: mGBA
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/mgba"
|
||||
cores:
|
||||
- mgba
|
||||
systems:
|
||||
- nintendo-gba
|
||||
- nintendo-gb
|
||||
- nintendo-gbc
|
||||
- nintendo-sgb
|
||||
|
||||
notes: |
|
||||
mGBA is a Game Boy Advance emulator with Game Boy, Game Boy Color, and
|
||||
Super Game Boy support.
|
||||
|
||||
All BIOS files are optional. mGBA ships a built-in HLE BIOS for GBA
|
||||
(src/gba/hle-bios.c) that covers most software. The real BIOS improves
|
||||
accuracy (startup logo, some edge-case SWI behavior). There is no HLE
|
||||
BIOS for GB/GBC/SGB -- those rely on GBSkipBIOS() if no file is found.
|
||||
|
||||
BIOS loading is controlled by two core options:
|
||||
mgba_use_bios (default ON) - whether to look for BIOS files at all
|
||||
mgba_skip_bios (default OFF) - skip the boot animation even if loaded
|
||||
|
||||
The libretro port resolves BIOS filenames in retro_load_game()
|
||||
(src/platform/libretro/libretro.c:2091-2148). It picks the filename
|
||||
based on detected model:
|
||||
GBA -> gba_bios.bin
|
||||
GB (DMG/MGB) -> gb_bios.bin
|
||||
GBC (CGB/AGB) -> gbc_bios.bin
|
||||
SGB (SGB/SGB2)-> sgb_bios.bin
|
||||
|
||||
The standalone core (src/gb/core.c:637-684) handles the same models
|
||||
and maps SGB2 to sgb_bios.bin (marked TODO for a dedicated file).
|
||||
|
||||
GBIsBIOS() in src/gb/gb.c validates BIOS files by CRC32 checksum.
|
||||
Accepted checksums cover DMG, DMG0, MGB, SGB, SGB2, CGB, CGB0, CGBE,
|
||||
AGB, and AGB0 revisions.
|
||||
|
||||
files:
|
||||
# -------------------------------------------------------
|
||||
# Game Boy Advance - BIOS (optional, HLE fallback)
|
||||
# -------------------------------------------------------
|
||||
- name: gba_bios.bin
|
||||
system: nintendo-gba
|
||||
required: false
|
||||
size: 16384 # 16 KB (0x4000, GBA_SIZE_BIOS)
|
||||
note: "GBA BIOS. HLE replacement built in. Real BIOS adds boot logo and full SWI accuracy."
|
||||
source_ref: "src/platform/libretro/libretro.c:2099"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Game Boy - boot ROM (optional, skip fallback)
|
||||
# -------------------------------------------------------
|
||||
- name: gb_bios.bin
|
||||
system: nintendo-gb
|
||||
required: false
|
||||
size: 256 # 256 B (0x100)
|
||||
note: "DMG/MGB boot ROM. Scrolling Nintendo logo. Skipped if absent."
|
||||
source_ref: "src/platform/libretro/libretro.c:2134"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Game Boy Color - boot ROM (optional, skip fallback)
|
||||
# -------------------------------------------------------
|
||||
- name: gbc_bios.bin
|
||||
system: nintendo-gbc
|
||||
required: false
|
||||
size: 2304 # 2304 B (0x900)
|
||||
note: "CGB boot ROM. Used for CGB, AGB (GBA in GB mode), and SCGB models."
|
||||
source_ref: "src/platform/libretro/libretro.c:2127"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Super Game Boy - boot ROM (optional, skip fallback)
|
||||
# -------------------------------------------------------
|
||||
- name: sgb_bios.bin
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
size: 256 # 256 B (0x100)
|
||||
note: "SGB/SGB2 boot ROM. Also used when model is SGB2 (no separate sgb2_bios.bin)."
|
||||
source_ref: "src/platform/libretro/libretro.c:2130"
|
||||
|
||||
platform_details:
|
||||
gba:
|
||||
bios_size: 16384 # 16 KB
|
||||
hle_bios: true
|
||||
source_ref: "src/gba/hle-bios.c, src/gba/gba.c:520-548"
|
||||
notes: |
|
||||
GBALoadBIOS() validates size (must be exactly 0x4000) then computes
|
||||
an internal checksum. Two official checksums are recognized:
|
||||
GBA_BIOS_CHECKSUM = 0xBAAE187F (standard GBA)
|
||||
GBA_DS_BIOS_CHECKSUM = 0xBAAE1880 (DS GBA mode)
|
||||
Other checksums trigger a warning but the file is still loaded.
|
||||
|
||||
gb:
|
||||
bios_size: 256 # 256 B
|
||||
hle_bios: false
|
||||
source_ref: "src/gb/gb.c:570-605"
|
||||
notes: |
|
||||
GBIsBIOS() validates by CRC32. Accepted DMG-family checksums:
|
||||
DMG0 = 0xC2F5CC97, DMG = 0x59C8598E, MGB = 0xE6920754
|
||||
Files not matching any known checksum are rejected.
|
||||
|
||||
gbc:
|
||||
bios_size: 2304 # 2304 B (0x900)
|
||||
hle_bios: false
|
||||
source_ref: "src/gb/gb.c:570-605"
|
||||
notes: |
|
||||
Accepted CGB-family CRC32 checksums:
|
||||
CGB = 0x41884E46, CGB0 = 0xE8EF5318, CGBE = 0xE95DC95D
|
||||
AGB = 0xFFD6B0F1, AGB0 = 0x570337EA
|
||||
|
||||
sgb:
|
||||
bios_size: 256 # 256 B
|
||||
hle_bios: false
|
||||
source_ref: "src/gb/gb.c:570-605, src/gb/core.c:642-644"
|
||||
notes: |
|
||||
Accepted SGB CRC32 checksums:
|
||||
SGB = 0xEC8A83B9, SGB2 = 0x53D0DD63
|
||||
SGB2 model falls through to sgb_bios.bin (marked TODO upstream).
|
||||
67
emulators/nestopia.yml
Normal file
67
emulators/nestopia.yml
Normal file
@@ -0,0 +1,67 @@
|
||||
emulator: Nestopia UE
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/nestopia"
|
||||
systems: [nintendo-nes, nintendo-fds]
|
||||
|
||||
notes: |
|
||||
Nestopia UE (Undead Edition) is a cycle-accurate NES/Famicom emulator.
|
||||
NES cartridge games need no BIOS. Famicom Disk System games require
|
||||
the FDS BIOS ROM (disksys.rom, 8 KB) loaded from the system directory.
|
||||
The core validates the BIOS via CRC32 against two known dumps:
|
||||
standard Famicom (0x5E607DCF) and Twin Famicom (0x4DF24A6C).
|
||||
An unknown BIOS triggers a warning but still loads.
|
||||
|
||||
NstDatabase.xml is an optional game database used for region autodetection,
|
||||
aspect ratio selection, and 4-player adapter recognition. A copy is baked
|
||||
into the core binary (libretro/nstdatabase.hpp) and used as fallback when
|
||||
no external file is found. Placing a newer NstDatabase.xml in the system
|
||||
directory overrides the built-in copy.
|
||||
|
||||
An optional custom palette file (custom.pal, 192 bytes, 64 RGB triplets)
|
||||
overrides the built-in palettes when the nestopia_palette core option is
|
||||
set to Custom. The core ships with 10+ built-in palettes (Royaltea,
|
||||
Smooth FBx, etc.) so the external file is rarely needed.
|
||||
|
||||
Audio samples for specific games can be placed in system/nestopia/samples/
|
||||
as numbered .wav files (e.g., 00.wav, 01.wav). This is used for Famicom
|
||||
expansion audio in a few titles.
|
||||
|
||||
Game Genie is handled as cheat code decoding (software), not via a ROM file.
|
||||
|
||||
File path construction: libretro/libretro.cpp retro_load_game() joins the
|
||||
system directory (RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY) with each
|
||||
filename directly - no subdirectories.
|
||||
|
||||
files:
|
||||
# --- Famicom Disk System BIOS (required for FDS games) ---
|
||||
- name: "disksys.rom"
|
||||
system: nintendo-fds
|
||||
description: "FDS BIOS ROM"
|
||||
required: true
|
||||
size: 8192
|
||||
md5: "ca30b50f880eb660a320674ed365ef7a"
|
||||
sha1: "57fe1bdee955bb48d357e463ccbf129496930b62"
|
||||
source_ref: "libretro/libretro.cpp:1608-1634 (FDS load), source/core/NstFds.cpp:61-131 (Bios class, CRC32 validation)"
|
||||
notes: "Mapped at 0xE000-0xFFFF (8 KB). retro_load_game returns false if missing when loading .fds files. CRC32 checked: Famicom 0x5E607DCF, Twin Famicom 0x4DF24A6C."
|
||||
|
||||
# --- NES game database (optional, overrides baked-in copy) ---
|
||||
- name: "NstDatabase.xml"
|
||||
system: nintendo-nes
|
||||
description: "Nestopia game database for region and mapper autodetection"
|
||||
required: false
|
||||
size: 1022369
|
||||
md5: "0ee6cbdc6f5c96ce9c8aa5edb59066f4"
|
||||
sha1: ~
|
||||
source_ref: "libretro/libretro.cpp:1561-1586 (database load), libretro/nstdatabase.hpp (baked-in fallback)"
|
||||
notes: "XML database matching games by SHA1+CRC32. Used for region, mapper, mirroring, and 4-player adapter detection. Built-in fallback exists so this file is optional. Hash is for the upstream copy shipped with the core repo."
|
||||
|
||||
# --- Custom palette (optional, core option nestopia_palette = Custom) ---
|
||||
- name: "custom.pal"
|
||||
system: nintendo-nes
|
||||
description: "External NES color palette"
|
||||
required: false
|
||||
size: 192
|
||||
md5: ~
|
||||
sha1: ~
|
||||
source_ref: "libretro/libretro.cpp:1540-1559 (palette load)"
|
||||
notes: "64 RGB triplets (64 x 3 bytes = 192 bytes). Only loaded when nestopia_palette core option is set to Custom. Falls back to built-in Royaltea palette if not found. Multiple valid palettes exist so no single canonical hash."
|
||||
98
emulators/o2em.yml
Normal file
98
emulators/o2em.yml
Normal file
@@ -0,0 +1,98 @@
|
||||
emulator: O2EM
|
||||
type: libretro
|
||||
core: o2em_libretro
|
||||
source: "https://github.com/libretro/libretro-o2em"
|
||||
systems:
|
||||
- odyssey2
|
||||
- videopac
|
||||
|
||||
notes: |
|
||||
O2EM is the libretro port of the Odyssey2/Videopac emulator.
|
||||
The core requires exactly one BIOS ROM selected via the o2em_bios core option.
|
||||
Default is o2rom.bin (Odyssey2 NTSC). The user can switch to c52.bin, g7400.bin
|
||||
or jopac.bin for European/French Videopac variants.
|
||||
|
||||
BIOS files are loaded from the system directory into rom_table[0] (1024 bytes).
|
||||
The core identifies the BIOS variant by CRC32 and sets the vpp flag accordingly
|
||||
(vpp=1 enables Videopac+ enhanced graphics for g7400.bin and jopac.bin).
|
||||
|
||||
The core will not start without a valid BIOS file present.
|
||||
Any single BIOS from the list below is sufficient for its region/hardware.
|
||||
|
||||
All BIOS files are exactly 1 KB (1024 bytes).
|
||||
|
||||
BIOS detection: libretro.c load_bios() lines 146-212, CRC32 switch.
|
||||
BIOS selection: libretro_core_options.h o2em_bios option lines 52-64.
|
||||
Core option handling: libretro.c lines 1107-1134.
|
||||
|
||||
files:
|
||||
# -------------------------------------------------------
|
||||
# Magnavox Odyssey2 (NTSC) - G7000 model
|
||||
# -------------------------------------------------------
|
||||
- name: "o2rom.bin"
|
||||
system: odyssey2
|
||||
region: [north-america]
|
||||
required: true
|
||||
size: 1024
|
||||
md5: "562d5ebf9e030a40d6fabfc2f33139fd"
|
||||
sha1: "b2e1955d957a475de2411770452eff4ea19f4cee"
|
||||
crc32: "8016a315"
|
||||
note: "Magnavox Odyssey2 BIOS (G7000 NTSC). Default BIOS, vpp=0."
|
||||
source_ref: "libretro.c:182-186"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Philips Videopac G7000 (European)
|
||||
# -------------------------------------------------------
|
||||
- name: "c52.bin"
|
||||
system: videopac
|
||||
region: [europe]
|
||||
required: true
|
||||
size: 1024
|
||||
md5: "f1071cdb0b6b10dde94d3bc8a6146387"
|
||||
sha1: "a6120aed50831c9c0d95dbdf707820f601d9452e"
|
||||
crc32: "a318e8d6"
|
||||
note: "Philips Videopac G7000 European BIOS. vpp=0, auto-sets PAL region."
|
||||
source_ref: "libretro.c:192-197"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Philips Videopac+ G7400 (European)
|
||||
# -------------------------------------------------------
|
||||
- name: "g7400.bin"
|
||||
system: videopac
|
||||
region: [europe]
|
||||
required: true
|
||||
size: 1024
|
||||
md5: "c500ff71236068e0dc0d0603d265ae76"
|
||||
sha1: "5130243429b40b01a14e1304d0394b8459a6fbae"
|
||||
crc32: "e20a9f41"
|
||||
note: "Philips Videopac+ G7400 European BIOS. vpp=1, enables enhanced graphics."
|
||||
source_ref: "libretro.c:187-191"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Philips Videopac+ G7400 (French) - JoPac
|
||||
# -------------------------------------------------------
|
||||
- name: "jopac.bin"
|
||||
system: videopac
|
||||
region: [france]
|
||||
required: true
|
||||
size: 1024
|
||||
md5: "279008e4a0db2dc5f1c048853b033828"
|
||||
sha1: "54b8d2c1317628de51a85fc1c424423a986775e4"
|
||||
crc32: "11647ca5"
|
||||
note: "Philips Videopac+ G7400 French BIOS (JoPac). vpp=1, enables enhanced graphics."
|
||||
source_ref: "libretro.c:198-203"
|
||||
|
||||
platform_details:
|
||||
odyssey2:
|
||||
bios_size: 1024
|
||||
bios_selection: "core option o2em_bios, default o2rom.bin"
|
||||
detection_method: "CRC32 of 1024-byte ROM"
|
||||
hle_available: false
|
||||
source_ref: "libretro.c:146-212, libretro_core_options.h:52-64"
|
||||
videopac:
|
||||
bios_size: 1024
|
||||
bios_selection: "core option o2em_bios, choose c52/g7400/jopac"
|
||||
detection_method: "CRC32 of 1024-byte ROM"
|
||||
vpp_flag: "g7400.bin and jopac.bin set vpp=1 for enhanced graphics"
|
||||
hle_available: false
|
||||
source_ref: "libretro.c:146-212, libretro_core_options.h:52-64"
|
||||
110
emulators/px68k.yml
Normal file
110
emulators/px68k.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
emulator: px68k
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/px68k-libretro"
|
||||
cores:
|
||||
- px68k
|
||||
systems:
|
||||
- sharp-x68000
|
||||
|
||||
# PX68K is a Sharp X68000 emulator (originally Keropi) ported to libretro.
|
||||
# All ROM files are loaded from <system_dir>/keropi/ subdirectory.
|
||||
#
|
||||
# ROM loading (libretro.c:848-893 WinX68k_LoadROMs):
|
||||
# 1. Base path set to <system_dir>/keropi/ via file_setcd(winx68k_dir) at line 969
|
||||
# 2. IPL ROM: iterates BIOSFILE[] = {iplrom.dat, iplrom30.dat, iplromco.dat, iplromxv.dat}
|
||||
# and opens the first file found. Reads 0x20000 bytes (128 KB) into IPL buffer.
|
||||
# Returns 0 (failure) if none found -- core will not start.
|
||||
# 3. SCSI check (WinX68k_SCSICheck): if IPL contains SCSI vectors at offset 0x30600-0x30c00,
|
||||
# patches a fake SCSI BIOS stub at $fc0000 with "Human68k" signature.
|
||||
# 4. Byte-swaps IPL in 16-bit pairs (big-endian ROM on little-endian host).
|
||||
# 5. Font ROM: opens cgrom.dat, falls back to cgrom.tmp if not found.
|
||||
# Reads 0xc0000 bytes (768 KB) into FONT buffer. Returns 0 if neither exists.
|
||||
#
|
||||
# SRAM (x68k/sram.c:50-73):
|
||||
# sram.dat is 16 KB of battery-backed SRAM, loaded on init and saved on cleanup.
|
||||
# Not a BIOS -- runtime state. Created automatically if missing.
|
||||
#
|
||||
# Directory layout expected:
|
||||
# <system_dir>/keropi/iplrom.dat (or iplrom30.dat, iplromco.dat, iplromxv.dat)
|
||||
# <system_dir>/keropi/cgrom.dat (or cgrom.tmp)
|
||||
# <system_dir>/keropi/sram.dat (auto-created)
|
||||
# <system_dir>/keropi/config (auto-created, core settings)
|
||||
|
||||
files:
|
||||
# IPL ROM -- the main system BIOS. The core tries four filenames in order and
|
||||
# uses the first one found. Only one is needed. iplrom.dat is the original X68000,
|
||||
# iplrom30.dat is X68030, iplromco.dat is X68000 Compact, iplromxv.dat is X68000 XVI.
|
||||
|
||||
- name: "iplrom.dat"
|
||||
path: "keropi/iplrom.dat"
|
||||
size: 131072
|
||||
required: true
|
||||
note: >
|
||||
X68000 IPL ROM (original model). 128 KB, loaded at IPL buffer offset 0x20000.
|
||||
The core tries iplrom.dat first, then iplrom30.dat, iplromco.dat, iplromxv.dat
|
||||
in order. At least one must be present or the core fails to start.
|
||||
source_ref: "libretro.c:850-867"
|
||||
|
||||
- name: "iplrom30.dat"
|
||||
path: "keropi/iplrom30.dat"
|
||||
size: 131072
|
||||
required: false
|
||||
note: >
|
||||
X68030 IPL ROM. Alternative to iplrom.dat for X68030 model emulation.
|
||||
Only used if iplrom.dat is not found.
|
||||
source_ref: "libretro.c:851"
|
||||
|
||||
- name: "iplromco.dat"
|
||||
path: "keropi/iplromco.dat"
|
||||
size: 131072
|
||||
required: false
|
||||
note: >
|
||||
X68000 Compact IPL ROM. Alternative to iplrom.dat.
|
||||
Only used if iplrom.dat and iplrom30.dat are not found.
|
||||
source_ref: "libretro.c:851"
|
||||
|
||||
- name: "iplromxv.dat"
|
||||
path: "keropi/iplromxv.dat"
|
||||
size: 131072
|
||||
required: false
|
||||
note: >
|
||||
X68000 XVI IPL ROM. Last fallback in the IPL search order.
|
||||
Only used if the three other IPL variants are not found.
|
||||
source_ref: "libretro.c:851"
|
||||
|
||||
# Font ROM -- character generator ROM for text rendering.
|
||||
|
||||
- name: "cgrom.dat"
|
||||
path: "keropi/cgrom.dat"
|
||||
size: 786432
|
||||
required: true
|
||||
note: >
|
||||
X68000 character generator ROM. 768 KB, provides the font glyphs for text
|
||||
display. If missing, the core falls back to cgrom.tmp (user-generated font
|
||||
cache). Core fails to start if neither file exists.
|
||||
source_ref: "libretro.c:853, libretro.c:881-891"
|
||||
|
||||
- name: "cgrom.tmp"
|
||||
path: "keropi/cgrom.tmp"
|
||||
size: 786432
|
||||
required: false
|
||||
note: >
|
||||
Alternative font file, used as fallback when cgrom.dat is absent.
|
||||
Typically a font cache generated by the emulator itself on other platforms.
|
||||
source_ref: "libretro.c:854, libretro.c:884-888"
|
||||
|
||||
notes:
|
||||
subdirectory: >
|
||||
All files must be placed in <system_dir>/keropi/ subdirectory. The core sets
|
||||
this path at init via sprintf(retro_system_conf, "%s/keropi", system_dir) and
|
||||
then calls file_setcd() to make it the base for all file_open_c() calls.
|
||||
ipl_selection: >
|
||||
The four IPL ROM variants correspond to different X68000 hardware revisions.
|
||||
The core uses whichever it finds first in order: iplrom.dat (original X68000),
|
||||
iplrom30.dat (X68030), iplromco.dat (Compact), iplromxv.dat (XVI). Most users
|
||||
only need iplrom.dat. The IPL also determines SASI vs SCSI disk support based
|
||||
on vectors found at offsets 0x30600-0x30c00.
|
||||
sram: >
|
||||
sram.dat (16 KB) is read/write runtime state, not a BIOS file. The core creates
|
||||
it automatically on first shutdown. It stores X68000 NVRAM settings (boot count,
|
||||
boot device preferences, SRAM-resident programs).
|
||||
Reference in New Issue
Block a user