feat: profile playdiaemu rust-dos samcoupe cores

This commit is contained in:
Abdessamad Derraz committed 2026-10-04 14:54:25 +02:00
1 parent cae07e9380
commit 69a76f4eeb
4 files changed
+461

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
emulator: mGBA Splitscreen
type: libretro
core_classification: community_fork
source: "https://github.com/Spuds0588/mgba-splitscreen"
upstream: "https://github.com/mgba-emu/mgba"
profiled_date: "2026-10-04"
source_commit: "b66511a35873bda9c961872813e58b35543bcfc5"
core_version: "0.1.0"
display_name: "Nintendo - Game Boy Advance (mGBA Splitscreen)"
cores:
- mgba_splitscreen
systems:
- nintendo-gba
notes: |
mGBA Splitscreen is a fork of mGBA that runs 2-4 linked GBA cores in a
single libretro instance over mGBA's lockstep SIO driver. Built from
the upstream mGBA tree with -DBUILD_LIBRETRO_SPLITSCREEN=ON
(CMakeLists.txt:1036-1058), the fork adds the mgba-splitscreen link
fixes (Four Swords handshake assist and a gated deadlock kick) on top
of mGBA's library layer. The player instances live in
src/platform/libretro-splitscreen/instances.c and reject anything that
is not a GBA ROM (instances.c:114-119).
The splitscreen wrapper never performs its own BIOS lookup. Each
per-player mCore reaches mGBA's shared GBA core, which looks for
gba_bios.bin in the system directory and uses the built-in HLE BIOS
(src/gba/hle-bios.c) when it is missing. The core-info declares one
optional firmware entry (gba_bios.bin) and only accepts the .gba
extension, so GB/GBC/SGB BIOS files that upstream mGBA supports are
unreachable here.
files:
- name: gba_bios.bin
system: nintendo-gba
required: false
hle_fallback: true
size: 16384 # 16 KB (GBA_SIZE_BIOS)
validation: [size]
note: "GBA BIOS, same file upstream mGBA uses. HLE replacement built in."
source_ref: "src/platform/libretro-splitscreen/mgba_splitscreen_libretro.info:34-37 (firmware0_desc/path/opt); src/gba/gba.c:520-551 (GBALoadBIOS, inherited from mGBA core)"
+29
View File
@@ -0,0 +1,29 @@
emulator: PlaydiaEmu
type: libretro
core_classification: pure_libretro
source: "https://github.com/AloysHF/PlaydiaEmu"
upstream: "https://github.com/AloysHF/PlaydiaEmu"
profiled_date: "2026-10-04"
source_commit: "6e758408ddffafe407282473f3904c1699a4cea8"
core_version: "0.1.0"
display_name: "Bandai - Playdia (PlaydiaEmu)"
cores:
- playdiaemu
systems:
- bandai-playdia
notes: |
PlaydiaEmu is a Bandai Playdia emulator written in Rust by Aloys, built
as an HLE disc player: it streams dual-track MODE2 CUE/BIN (plain or
Redump-style ZIP), routes F1/F2/F3 video fragments, decodes XA ADPCM
audio and the AK8000 video. The Playdia MC68HC05 CPU is not emulated.
No BIOS or firmware is loaded.
retro_load_game (crates/playdiaemu-libretro/src/api.rs) opens the game
file alone. The core-info declares firmware_count = 0
(crates/playdiaemu-libretro/playdiaemu_libretro.info:19), and the
playdiaemu-core crate reads only the user content: CUE/BIN tracks and
ZIP archives from the game path (crates/playdiaemu-core/src/content.rs
:111-199). No other file is ever opened.
files: []
+301
View File
@@ -0,0 +1,301 @@
emulator: Rust-DOS
type: standalone + libretro
core_classification: official_port
source: "https://git.libretro.com/libretro/rust-dos"
upstream: "https://github.com/dividebysandwich/rust-dos"
profiled_date: "2026-10-04"
source_commit: "9a5df84571a6a8442df4ef4d55e2a5c92add6421"
core_version: "1.3.0"
display_name: "DOS (Rust-DOS)"
cores:
- rust_dos
systems:
- dos
mode: both
notes: |
Rust-DOS is an x86 DOS emulator written in Rust by dividebysandwich,
with a built-in DOS, BIOS, XMS, EMS, DPMI host and software MIDI
(OPL3). The README states "no DOS or BIOS images needed" and the
libretro core declares supports_no_game = "true" with no firmware
entries (libretro/rust_dos_libretro.info).
Three optional firmware families enhance accuracy for games written
for specific sound hardware. All three have HLE / software fallbacks
that keep audio working without the ROMs.
- AWE32 sample ROM (awe32.raw): the Creative Sound Blaster AWE32's
1 MB sample ROM. src/awe32/rom.rs:13-17 declares FILE_NAME and the
required SHA-256. Without it, the EMU8000 synth still plays what
programs load into its sample RAM but ROM sounds are silent
(src/awe32/rom.rs:4-6).
- Roland Sound Canvas ROMs: a Rust port of Nuked-SC55 covers the
SC-55, SC-55mkII, SC-55ST, CM-300/SCC-1, SCB-55, RLP-3237, SC-155
and SC-155mkII. src/sc55/rom.rs:131-295 lists 13 romsets, each 4-5
ROM files identified by the SHA-256 of their contents whatever the
filenames are. The settings window can download eight of them from
the Internet Archive item roland-sc-55-series-roms
(src/sc55/download.rs:12-24, 39). Without a complete set, MIDI
falls back to the OPL3 / soundfont / GUS synths
(src/sc55/mod.rs:116-120).
- Roland MT-32 ROMs: played by munt (libmt32emu) loaded at runtime
(src/mt32.rs:1-6). munt identifies the control+PCM pair by its own
SHA-1 table internally; rust-dos does not declare hashes. Without
them (or without libmt32emu on the host), midisynth=mt32 fails and
the other MIDI backends take over.
The libretro frontend adds its system directory to each loader's
search path (libretro/src/core.rs:148-157), so BIOS files sit next
to the core like any other RetroArch firmware.
files:
- name: "awe32.raw"
system: dos
required: false
hle_fallback: true
category: bios
size: 1048576 # 1 MB (2 * ROM_WORDS, 512 Ki 16-bit words)
sha256: "4e143b94f758734f594ded78f4e5115635975c16fa37fabeae0baa4938ca710e"
validation: [size, sha256]
description: "Creative Sound Blaster AWE32 sample ROM for the EMU8000 synth"
source_ref: "src/awe32/rom.rs:13 (FILE_NAME), 15-17 (DOWNLOAD_URL + SHA256), 60-63 (parse size check)"
# Sound Canvas ROM sets. Each entry is a directory under sc55-roms/
# containing N ROM files identified by content hash (any filenames).
# Only the 8 sets rust-dos can download from the Internet Archive
# (src/sc55/download.rs:12-24) are listed here; the other 5 in the
# ROMSETS table (st-v1.01, sc155mk2-v1.01, cm300-v1.10, cm300-v1.20,
# scb55-v2.00, rlp3237-v2.01) share ROMs with these sets and are
# recognized when their files are present.
- name: "sc55-roms/mk1-v1.21/rom1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544"
validation: [sha256]
description: "Roland SC-55 v1.21 program ROM 1 (H8/532 code), auto-preferred set"
source_ref: "src/sc55/rom.rs:213-220 (mk1-v1.21), 299 (PREFERRED)"
- name: "sc55-roms/mk1-v1.21/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "effc6132d68f7e300aaef915ccdd08aba93606c22d23e580daf9ea6617913af1"
validation: [sha256]
description: "Roland SC-55 v1.21 program ROM 2"
source_ref: "src/sc55/rom.rs:215"
- name: "sc55-roms/mk1-v1.21/wave1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "5655509a531804f97ea2d7ef05b8fec20ebf46216b389a84c44169257a4d2007"
validation: [sha256]
description: "Roland SC-55 Wave1 PCM (shared across all SC-55 mk1 versions)"
source_ref: "src/sc55/rom.rs:128 (MK1_WAVE1), 216"
- name: "sc55-roms/mk1-v1.21/wave2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "c655b159792d999b90df9e4fa782cf56411ba1eaa0bb3ac2bdaf09e1391006b1"
validation: [sha256]
description: "Roland SC-55 Wave2 PCM"
source_ref: "src/sc55/rom.rs:129 (MK1_WAVE2), 217"
- name: "sc55-roms/mk1-v1.21/wave3.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2"
validation: [sha256]
description: "Roland SC-55 Wave3 PCM"
source_ref: "src/sc55/rom.rs:130 (MK1_WAVE3), 218"
- name: "sc55-roms/mk1-v1.00/rom1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "b4ecf44bc0520322b0d114d397951d3bf92ca6fa51d0d27b2407df58a6be2efe"
validation: [sha256]
description: "Roland SC-55 v1.00 program ROM 1"
source_ref: "src/sc55/rom.rs:174"
- name: "sc55-roms/mk1-v1.00/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "014e2e21ea30de7a1e4f1cdea14dd9a719960535e257a9e40e98dbb1a5870226"
validation: [sha256]
description: "Roland SC-55 v1.00 program ROM 2"
source_ref: "src/sc55/rom.rs:175"
- name: "sc55-roms/mk1-v1.10/rom1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "2fe88ec39f3ef4b1de8cdf74527419467975c47f7aacfcd07605e01d54bd89b5"
validation: [sha256]
description: "Roland SC-55 v1.10 program ROM 1"
source_ref: "src/sc55/rom.rs:187"
- name: "sc55-roms/mk1-v1.10/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "ec064d6c4fc70ec990911089d966043cb819fba0e26e6f6afdd0a05e5301b91b"
validation: [sha256]
description: "Roland SC-55 v1.10 program ROM 2"
source_ref: "src/sc55/rom.rs:188"
- name: "sc55-roms/mk1-v1.20/rom1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544"
validation: [sha256]
description: "Roland SC-55 v1.20 program ROM 1 (same bytes as v1.21 ROM1)"
source_ref: "src/sc55/rom.rs:203"
- name: "sc55-roms/mk1-v1.20/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "22ce6ca59e6332143b335525e81fab501ea6fccce4b7e2f3bfc2cc8bf6612ff6"
validation: [sha256]
description: "Roland SC-55 v1.20 program ROM 2"
source_ref: "src/sc55/rom.rs:204"
- name: "sc55-roms/mk1-v2.00/rom1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "24a65c97cdbaa847d6f59193523ce63c73394b4b693a6517ee79441f2fb8a3ee"
validation: [sha256]
description: "Roland SC-55 v2.00 program ROM 1 (shared with SC-155-rev1)"
source_ref: "src/sc55/rom.rs:225"
- name: "sc55-roms/mk1-v2.00/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "f5dac35d450ab986570a209dff3816eec75cee669e161f54b51224b467dd0bcc"
validation: [sha256]
description: "Roland SC-55 v2.00 program ROM 2"
source_ref: "src/sc55/rom.rs:226"
- name: "sc55-roms/mk2-v1.01/rom1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042"
validation: [sha256]
description: "Roland SC-55mkII v1.01 H8/532 ROM 1 (shared with SC-55ST and SC-155mkII)"
source_ref: "src/sc55/rom.rs:125 (MK2_ROM1), 140"
- name: "sc55-roms/mk2-v1.01/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0"
validation: [sha256]
description: "Roland SC-55mkII v1.01 program ROM 2 (shared with SC-155mkII)"
source_ref: "src/sc55/rom.rs:141"
- name: "sc55-roms/mk2-v1.01/smrom.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "b0b5f865a403f7308b4be8d0ed3ba2ed1c22db881b8a8326769dea222f6431d8"
validation: [sha256]
description: "Roland SC-55mkII sub-MCU (M37450) ROM (shared with SC-55ST and SC-155mkII)"
source_ref: "src/sc55/rom.rs:126 (MK2_SMROM), 142"
- name: "sc55-roms/mk2-v1.01/wave1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "c6429e21b9b3a02fbd68ef0b2053668433bee0bccd537a71841bc70b8874243b"
validation: [sha256]
description: "Roland SC-55mkII Wave1 PCM (shared with SC-55ST, SC-155mkII, SCB-55, RLP-3237)"
source_ref: "src/sc55/rom.rs:127 (MK2_WAVE1), 143"
- name: "sc55-roms/mk2-v1.01/wave2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "5b753f6cef4cfc7fcafe1430fecbb94a739b874e55356246a46abe24097ee491"
validation: [sha256]
description: "Roland SC-55mkII Wave2 PCM (shared with SC-55ST, SC-155mkII, SCB-55 Wave3, CM-300 Wave3)"
source_ref: "src/sc55/rom.rs:128 (MK2_WAVE2), 144"
- name: "sc55-roms/sc155-rev1/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "ceb7b9d3d9d264efe5dc3ba992b94f3be35eb6d0451abc574b6f6b5dc3db237b"
validation: [sha256]
description: "Roland SC-155 rev1 program ROM 2 (ROM1 shared with mk1-v2.00; Wave1/2/3 shared with mk1 family)"
source_ref: "src/sc55/rom.rs:289"
- name: "sc55-roms/cm300-v1.30/rom1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "9ec66abb5231b6c6f46f48b33d5412703041037d69a6803626ac402f25552af2"
validation: [sha256]
description: "Roland CM-300 / SCC-1 v1.30 program ROM 1"
source_ref: "src/sc55/rom.rs:258"
- name: "sc55-roms/cm300-v1.30/rom2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "f89442734fdebacae87c7707c01b2d7fdbf5940abae738987aee912d34b5882e"
validation: [sha256]
description: "Roland CM-300 / SCC-1 v1.30 program ROM 2"
source_ref: "src/sc55/rom.rs:259"
- name: "sc55-roms/cm300-v1.30/wave1.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "40c093cbfb4441a5c884e623f882a80b96b2527f9fd431e074398d206c0f073d"
validation: [sha256]
description: "Roland CM-300 Wave1 PCM (shared with CM-300 v1.10 and v1.20)"
source_ref: "src/sc55/rom.rs:132 (CM300_WAVE1), 260"
- name: "sc55-roms/cm300-v1.30/wave2.bin"
system: dos
required: false
hle_fallback: true
category: bios
sha256: "9bbbcac747bd6f7a2693f4ef10633db8ab626f17d3d9c47c83c3839d4dd2f613"
validation: [sha256]
description: "Roland CM-300 Wave2 PCM"
source_ref: "src/sc55/rom.rs:133 (CM300_WAVE2), 261"
+90
View File
@@ -0,0 +1,90 @@
emulator: SimCoupe
type: standalone
core_classification: official_port
source: "https://github.com/simonowen/simcoupe"
upstream: "https://github.com/simonowen/simcoupe"
profiled_date: "2026-10-04"
source_commit: "1f966036543991c05022ce4f95cfbfbb0014b187"
core_version: "v1.2.17"
display_name: "SAM Coupe (SimCoupe)"
cores:
- samcoupe
systems:
- sam-coupe
mode: standalone
notes: |
SimCoupe is the SAM Coupe emulator by Simon Owen. The modern 1.2.x
releases are standalone (SDL and Win32 ports), separate from the older
pre-1.0 code the libretro simcp core wraps. Four files sit next to the
binary in the installed Resource/ directory and are picked up by
OSD::MakeFilePath(PathType::Resource, name).
samcoupe.rom is the SAM Coupe ROM v3.0. LoadRoms (Base/Memory.cpp
:167-229) opens it, reads two 16kB pages into ROM0 and ROM1, and
returns true on a complete read. A failed open or a short read falls
back to another load of samcoupe.rom (lines 194-196) and, if even that
fails, fills both ROM pages with 0xFF and prints "Error loading ROM"
(lines 225-228). The emulator keeps running but the Z80 then executes
0xFF (RST 38h) from reset, so nothing boots: the file is practically
required.
atom.rom and atomlite.rom boot the SAMBUS Atom / Atom Lite IDE drives
the SAM community added. Memory.cpp:180-189 picks atomlite.rom when
either drive is configured as drvAtomLite, atom.rom when drive 2 is
drvAtom, and otherwise stays on samcoupe.rom. The default option
atombootrom = true (Base/Options.h:46) enables this path, so a user
running an Atom-configured machine needs the matching ROM; a plain
SAM Coupe never opens them.
sp0256-al2.bin is the Microchip SP0256-AL2 allophone data loaded by
the Blue Alpha VoiceBox device (Base/VoiceBox.cpp:35-40). VoiceBox is
enabled by default (Base/Options.h:124, voicebox = true) and the
constructor opens the file at reset; if it is absent the SP0256
stays zero-initialised and the device returns silence to any program
that queries port 0xFF (Base/SAMIO.cpp:538-539, 760).
files:
- name: samcoupe.rom
system: sam-coupe
required: true
size: 32768 # 32 kB, two 16 kB ROM pages
md5: "ad08ed47b07b0d7047fd3d0b5e7d90b3"
sha1: "c86601633fb61a8c517f7657aad9af4e6870f2ee"
crc32: "0b7e3585"
validation: [size]
description: "SAM Coupe ROM v3.0 (ROM0 + ROM1 pages)"
source_ref: "Base/Memory.cpp:167-229 (LoadRoms); Resource/samcoupe.rom"
- name: atom.rom
system: sam-coupe
required: false
size: 32768
md5: "fcb5d837f996efaaece074c3ceec2b55"
sha1: "cd342579f066c0863e4f769c2e6757085e21b0a1"
crc32: "dec75f58"
validation: [size]
description: "SAMBUS Atom IDE boot ROM, loaded when drive 2 is drvAtom"
source_ref: "Base/Memory.cpp:186-188; Resource/atom.rom"
- name: atomlite.rom
system: sam-coupe
required: false
size: 32768
md5: "ec1e8290da040307d6b3174b7ace9453"
sha1: "b2303b7200f5a17b54b841af9f0604db7bbdd1ab"
crc32: "9cf316a8"
validation: [size]
description: "SAMBUS Atom Lite IDE boot ROM, loaded when either drive is drvAtomLite"
source_ref: "Base/Memory.cpp:183-184; Resource/atomlite.rom"
- name: sp0256-al2.bin
system: sam-coupe
required: false
size: 2048
md5: "c6fe422a12d834b34c54956782ec5f81"
sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc"
crc32: "b504ac15"
validation: [size]
description: "Microchip SP0256-AL2 allophone data for the Blue Alpha VoiceBox"
source_ref: "Base/VoiceBox.cpp:35-40 (VoiceBoxDevice::VoiceBoxDevice); Base/Options.h:124 (voicebox default on); Resource/sp0256-al2.bin"