diff --git a/emulators/mgba_splitscreen.yml b/emulators/mgba_splitscreen.yml new file mode 100644 index 00000000..4b6d73c0 --- /dev/null +++ b/emulators/mgba_splitscreen.yml @@ -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)" diff --git a/emulators/playdiaemu.yml b/emulators/playdiaemu.yml new file mode 100644 index 00000000..bef6da01 --- /dev/null +++ b/emulators/playdiaemu.yml @@ -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: [] diff --git a/emulators/rust_dos.yml b/emulators/rust_dos.yml new file mode 100644 index 00000000..0257c18d --- /dev/null +++ b/emulators/rust_dos.yml @@ -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" diff --git a/emulators/samcoupe.yml b/emulators/samcoupe.yml new file mode 100644 index 00000000..650d7f88 --- /dev/null +++ b/emulators/samcoupe.yml @@ -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"