mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
feat: re-profile 37 emulators with upstream verification
source-verified core_classification, upstream URLs, validation fields, and hle_fallback flags. trimmed verbose notes. removed phantom files (azahar boot9/sector0x96). added bsnes2014 variant profiles.
This commit is contained in:
@@ -1,18 +1,16 @@
|
||||
emulator: "00_example"
|
||||
type: test
|
||||
source: "https://github.com/libretro/libretro-samples"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "1.0"
|
||||
display_name: "Example Core"
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/libretro/libretro-core-info"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: ~
|
||||
display_name: "Example Core (.info template)"
|
||||
cores:
|
||||
- 00_example
|
||||
systems: []
|
||||
|
||||
notes: |
|
||||
Test/example core from libretro-samples. Minimal "hello world" libretro
|
||||
implementation demonstrating the core API contract (retro_init, retro_run,
|
||||
retro_load_game, etc.). Renders a simple color pattern to the framebuffer.
|
||||
|
||||
No system files, BIOS, or firmware required. Not an emulator.
|
||||
Format specification template from libretro-core-info. Documents the .info
|
||||
file format for core authors. No loadable binary, no emulated system.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
emulator: "2048"
|
||||
type: game
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/libretro/libretro-2048"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/gabrielecirulli/2048"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "1.0"
|
||||
display_name: "2048"
|
||||
cores: [2048]
|
||||
systems: []
|
||||
files: []
|
||||
notes: >
|
||||
Libretro port of the 2048 sliding puzzle game by Gabriele Cirulli.
|
||||
Self-contained core with all assets compiled into the binary.
|
||||
No content file, BIOS, or system directory files required.
|
||||
Ground-up C reimplementation of the 2048 puzzle game for libretro.
|
||||
All assets compiled into the binary. No system directory files required.
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
emulator: 3DEngine
|
||||
type: utility
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/libretro/libretro-3dengine"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/libretro/libretro-3dengine"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "v1"
|
||||
display_name: "Test Core - 3D Engine"
|
||||
cores: [3dengine]
|
||||
systems: []
|
||||
files: []
|
||||
notes: >
|
||||
Tech demo rendering a 3D scene using software rasterization.
|
||||
Demonstrates libretro hardware-accelerated rendering capabilities.
|
||||
Self-contained core with all geometry and textures built in.
|
||||
No content file, BIOS, or system directory files required.
|
||||
Tech demo for libretro hardware-accelerated rendering (OpenGL/ES).
|
||||
Loads .obj 3D models as content. No system directory files required.
|
||||
|
||||
416
emulators/81.yml
416
emulators/81.yml
@@ -1,16 +1,19 @@
|
||||
emulator: EightyOne
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/81-libretro"
|
||||
upstream: "https://github.com/charlierobson/EightyOne"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "1.0a"
|
||||
display_name: "Sinclair - ZX 81 (EightyOne)"
|
||||
cores: [81]
|
||||
systems:
|
||||
- sinclair-zx81
|
||||
- sinclair-zx80
|
||||
- sinclair-zx-spectrum
|
||||
- jupiter-ace
|
||||
- timex-ts1500
|
||||
- timex-tc2048
|
||||
- timex-ts2068
|
||||
- lambda-8300
|
||||
- ringo-r470
|
||||
@@ -19,54 +22,42 @@ systems:
|
||||
notes: |
|
||||
Libretro port embeds zx81.rom and dkchr.rom as C arrays (xxd -i).
|
||||
Core never accesses filesystem for ROMs. Hardcodes MACHINEZX81.
|
||||
ref: 81-libretro/81/zx81/snap.c:37-38, 487-508
|
||||
ref: 81-libretro/81/zx81/snap.c:487-508, src/libretro.cpp:393
|
||||
|
||||
Original EightyOne supports 15+ machines, loads ROMs from ROM/ directory.
|
||||
ref: EightyOne/Source/zx81/snap.cpp:1219-1279 — open(cwd/ROM/filename)
|
||||
ref: EightyOne/Source/HW_.cpp:2734 — LoadRomBox() per-machine ROM list
|
||||
ref: EightyOne/Source/zx81/zx81.cpp:309, EightyOne/Source/HW_.cpp:2734
|
||||
|
||||
No platform currently requires these files (libretro core embeds them).
|
||||
Archived for museum preservation and future standalone platform use.
|
||||
.info has no firmware declarations (firmware_count absent).
|
||||
|
||||
files:
|
||||
# --- libretro core: embedded, no external files needed ---
|
||||
# mode: standalone = needed only for standalone emulator
|
||||
# mode: libretro = needed only for libretro core
|
||||
# mode: both = needed in both modes (default if absent)
|
||||
# --- Machine ROMs ---
|
||||
# All mode: standalone — libretro core embeds what it needs
|
||||
|
||||
# ZX81 (default machine for libretro port)
|
||||
- name: zx81.rom
|
||||
# ZX81 (default machine for both libretro and standalone)
|
||||
- name: zx81.edition3.rom
|
||||
aliases: [zx81.rom]
|
||||
system: sinclair-zx81
|
||||
required: true
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: db398d4e4e93a6d4dee3bfe146918219
|
||||
note: "ZX81 8K BASIC ROM (edition 3). Embedded in libretro core."
|
||||
source_ref: "81-libretro/81/zx81/snap.c:489, EightyOne/Source/HW_.cpp:2744"
|
||||
validation: [crc32]
|
||||
note: "ZX81 8K BASIC ROM (edition 3, default). Embedded in libretro core as zx81.rom."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:260, 81-libretro/81/zx81/snap.c:489"
|
||||
- name: zx81.edition1.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 56efa70bbaf311915c56cfdc70584e96
|
||||
note: "ZX81 ROM edition 1"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2742"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2747"
|
||||
- name: zx81.edition2.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: b9fd58d324b6297f2a696d40722f95dc
|
||||
note: "ZX81 ROM edition 2"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2743"
|
||||
- name: dkchr.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 4096
|
||||
md5: ""
|
||||
note: "dK'tronics character ROM. Embedded in libretro core."
|
||||
source_ref: "81-libretro/81/zx81/snap.c:499"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2748"
|
||||
|
||||
# ZX80
|
||||
- name: zx80.rom
|
||||
@@ -75,8 +66,8 @@ files:
|
||||
mode: standalone
|
||||
size: 4096
|
||||
md5: e03bd725f98be45aac39c85f7fd41ce4
|
||||
note: "ZX80 4K ROM"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2737"
|
||||
validation: [crc32]
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:259, EightyOne/Source/HW_.cpp:2741"
|
||||
|
||||
# ZX97LE
|
||||
- name: zx97.rom
|
||||
@@ -85,8 +76,7 @@ files:
|
||||
mode: standalone
|
||||
size: 32768
|
||||
md5: cc69fdd6195acdfd1e533b2eb4c2a632
|
||||
note: "ZX97LE 32K ROM"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2789"
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:281, EightyOne/Source/HW_.cpp:2792"
|
||||
|
||||
# Jupiter ACE
|
||||
- name: jupiterace.rom
|
||||
@@ -95,8 +85,8 @@ files:
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: db6efdfd82cebdfbb493d85b1a5efc3c
|
||||
note: "Jupiter ACE Forth ROM"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2753"
|
||||
validation: [crc32]
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:279, EightyOne/Source/HW_.cpp:2787"
|
||||
|
||||
# Timex TS1500
|
||||
- name: ts1500.rom
|
||||
@@ -105,7 +95,7 @@ files:
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: dea07eb23c5768ddf3ed90740eab85cb
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2757"
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:271, EightyOne/Source/HW_.cpp:2764"
|
||||
|
||||
# Timex TS2068
|
||||
- name: ts2068.rom
|
||||
@@ -114,23 +104,33 @@ files:
|
||||
mode: standalone
|
||||
size: 24576
|
||||
md5: 9194283503a105f3f3dfba13e61e993f
|
||||
source_ref: "EightyOne/Source/ROMs/ts2068.rom"
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:274-275, EightyOne/Source/HW_.cpp:2884-2886"
|
||||
|
||||
# Lambda 8300
|
||||
- name: lambda8300.rom
|
||||
- name: lambda8300colour.rom
|
||||
system: lambda-8300
|
||||
required: true
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: e232dfce1dcae65953583f66af146232
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2773"
|
||||
- name: lambda8300colour.rom
|
||||
md5: 03aeea3abc7b1ca5f241935477ce71be
|
||||
note: "Lambda 8300 colour version (default ROM for Lambda machine)."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:276, EightyOne/Source/HW_.cpp:2771"
|
||||
- name: lambda8300.rom
|
||||
system: lambda-8300
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 03aeea3abc7b1ca5f241935477ce71be
|
||||
source_ref: "EightyOne/Source/ROMs/lambda8300colour.rom"
|
||||
md5: e232dfce1dcae65953583f66af146232
|
||||
note: "Lambda 8300 non-colour version (alternative)."
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2770"
|
||||
- name: lambda8300characterset.bin
|
||||
system: lambda-8300
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 512
|
||||
md5: be906890c4bf42dd99f1a3bcb6003647
|
||||
note: "Lambda 8300 external font. Loaded when extfont is enabled."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:312"
|
||||
|
||||
# Ringo R470
|
||||
- name: ringo470.rom
|
||||
@@ -139,7 +139,7 @@ files:
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: a70bbb0dfe4bb8556e74258062766f5d
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2769"
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:277, EightyOne/Source/HW_.cpp:2777"
|
||||
|
||||
# Microdigital TK85
|
||||
- name: tk85.rom
|
||||
@@ -148,130 +148,404 @@ files:
|
||||
mode: standalone
|
||||
size: 10240
|
||||
md5: b301cdad72448d92598197b45bead8fe
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2777"
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:278, EightyOne/Source/HW_.cpp:2782"
|
||||
|
||||
# Timex TC2048
|
||||
- name: tc2048.rom
|
||||
system: timex-tc2048
|
||||
required: true
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 9dd7ecf784a6c04265c073c236f5fadb
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:272, EightyOne/Source/HW_.cpp:2874-2876"
|
||||
|
||||
# --- Graphics board ROMs ---
|
||||
# Loaded by zx81_initialise() when corresponding hardware is selected
|
||||
|
||||
- name: dktronicsgraphics.rom
|
||||
aliases: [dkchr.rom]
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 4096
|
||||
md5: 5cba3a306fbb94454811ba262b27c958
|
||||
note: "dK'tronics character ROM. Embedded in libretro core as dkchr.rom."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:316, EightyOne/Source/zx81config.cpp:195-196"
|
||||
- name: kaydegraphics.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 4096
|
||||
md5: 4944facea84bea43f4495eaca19006d0
|
||||
note: "Kayde character ROM."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:320, EightyOne/Source/zx81config.cpp:197-198"
|
||||
- name: memotechhrg.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 2048
|
||||
md5: 70320cad0ab528e62dcc2ca847870995
|
||||
note: "Memotech HRG ROM."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:334, EightyOne/Source/zx81config.cpp:201-202"
|
||||
- name: quicksilvahires.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 2048
|
||||
md5: 1e7408a9a6d329751acc9d0810fd633d
|
||||
note: "Quicksilva Hi-Res ROM."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:338, EightyOne/Source/zx81config.cpp:203-204"
|
||||
- name: g007hrg.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 2048
|
||||
md5: 7f59a979b1332a168d2efbc971ce1df0
|
||||
note: "G007 HRG ROM."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:343, EightyOne/Source/zx81config.cpp:199-200"
|
||||
|
||||
# --- Interface ROMs ---
|
||||
# Loaded by zx81_initialise() when corresponding hardware is selected
|
||||
|
||||
- name: z80assembler.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 4096
|
||||
md5: b1581a2fcf4e5083d5fd92a1da373efa
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:348, EightyOne/Source/zx81config.cpp:206"
|
||||
- name: memocalc.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 4096
|
||||
md5: fae8c8cd2cef2ca6b72be5b1cd8509d8
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:352, EightyOne/Source/zx81config.cpp:207-208"
|
||||
|
||||
# --- FDC ROMs ---
|
||||
# Loaded by zx81_initialise() (larken81) or spec48_initialise() (others)
|
||||
|
||||
- name: larken81.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 2048
|
||||
md5: dec8c7f864c209db4defcfbe0774e220
|
||||
note: "Larken 81 floppy controller ROM."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:361, EightyOne/Source/zx81config.cpp:171-172"
|
||||
- name: interface1.edition2.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 31b704ae925305e74f50699271fddd9a
|
||||
note: "ZX Interface 1 ROM (default edition 2)."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:174-175"
|
||||
- name: interface1.edition1.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 5c11c61a2dd2ca4bf39328d9ff42d289
|
||||
source_ref: "EightyOne/Source/ROMs/FDCs/interface1.edition1.rom"
|
||||
- name: "+d.g+dos.v1-a.rom"
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 42e5de16fb5e50082bb954ec7ce45851
|
||||
note: "Plus D G+DOS ROM (default v1-a)."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:163-164"
|
||||
- name: disciple.gdos.v3.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 2b0c5e2fa87e0b641bdb26634faea234
|
||||
note: "DISCiPLE GDOS ROM v3."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:165-166"
|
||||
- name: discovery.v2-22.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 3beeddbf0aa716b7aba7deec2bfb3028
|
||||
note: "Opus Discovery DOS ROM (default v2-22)."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:167-168"
|
||||
- name: beta128.trdos.v5-03.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 0da70a5d2a0e733398e005b96b7e4ba6
|
||||
note: "Beta 128 TR-DOS ROM (default v5-03)."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:169-170"
|
||||
|
||||
# --- IDE ROMs ---
|
||||
# Loaded by zx81_initialise() (mwcfide) or spec48 peripherals (others)
|
||||
|
||||
- name: mwcfide.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 14648
|
||||
md5: d02ed1b39669c9b163f1fa2b1ffb41ee
|
||||
note: "MWCF IDE ROM."
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:381, EightyOne/Source/zx81config.cpp:183-184"
|
||||
- name: zxcflba.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 9dd7ecf784a6c04265c073c236f5fadb
|
||||
source_ref: "EightyOne/Source/ROMs/tc2048.rom"
|
||||
|
||||
# ZX Spectrum variants (standalone mode, multiple localizations)
|
||||
- name: spectrum48.rom
|
||||
md5: e518c0736cb4ce0484ac8091f5ea3e01
|
||||
note: "ZXCF CompactFlash IDE ROM."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:181-182"
|
||||
- name: zx8blbs.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: d8f203d2bebfe57d725b0d1067f3b92d
|
||||
note: "Simple 8-bit IDE ROM."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:177-178"
|
||||
- name: zxidelbs.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 6cfbf044b8f435b7f70eae37d9ee5c28
|
||||
note: "Simple 16-bit IDE ROM."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:179-180"
|
||||
|
||||
# --- Spectrum peripheral ROMs ---
|
||||
# Loaded by spec48_initialise() or Spectrum peripheral code
|
||||
|
||||
- name: uspeech.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 2048
|
||||
md5: 052f6af718337e35e76693723e1d73e3
|
||||
note: "Currah uSpeech ROM."
|
||||
source_ref: "EightyOne/Source/Spectrum/spec48.cpp:344, EightyOne/Source/zx81config.cpp:186-187"
|
||||
- name: usource.rom
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: ebe1490920cbb62bde7282ae24928d95
|
||||
note: "Currah uSource ROM."
|
||||
source_ref: "EightyOne/Source/Spectrum/spec48.cpp:350, EightyOne/Source/zx81config.cpp:188-189"
|
||||
- name: multiface128.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: c420ef03f6e0c477d9474efe3441a556
|
||||
note: "Multiface 128 ROM."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:190-191"
|
||||
- name: multiface3.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: afe2218c3a6a43f1854fe824424d4167
|
||||
note: "Multiface 3 ROM."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:192-193"
|
||||
|
||||
# --- Digitalker speech ROMs ---
|
||||
# Loaded by Digitalk::Init() when Digitalker speech is selected
|
||||
|
||||
- name: SSR1.bin
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 864beefecf0021fa6b0f5a5aff55c167
|
||||
note: "Digitalker speech ROM bank 1a."
|
||||
source_ref: "EightyOne/Source/Digitalker/Digitalkdrv.cpp:40-45"
|
||||
- name: SSR2.bin
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: d3924ecc0efda0a58c4bda43044061e4
|
||||
note: "Digitalker speech ROM bank 1b."
|
||||
source_ref: "EightyOne/Source/Digitalker/Digitalkdrv.cpp:49-54"
|
||||
- name: SSR5.bin
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: dd2793938c50217c0e5e8aef75b98856
|
||||
note: "Digitalker speech ROM bank 2a."
|
||||
source_ref: "EightyOne/Source/Digitalker/Digitalkdrv.cpp:58-63"
|
||||
- name: SSR6.bin
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 5d6ee8cdf1b12816c4f152b5a1e13977
|
||||
note: "Digitalker speech ROM bank 2b."
|
||||
source_ref: "EightyOne/Source/Digitalker/Digitalkdrv.cpp:67-72"
|
||||
|
||||
# --- ZXpand overlay ROMs (standalone only) ---
|
||||
# Loaded when ZXpand SD card interface is enabled
|
||||
|
||||
- name: zx81.zxpand.ovl
|
||||
system: sinclair-zx81
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 49b1bd3485d080bb242e94fd698f028d
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:298-303"
|
||||
- name: zx80.zxpand.ovl
|
||||
system: sinclair-zx80
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 37cea5c1e7144de898a7dc4b102fb7fd
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:304-305"
|
||||
- name: ts1500.zxpand.ovl
|
||||
system: timex-ts1500
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
md5: 49b1bd3485d080bb242e94fd698f028d
|
||||
source_ref: "EightyOne/Source/zx81/zx81.cpp:298-303"
|
||||
|
||||
# --- ZX Spectrum machine ROMs (standalone mode) ---
|
||||
|
||||
- name: spectrum48.rom
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 4c42a2f075212361c3117015b107ff68
|
||||
note: "Spectrum 48K"
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2802"
|
||||
note: "Spectrum 48K."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:261-263, EightyOne/Source/HW_.cpp:2800-2807"
|
||||
- name: spectrum48.spanish.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 60e1bd8b4d59b55e5b2175126239517f
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2812"
|
||||
- name: spectrum48.arabic.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: 9f6f56003307b9d55be96f406fdbf2b1
|
||||
source_ref: "EightyOne/Source/ROMs/spectrum48.arabic.rom"
|
||||
- name: spectrum48.arabic.version1.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: a6a1e3a68bb5523997103c3925a46fe4
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2813,2820"
|
||||
- name: spectrum48.arabic.version2.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: fac3d08455328c34f0d06344d89cec0e
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2828,2837"
|
||||
- name: spectrum48.nordic.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: f058f27ae61af225fe5baacc1d89adfc
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2806"
|
||||
- name: spectrum128.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 32768
|
||||
md5: 85fede415f4294cc777517d7eada482e
|
||||
note: "Spectrum 128K"
|
||||
note: "Spectrum 128K."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:264, EightyOne/Source/HW_.cpp:2817-2821"
|
||||
- name: spectrum128.spanish.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 32768
|
||||
md5: 84aef735da122d55e41a33455c7c3506
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2819"
|
||||
- name: spectrum+2.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 32768
|
||||
md5: 238f77692156a5c49d20c0aa2862e8bb
|
||||
note: "Spectrum +2"
|
||||
note: "Spectrum +2."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:266, EightyOne/Source/HW_.cpp:2824-2829"
|
||||
- name: spectrum+2.french.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 32768
|
||||
md5: 1fff14aeca8e1dd3670142982cc6bb36
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2826"
|
||||
- name: spectrum+2.spanish.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 32768
|
||||
md5: 43cf648e27efc9be8186bb7049505d79
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2827"
|
||||
- name: spectrum+3.version4-0.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 65536
|
||||
md5: 05de80a055b5e7866f55769db0584d6e
|
||||
note: "Spectrum +3"
|
||||
note: "Spectrum +3."
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2833,2854"
|
||||
- name: spectrum+3.version4-0.spanish.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 65536
|
||||
md5: 990dfe9d37b48595f5befe0e4ff4b7c6
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2835,2856"
|
||||
- name: spectrum+3.version4-1.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 65536
|
||||
md5: 7e00ed3562abfd188d0d4da03e80bc0a
|
||||
note: "Spectrum +3 (default for +2A and +3)."
|
||||
source_ref: "EightyOne/Source/zx81config.cpp:267-268, EightyOne/Source/HW_.cpp:2834,2855"
|
||||
- name: spectrum+3.version4-1.spanish.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 65536
|
||||
md5: 52d130178c1106fef765b5f119fb43bc
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2836,2857"
|
||||
- name: spectrum+3.arabic3-a.english4-0.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 131072
|
||||
md5: 30316fa0ed7ee6682933960e11b48d60
|
||||
source_ref: "EightyOne/Source/HW_.cpp:2858"
|
||||
- name: tk90.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: b7893ad25728fbf6410f08eddd4a1cad
|
||||
note: "Microdigital TK90X"
|
||||
note: "Microdigital TK90X (Spectrum clone)."
|
||||
source_ref: "EightyOne/Source/ROMs/tk90.rom"
|
||||
- name: tk95.rom
|
||||
system: sinclair-zx81
|
||||
system: sinclair-zx-spectrum
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 16384
|
||||
md5: b7893ad25728fbf6410f08eddd4a1cad
|
||||
note: "Microdigital TK95"
|
||||
note: "Microdigital TK95 (Spectrum clone)."
|
||||
source_ref: "EightyOne/Source/ROMs/tk95.rom"
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: a5200
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/a5200"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/alekmaul/a5200"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "2.0.2"
|
||||
display_name: "Atari - 5200 (a5200)"
|
||||
cores:
|
||||
@@ -9,23 +11,25 @@ cores:
|
||||
systems:
|
||||
- atari-5200
|
||||
|
||||
# a5200 is a dedicated Atari 5200 emulator forked from Atari800/Atari++ codebase.
|
||||
# It loads the official 5200 OS ROM from <system_dir>/5200.rom (2048 bytes, mapped
|
||||
# to memory at 0xF800-0xFFFF via MEMORY_InitialiseMachine).
|
||||
# Dedicated Atari 5200 emulator forked from Atari800 2.0.2 codebase by Alekmaul
|
||||
# for GCW Zero. Libretro port later enhanced by wavemotion-dave with Altirra OS
|
||||
# fallback, Super Cart support, frame blending and analog input.
|
||||
#
|
||||
# If 5200.rom is missing or the user selects "internal" via core option "a5200_bios",
|
||||
# the core falls back to Altirra 5200 OS, an open-source replacement compiled from
|
||||
# Altirra-3.20-test4 (altirra_5200_os.c). The fallback has reduced compatibility
|
||||
# compared to the original Atari OS ROM.
|
||||
# Loads 5200 OS ROM from <system_dir>/5200.rom (2048 bytes, mapped to 0xF800-0xFFFF
|
||||
# via MEMORY_InitialiseMachine). If missing or user selects "internal" via core
|
||||
# option "a5200_bios", falls back to built-in Altirra 5200 OS (altirra_5200_os.c,
|
||||
# compiled from Altirra-3.20-test4).
|
||||
#
|
||||
# BIOS loading (libretro.c:409-500):
|
||||
# BIOS loading (libretro.c:408-499):
|
||||
# 1. check_bios_variable() reads core option "a5200_bios" (official/internal)
|
||||
# 2. load_bios() attempts to read <system_dir>/5200.rom (0x800 bytes)
|
||||
# 3. On failure or "internal" selected: memcpy from ROM_altirra_5200_os fallback
|
||||
# 2. load_bios() reads <system_dir>/5200.rom, validates size == 0x800
|
||||
# 3. On failure or "internal" selected: memcpy from ROM_altirra_5200_os
|
||||
#
|
||||
# Cartridge detection (atari.c:169-236):
|
||||
# Auto-detects cart type from header bytes and size. ROM database in cartridge.c
|
||||
# maps MD5 hashes to cart types (standard 8K/16K/32K/40K, bounty bob, super cart).
|
||||
# Upstream divergence: alekmaul's standalone requires 5200.rom (exits on missing).
|
||||
# Libretro port makes it optional via Altirra fallback.
|
||||
#
|
||||
# Cart type detection via MD5 database in cartridge.c (standard 4K-512K, bounty bob,
|
||||
# super cart, EE banked). Unknown ROMs detected by size heuristic.
|
||||
|
||||
files:
|
||||
- name: "5200.rom"
|
||||
@@ -33,19 +37,8 @@ files:
|
||||
size: 2048
|
||||
required: false
|
||||
hle_fallback: true
|
||||
validation: [size]
|
||||
note: >
|
||||
Atari 5200 OS ROM. Provides the built-in OS routines used by all 5200
|
||||
cartridges. Without it, the core uses the Altirra open-source replacement
|
||||
which has lower compatibility with some games. Core option "a5200_bios"
|
||||
controls whether to use this file or the internal fallback.
|
||||
source_ref: "libretro/libretro.c:58-59, libretro/libretro.c:409-500, emu/memory.c:46"
|
||||
|
||||
notes:
|
||||
altirra_fallback: >
|
||||
The built-in Altirra 5200 OS (from altirra_5200_os.c, 0x800 bytes) is a free
|
||||
replacement that works for most games but some titles require the original ROM
|
||||
for full compatibility. The core displays a notification when falling back.
|
||||
cart_db: >
|
||||
cartridge.c contains an MD5-based ROM database for automatic cart type detection
|
||||
(standard, EE banked, bounty bob, super cart variants). Unknown ROMs are detected
|
||||
by size heuristic.
|
||||
Atari 5200 OS ROM. Core option "a5200_bios" controls official vs internal.
|
||||
Altirra replacement has lower compatibility with some titles.
|
||||
source_ref: "libretro/libretro.c:58-59, libretro/libretro.c:408-499, emu/memory.c:46"
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: advanced_tests
|
||||
type: test
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/libretro/libretro-samples"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/libretro/libretro-samples"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "v1"
|
||||
display_name: "Test Core - Advanced Test"
|
||||
cores:
|
||||
@@ -9,11 +11,9 @@ cores:
|
||||
systems: []
|
||||
|
||||
notes: |
|
||||
Advanced test core from libretro-samples. Exercises extended libretro API
|
||||
features: subsystems, memory descriptors, serialization, multi-disk control,
|
||||
and other optional environment callbacks. Used by frontend developers to
|
||||
validate their implementations.
|
||||
|
||||
No system files, BIOS, or firmware required. Not an emulator.
|
||||
Test core for frontend developers. Exercises video output, audio sync,
|
||||
input polling, and serialization. All data (font, CRC32 table) is embedded
|
||||
in the binary. No external files needed.
|
||||
source_ref: tests/test_advanced/libretro-test.c
|
||||
|
||||
files: []
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: amiarcadia
|
||||
type: libretro
|
||||
source: "https://amigan.yatho.com/"
|
||||
profiled_date: "2026-03-18"
|
||||
core_classification: official_port
|
||||
source: "https://github.com/warmenhoven/amiarcadia"
|
||||
upstream: "https://amigan.1emu.net/releases/"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "4.42"
|
||||
display_name: "Arcadia 2001 / Interton VC 4000 (AmiArcadia)"
|
||||
cores:
|
||||
@@ -11,32 +13,21 @@ systems:
|
||||
- interton-vc4000
|
||||
- elektor-tv-games-computer
|
||||
|
||||
# AmiArcadia is a libretro port of James Jacobs' emulator for Signetics
|
||||
# 2636 PVI / 2637 UVI + 2650 CPU-based systems: Emerson Arcadia 2001 and
|
||||
# clones (Bandai, Grandstand, Schmid, Hanimex, Leisurevision, etc.),
|
||||
# Interton VC 4000 family (Voltmace, Rowtron, Fountain, etc.), Elektor
|
||||
# TV Games Computer, and Zaccaria/Malzak coin-op arcade machines.
|
||||
# Libretro port of AmiArcadia/WinArcadia/DroidArcadia by James Jacobs.
|
||||
# Emulates Signetics 2636 PVI / 2637 UVI + 2650 CPU systems:
|
||||
# Emerson Arcadia 2001 and clones, Interton VC 4000 family,
|
||||
# Elektor TV Games Computer, Zaccaria and Malzak coin-ops.
|
||||
#
|
||||
# The core does NOT require any BIOS or system ROM files.
|
||||
# firmware_count = 0 in amiarcadia_libretro.info confirms this.
|
||||
# No external files required. These systems have no separate system ROM;
|
||||
# all code runs from the game cartridge. The core auto-identifies known
|
||||
# ROMs by CRC32 via games.h lookup table.
|
||||
#
|
||||
# ROM identification:
|
||||
# The core auto-identifies known game ROMs by CRC32 and configures the
|
||||
# correct machine type, memory map, and game-specific settings. For
|
||||
# unknown ROMs, the user selects machine type via the "Machine" core
|
||||
# option (Arcadia / Interton).
|
||||
#
|
||||
# Supported extensions: .bin, .tvc
|
||||
#
|
||||
# Source ref: libretro-core-info/amiarcadia_libretro.info (firmware_count = 0)
|
||||
# Docs: https://docs.libretro.com/library/amiarcadia/
|
||||
# source_ref: src/libretro.c:497-624 (retro_load_game — no file I/O)
|
||||
# source_ref: DroidArcadia/app/src/main/cpp/android.c:893-1052 (parse_bytes — ROM-only)
|
||||
# source_ref: DroidArcadia/app/src/main/cpp/da.h:3-5 (version 4.42)
|
||||
# source_ref: amiarcadia_libretro.info (firmware_count=0)
|
||||
|
||||
notes: |
|
||||
No BIOS files required. The emulator has no external firmware dependencies.
|
||||
Game ROMs are identified by CRC32 for automatic machine configuration.
|
||||
No BIOS or firmware files required. firmware_count=0 confirmed by source.
|
||||
|
||||
files: []
|
||||
|
||||
# closed-source core — cannot verify via source code scan.
|
||||
# firmware_count=0 in .info and docs confirm no BIOS needed.
|
||||
# signetics 2636/2637 systems have no separate system ROM.
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
emulator: Anarch
|
||||
type: game
|
||||
source: "https://github.com/libretro/anern"
|
||||
profiled_date: "2026-03-18"
|
||||
core_classification: community_fork
|
||||
source: "https://codeberg.org/iyzsong/anarch-libretro"
|
||||
upstream: "https://gitlab.com/drummyfish/anarch"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "1.1d"
|
||||
display_name: "Anarch"
|
||||
cores: [anarch]
|
||||
systems: []
|
||||
files: []
|
||||
notes: >
|
||||
Libretro port of Anarch, a public domain suckless FPS game by Miloslav Ciz.
|
||||
Entirely self-contained with all levels, textures, and sounds compiled
|
||||
into the binary using procedural generation and hardcoded data tables.
|
||||
No content file, BIOS, or system directory files required.
|
||||
Public domain suckless FPS game by Miloslav Ciz (drummyfish).
|
||||
Libretro port by iyzsong. All game data (levels, textures, sounds)
|
||||
compiled into the binary via header files. No external files required.
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
emulator: AppleWin
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/audetto/AppleWin"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "1.30.21.0"
|
||||
upstream: "https://github.com/AppleWin/AppleWin"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "1.31.0.1"
|
||||
display_name: "Apple II (AppleWin)"
|
||||
cores:
|
||||
- applewin
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: Ardens
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/tiberiusbrown/ardens"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/tiberiusbrown/ardens"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "Git"
|
||||
display_name: "Arduboy (Ardens)"
|
||||
cores:
|
||||
@@ -10,33 +12,11 @@ systems:
|
||||
- arduboy
|
||||
|
||||
notes: |
|
||||
Ardens is an Arduboy FX simulator designed for profiling and debugging,
|
||||
ported to libretro. It emulates the ATmega32U4 MCU, SSD1306 OLED display,
|
||||
and W25Q128 external flash used by the Arduboy hardware.
|
||||
|
||||
No BIOS or bootloader files are required. The core has all boot code
|
||||
compiled directly into the binary:
|
||||
|
||||
- Caterina/Arduboy3K bootloaders for multiple hardware revisions (D1, D2,
|
||||
E2) are embedded as C arrays generated from .hex files via bin2c.py.
|
||||
Located in src/boot/boot_game_*.c and src/boot/boot_menu_*.c.
|
||||
The appropriate variant is selected at reset based on the configured
|
||||
device type (absim_arduboy.cpp:115-161).
|
||||
|
||||
- Flashcart header (1536 bytes) is embedded in src/boot/boot_flashcart.c
|
||||
and written to the start of the W25Q128 flash image at init
|
||||
(absim_w25q128.hpp:14).
|
||||
|
||||
- EEPROM (1024 bytes) and external flash (W25Q128, 16 MB) state are
|
||||
handled as save RAM through the libretro RETRO_MEMORY_SAVE_RAM
|
||||
interface, not as system files.
|
||||
|
||||
The libretro port does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
|
||||
and never attempts to load any file from the system directory.
|
||||
The .info file declares firmware_count = 0.
|
||||
|
||||
Supported ROM formats: Intel HEX (.hex) and Arduboy package (.arduboy).
|
||||
block_extract is set to true (the core reads archives directly).
|
||||
Arduboy FX simulator (ATmega32U4 + SSD1306 + W25Q128). All boot code
|
||||
embedded as C arrays: Caterina/Arduboy3K bootloaders for D1/D2/E2
|
||||
hardware revisions and flashcart header. EEPROM and flash state handled
|
||||
via RETRO_MEMORY_SAVE_RAM. The libretro port never accesses the system
|
||||
directory. firmware_count = 0.
|
||||
|
||||
files: []
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: Arduous
|
||||
type: libretro
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/libretro/arduous"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/jmaroeder/arduous"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "0.1.0"
|
||||
display_name: "Arduboy (Arduous)"
|
||||
cores:
|
||||
@@ -10,37 +12,9 @@ systems:
|
||||
- arduboy
|
||||
|
||||
notes: |
|
||||
Arduous is an Arduboy emulator built on simavr (ATmega32U4 AVR simulator)
|
||||
with SSD1306 OLED display emulation, ported to libretro. It is distinct
|
||||
from the Ardens core, which is a separate Arduboy emulator.
|
||||
|
||||
No BIOS, bootloader, or system files are required. The core operates as a
|
||||
pure AVR simulator:
|
||||
|
||||
- The game content (.hex Intel HEX format) is parsed at load time via an
|
||||
in-tree ihex reader (arduous.cpp:60-166) and written directly into the
|
||||
simavr flash memory at the address specified in the hex file
|
||||
(arduous.cpp:189). No separate bootloader is loaded.
|
||||
|
||||
- The MCU is hardcoded to atmega32u4 at 16 MHz (arduous.h:70-71).
|
||||
simavr handles CPU initialization internally via avr_make_mcu_by_name().
|
||||
|
||||
- A commented-out loadFirmware() function (arduous.cpp:22-29) suggests
|
||||
ELF firmware loading was considered but never implemented.
|
||||
|
||||
- EEPROM (1024 bytes), system RAM, and VRAM are exposed via the libretro
|
||||
memory interface (RETRO_MEMORY_SAVE_RAM, RETRO_MEMORY_SYSTEM_RAM,
|
||||
RETRO_MEMORY_VIDEO_RAM) but are not loaded from external files.
|
||||
|
||||
- The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. The
|
||||
retro_load_game() function only reads the content data buffer passed
|
||||
by the frontend (libretro.cpp:108-110).
|
||||
|
||||
- RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME is set to false (libretro.cpp:123),
|
||||
meaning a game ROM is always required.
|
||||
|
||||
Supported ROM format: Intel HEX (.hex) only. The valid_extensions field
|
||||
lists "hex". A TODO comment mentions .arduboy ZIP support but it is not
|
||||
implemented.
|
||||
ATmega32U4 AVR simulator built on simavr with SSD1306 OLED display
|
||||
emulation. MCU hardcoded at 16 MHz (arduous.h:70-71). Game content
|
||||
(.hex) parsed via in-tree ihex reader and written directly into
|
||||
simavr flash (arduous.cpp:169-179). No system directory access.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
emulator: Atari800
|
||||
type: standalone + libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/libretro-atari800"
|
||||
upstream: "https://github.com/atari800/atari800"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "3.1.0"
|
||||
display_name: "Atari - 400/800/600XL/800XL/130XE/5200 (Atari800)"
|
||||
cores: [atari800]
|
||||
systems: [atari-400, atari-800, atari-800xl, atari-130xe, atari-5200, atari-xegs]
|
||||
|
||||
# Atari800 emulates the Atari 8-bit family (400/800/XL/XE) and the 5200 console.
|
||||
@@ -36,10 +38,12 @@ files:
|
||||
hle_fallback: true
|
||||
size: 2048
|
||||
md5: 281f20ea4320404ec820fb7ec0693b38
|
||||
aliases: [atari5200.rom, atar5200.rom, 5200.bin, atari_5200.rom]
|
||||
validation: [crc32]
|
||||
note: >
|
||||
Atari 5200 BIOS (original). Mapped at $F800-$FFFF.
|
||||
Altirra 5200 OS is used when this file is absent.
|
||||
source_ref: "atari800/src/sysrom.c:101, libretro info firmware0"
|
||||
source_ref: "atari800/src/sysrom.c:101-102,254-255"
|
||||
|
||||
# -- Atari BASIC ROM --
|
||||
# Atari BASIC interpreter (8 KB). Three known revisions:
|
||||
@@ -54,10 +58,12 @@ files:
|
||||
hle_fallback: true
|
||||
size: 8192
|
||||
md5: 0bac0c6a50104045d902df4503a4c30b
|
||||
aliases: [ataribasic.rom, basic.rom, atari_basic.rom]
|
||||
validation: [crc32]
|
||||
note: >
|
||||
Atari BASIC Rev C. Required for 400/800 software that needs BASIC.
|
||||
Altirra BASIC is used as fallback. Enable via core option atari800_opt2.
|
||||
source_ref: "atari800/src/sysrom.c:103-105, libretro info firmware1"
|
||||
source_ref: "atari800/src/sysrom.c:103-105,256"
|
||||
|
||||
# -- Atari 400/800 OS A --
|
||||
# Original Atari 400/800 OS (10 KB). Two known CRC32 values:
|
||||
@@ -70,10 +76,12 @@ files:
|
||||
hle_fallback: true
|
||||
size: 10240
|
||||
md5: eb1f32f5d9f382db1bbfb8d7f9cb343a
|
||||
aliases: [atari_osa.rom, atari_os_a.rom]
|
||||
validation: [crc32]
|
||||
note: >
|
||||
Atari 400/800 OS Rev A. Altirra OS 800 is used as fallback.
|
||||
Auto-select order: OS B NTSC, OS A NTSC, OS A PAL, custom, Altirra.
|
||||
source_ref: "atari800/src/sysrom.c:87-89, libretro info firmware2"
|
||||
source_ref: "atari800/src/sysrom.c:87-88,250"
|
||||
|
||||
# -- Atari 400/800 OS B --
|
||||
# OS revision B (10 KB), NTSC: CRC32 0x0e86d61d
|
||||
@@ -86,13 +94,15 @@ files:
|
||||
size: 10240
|
||||
md5: 4177f386a3bac989a981d3fe3388cb6c
|
||||
crc32: 0e86d61d
|
||||
aliases: [atari_osb.rom, atari_os_b.rom]
|
||||
validation: [crc32]
|
||||
note: >
|
||||
Atari 400/800 OS Rev B (NTSC). CRC32 0x0e86d61d matches sysrom.c
|
||||
SYSROM_B_NTSC. Preferred over Rev A for 400/800 mode.
|
||||
Note: .info lists md5 a3e8d617c95d08031fe1b20d541434b2 which is a
|
||||
different dump (crc32 3e28a1fe) — both in repo, the CRC32-matched
|
||||
different dump (crc32 3e28a1fe) -- both in repo, the CRC32-matched
|
||||
version is the one sysrom.c auto-detects.
|
||||
source_ref: "atari800/src/sysrom.c:89, libretro info firmware3"
|
||||
source_ref: "atari800/src/sysrom.c:89,251"
|
||||
|
||||
# -- Atari XL/XE OS --
|
||||
# XL/XE OS (16 KB). Many revisions known by CRC32 in sysrom.c:
|
||||
@@ -108,10 +118,12 @@ files:
|
||||
hle_fallback: true
|
||||
size: 16384
|
||||
md5: 06daac977823773a3eea3422fd26a703
|
||||
aliases: [atarixlxe.rom, atari_xlxe.rom, atari_xl_xe.rom]
|
||||
validation: [crc32]
|
||||
note: >
|
||||
Atari XL/XE OS. Used for 800XL, 130XE, and XEGS modes.
|
||||
Altirra XL OS is used as fallback.
|
||||
source_ref: "atari800/src/sysrom.c:90-99, libretro info firmware4"
|
||||
source_ref: "atari800/src/sysrom.c:90-99,253"
|
||||
|
||||
# -- Atari XL/XE/XEGS OS v4 (BB01R4) --
|
||||
# XEGS-specific OS revision BB01R4 (16 KB), CRC32: 0x1eaf4002
|
||||
@@ -123,9 +135,10 @@ files:
|
||||
hle_fallback: true
|
||||
size: 16384
|
||||
md5: b7a2a04677d34f069eeb643d5238bf86
|
||||
validation: [crc32]
|
||||
note: >
|
||||
Atari XEGS OS Rev 4 (BB01R4). Preferred OS for XEGS machine mode.
|
||||
source_ref: "atari800/src/sysrom.c:98, libretro info firmware5"
|
||||
source_ref: "atari800/src/sysrom.c:98"
|
||||
|
||||
# -- XEGS Missile Command built-in game --
|
||||
# The XEGS had Missile Command in ROM (8 KB), CRC32: 0xbdca01fb
|
||||
@@ -136,10 +149,11 @@ files:
|
||||
required: false
|
||||
size: 8192
|
||||
md5: d7eb37aec6960cba36bc500e0e5d00bc
|
||||
validation: [crc32]
|
||||
note: >
|
||||
XEGS built-in Missile Command ROM. Only used in XEGS machine mode.
|
||||
No built-in replacement exists for this ROM.
|
||||
source_ref: "atari800/src/sysrom.c:106, libretro info firmware6"
|
||||
source_ref: "atari800/src/sysrom.c:106"
|
||||
|
||||
# Known ROM revisions from sysrom.c (CRC32 identifiers):
|
||||
#
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: Azahar
|
||||
type: standalone + libretro
|
||||
source: "https://github.com/azahar-emu/azahar"
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/johndoe6345789/azahar_libretro"
|
||||
upstream: "https://github.com/azahar-emu/azahar"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "Git"
|
||||
display_name: "Nintendo - 3DS (Azahar)"
|
||||
cores: [azahar]
|
||||
@@ -10,47 +11,42 @@ systems:
|
||||
- nintendo-3ds
|
||||
|
||||
notes: |
|
||||
Azahar is the successor to Citra (via Lime3DS). Different codebase
|
||||
from libretro/citra — has additional files not in the old Citra.
|
||||
Successor to Citra (via Lime3DS). Libretro port by johndoe6345789.
|
||||
Data dir: azahar-emu (legacy: citra-emu, lime3ds-emu).
|
||||
ref: src/common/common_paths.h:41-47
|
||||
ref: src/common/common_paths.h:41-43
|
||||
|
||||
Key file: keys.txt (NOT aes_keys.txt like libretro/citra).
|
||||
ref: src/common/common_paths.h:83
|
||||
Key file named keys.txt (not aes_keys.txt like old Citra).
|
||||
Embedded encrypted key fallback if keys.txt absent.
|
||||
ref: src/core/hw/aes/key.cpp:282-297
|
||||
|
||||
Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
|
||||
ref: src/citra_libretro/environment.cpp:194
|
||||
ref: src/citra_libretro/environment.cpp:179
|
||||
|
||||
.info has firmware_count=0 but core uses system_dir for files.
|
||||
.info has firmware_count=0 but core loads files from system_dir.
|
||||
|
||||
boot9.bin and sector0x96.bin are defined in common_paths.h:84-85
|
||||
but never loaded by any code path. Dead defines from Citra heritage.
|
||||
|
||||
System archives (shared font, Mii data, country list, bad word list)
|
||||
have open-source replacements embedded in the binary.
|
||||
ref: src/core/file_sys/archive_ncch.cpp:146-176
|
||||
|
||||
files:
|
||||
# --- sysdata/ ---
|
||||
- name: keys.txt
|
||||
path: sysdata/keys.txt
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "AES keys (named keys.txt in Azahar, aes_keys.txt in old Citra)"
|
||||
source_ref: "src/common/common_paths.h:83, src/core/hw/aes/key.cpp:291"
|
||||
|
||||
- name: boot9.bin
|
||||
path: sysdata/boot9.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
source_ref: "src/common/common_paths.h:84"
|
||||
|
||||
- name: sector0x96.bin
|
||||
path: sysdata/sector0x96.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
source_ref: "src/common/common_paths.h:85"
|
||||
hle_fallback: true
|
||||
note: "embedded encrypted fallback if missing"
|
||||
source_ref: "src/core/hw/aes/key.cpp:283, src/common/common_paths.h:83"
|
||||
|
||||
- name: shared_font.bin
|
||||
path: sysdata/shared_font.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "HLE fallback if missing"
|
||||
source_ref: "src/common/common_paths.h:82"
|
||||
note: "legacy load path; embedded open-source font used if missing"
|
||||
source_ref: "src/core/hle/service/apt/apt.cpp:263-278"
|
||||
|
||||
- name: seeddb.bin
|
||||
path: sysdata/seeddb.bin
|
||||
@@ -59,33 +55,34 @@ files:
|
||||
note: "game seed database for 9.6+ titles"
|
||||
source_ref: "src/core/file_sys/seed_db.cpp:15"
|
||||
|
||||
# --- Azahar-only (not in libretro/citra) ---
|
||||
# These require src/core/hw/unique_data.cpp which only exists in Azahar
|
||||
|
||||
- name: otp.bin
|
||||
path: sysdata/otp.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "OTP data for key derivation. Azahar-only."
|
||||
source_ref: "src/core/hw/unique_data.cpp:214"
|
||||
validation: [size, crypto]
|
||||
note: "OTP data for console key derivation"
|
||||
source_ref: "src/core/hw/unique_data.cpp:126-167, src/core/hw/unique_data.cpp:213"
|
||||
|
||||
- name: movable.sed
|
||||
path: nand/private/movable.sed
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "console-unique key seed. Azahar-only."
|
||||
source_ref: "src/core/hw/unique_data.cpp:218"
|
||||
validation: [size, signature]
|
||||
note: "console-unique key seed"
|
||||
source_ref: "src/core/hw/unique_data.cpp:170-200, src/core/hw/unique_data.cpp:217"
|
||||
|
||||
- name: SecureInfo_A
|
||||
path: nand/rw/sys/SecureInfo_A
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "console serial/region. Azahar-only."
|
||||
source_ref: "src/core/hw/unique_data.cpp:206"
|
||||
validation: [size, signature]
|
||||
note: "console serial and region data"
|
||||
source_ref: "src/core/hw/unique_data.cpp:43-92, src/core/hw/unique_data.cpp:205"
|
||||
|
||||
- name: LocalFriendCodeSeed_B
|
||||
path: nand/rw/sys/LocalFriendCodeSeed_B
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "friend code generation. Azahar-only."
|
||||
source_ref: "src/core/hw/unique_data.cpp:210"
|
||||
validation: [size, signature]
|
||||
note: "friend code generation seed"
|
||||
source_ref: "src/core/hw/unique_data.cpp:94-123, src/core/hw/unique_data.cpp:209"
|
||||
|
||||
@@ -1,45 +1,38 @@
|
||||
emulator: b2
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/zoltanvb/b2-libretro"
|
||||
upstream: "https://github.com/tom-seddon/b2"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v0.1"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v0.4"
|
||||
display_name: "Acorn - BBC Micro (b2)"
|
||||
cores: [b2]
|
||||
systems:
|
||||
- bbc-micro-b
|
||||
- bbc-micro-bplus
|
||||
- bbc-master-128
|
||||
- bbc-master-compact
|
||||
|
||||
notes: |
|
||||
b2 is a BBC Micro emulator by Tom Seddon. Libretro port by Zoltan Balogh.
|
||||
Libretro port by Zoltan Balogh of Tom Seddon's b2 BBC Micro emulator.
|
||||
is_experimental=true in .info.
|
||||
ref: zoltanvb/b2-libretro, tom-seddon/b2
|
||||
|
||||
Standalone: loads ROMs from etc/roms/ via GetAssetPath().
|
||||
Standalone loads ROMs from etc/roms/ via GetAssetPath() + LoadFile().
|
||||
ref: tom-seddon/b2/src/b2/roms.cpp:9-10
|
||||
|
||||
Libretro port (experimental): GetAssetPath stubbed in
|
||||
src/libretro/adapters.cpp to return relative paths. LoadFile also
|
||||
stubbed (returns false). ROM loading mechanism unclear — the 256 ROM
|
||||
files are in the repo but the stub suggests they may not load at runtime.
|
||||
is_experimental=true in .info.
|
||||
ref: zoltanvb/b2-libretro/src/libretro/adapters.cpp
|
||||
Libretro port embeds all ROMs as hex arrays in src/libretro/roms.hpp.
|
||||
create_core() loads OS and sideways ROMs from static machine_types[] arrays.
|
||||
GetAssetPath() and LoadFile() are stubbed — no file I/O at runtime.
|
||||
ref: zoltanvb/b2-libretro/src/libretro/roms.hpp
|
||||
ref: zoltanvb/b2-libretro/src/libretro/core.cpp:274-304
|
||||
ref: zoltanvb/b2-libretro/src/libretro/adapters.cpp:74-78
|
||||
|
||||
256 ROM files in etc/roms/ cover: BBC Model B (OS 1.20, BASIC II),
|
||||
Model B+ (B+MOS), Master 128 (MOS 3.20, 3.50), Master Compact
|
||||
(MOS 5.00, 5.10, I5.10C/Olivetti), parasite processors (65C102 TUBE,
|
||||
6502 TUBE), disc interfaces (Acorn 1770, Watford, Opus).
|
||||
|
||||
All ROMs ship with both standalone and libretro repos.
|
||||
No external BIOS files needed by the user for either mode.
|
||||
9 machine types: B/Acorn 1770, B/Watford DDB2, B/Watford DDB3,
|
||||
B/Opus 1770, B/Opus Challenger 256K, B/Opus Challenger 512K,
|
||||
B+, B+128, Master 128 (MOS 3.20).
|
||||
Master 3.50, Master Turbo, Master Compact not yet implemented.
|
||||
ref: zoltanvb/b2-libretro/src/libretro/core.h:117
|
||||
|
||||
files: []
|
||||
# 256 ROMs bundled in repo etc/roms/ — not loaded from system dir
|
||||
# standalone loads via GetAssetPath("roms", path) -> etc/roms/
|
||||
# libretro port has LoadFile stubbed — ROM loading mechanism TBD
|
||||
# is_experimental=true, core may not fully function
|
||||
|
||||
# closed-source analysis note: core binary on buildbot contains
|
||||
# "Retro ROM DIRECTORY" and "system_dir" strings but LoadFile stub
|
||||
# returns false. needs further investigation when port matures.
|
||||
# all ROMs embedded in binary via roms.hpp — no external files needed
|
||||
# .info firmware_count=0 matches code reality
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: BennuGD
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/diekleinekuh/BennuGD_libretro"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/SplinterGU/BennuGD"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "git"
|
||||
display_name: "Bennu Game Development"
|
||||
cores:
|
||||
@@ -9,26 +11,13 @@ cores:
|
||||
systems:
|
||||
- bennugd
|
||||
|
||||
# BennuGD is an open-source interpreter for BennuGD (.dcb/.dat) game files,
|
||||
# running as a libretro core. It is a successor to DIV Games Studio / Fenix.
|
||||
# Notable game: Streets of Rage Remake.
|
||||
#
|
||||
# The official libretro .info file (bennugd_libretro.info) declares zero
|
||||
# firmware entries. The core loads content directly via bgdi_main() and does
|
||||
# not reference any files from the system directory.
|
||||
#
|
||||
# retro_load_game() in libretro.c:888-911 only reads the content path and
|
||||
# the save directory. RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY is called once
|
||||
# (libretro.c:899) solely as a fallback for the save directory, never to
|
||||
# load BIOS or firmware.
|
||||
#
|
||||
# Supported extensions: dcb, dat, exe (Windows BennuGD executables)
|
||||
# Valid extensions in libretro.c: dat, dcb
|
||||
# Valid extensions in .info: dcb, dat, exe
|
||||
# .info firmware_count: 0. Code verified: retro_load_game() (libretro.c:887-910)
|
||||
# uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY only as save directory fallback.
|
||||
# bgdi_main() (core/bgdi/src/main.c:80-371) loads .dcb/.dat bytecode content
|
||||
# directly. No files read from system directory.
|
||||
|
||||
notes: |
|
||||
No BIOS or firmware required. BennuGD is a self-contained game interpreter.
|
||||
Games are loaded as .dcb or .dat bytecode files compiled by the BennuGD
|
||||
toolchain. All game assets are bundled with the content.
|
||||
Self-contained interpreter for BennuGD bytecode (.dcb/.dat). Successor to
|
||||
DIV Games Studio / Fenix. Games bundle all assets with the content file.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: bk-emulator
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/bk-emulator"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/emestee/bk-emulator"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "1.00"
|
||||
display_name: "Elektronika - BK-0010/BK-0011(M)"
|
||||
cores:
|
||||
@@ -19,16 +21,17 @@ systems:
|
||||
# Slow BK-0011M (model 4) - same ROMs as model 3
|
||||
# Terak 8510/a (model 9)
|
||||
#
|
||||
# ROM loading (boot.c:84-117):
|
||||
# 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-1094):
|
||||
# ROM file resolution (libretro.c:1050-1107):
|
||||
# Files are loaded from {system_dir}/bk/{filename} (libretro.c:720-728).
|
||||
# If not found with original casing, the loader retries with lowercase
|
||||
# filename (libretro.c:1071-1081).
|
||||
# Size is validated (min/max bounds); no hash validation.
|
||||
#
|
||||
# All ROM files are required for their respective model. The core calls
|
||||
# environ_cb(RETRO_ENVIRONMENT_SHUTDOWN) if any ROM file is missing.
|
||||
@@ -49,6 +52,7 @@ files:
|
||||
path: "bk/MONIT10.ROM"
|
||||
size: 8192
|
||||
required: true
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -59,6 +63,7 @@ files:
|
||||
path: "bk/FOCAL10.ROM"
|
||||
size: 24576
|
||||
required: false
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -67,6 +72,7 @@ files:
|
||||
path: "bk/BASIC10.ROM"
|
||||
size: 24576
|
||||
required: false
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -77,6 +83,7 @@ files:
|
||||
path: "bk/DISK_327.ROM"
|
||||
size: 4096
|
||||
required: false
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -87,6 +94,7 @@ files:
|
||||
path: "bk/B11M_BOS.ROM"
|
||||
size: 8192
|
||||
required: false
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -95,6 +103,7 @@ files:
|
||||
path: "bk/B11M_EXT.ROM"
|
||||
size: 8192
|
||||
required: false
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -103,6 +112,7 @@ files:
|
||||
path: "bk/BAS11M_0.ROM"
|
||||
size: 16384
|
||||
required: false
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -111,6 +121,7 @@ files:
|
||||
path: "bk/BAS11M_1.ROM"
|
||||
size: 8192
|
||||
required: false
|
||||
validation: [size]
|
||||
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"]
|
||||
@@ -121,7 +132,8 @@ files:
|
||||
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)."
|
||||
validation: [size]
|
||||
note: "Terak 8510/a boot ROM (128 bytes). Used when model is set to Terak 8510/a (model 9)."
|
||||
source_ref: "boot.c:94"
|
||||
aliases: ["terak.rom"]
|
||||
|
||||
@@ -145,7 +157,7 @@ platform_details:
|
||||
Terak 8510/a: TERAK.ROM
|
||||
|
||||
rom_loading:
|
||||
source_ref: "libretro.c:1051-1108"
|
||||
source_ref: "libretro.c:1050-1107"
|
||||
notes: |
|
||||
load_rom_file() first tries {romdir}/{filename} with original casing.
|
||||
If not found, retries with the filename converted to lowercase.
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: BlastEm
|
||||
type: standalone + libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/blastem"
|
||||
upstream: "https://www.retrodev.com/blastem/"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v0.6.3-pre"
|
||||
display_name: "Sega - Mega Drive - Genesis (BlastEm)"
|
||||
cores:
|
||||
@@ -30,7 +31,7 @@ notes: |
|
||||
No BIOS files are required or loaded by the libretro core.
|
||||
|
||||
files:
|
||||
# rom.db is embedded in the libretro binary (libblastem.c:532-540,
|
||||
# rom.db is embedded in the libretro binary (libblastem.c:532-542,
|
||||
# extern const char rom_db_data[]). The external file is an optional
|
||||
# override — .info lists it as firmware0_opt=true.
|
||||
# .info sha1 E5414FB1C4CC7D7F5101C07E4547316779BA3D97 does not match
|
||||
@@ -41,7 +42,7 @@ files:
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "ROM feature database (game-specific mapper/save config). Embedded in core, external is optional override."
|
||||
source_ref: "libblastem.c:532-540 read_bundled_file()"
|
||||
source_ref: "libblastem.c:532-542 read_bundled_file()"
|
||||
|
||||
# TMSS ROM — only used in standalone mode with tmss-enabled model
|
||||
# libretro build returns NULL for tmss.md (libblastem.c:541)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: blueMSX
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/blueMSX-libretro"
|
||||
upstream: "http://bluemsx.msxblue.com/"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "SVN"
|
||||
display_name: "MSX/SVI/ColecoVision/SG-1000 (blueMSX)"
|
||||
cores:
|
||||
@@ -393,8 +394,9 @@ files:
|
||||
path: "Machines/Shared Roms/FMPAC.rom"
|
||||
size: 65536
|
||||
required: false
|
||||
note: "FM-PAC cartridge ROM (YM2413 FM synthesis). Loaded as expansion cartridge by MegaromCartridge.c."
|
||||
source_ref: "Src/Memory/MegaromCartridge.c:290"
|
||||
hle_fallback: true
|
||||
note: "FM-PAC cartridge ROM (YM2413 FM synthesis). If missing, core uses built-in minimal ROM stub."
|
||||
source_ref: "Src/Memory/MegaromCartridge.c:289-305"
|
||||
|
||||
- name: XBASIC2.rom
|
||||
path: "Machines/Shared Roms/XBASIC2.rom"
|
||||
@@ -648,6 +650,30 @@ files:
|
||||
bundled: true
|
||||
note: "MSX system ROM database. Bundled with core."
|
||||
|
||||
- name: colecodb.xml
|
||||
path: "Databases/colecodb.xml"
|
||||
required: false
|
||||
bundled: true
|
||||
note: "ColecoVision ROM database. Bundled with core."
|
||||
|
||||
- name: msxcaswavdb.xml
|
||||
path: "Databases/msxcaswavdb.xml"
|
||||
required: false
|
||||
bundled: true
|
||||
note: "MSX cassette/WAV media database. Bundled with core."
|
||||
|
||||
- name: segadb.xml
|
||||
path: "Databases/segadb.xml"
|
||||
required: false
|
||||
bundled: true
|
||||
note: "Sega SG-1000/SC-3000/SF-7000 ROM database. Bundled with core."
|
||||
|
||||
- name: svidb.xml
|
||||
path: "Databases/svidb.xml"
|
||||
required: false
|
||||
bundled: true
|
||||
note: "Spectravideo SVI ROM database. Bundled with core."
|
||||
|
||||
# Machine count: 170+ machine configurations covering dozens of regional MSX
|
||||
# variants from manufacturers like Panasonic, Sony, Philips, Yamaha, Sanyo,
|
||||
# National, Toshiba, Daewoo, Sharp, Gradiente, Spectravideo, and others.
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: bnes
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/bnes-libretro"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/Alcaro/bsnes-gc"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v083"
|
||||
display_name: "Nintendo - NES / Famicom (bnes)"
|
||||
cores:
|
||||
@@ -10,27 +12,13 @@ systems:
|
||||
- nes
|
||||
|
||||
notes: |
|
||||
bnes is a NES emulator based on byuu's bNES/higan v083 NES module, ported
|
||||
to libretro by Ryphecha. It is a lightweight, accuracy-focused NES core.
|
||||
|
||||
The core loads cartridge data entirely through retro_load_game with
|
||||
need_fullpath=false (libretro/libretro.cpp:129). ROM data is passed as a
|
||||
memory buffer and parsed by Cartridge::load (nes/cartridge/cartridge.cpp:18-31),
|
||||
which detects iNES headers (16-byte offset) and delegates to Board::load.
|
||||
|
||||
The PPU generates its palette from a hardcoded color table in
|
||||
libretro/libretro.cpp:20-37 with emphasis factor tables. No external
|
||||
palette file is loaded.
|
||||
|
||||
System::init (nes/system/system.cpp:62-66) only sets up the interface
|
||||
pointer and default input devices. No system ROM, BIOS, or firmware is
|
||||
loaded at any stage of initialization or cartridge loading.
|
||||
|
||||
The core does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and has no
|
||||
file I/O for BIOS or firmware. FDS (Famicom Disk System) is not supported,
|
||||
so disksys.rom is not needed.
|
||||
|
||||
No external BIOS or firmware files are needed.
|
||||
Frozen libretro port of byuu's higan v083 NES module by Ryphecha. Experimental,
|
||||
not maintained. ROM data passed via retro_load_game memory buffer
|
||||
(libretro/libretro.cpp:181-184). Cartridge::load parses iNES headers and
|
||||
delegates to Board::load (nes/cartridge/cartridge.cpp:18-31). System::init sets
|
||||
up the interface pointer and default input devices (nes/system/system.cpp:62-66).
|
||||
No system directory access. No FDS support. Palette hardcoded
|
||||
(libretro/libretro.cpp:20-37). .info declares no firmware (firmware_count absent).
|
||||
|
||||
files: []
|
||||
|
||||
@@ -40,24 +28,7 @@ analysis:
|
||||
cartridge_load: "nes/cartridge/cartridge.cpp:18-31 - parses iNES header + ROM data"
|
||||
system_init: "nes/system/system.cpp:62-66 - sets interface pointer, no ROM loading"
|
||||
system_power: "nes/system/system.cpp:43-50 - powers subsystems, no file I/O"
|
||||
interface_init: "nes/interface/interface.cpp - stores derived pointer, calls system.init"
|
||||
supported_mappers:
|
||||
- NROM
|
||||
- SxROM (MMC1)
|
||||
- UxROM
|
||||
- CNROM
|
||||
- TxROM (MMC3)
|
||||
- ExROM (MMC5)
|
||||
- AxROM
|
||||
- BnROM
|
||||
- GxROM
|
||||
- PxROM (MMC4)
|
||||
- FxROM (MMC4)
|
||||
- Bandai FCG
|
||||
- Konami VRC4
|
||||
- Konami VRC6
|
||||
- Konami VRC7
|
||||
- Sunsoft 5B
|
||||
interface_init: "nes/interface/interface.cpp:17-20 - stores derived pointer, calls system.init"
|
||||
fds_support: false
|
||||
filesystem_access: false
|
||||
system_directory_used: false
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
emulator: boom3
|
||||
type: libretro
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/libretro/boom3"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/dhewm/dhewm3"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "git"
|
||||
display_name: "Doom 3 (boom3)"
|
||||
cores: [boom3, boom3_xp]
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
emulator: Boytacean
|
||||
type: standalone + libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/joamag/boytacean"
|
||||
upstream: "https://github.com/joamag/boytacean"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.10.13"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "0.11.5"
|
||||
display_name: "Nintendo - Game Boy / Color (Boytacean)"
|
||||
cores:
|
||||
- boytacean
|
||||
@@ -12,23 +13,21 @@ systems:
|
||||
- nintendo-gbc
|
||||
|
||||
notes: |
|
||||
Boytacean is a Game Boy / Game Boy Color emulator written in Rust.
|
||||
Game Boy / Game Boy Color emulator written in Rust by Joao Magalhaes.
|
||||
|
||||
Libretro: boot ROMs compiled into binary as static byte arrays in
|
||||
Libretro: all boot ROMs compiled into binary as static byte arrays in
|
||||
src/data.rs. load_boot_static() copies from arrays. No filesystem
|
||||
access, no RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. No external files.
|
||||
ref: frontends/libretro/src/core.rs:402 instance.load(true)
|
||||
ref: core.rs:402 instance.load(true) -> gb.rs:1311 -> load_boot_static
|
||||
|
||||
Standalone (SDL): loads boot ROMs from ./res/boot/*.bin via
|
||||
load_boot_path() at gb.rs:1363-1368. 8 boot ROM files shipped in repo.
|
||||
ref: frontends/sdl/src/main.rs, src/gb.rs:1341
|
||||
Standalone (SDL): also defaults to embedded boot ROMs via load(true).
|
||||
User can override via --boot-rom-path CLI argument with any boot ROM
|
||||
file. load_boot_file() with hardcoded ./res/boot/*.bin paths exists in
|
||||
gb.rs:1361 but is not called from any frontend.
|
||||
|
||||
Boot ROM defaults:
|
||||
- DMG: BootRom::DmgBootix (gb.rs:1352) - open-source, 256 bytes
|
||||
- CGB: BootRom::CgbBoytacean (gb.rs:1355) - open-source, 2304 bytes
|
||||
Boot ROM defaults: DmgBootix (DMG), CgbBoytacean (CGB) — open-source.
|
||||
|
||||
files:
|
||||
# Standalone mode loads from res/boot/ — libretro embeds all as arrays
|
||||
- name: dmg_boot.bin
|
||||
system: nintendo-gb
|
||||
required: false
|
||||
@@ -36,7 +35,7 @@ files:
|
||||
mode: standalone
|
||||
size: 256
|
||||
note: "Original Nintendo DMG boot ROM"
|
||||
source_ref: "gb.rs:1363, data.rs:14 (embedded as DMG_BOOT)"
|
||||
source_ref: "gb.rs:1350 load_boot_static, data.rs:14 DMG_BOOT"
|
||||
|
||||
- name: sgb_boot.bin
|
||||
system: nintendo-gb
|
||||
@@ -45,7 +44,7 @@ files:
|
||||
mode: standalone
|
||||
size: 256
|
||||
note: "Super Game Boy boot ROM"
|
||||
source_ref: "gb.rs:1364, data.rs:29 (embedded as SGB_BOOT)"
|
||||
source_ref: "gb.rs:1351 load_boot_static, data.rs:29 SGB_BOOT"
|
||||
|
||||
- name: dmg_bootix.bin
|
||||
system: nintendo-gb
|
||||
@@ -53,8 +52,8 @@ files:
|
||||
hle_fallback: true
|
||||
mode: standalone
|
||||
size: 256
|
||||
note: "Open-source DMG boot ROM from Bootix (default)"
|
||||
source_ref: "gb.rs:1365, data.rs:44 (embedded as DMG_BOOTIX)"
|
||||
note: "Open-source DMG boot ROM from Bootix (default DMG)"
|
||||
source_ref: "gb.rs:1352 load_boot_static, data.rs:44 DMG_BOOTIX"
|
||||
|
||||
- name: mgb_bootix.bin
|
||||
system: nintendo-gb
|
||||
@@ -63,7 +62,7 @@ files:
|
||||
mode: standalone
|
||||
size: 256
|
||||
note: "Open-source MGB (Pocket) boot ROM from Bootix"
|
||||
source_ref: "gb.rs:1366, data.rs:59 (embedded as MGB_BOOTIX)"
|
||||
source_ref: "gb.rs:1353 load_boot_static, data.rs:59 MGB_BOOTIX"
|
||||
|
||||
- name: cgb_boot.bin
|
||||
system: nintendo-gbc
|
||||
@@ -72,7 +71,7 @@ files:
|
||||
mode: standalone
|
||||
size: 2304
|
||||
note: "Original Nintendo CGB boot ROM"
|
||||
source_ref: "gb.rs:1367, data.rs:74 (embedded as CGB_BOOT)"
|
||||
source_ref: "gb.rs:1354 load_boot_static, data.rs:74 CGB_BOOT"
|
||||
|
||||
- name: cgb_boytacean.bin
|
||||
system: nintendo-gbc
|
||||
@@ -80,21 +79,5 @@ files:
|
||||
hle_fallback: true
|
||||
mode: standalone
|
||||
size: 2304
|
||||
note: "Custom open-source CGB boot ROM (default)"
|
||||
source_ref: "gb.rs:1368, data.rs:177 (embedded as CGB_BOYTACEAN)"
|
||||
|
||||
- name: dmg_pyboy.bin
|
||||
system: nintendo-gb
|
||||
required: false
|
||||
hle_fallback: true
|
||||
mode: standalone
|
||||
note: "PyBoy DMG boot ROM variant (in res/boot/, not embedded in data.rs)"
|
||||
source_ref: "res/boot/dmg_pyboy.bin"
|
||||
|
||||
- name: cgb_pyboy.bin
|
||||
system: nintendo-gbc
|
||||
required: false
|
||||
hle_fallback: true
|
||||
mode: standalone
|
||||
note: "PyBoy CGB boot ROM variant (in res/boot/, not embedded in data.rs)"
|
||||
source_ref: "res/boot/cgb_pyboy.bin"
|
||||
note: "Custom open-source CGB boot ROM (default CGB)"
|
||||
source_ref: "gb.rs:1355 load_boot_static, data.rs:177 CGB_BOYTACEAN"
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
emulator: bsnes-jg
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/bsnes-jg"
|
||||
upstream: "https://github.com/libretro/bsnes-jg"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "2.0.0"
|
||||
upstream: "https://gitlab.com/jgemu/bsnes"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "2.1.0"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes-jg)"
|
||||
cores: [bsnes-jg]
|
||||
systems:
|
||||
@@ -13,107 +14,130 @@ systems:
|
||||
- nintendo-sufami-turbo
|
||||
|
||||
notes: |
|
||||
bsnes-jg is a fork of bsnes v115 by Rupert Carmichael, rewritten for
|
||||
C++ standard library. Coprocessor firmware loaded from system_dir via
|
||||
openFileCallback. SGB boot ROMs and CX4/HitachiDSP data ROM embedded.
|
||||
Fork of bsnes v115 by Rupert Carmichael, rewritten for C++ standard library.
|
||||
Coprocessor firmware loaded from system_dir via openFileCallback.
|
||||
HLE available for DSP1/1B/2/4 and ST010 (core option bsnes_jg_coproc_preferhle).
|
||||
DSP3, ST011, ST018 require LLE firmware in all cases (no HLE path).
|
||||
CX4/HitachiDSP uses embedded static data ROM (3072 bytes), no external file.
|
||||
SGB1/SGB2 boot ROMs embedded (256 bytes each).
|
||||
BML game databases embedded as C++ string literals.
|
||||
|
||||
ref: libretro/libretro.cpp:722 RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
|
||||
ref: libretro/libretro.cpp:428-470 firmware path construction (sysdir + filename)
|
||||
ref: src/cartridge.cpp:774-786 openFileCallback for DSP/ST .program.rom/.data.rom
|
||||
ref: libretro/libretro.cpp:420-502 fileOpenV firmware loading callback
|
||||
ref: src/cartridge.cpp:754-829 uPD7725 (DSP1-4) LLE/HLE dispatch
|
||||
ref: src/cartridge.cpp:831-901 uPD96050 (ST010/ST011) LLE/HLE dispatch
|
||||
ref: src/cartridge.cpp:615-670 ARM6 (ST018) firmware loading
|
||||
ref: src/cartridge.cpp:672-752 HG51BS169 (HitachiDSP/CX4) embedded ROM + HLE
|
||||
ref: src/coprocessor/icd.cpp:249,260 SGB1/SGB2 boot ROMs embedded
|
||||
ref: src/cartridge.cpp:62 HitachiDSP static data ROM embedded (3072 bytes)
|
||||
ref: libretro/libretro.cpp:30-33,410-416 BML databases embedded
|
||||
ref: src/cartridge.cpp:62 hitachidspStaticDataROM embedded
|
||||
ref: libretro/libretro.cpp:30-33 BML databases embedded
|
||||
|
||||
files:
|
||||
# SNES coprocessor firmware — loaded from system_dir, all optional
|
||||
# Games using these coprocessors won't work without the firmware
|
||||
# but most SNES games don't use coprocessors
|
||||
# uPD7725 coprocessor firmware (DSP1, DSP1B, DSP2, DSP3, DSP4)
|
||||
# HLE fallback available for DSP1/1B/2/4, not for DSP3
|
||||
|
||||
- name: dsp1.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:428-429"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:429, src/cartridge.cpp:774,798-804"
|
||||
|
||||
- name: dsp1.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:431-432"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:432, src/cartridge.cpp:786,798-804"
|
||||
|
||||
- name: dsp1b.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:434-435"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:435, src/cartridge.cpp:774,798-804"
|
||||
|
||||
- name: dsp1b.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:437-438"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:438, src/cartridge.cpp:786,798-804"
|
||||
|
||||
- name: dsp2.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:440-441"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:441, src/cartridge.cpp:774,806-811"
|
||||
|
||||
- name: dsp2.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:443-444"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:444, src/cartridge.cpp:786,806-811"
|
||||
|
||||
- name: dsp3.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:446-447"
|
||||
source_ref: "libretro/libretro.cpp:447-448, src/cartridge.cpp:774,822-828"
|
||||
|
||||
- name: dsp3.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:450-451"
|
||||
source_ref: "libretro/libretro.cpp:451-452, src/cartridge.cpp:786,822-828"
|
||||
|
||||
- name: dsp4.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp:455"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:455, src/cartridge.cpp:774,813-818"
|
||||
|
||||
- name: dsp4.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:458, src/cartridge.cpp:786,813-818"
|
||||
|
||||
# uPD96050 coprocessor firmware (ST010, ST011)
|
||||
# HLE fallback available for ST010, not for ST011
|
||||
|
||||
- name: st010.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:461, src/cartridge.cpp:851,872-882"
|
||||
|
||||
- name: st010.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp"
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/libretro.cpp:464, src/cartridge.cpp:863,872-882"
|
||||
|
||||
- name: st011.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp"
|
||||
source_ref: "libretro/libretro.cpp:467-468, src/cartridge.cpp:851,884-901"
|
||||
|
||||
- name: st011.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp"
|
||||
source_ref: "libretro/libretro.cpp:471-472, src/cartridge.cpp:863,884-901"
|
||||
|
||||
# ARM6 coprocessor firmware (ST018)
|
||||
# Internal name arm6, mapped to st018 by libretro wrapper. No HLE.
|
||||
|
||||
- name: st018.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp"
|
||||
source_ref: "libretro/libretro.cpp:475-476, src/cartridge.cpp:640"
|
||||
aliases: [arm6.program.rom]
|
||||
|
||||
- name: st018.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "libretro/libretro.cpp"
|
||||
source_ref: "libretro/libretro.cpp:479-480, src/cartridge.cpp:650"
|
||||
aliases: [arm6.data.rom]
|
||||
|
||||
# Embedded (no external file needed):
|
||||
# SGB1BootROM[256] — src/coprocessor/icd.cpp:249
|
||||
# SGB2BootROM[256] — src/coprocessor/icd.cpp:260
|
||||
# hitachidspStaticDataROM[3072] — src/cartridge.cpp:62
|
||||
# CX4 HLE — src/cartridge.cpp:705-720 (preferHLE path for HG51BS169)
|
||||
# boards_bml — libretro/boards_bml.hpp
|
||||
# SuperFamicom_bml — libretro/SuperFamicom_bml.hpp
|
||||
# BSMemory_bml — libretro/BSMemory_bml.hpp
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
emulator: bsnes
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/bsnes-libretro"
|
||||
upstream: "https://github.com/bsnes-emu/bsnes"
|
||||
logo: "https://raw.githubusercontent.com/bsnes-emu/bsnes/master/bsnes/target-bsnes/resource/bsnes.svg"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "115"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes)"
|
||||
cores: [bsnes]
|
||||
systems: [nintendo-snes, nintendo-super-game-boy, nintendo-satellaview]
|
||||
|
||||
# bsnes supports HLE for DSP1/DSP1B/DSP2/DSP4, ST010, and Cx4.
|
||||
@@ -172,8 +175,7 @@ files:
|
||||
|
||||
- name: "BS-X.bin"
|
||||
required: true
|
||||
md5: fed4d8242cfbed61343d53d48432aced
|
||||
note: "BS-X Satellaview BIOS ROM. Required for .bs games. .info md5=fed4d824, repo has 96cf17bf (Rev 1 vs original)"
|
||||
note: "BS-X Satellaview BIOS ROM. Required for .bs games"
|
||||
source_ref: "target-libretro/libretro.cpp:948"
|
||||
|
||||
notes:
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: bsnes 2014
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/bsnes2014"
|
||||
upstream: "https://github.com/bsnes-emu/bsnes"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v094"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes 2014)"
|
||||
cores: [bsnes2014_accuracy, bsnes2014_balanced, bsnes2014_performance]
|
||||
@@ -13,110 +14,123 @@ systems:
|
||||
- nintendo-sufami-turbo
|
||||
|
||||
notes: |
|
||||
bsnes 2014 is based on bsnes v094. Three build profiles:
|
||||
accuracy (dot-based PPU), balanced, performance (scanline PPU).
|
||||
All 3 profiles use the same 18 firmware files. Profiles differ only
|
||||
in PPU implementation (sfc/profile-*.hpp: CPU/SMP/DSP/PPU alternates),
|
||||
not in coprocessor support. CX4/Hitachi compiled in all profiles.
|
||||
.info says performance has 17 (no cx4) — this is wrong, verified in
|
||||
sfc/profile-performance.hpp which only changes CPU/SMP/DSP/PPU.
|
||||
|
||||
Unlike modern bsnes (v115+), v094 does NOT have HLE fallback for
|
||||
coprocessors. CX4 is NOT embedded — cx4.data.rom is required
|
||||
externally. SGB boot ROM is NOT embedded — sgb.boot.rom required.
|
||||
|
||||
Frozen at bsnes v094. Three build profiles: accuracy (dot-based PPU),
|
||||
balanced, performance (scanline PPU). All 3 share the same 18 firmware
|
||||
files. Profiles only differ in PPU (sfc/profile-*.hpp), not coprocessors.
|
||||
Performance .info is wrong (firmware_count=17, missing cx4.data.rom).
|
||||
SPC700 IPL ROM (64 bytes) embedded in target-libretro/libretro.cpp:31.
|
||||
No HLE fallback for any coprocessor in v094.
|
||||
Firmware loaded from system_dir via file::exists() + mmapstream.
|
||||
ref: target-libretro/libretro.cpp — penviron(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY)
|
||||
ref: ananke/heuristics/super-famicom.hpp — firmware name definitions
|
||||
ref: ananke/super-famicom.cpp:120 — sgb.boot.rom copy
|
||||
DSP1 (non-b) names used via embedded database for specific SHA256-matched
|
||||
games; DSP1B names used via heuristic fallback for all DSP1/DSP1B games.
|
||||
Upstream v094 source is contained within the libretro repo (sfc/, ananke/).
|
||||
bsnes-emu/bsnes is the modern rewrite (v115+).
|
||||
|
||||
files:
|
||||
# DSP coprocessor split ROMs (program + data)
|
||||
- name: dsp1.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:381"
|
||||
size: 6144
|
||||
source_ref: "ananke/database/super-famicom.hpp:5658"
|
||||
|
||||
- name: dsp1.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:382"
|
||||
size: 2048
|
||||
source_ref: "ananke/database/super-famicom.hpp:5659"
|
||||
|
||||
- name: dsp1b.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:381"
|
||||
|
||||
- name: dsp1b.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:382"
|
||||
|
||||
- name: dsp2.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:403"
|
||||
|
||||
- name: dsp2.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:404"
|
||||
|
||||
- name: dsp3.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE fallback in v094 — required for SD Gundam GX"
|
||||
size: 6144
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:417"
|
||||
|
||||
- name: dsp3.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:418"
|
||||
|
||||
- name: dsp4.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:431"
|
||||
|
||||
- name: dsp4.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:432"
|
||||
|
||||
# CX4 (Hitachi) — NOT embedded in v094 unlike bsnes v115+
|
||||
- name: cx4.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 3072
|
||||
note: "Capcom CX4 coprocessor data. Required for Mega Man X2/X3. Used in all 3 profiles (.info performance is wrong). NOT embedded in v094."
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:146"
|
||||
|
||||
# Seta coprocessors
|
||||
- name: st010.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 49152
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:445"
|
||||
|
||||
- name: st010.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 4096
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:446"
|
||||
|
||||
- name: st011.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE fallback — required for Hayazashi Nidan Morita Shougi"
|
||||
size: 49152
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:460"
|
||||
|
||||
- name: st011.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 4096
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:461"
|
||||
|
||||
- name: st018.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "ARM coprocessor. Required for Hayazashi Nidan Morita Shougi 2"
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:475-476"
|
||||
size: 131072
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:475"
|
||||
|
||||
- name: st018.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 32768
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:476"
|
||||
|
||||
# SGB boot ROM — NOT embedded in v094 unlike bsnes-jg/v115+
|
||||
- name: sgb.boot.rom
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
size: 256
|
||||
note: "SGB boot ROM (256 bytes). NOT embedded in v094. Present in all 3 profiles."
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:133, ananke/super-famicom.cpp:120"
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:133"
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
emulator: bsnes C++98
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/bsnes-libretro-cplusplus98"
|
||||
upstream: "https://github.com/bsnes-emu/bsnes"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://byuu.org/"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v085 (Performance)"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes C++98 (v085))"
|
||||
cores: [bsnes_cplusplus98]
|
||||
systems:
|
||||
- nintendo-snes
|
||||
- nintendo-sufami-turbo
|
||||
- nintendo-satellaview
|
||||
|
||||
notes: |
|
||||
bsnes C++98 is bsnes v085 downgraded to C++98 for old compilers.
|
||||
Frozen snapshot of bsnes v085 downgraded to C++98 for old compilers (PS3).
|
||||
Performance profile only. is_experimental=true.
|
||||
|
||||
Firmware loading differs from newer bsnes versions:
|
||||
- NEC DSP (dsp1/2/3/4) and Hitachi DSP (cx4) firmware loaded from
|
||||
the SAME DIRECTORY as the ROM, not from system_dir.
|
||||
- Path: dir(interface->path(Slot::Base, ".dsp")) + firmware_name
|
||||
ref: snes/cartridge/markup.cpp:231
|
||||
- interface->path() returns basename + hint
|
||||
ref: snes/libretro/libretro.cpp path() method
|
||||
- Firmware name comes from the game's XML/BML markup (root["firmware"])
|
||||
NOT fixed names like dsp1.program.rom
|
||||
- Files are COMBINED (program+data in one file), not split
|
||||
ref: snes/cartridge/markup.cpp:243-244 reads promsize*3 + dromsize*2
|
||||
NEC DSP and Hitachi DSP firmware loaded from the ROM directory, not
|
||||
system_dir. Path: dir(interface->path(Slot::Base, ".dsp")) + firmware_name
|
||||
from game XML markup. interface->path() returns ROM basename + hint.
|
||||
ref: snes/cartridge/markup.cpp parse_markup_necdsp, parse_markup_hitachidsp
|
||||
ref: snes/libretro/libretro.cpp Interface::path()
|
||||
|
||||
.info has firmware_count=0 because firmware is loaded from ROM dir,
|
||||
not from system_dir — RetroArch can't pre-populate them.
|
||||
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY is never called.
|
||||
No file I/O targets system_dir anywhere in the codebase.
|
||||
|
||||
The core warns "NEC DSP firmware X is missing" if not found but
|
||||
continues without the coprocessor (games using it won't work).
|
||||
Core continues without DSP firmware but coprocessor games won't function.
|
||||
|
||||
exclusion_note: >
|
||||
firmware_count=0 in .info is correct. DSP firmware (NEC uPD7725/uPD96050,
|
||||
Hitachi CX4) is loaded from the ROM directory via game XML markup, not from
|
||||
system_dir. RetroArch cannot pre-populate firmware in the ROM directory.
|
||||
Upstream byuu.org is defunct; this libretro port is the preserved v085 code.
|
||||
|
||||
files: []
|
||||
# firmware loaded from ROM directory, not system directory
|
||||
# no files to declare for system_dir placement
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
emulator: bsnes-hd beta
|
||||
type: libretro
|
||||
core_classification: enhanced_fork
|
||||
source: "https://github.com/DerKoun/bsnes-hd"
|
||||
upstream: "https://github.com/bsnes-emu/bsnes"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v10.6"
|
||||
# .info says v112.v12 but repo shows Version = "10.6", SerializerVersion = "114.2"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes-hd beta)"
|
||||
cores: [bsnes_hd_beta]
|
||||
systems:
|
||||
@@ -14,112 +14,139 @@ systems:
|
||||
- nintendo-sufami-turbo
|
||||
|
||||
notes: |
|
||||
bsnes-hd beta is bsnes ~v114 by DerKoun with widescreen and
|
||||
increased color depth. Same firmware as bsnes v115.
|
||||
bsnes-hd beta is a fork of bsnes ~v114 by DerKoun with widescreen
|
||||
and true color rendering. Firmware handling identical to bsnes v115.
|
||||
repo Version="10.6", SerializerVersion="114.2"
|
||||
ref: bsnes/emulator/emulator.hpp:34,40
|
||||
ref: bsnes/emulator/emulator.hpp:33-34,40
|
||||
|
||||
SGB boot ROMs embedded in binary (icd/boot-roms.cpp:1,12).
|
||||
SGB1.sfc/SGB2.sfc are SGB cartridge ROMs (not boot ROMs).
|
||||
HLE available for DSP1/2/4, ST010, CX4 — LLE firmware optional.
|
||||
DSP3, ST011, ST018 have no HLE — LLE firmware required for those.
|
||||
|
||||
ref: bsnes/sfc/coprocessor/icd/boot-roms.cpp:1,12
|
||||
ref: bsnes/sfc/coprocessor/icd/icd.cpp:87,90
|
||||
ref: bsnes/heuristics/super-famicom.cpp:115
|
||||
HLE available for DSP1/1B/2/4, ST010, CX4 (default ON in libretro).
|
||||
DSP3, ST011, ST018 have no HLE.
|
||||
Coprocessor firmware not loaded from system_dir in libretro wrapper;
|
||||
HLE used by default, LLE requires firmware embedded in ROM.
|
||||
ref: sfc/cartridge/load.cpp:431,506,586
|
||||
ref: sfc/coprocessor/icd/icd.cpp:87,90
|
||||
ref: target-libretro/libretro_core_options.h:462-470
|
||||
|
||||
files:
|
||||
# Split DSP coprocessor firmware
|
||||
# NEC uPD7725 coprocessor firmware (DSP1/1B/2/3/4)
|
||||
# code requests upd7725.program.rom / upd7725.data.rom internally
|
||||
# .info conventional names used here
|
||||
- name: dsp1.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:490-494,506-513"
|
||||
- name: dsp1.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:498-503,506-513"
|
||||
- name: dsp1b.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:490-494,506-513"
|
||||
- name: dsp1b.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:498-503,506-513"
|
||||
- name: dsp2.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:490-494,515-520"
|
||||
- name: dsp2.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:498-503,515-520"
|
||||
- name: dsp3.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for SD Gundam GX"
|
||||
source_ref: "sfc/cartridge/load.cpp:490-494,531-534"
|
||||
- name: dsp3.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for SD Gundam GX"
|
||||
source_ref: "sfc/cartridge/load.cpp:498-503,531-534"
|
||||
- name: dsp4.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:490-494,522-528"
|
||||
- name: dsp4.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:498-503,522-528"
|
||||
|
||||
# CX4 (Hitachi)
|
||||
# Hitachi HG51BS169 coprocessor (CX4)
|
||||
# code requests hg51bs169.data.rom internally
|
||||
- name: cx4.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 3072
|
||||
note: "HLE available — LLE optional for Mega Man X2/X3"
|
||||
source_ref: "sfc/cartridge/load.cpp:431-454"
|
||||
|
||||
# Seta coprocessors
|
||||
# NEC uPD96050 coprocessor (ST010/ST011)
|
||||
# code requests upd96050.program.rom / upd96050.data.rom internally
|
||||
- name: st010.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:570-574,586-596"
|
||||
- name: st010.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "sfc/cartridge/load.cpp:578-583,586-596"
|
||||
- name: st011.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for Hayazashi Nidan Morita Shougi"
|
||||
source_ref: "sfc/cartridge/load.cpp:570-574,599-602"
|
||||
- name: st011.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for Hayazashi Nidan Morita Shougi"
|
||||
source_ref: "sfc/cartridge/load.cpp:578-583,599-602"
|
||||
|
||||
# ARM6 coprocessor (ST018)
|
||||
# code requests arm6.program.rom / arm6.data.rom internally
|
||||
- name: st018.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for Hayazashi Nidan Morita Shougi 2"
|
||||
source_ref: "sfc/cartridge/load.cpp:379-384"
|
||||
- name: st018.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for Hayazashi Nidan Morita Shougi 2"
|
||||
source_ref: "sfc/cartridge/load.cpp:387-393"
|
||||
|
||||
# SGB cartridge ROMs (NOT boot ROMs — boot ROMs are embedded)
|
||||
# sgb_bios variable set by core option bsnes_sgb_bios (libretro.cpp:280-285)
|
||||
# SGB cartridge ROMs (boot ROMs embedded in icd/boot-roms.cpp)
|
||||
# sgb_bios core option selects SGB1.sfc or SGB2.sfc (default: SGB1.sfc)
|
||||
- name: SGB1.sfc
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
md5: b15ddb15721c657d82c5bab6db982ee9
|
||||
note: "SGB1 cartridge ROM. Boot ROM embedded in icd/boot-roms.cpp:1"
|
||||
source_ref: "libretro.cpp:1022,1040"
|
||||
source_ref: "target-libretro/libretro.cpp:1022,1040"
|
||||
- name: SGB2.sfc
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
md5: 8ecd73eb4edf7ed7e81aef1be80031d5
|
||||
note: "SGB2 cartridge ROM. Boot ROM embedded in icd/boot-roms.cpp:12"
|
||||
source_ref: "libretro.cpp:1022,1040"
|
||||
source_ref: "target-libretro/libretro.cpp:1022,1040"
|
||||
|
||||
# Satellaview BIOS — required for .bs files
|
||||
# Satellaview BIOS
|
||||
- name: BS-X.bin
|
||||
system: nintendo-satellaview
|
||||
required: false
|
||||
note: "Satellaview BIOS. Required when loading .bs files. Core returns false if missing."
|
||||
source_ref: "libretro.cpp:1054-1060"
|
||||
note: "required when loading .bs files, core returns false if missing"
|
||||
source_ref: "target-libretro/libretro.cpp:1054-1060"
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: bsnes-mercury
|
||||
type: libretro
|
||||
core_classification: enhanced_fork
|
||||
source: "https://github.com/libretro/bsnes-mercury"
|
||||
upstream: "https://github.com/bsnes-emu/bsnes"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://byuu.org/higan"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v094 (Mercury)"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes-mercury)"
|
||||
cores: [bsnes_mercury_accuracy, bsnes_mercury_balanced, bsnes_mercury_performance]
|
||||
@@ -13,100 +14,156 @@ systems:
|
||||
- nintendo-sufami-turbo
|
||||
|
||||
notes: |
|
||||
bsnes-mercury is bsnes v094 with Mercury optimizations: HLE for DSP
|
||||
and Hitachi coprocessors, firmware_appended support, overclocking.
|
||||
Fork of higan v094 by Alcaro. Restores HLE for coprocessor chips removed
|
||||
in v094, adds firmware_appended support and SuperFX overclocking.
|
||||
Three profiles: accuracy, balanced, performance (PPU differs, not firmware).
|
||||
.info says performance has 17 fw (no cx4) but the code compiles CX4 LLE
|
||||
in all profiles — cx4.data.rom works in performance too. The .info is wrong.
|
||||
Core option bsnes_chip_hle (default LLE) controls HLE/LLE at runtime.
|
||||
ref: target-libretro/libretro.cpp altImplementation(), "bsnes_chip_hle"
|
||||
Core option bsnes_chip_hle (default LLE, requires bsnes_violate_accuracy)
|
||||
controls HLE/LLE at runtime. ref: target-libretro/libretro.cpp:428-442
|
||||
|
||||
Same firmware loading as bsnes2014: system_dir via file::exists +
|
||||
mmapstream. No BS-X auto-load from system_dir (subsystem only).
|
||||
ref: target-libretro/libretro.cpp:245-254
|
||||
|
||||
HLE fallback for DSP1/1B/2/4, Hitachi/CX4, ST010.
|
||||
ref: sfc/cartridge/markup.cpp:351,404,618
|
||||
Firmware loaded from system_dir via file::exists + mmapstream.
|
||||
No hash or size validation on any firmware file.
|
||||
ref: target-libretro/libretro.cpp:241-263
|
||||
|
||||
firmware_appended: firmware can be appended to end of ROM file.
|
||||
ref: ananke/heuristics/super-famicom.hpp:83
|
||||
|
||||
SGB boot ROM NOT embedded (sgb.boot.rom from system_dir).
|
||||
CX4 NOT embedded (cx4.data.rom from system_dir).
|
||||
SPC700 IPL ROM (64 bytes) is embedded in the binary.
|
||||
ref: target-libretro/libretro.cpp:39
|
||||
|
||||
Upstream higan v094 by byuu (2014, site defunct). Mercury preserves v094
|
||||
code with HLE additions documented in changes.diff at repo root.
|
||||
|
||||
files:
|
||||
# Same 18 files as bsnes2014 accuracy — see bsnes2014.yml for details
|
||||
# DSP1-4 split (program+data), CX4, ST010-018, sgb.boot.rom
|
||||
# --- NEC uPD7725 DSP chips (DSP1/1B/2/3/4) ---
|
||||
# ananke always generates dsp1b filenames for DSP-1 games (backward-compatible)
|
||||
|
||||
- name: dsp1.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
hle_fallback: true
|
||||
note: "only loaded via custom BML manifest, ananke uses dsp1b"
|
||||
source_ref: "sfc/cartridge/markup.cpp:422-432"
|
||||
|
||||
- name: dsp1.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
hle_fallback: true
|
||||
note: "only loaded via custom BML manifest, ananke uses dsp1b"
|
||||
source_ref: "sfc/cartridge/markup.cpp:422-432"
|
||||
|
||||
- name: dsp1b.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:381"
|
||||
|
||||
- name: dsp1b.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:382"
|
||||
|
||||
- name: dsp2.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:403"
|
||||
|
||||
- name: dsp2.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:404"
|
||||
|
||||
- name: dsp3.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for SD Gundam GX"
|
||||
size: 6144
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:417"
|
||||
|
||||
- name: dsp3.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:418"
|
||||
|
||||
- name: dsp4.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:431"
|
||||
|
||||
- name: dsp4.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:432"
|
||||
|
||||
# --- Hitachi HG51B (CX4) ---
|
||||
|
||||
- name: cx4.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 3072
|
||||
note: "HLE available via Mercury — LLE optional"
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:146"
|
||||
|
||||
# --- NEC uPD96050 (ST010, ST011) ---
|
||||
|
||||
- name: st010.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 49152
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:445"
|
||||
|
||||
- name: st010.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 4096
|
||||
hle_fallback: true
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:446"
|
||||
|
||||
- name: st011.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
note: "no HLE — required for Hayazashi Nidan Morita Shougi"
|
||||
size: 49152
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:460"
|
||||
|
||||
- name: st011.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 4096
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:461"
|
||||
|
||||
# --- ARM DSP (ST018) ---
|
||||
|
||||
- name: st018.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 131072
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:475"
|
||||
|
||||
- name: st018.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 32768
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:476"
|
||||
|
||||
# --- Super Game Boy ---
|
||||
|
||||
- name: sgb.boot.rom
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
size: 256
|
||||
note: "SGB boot ROM. NOT embedded in v094."
|
||||
source_ref: "ananke/heuristics/super-famicom.hpp:133"
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
emulator: Cannonball
|
||||
type: standalone + libretro
|
||||
type: game
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/libretro/cannonball"
|
||||
upstream: "https://github.com/djyt/cannonball"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "1.0"
|
||||
display_name: "Cannonball"
|
||||
cores:
|
||||
- cannonball
|
||||
systems:
|
||||
- sega-outrun
|
||||
|
||||
@@ -26,8 +29,8 @@ notes: |
|
||||
demand when the "Japanese Tracks" core option is enabled.
|
||||
|
||||
Two optional widescreen tilemap patches are loaded from a res/ subdirectory
|
||||
(src/main/engine/omusic.cpp:42-51). These are Cannonball-specific data files
|
||||
shipped with the core, not original arcade ROMs.
|
||||
(src/main/engine/omusic.cpp:42-51). These are Cannonball-specific data files,
|
||||
not original arcade ROMs.
|
||||
|
||||
The fixed PCM sample variant (opr-10188.71f) replaces opr-10188.71 when the
|
||||
"Fix Broken Samples" core option is enabled.
|
||||
@@ -38,33 +41,42 @@ files:
|
||||
# -------------------------------------------------------
|
||||
- name: "epr-10381a.132"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536 # 0x10000
|
||||
size: 65536
|
||||
crc32: "be8c412b"
|
||||
note: "Master 68K, high byte, upper bank (Rev A alternate)"
|
||||
validation: [crc32]
|
||||
aliases: [epr-10381b.132]
|
||||
note: "Master 68K, high byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:29"
|
||||
|
||||
- name: "epr-10383b.117"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536
|
||||
crc32: "10a2014a"
|
||||
validation: [crc32]
|
||||
note: "Master 68K, low byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:38"
|
||||
|
||||
- name: "epr-10380b.133"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536
|
||||
crc32: "1f6cadad"
|
||||
validation: [crc32]
|
||||
note: "Master 68K, high byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:39"
|
||||
|
||||
- name: "epr-10382b.118"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536
|
||||
crc32: "c4c3fa1a"
|
||||
validation: [crc32]
|
||||
note: "Master 68K, low byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:40"
|
||||
|
||||
@@ -73,33 +85,41 @@ files:
|
||||
# -------------------------------------------------------
|
||||
- name: "epr-10327a.76"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536
|
||||
crc32: "e28a5baf"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K, high byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:44"
|
||||
|
||||
- name: "epr-10329a.58"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536
|
||||
crc32: "da131c81"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K, low byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:45"
|
||||
|
||||
- name: "epr-10328a.75"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536
|
||||
crc32: "d5ec5e5d"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K, high byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:46"
|
||||
|
||||
- name: "epr-10330a.57"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536
|
||||
crc32: "ba9ec82a"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K, low byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:47"
|
||||
|
||||
@@ -108,49 +128,61 @@ files:
|
||||
# -------------------------------------------------------
|
||||
- name: "opr-10268.99"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768 # 0x8000
|
||||
size: 32768
|
||||
crc32: "95344b04"
|
||||
validation: [crc32]
|
||||
note: "Tile ROM bank 0"
|
||||
source_ref: "src/main/roms.cpp:51"
|
||||
|
||||
- name: "opr-10232.102"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "776ba1eb"
|
||||
validation: [crc32]
|
||||
note: "Tile ROM bank 1"
|
||||
source_ref: "src/main/roms.cpp:52"
|
||||
|
||||
- name: "opr-10267.100"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "a85bb823"
|
||||
validation: [crc32]
|
||||
note: "Tile ROM bank 2"
|
||||
source_ref: "src/main/roms.cpp:53"
|
||||
|
||||
- name: "opr-10231.103"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "8908bcbf"
|
||||
validation: [crc32]
|
||||
note: "Tile ROM bank 3"
|
||||
source_ref: "src/main/roms.cpp:54"
|
||||
|
||||
- name: "opr-10266.101"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "9f6f1a74"
|
||||
validation: [crc32]
|
||||
note: "Tile ROM bank 4"
|
||||
source_ref: "src/main/roms.cpp:55"
|
||||
|
||||
- name: "opr-10230.104"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "686f5e50"
|
||||
validation: [crc32]
|
||||
note: "Tile ROM bank 5"
|
||||
source_ref: "src/main/roms.cpp:56"
|
||||
|
||||
@@ -159,17 +191,21 @@ files:
|
||||
# -------------------------------------------------------
|
||||
- name: "opr-10185.11"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "22794426"
|
||||
validation: [crc32]
|
||||
note: "Road ROM, layer 1"
|
||||
source_ref: "src/main/roms.cpp:60"
|
||||
|
||||
- name: "opr-10186.47"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "22794426"
|
||||
validation: [crc32]
|
||||
note: "Road ROM, layer 2 (identical to opr-10185.11)"
|
||||
source_ref: "src/main/roms.cpp:61"
|
||||
|
||||
@@ -178,65 +214,81 @@ files:
|
||||
# -------------------------------------------------------
|
||||
- name: "mpr-10371.9"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072 # 0x20000
|
||||
size: 131072
|
||||
crc32: "7cc86208"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 0 byte 0"
|
||||
source_ref: "src/main/roms.cpp:65"
|
||||
|
||||
- name: "mpr-10373.10"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072
|
||||
crc32: "b0d26ac9"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 0 byte 1"
|
||||
source_ref: "src/main/roms.cpp:66"
|
||||
|
||||
- name: "mpr-10375.11"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072
|
||||
crc32: "59b60bd7"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 0 byte 2"
|
||||
source_ref: "src/main/roms.cpp:67"
|
||||
|
||||
- name: "mpr-10377.12"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072
|
||||
crc32: "17a1b04a"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 0 byte 3"
|
||||
source_ref: "src/main/roms.cpp:68"
|
||||
|
||||
- name: "mpr-10372.13"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072
|
||||
crc32: "b557078c"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 1 byte 0"
|
||||
source_ref: "src/main/roms.cpp:69"
|
||||
|
||||
- name: "mpr-10374.14"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072
|
||||
crc32: "8051e517"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 1 byte 1"
|
||||
source_ref: "src/main/roms.cpp:70"
|
||||
|
||||
- name: "mpr-10376.15"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072
|
||||
crc32: "f3b8f318"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 1 byte 2"
|
||||
source_ref: "src/main/roms.cpp:71"
|
||||
|
||||
- name: "mpr-10378.16"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 131072
|
||||
crc32: "a1062984"
|
||||
validation: [crc32]
|
||||
note: "Sprite ROM, bank 1 byte 3"
|
||||
source_ref: "src/main/roms.cpp:72"
|
||||
|
||||
@@ -245,9 +297,11 @@ files:
|
||||
# -------------------------------------------------------
|
||||
- name: "epr-10187.88"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 65536 # 0x10000
|
||||
size: 32768
|
||||
crc32: "a10abaa9"
|
||||
validation: [crc32]
|
||||
note: "Z80 sound program"
|
||||
source_ref: "src/main/roms.cpp:76"
|
||||
|
||||
@@ -256,134 +310,173 @@ files:
|
||||
# -------------------------------------------------------
|
||||
- name: "opr-10193.66"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "bcd10dde"
|
||||
validation: [crc32]
|
||||
note: "PCM sample bank 0"
|
||||
source_ref: "src/main/roms.cpp:80"
|
||||
|
||||
- name: "opr-10192.67"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "770f1270"
|
||||
validation: [crc32]
|
||||
note: "PCM sample bank 1"
|
||||
source_ref: "src/main/roms.cpp:81"
|
||||
|
||||
- name: "opr-10191.68"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "20a284ab"
|
||||
validation: [crc32]
|
||||
note: "PCM sample bank 2"
|
||||
source_ref: "src/main/roms.cpp:82"
|
||||
|
||||
- name: "opr-10190.69"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "7cab70e2"
|
||||
validation: [crc32]
|
||||
note: "PCM sample bank 3"
|
||||
source_ref: "src/main/roms.cpp:83"
|
||||
|
||||
- name: "opr-10189.70"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "01366b54"
|
||||
validation: [crc32]
|
||||
note: "PCM sample bank 4"
|
||||
source_ref: "src/main/roms.cpp:84"
|
||||
|
||||
- name: "opr-10188.71"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "bad30ad9"
|
||||
validation: [crc32]
|
||||
note: "PCM sample bank 5"
|
||||
source_ref: "src/main/roms.cpp:85"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Alternate / optional ROMs
|
||||
# Optional: fixed PCM sample
|
||||
# -------------------------------------------------------
|
||||
- name: "epr-10381b.132"
|
||||
system: sega-outrun
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "be8c412b"
|
||||
note: "Master 68K, Rev B alternate filename for epr-10381a.132"
|
||||
source_ref: "src/main/roms.cpp:34"
|
||||
|
||||
- name: "opr-10188.71f"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 32768
|
||||
crc32: "37598616"
|
||||
validation: [crc32]
|
||||
note: "PCM sample bank 5, fixed version (replaces opr-10188.71)"
|
||||
source_ref: "src/main/roms.cpp:123"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Optional: widescreen tilemap patches
|
||||
# -------------------------------------------------------
|
||||
- name: "res/tilemap.bin"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
note: "Widescreen tilemap patch, Cannonball-specific"
|
||||
source_ref: "src/main/engine/omusic.cpp:42-44"
|
||||
|
||||
- name: "res/tilepatch.bin"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
note: "Widescreen tile patch, Cannonball-specific"
|
||||
source_ref: "src/main/engine/omusic.cpp:49-51"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Japanese ROM variants (loaded when jap option enabled)
|
||||
# -------------------------------------------------------
|
||||
- name: "epr-10380.133"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "e339e87a"
|
||||
validation: [crc32]
|
||||
note: "Master 68K Japan, high byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:104"
|
||||
|
||||
- name: "epr-10382.118"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "65248dd5"
|
||||
validation: [crc32]
|
||||
note: "Master 68K Japan, low byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:105"
|
||||
|
||||
- name: "epr-10381.132"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "be8c412b"
|
||||
validation: [crc32]
|
||||
note: "Master 68K Japan, high byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:106"
|
||||
|
||||
- name: "epr-10383.117"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "dcc586e7"
|
||||
validation: [crc32]
|
||||
note: "Master 68K Japan, low byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:107"
|
||||
|
||||
- name: "epr-10327.76"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "da99d855"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K Japan, high byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:110"
|
||||
|
||||
- name: "epr-10329.58"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "fe0fa5e2"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K Japan, low byte, lower bank"
|
||||
source_ref: "src/main/roms.cpp:111"
|
||||
|
||||
- name: "epr-10328.75"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "3c0e9a7f"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K Japan, high byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:112"
|
||||
|
||||
- name: "epr-10330.57"
|
||||
system: sega-outrun
|
||||
category: game_data
|
||||
required: false
|
||||
size: 65536
|
||||
crc32: "59786e99"
|
||||
validation: [crc32]
|
||||
note: "Slave 68K Japan, low byte, upper bank"
|
||||
source_ref: "src/main/roms.cpp:113"
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: Caprice32
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/libretro-cap32"
|
||||
upstream: "https://github.com/ColinPitrat/caprice32"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v4.2.0"
|
||||
display_name: "Amstrad - CPC/GX4000 (Caprice32)"
|
||||
cores:
|
||||
@@ -78,14 +79,16 @@ files:
|
||||
system: amstrad-cpc
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 131156
|
||||
note: "CPC+ system cartridge"
|
||||
source_ref: "caprice32/rom/system.cpr"
|
||||
- name: MF2.rom
|
||||
system: amstrad-cpc
|
||||
required: false
|
||||
mode: standalone
|
||||
size: 8192
|
||||
note: "Multiface 2 ROM"
|
||||
source_ref: "caprice32/rom/MF2.rom"
|
||||
source_ref: "caprice32/rom/MF2.rom, caprice32/src/cap32.cpp:1244-1263"
|
||||
|
||||
platform_details:
|
||||
bios_mapping:
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: CDi 2015
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/mame2015-libretro"
|
||||
upstream: "https://github.com/mamedev/mame"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/mamedev/mame/tree/mame0160"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "0.160"
|
||||
display_name: "Philips CDi (CDi 2015)"
|
||||
cores: [cdi2015]
|
||||
@@ -10,26 +11,23 @@ systems:
|
||||
- philips-cdi
|
||||
|
||||
notes: |
|
||||
MAME 0.160 compiled with SUBTARGET=cdi (CDi driver only).
|
||||
ref: libretro-super/rules.d/core-rules.sh — SUBTARGET=cdi
|
||||
source: libretro/mame2015-libretro
|
||||
|
||||
Loads cdimono1.zip from system_dir.
|
||||
ref: src/osd/retro/retromain.c:1989 —
|
||||
sprintf(tmp_dir, "%s%ccdimono1.zip", retro_system_directory, slash)
|
||||
If not found as ZIP, falls back to system_dir as rompath.
|
||||
ref: src/osd/retro/retromain.c:1991
|
||||
|
||||
ROM_START(cdimono1) in src/mame/drivers/cdi.c:421 defines:
|
||||
cdi200.rom (0x80000, CRC 279683ca, SHA1 53360a1f21ddac952e95306ced64186a3fc0b93e)
|
||||
cdic.bin (MCU, undumped)
|
||||
slave.bin (MCU, undumped)
|
||||
|
||||
The ZIP contains the MAME romset for cdimono1 — user provides it.
|
||||
MAME 0.160 compiled with SUBTARGET=cdi, only cdimono1 driver.
|
||||
Checks cdimono1.zip existence in system_dir, then game dir. Returns -2 if missing.
|
||||
cdic.bin and slave.bin are undumped 68HC05 MCUs (NO_DUMP), not in the ZIP.
|
||||
|
||||
files:
|
||||
- name: cdimono1.zip
|
||||
system: philips-cdi
|
||||
required: true
|
||||
note: "MAME cdimono1 romset ZIP. Contains cdi200.rom + MCU dumps."
|
||||
category: bios_zip
|
||||
source_ref: "src/osd/retro/retromain.c:1989, src/mame/drivers/cdi.c:421"
|
||||
validation: [crc32, sha1]
|
||||
contents:
|
||||
- name: cdi200.rom
|
||||
description: Magnavox CD-i 200 BIOS (default)
|
||||
size: 524288
|
||||
crc32: 40c4e6b9
|
||||
- name: cdi220b.rom
|
||||
description: Philips CD-i 220 F2 BIOS (alternate)
|
||||
size: 524288
|
||||
crc32: 279683ca
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
emulator: ChaiLove
|
||||
type: game
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/libretro/libretro-chailove"
|
||||
profiled_date: "2026-03-18"
|
||||
upstream: "https://github.com/libretro/libretro-chailove"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "2.0.0"
|
||||
display_name: "ChaiLove"
|
||||
cores: [chailove]
|
||||
systems: []
|
||||
files: []
|
||||
notes: >
|
||||
2D game framework for libretro inspired by LOVE2D, using ChaiScript.
|
||||
Loads .chai or .chailove game files as content. The core itself is a
|
||||
game engine runtime with no system directory dependencies.
|
||||
No BIOS, firmware, or system directory files required.
|
||||
2D game framework for libretro using ChaiScript, inspired by LOVE2D.
|
||||
Game engine runtime that loads .chai/.chailove game files as content.
|
||||
Mounts system_dir at /libretro/system via PhysFS for game scripts,
|
||||
but the core itself requires no external files.
|
||||
|
||||
@@ -1,29 +1,47 @@
|
||||
emulator: ChimeraSNES
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/jamsilva/chimerasnes"
|
||||
upstream: "https://github.com/snes9xgit/snes9x"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: ""
|
||||
display_name: "Nintendo - SNES / SFC (ChimeraSNES)"
|
||||
cores: [chimerasnes]
|
||||
systems:
|
||||
- nintendo-snes
|
||||
- nintendo-satellaview
|
||||
- nintendo-sufami-turbo
|
||||
|
||||
notes: |
|
||||
Fork of Snes9x ~2005, optimized for slow hardware.
|
||||
NOT identical to snes9x — different firmware behavior.
|
||||
Based on multiple snes9x forks (uosnes, snes9x2005), optimized for slow hardware.
|
||||
All coprocessor data (DSP1-4, CX4, SuperFX, SA-1, SPC7110, OBC1) is HLE with
|
||||
embedded ROM tables. No external coprocessor firmware needed.
|
||||
BS-X BIOS loading controlled by core option chimerasnes_bsx_bios (default: skip).
|
||||
retro_load_game_special() returns false (no subsystem support).
|
||||
.info firmware_count absent (= 0), under-declares: code loads 2 files.
|
||||
|
||||
All coprocessor data is HLE with static ROM tables embedded:
|
||||
DSP1: DSP1ROM[1024] in source/dsp1.c:6
|
||||
DSP3: DSP3_DataROM[1024] in source/dsp3.c:7
|
||||
No external DSP/ST/CX4 firmware files needed.
|
||||
files:
|
||||
- name: "BS-X.bin"
|
||||
system: nintendo-satellaview
|
||||
description: "Satellaview BS-X BIOS"
|
||||
required: false
|
||||
size: 1048576
|
||||
source_ref: "source/bsx.c:857-882"
|
||||
aliases: ["BS-X.bios"]
|
||||
validation: [size]
|
||||
notes: |
|
||||
Loaded by BSX_LoadBIOS() from system_dir when core option
|
||||
chimerasnes_bsx_bios is set to 'load' (default: skip).
|
||||
Tries BS-X.bin first, then BS-X.bios as fallback.
|
||||
Size must be BIOS_SIZE (0x100000). Many BS-X games run without it.
|
||||
|
||||
BS-X: path constructed in source/bsx.c:873 as romdir/BS-X.bios
|
||||
(relative to ROM directory, NOT system_dir). No
|
||||
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY for firmware loading.
|
||||
|
||||
firmware_count absent in .info (= 0). Confirmed in source.
|
||||
|
||||
files: []
|
||||
# all coprocessors HLE with embedded data
|
||||
# BS-X.bios loaded from ROM directory, not system_dir
|
||||
- name: "STBIOS.bin"
|
||||
system: nintendo-sufami-turbo
|
||||
description: "Sufami Turbo BIOS"
|
||||
required: true
|
||||
size: 262144
|
||||
source_ref: "source/memmap.c:275-289"
|
||||
notes: |
|
||||
Loaded by LoadSFTBIOS() from system_dir when Sufami Turbo game
|
||||
detected (BANDAI SFC-ADX header at ROM offset 0, memmap.c:833).
|
||||
Reads 0x40000 bytes into Memory.ROM. No validation performed.
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: Citra 2018
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/citra2018"
|
||||
upstream: "https://github.com/citra-emu/citra"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "Git"
|
||||
display_name: "Nintendo - 3DS (Citra 2018)"
|
||||
cores: [citra2018]
|
||||
@@ -10,35 +11,25 @@ systems:
|
||||
- nintendo-3ds
|
||||
|
||||
notes: |
|
||||
Citra 2018 is a 2018 snapshot of the Citra 3DS emulator.
|
||||
Older than current Azahar/Citra — fewer firmware files.
|
||||
Data dir: citra-emu (not azahar-emu).
|
||||
ref: src/common/common_paths.h:24
|
||||
Frozen 2018 snapshot of the Citra 3DS emulator.
|
||||
Loads files from {system_dir}/Citra/sysdata/.
|
||||
ref: src/citra_libretro/citra_libretro.cpp:317, src/common/common_paths.h:24
|
||||
|
||||
Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
|
||||
ref: src/citra_libretro/environment.cpp:107
|
||||
Embedded open-source replacement font in archive_ncch.cpp.
|
||||
ref: src/core/file_sys/archive_ncch.cpp:134-146
|
||||
|
||||
Loads from sysdata/:
|
||||
aes_keys.txt (not keys.txt like current Citra)
|
||||
shared_font.bin
|
||||
ref: src/core/hw/aes/key.cpp:72-73, src/core/hle/service/apt/apt.cpp:174
|
||||
|
||||
Does NOT load (added in later versions):
|
||||
boot9.bin, sector0x96.bin, seeddb.bin, otp.bin,
|
||||
movable.sed, SecureInfo_A, LocalFriendCodeSeed_B
|
||||
|
||||
firmware_count absent in .info (= 0). Files are optional (HLE).
|
||||
firmware_count absent in .info (= 0). Both files are optional.
|
||||
|
||||
files:
|
||||
- name: aes_keys.txt
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "AES encryption keys (named aes_keys.txt, not keys.txt like current Citra)"
|
||||
source_ref: "src/core/hw/aes/key.cpp:72-73"
|
||||
note: "AES encryption keys for decrypting 3DS content"
|
||||
source_ref: "src/core/hw/aes/key.cpp:72-76"
|
||||
|
||||
- name: shared_font.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "system shared font, HLE fallback if missing"
|
||||
source_ref: "src/core/hle/service/apt/apt.cpp:174"
|
||||
note: "system shared font, falls back to embedded open-source replacement"
|
||||
source_ref: "src/core/hle/service/apt/apt.cpp:168-183"
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
emulator: Citra Canary
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/citra"
|
||||
upstream: "https://github.com/citra-emu/citra"
|
||||
profiled_date: "2026-03-18"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "Git"
|
||||
display_name: "Nintendo - 3DS (Citra Canary/Experimental)"
|
||||
cores: [citra_canary]
|
||||
@@ -10,54 +11,30 @@ systems:
|
||||
- nintendo-3ds
|
||||
|
||||
notes: |
|
||||
Same repo as citra (libretro/citra master branch). Canary = experimental.
|
||||
Data dir: citra-emu (not azahar-emu — this is pre-Azahar Citra).
|
||||
ref: src/common/common_paths.h
|
||||
Canary branch of libretro/citra. Older codebase than master branch (citra core).
|
||||
Missing boot9.bin, sector0x96.bin, seeddb.bin support present in master.
|
||||
Seed crypto unimplemented (src/core/file_sys/ncch_container.cpp:169).
|
||||
Upstream citra-emu/citra taken down March 2024 (Nintendo lawsuit).
|
||||
Mirror: https://github.com/citra-mirror/citra
|
||||
|
||||
Key file: aes_keys.txt (NOT keys.txt like Azahar).
|
||||
ref: src/common/common_paths.h:68
|
||||
Data dir: {system_dir}/Citra/sysdata/
|
||||
ref: src/citra_libretro/citra_libretro.cpp:305-314
|
||||
|
||||
Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
|
||||
ref: src/citra_libretro/environment.cpp:149
|
||||
Embedded open-source replacements for shared font, country list, bad word list.
|
||||
ref: src/core/file_sys/archive_ncch.cpp:142-147
|
||||
|
||||
Files in sysdata/:
|
||||
aes_keys.txt — AES encryption keys (common_paths.h:68)
|
||||
boot9.bin — ARM9 bootrom (common_paths.h:69)
|
||||
sector0x96.bin — secret NAND sector (common_paths.h:70)
|
||||
shared_font.bin — system shared font, HLE fallback (common_paths.h:67)
|
||||
seeddb.bin — game seed database (file_sys/seed_db.cpp:15)
|
||||
|
||||
NOTE: citra.yml profiles Azahar which uses keys.txt (not aes_keys.txt).
|
||||
This core uses the pre-Azahar naming convention.
|
||||
firmware_count absent in .info (= 0).
|
||||
|
||||
files:
|
||||
- name: aes_keys.txt
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "AES keys (named aes_keys.txt in pre-Azahar Citra)"
|
||||
source_ref: "src/common/common_paths.h:68, src/core/hw/aes/key.cpp"
|
||||
|
||||
- name: boot9.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "ARM9 bootrom for key derivation"
|
||||
source_ref: "src/common/common_paths.h:69"
|
||||
|
||||
- name: sector0x96.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "OTP-encrypted NAND sector for key derivation"
|
||||
source_ref: "src/common/common_paths.h:70"
|
||||
note: "AES encryption keys for decrypting 3DS content"
|
||||
source_ref: "src/core/hw/aes/key.cpp:71-131"
|
||||
|
||||
- name: shared_font.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "system shared font, HLE fallback if missing"
|
||||
source_ref: "src/common/common_paths.h:67"
|
||||
|
||||
- name: seeddb.bin
|
||||
system: nintendo-3ds
|
||||
required: false
|
||||
note: "game seed database for seed-encrypted games (9.6+ titles)"
|
||||
source_ref: "src/core/file_sys/seed_db.cpp:15"
|
||||
note: "system shared font, falls back to embedded open-source replacement"
|
||||
source_ref: "src/core/hle/service/apt/apt.cpp:168-200"
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
emulator: DoubleCherryGB
|
||||
type: libretro
|
||||
core_classification: enhanced_fork
|
||||
source: "https://github.com/TimOelrichs/doublecherryGB-libretro"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v0.17.0"
|
||||
upstream: "https://github.com/libertyernie/tgbdual"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "v0.18.1"
|
||||
display_name: "Nintendo - Game Boy / Color (DoubleCherryGB)"
|
||||
cores:
|
||||
- DoubleCherryGB
|
||||
@@ -11,23 +13,13 @@ systems:
|
||||
- nintendo-gbc
|
||||
|
||||
notes: |
|
||||
DoubleCherryGB is a Game Boy / Game Boy Color emulator forked from TGB Dual
|
||||
by GIGO and Hii. It adds multi-Game Boy emulation with virtual link cable
|
||||
support for up to 16 players, DMG-07 4-Player Adapter emulation, and
|
||||
built-in Pokemon distribution events.
|
||||
Game Boy / Game Boy Color emulator forked from TGB Dual (Hii, 2000-2004)
|
||||
via the libretro port tgbdual. Adds multi-Game Boy emulation with link
|
||||
cable support for up to 16 players, DMG-07 4-Player Adapter emulation,
|
||||
infrared peripherals, and built-in Pokemon distribution events.
|
||||
|
||||
No BIOS or boot ROM files are required or supported. The core does not
|
||||
call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY for firmware loading and does
|
||||
not attempt to open any files from the system directory.
|
||||
|
||||
In cpu.cpp:82, the program counter is initialized to 0x100 (post-boot ROM
|
||||
entry point), and cpu::reset() sets all registers to their post-boot
|
||||
values directly (AF=0x01B0 for DMG, 0x11B0 for CGB). This means the
|
||||
core completely bypasses the boot ROM sequence via HLE register setup.
|
||||
|
||||
The .info file at libretro-core-info confirms no firmware entries.
|
||||
|
||||
Supported extensions: gb, dmg, gbc, cgb, sgb.
|
||||
Library version: v0.18.0.
|
||||
No boot ROM support. cpu::reset() sets PC=0x100 and post-boot register
|
||||
values directly (AF=0x01B0 DMG, 0x11B0 CGB). The core does not access
|
||||
the system directory and loads no external firmware files.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -3,7 +3,7 @@ type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/FBNeo"
|
||||
upstream: "https://github.com/finalburnneo/FBNeo"
|
||||
profiled_date: "2026-03-21"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "v1.0.0.03"
|
||||
display_name: "Arcade (FinalBurn Neo) (CPS-1 / CPS-2)"
|
||||
cores:
|
||||
@@ -25,8 +25,7 @@ notes: |
|
||||
Board PLDs (buf1, ioa1, prg1/prg2, rom1, sou1) are BRF_OPT — GAL/PAL
|
||||
dumps for hardware preservation, never loaded by the emulator.
|
||||
|
||||
CPS-1/CPS-2 have no system BIOS. hiscore.dat enables persistent high
|
||||
scores across all arcade games.
|
||||
hiscore.dat enables persistent high scores across all arcade games.
|
||||
|
||||
ROM path: game ZIPs loaded from content directory.
|
||||
system/fbneo/ used for hiscore.dat, samples, cheats, blend files, IPS patches.
|
||||
|
||||
@@ -1,39 +1,28 @@
|
||||
emulator: "FreeIntv (Touchscreen Overlay)"
|
||||
type: libretro
|
||||
source: "https://github.com/libretro/FreeIntv"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v2025.11.1"
|
||||
display_name: "Mattel Intellivision (FreeIntvTSOverlay)"
|
||||
type: alias
|
||||
core_classification: alias
|
||||
source: "https://github.com/jcarr71/FreeIntvTSOverlay"
|
||||
upstream: "https://github.com/libretro/FreeIntv"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "1.2"
|
||||
display_name: "Mattel - Intellivision (FreeIntvTSOverlay)"
|
||||
cores:
|
||||
- freeintv
|
||||
systems:
|
||||
- intellivision
|
||||
|
||||
notes: |
|
||||
Same repo and core as FreeIntv. The touchscreen overlay feature is a
|
||||
compile-time option within the same codebase, not a separate core. The
|
||||
library_name is "freeintv" (src/libretro.c:1413), identical to the
|
||||
non-overlay build.
|
||||
Alias of FreeIntv. The jcarr71/FreeIntvTSOverlay fork is 100% identical
|
||||
to libretro/FreeIntv (zero diff). Jason Carr's overlay work was merged
|
||||
upstream. The Makefile produces freeintv_libretro (TARGET_NAME = freeintv),
|
||||
and library_name is "freeintv" (src/libretro.c:1413).
|
||||
|
||||
The overlay system adds an onscreen interactive keypad for touchscreen
|
||||
and mouse input. It is toggled via core option freeintv_multiscreen_overlay
|
||||
(src/libretro_core_options.h:82-85). When enabled, the display splits into
|
||||
game + keypad side-by-side (multi-screen mode).
|
||||
|
||||
Visual assets (controller base frame, banner, default keypad image) are
|
||||
compiled into the binary from C headers: banner.h, keypad_frame_graphic.h,
|
||||
default_keypad_image.h. These are NOT files the user needs to provide.
|
||||
|
||||
ROM-specific overlays are optional 370x600 PNG files placed by the user in
|
||||
system/freeintv_overlays/<rom_name>.png. These are cosmetic per-game keypad
|
||||
images loaded via stbi_load() (src/libretro.c:273). Core falls back to
|
||||
embedded default_keypad_image.h if no per-game overlay found.
|
||||
90 overlays available in Assets/Overlays.zip in the core repo.
|
||||
Not on RetroArch buildbot — sourced from core repo via _data_dirs.yml.
|
||||
|
||||
BIOS loading is unchanged from the base FreeIntv core. retro_load_game()
|
||||
(src/libretro.c:1169-1174) loads exec.bin and grom.bin from the system
|
||||
directory with no variation based on overlay mode.
|
||||
The FreeIntvTSOverlay_libretro.info in libretro-core-info has errors:
|
||||
wrong overlay directory (claims FreeIntvTS_Overlays, code uses
|
||||
freeintv_overlays), wrong dimensions (claims 300x670, code uses 370x600),
|
||||
phantom external PNG files (controller_base.png, default.png,
|
||||
button_swapscreen.png are either embedded in C headers or nonexistent),
|
||||
and firmware1 key typos (uses firmware0_path/firmware0_opt).
|
||||
|
||||
bios_identical_to: freeintv
|
||||
|
||||
@@ -47,7 +36,7 @@ files:
|
||||
required: true
|
||||
size: 8192
|
||||
md5: 62e761035cb657903761800f4437b8af
|
||||
note: "Executive ROM. Same file as base FreeIntv."
|
||||
note: "Executive ROM."
|
||||
source_ref: "src/intv.c:47-71, src/libretro.c:1169"
|
||||
|
||||
- name: "grom.bin"
|
||||
@@ -55,5 +44,5 @@ files:
|
||||
required: true
|
||||
size: 2048
|
||||
md5: 0cd5946c6473e42e8e4c2137785e427f
|
||||
note: "Graphics ROM. Same file as base FreeIntv."
|
||||
note: "Graphics ROM."
|
||||
source_ref: "src/intv.c:73-98, src/libretro.c:1173"
|
||||
|
||||
Reference in New Issue
Block a user