From 65b6ab9354248e4cac8b9a750b85a8327a72e764 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:04:43 +0100 Subject: [PATCH] feat: re-profile 14 emulators, add dosbox and ep128emu_core batch re-profiled dosbox_pure through fbalpha2012_cps1 with upstream verification. new profiles: dosbox, ep128emu_core. regenerate database. --- database.json | 32 +++++- emulators/dosbox.yml | 117 +++++++++++++++++++++ emulators/dosbox_pure.yml | 10 +- emulators/dosbox_svn.yml | 22 ++-- emulators/dosbox_svn_ce.yml | 26 ++--- emulators/doukutsu_rs.yml | 3 +- emulators/duckstation.yml | 8 +- emulators/easyrpg.yml | 11 +- emulators/ecwolf.yml | 22 ++-- emulators/emuscv.yml | 46 +++++---- emulators/emux_chip8.yml | 4 +- emulators/emux_gb.yml | 45 +++------ emulators/emux_nes.yml | 4 +- emulators/emux_sms.yml | 48 +++------ emulators/ep128emu_core.yml | 179 +++++++++++++++++++++++++++++++++ emulators/fake08.yml | 4 +- emulators/fbalpha2012_cps1.yml | 11 +- 17 files changed, 454 insertions(+), 138 deletions(-) create mode 100644 emulators/dosbox.yml create mode 100644 emulators/ep128emu_core.yml diff --git a/database.json b/database.json index 47a794b7..7215e2af 100644 --- a/database.json +++ b/database.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-23T11:37:13Z", + "generated_at": "2026-03-23T14:00:42Z", "total_files": 6733, "total_size": 5288642642, "files": { @@ -88325,6 +88325,9 @@ "exos21.bin": [ "55315b20fecb4441a07ee4bc5dc7153f396e0a2e" ], + "EXOS21.ROM": [ + "55315b20fecb4441a07ee4bc5dc7153f396e0a2e" + ], "zx48.rom": [ "5ea7c2b824672e914525d1d5c419d71b84a426a2" ], @@ -88580,6 +88583,24 @@ "arm6.program.rom": [ "388e3721b94cd074d6ba0eca8616523d2118a6c3" ], + "EXOS20.ROM": [ + "6033a0535136c40c47137e4d1cd9273c06d5fdff" + ], + "EXDOS14.ROM": [ + "cb43ab3676b93c279f1ed8ffcb0d4dcd4b34e631" + ], + "TVC22_D6_D4.64K": [ + "f2572ee83d09fc08f4de4a62f101c8bb301a9505" + ], + "TVC22_D7.64K": [ + "abf119cf947ea32defd08b29a8a25d75f6bd4987" + ], + "VT-DOS12-DISK.ROM": [ + "072c6160d4e7d406f5d8f5b1b66066c797d35561" + ], + "AMSDOS_0.5.ROM": [ + "39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb" + ], "atari_osb.rom": [ "db1031585968cfc6ec2ecda5c9a5a52f61444a3b" ], @@ -88592,6 +88613,9 @@ "2608_RYM.WAV": [ "c65592330c9dd84011151daed52f9aec926b7e56" ], + "DMG_ROM.bin": [ + "1db57a1e8b6e4096f811587f9eab0c6675fd9755" + ], "dmg0_rom.bin": [ "1db57a1e8b6e4096f811587f9eab0c6675fd9755" ], @@ -108900,6 +108924,12 @@ "8063185d4dd653dd75a68855148c9ee15b71164c", "b86b932cb4ce34472e0fe0f01a4a4350e15dcb53", "388e3721b94cd074d6ba0eca8616523d2118a6c3", + "6033a0535136c40c47137e4d1cd9273c06d5fdff", + "cb43ab3676b93c279f1ed8ffcb0d4dcd4b34e631", + "f2572ee83d09fc08f4de4a62f101c8bb301a9505", + "abf119cf947ea32defd08b29a8a25d75f6bd4987", + "072c6160d4e7d406f5d8f5b1b66066c797d35561", + "39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb", "db1031585968cfc6ec2ecda5c9a5a52f61444a3b", "b4f14e58030ed40fff2dc312b58ea4440bdf8cc5", "c65592330c9dd84011151daed52f9aec926b7e56", diff --git a/emulators/dosbox.yml b/emulators/dosbox.yml new file mode 100644 index 00000000..1445fdaf --- /dev/null +++ b/emulators/dosbox.yml @@ -0,0 +1,117 @@ +emulator: DOSBox +type: libretro +core_classification: community_fork +source: "https://github.com/libretro/dosbox-libretro" +upstream: "https://sourceforge.net/projects/dosbox/" +profiled_date: "2026-03-23" +core_version: "0.74" +display_name: "DOS (DOSBox)" +cores: [dosbox] +systems: [dos] +notes: | + Based on DOSBox 0.74 snapshot. MUNT MT-32 emulation added by libretro port. + Upstream DOSBox 0.74 has no MUNT — only OS-level MIDI (ALSA, CoreMIDI, Win32). + Hardware MIDI drivers removed, replaced with retro_midi_interface passthrough. + MT-32 activated via mididevice=mt32 in dosbox config section [midi]. + Older MUNT version: no MT-32 v2.x ROMs, no CM-32LN support. + Both ROMs loaded by fixed filename from system directory root. + ref: midi_mt32.h:82-106 + Keyboard layouts and codepages embedded in binary. + ref: dos_keyboard_layout_data.h, dos_codepages.h + .info declares firmware_count=0 but code loads 2 files (MUNT ROMs). + dosbox-libretro.conf optional config searched in system_directory/DOSbox/. + ref: libretro.cpp:751 + +files: + # -- MT-32 Control ROM -- + # Loaded from system_directory/MT32_CONTROL.ROM. + # MUNT validates by SHA1+size against known ROM database. + # CM-32L control ROMs also accepted under this filename. + + - name: "MT32_CONTROL.ROM" + description: "MT-32 Control v1.04" + required: false + hle_fallback: true + size: 65536 + sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7" + mode: libretro + source_ref: "midi_mt32.h:92, munt/ROMInfo.cpp:30" + + - name: "MT32_CONTROL.ROM" + description: "MT-32 Control v1.05" + required: false + hle_fallback: true + size: 65536 + sha1: "e17a3a6d265bf1fa150312061134293d2b58288c" + mode: libretro + source_ref: "midi_mt32.h:92, munt/ROMInfo.cpp:31" + + - name: "MT32_CONTROL.ROM" + description: "MT-32 Control v1.06" + required: false + hle_fallback: true + size: 65536 + sha1: "a553481f4e2794c10cfe597fef154eef0d8257de" + mode: libretro + source_ref: "midi_mt32.h:92, munt/ROMInfo.cpp:32" + + - name: "MT32_CONTROL.ROM" + description: "MT-32 Control v1.07" + required: false + hle_fallback: true + size: 65536 + sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987" + mode: libretro + source_ref: "midi_mt32.h:92, munt/ROMInfo.cpp:33" + + - name: "MT32_CONTROL.ROM" + description: "MT-32 Control BlueRidge" + required: false + hle_fallback: true + size: 65536 + sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92" + mode: libretro + source_ref: "midi_mt32.h:92, munt/ROMInfo.cpp:34" + + # -- CM-32L / LAPC-I Control ROMs -- + # Same fixed filename MT32_CONTROL.ROM — no CM32L_CONTROL.ROM in this core. + + - name: "MT32_CONTROL.ROM" + description: "CM-32L/LAPC-I Control v1.00" + required: false + hle_fallback: true + size: 65536 + sha1: "73683d585cd6948cc19547942ca0e14a0319456d" + mode: libretro + source_ref: "midi_mt32.h:92, munt/ROMInfo.cpp:36" + + - name: "MT32_CONTROL.ROM" + description: "CM-32L/LAPC-I Control v1.02" + required: false + hle_fallback: true + size: 65536 + sha1: "a439fbb390da38cada95a7cbb1d6ca199cd66ef8" + mode: libretro + source_ref: "midi_mt32.h:92, munt/ROMInfo.cpp:37" + + # -- PCM ROMs -- + # Loaded from system_directory/MT32_PCM.ROM. + # CM-32L PCM ROM also accepted under this filename. + + - name: "MT32_PCM.ROM" + description: "MT-32 PCM ROM" + required: false + hle_fallback: true + size: 524288 + sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252" + mode: libretro + source_ref: "midi_mt32.h:99, munt/ROMInfo.cpp:39" + + - name: "MT32_PCM.ROM" + description: "CM-32L/CM-64/LAPC-I PCM ROM" + required: false + hle_fallback: true + size: 1048576 + sha1: "289cc298ad532b702461bfc738009d9ebe8025ea" + mode: libretro + source_ref: "midi_mt32.h:99, munt/ROMInfo.cpp:40" diff --git a/emulators/dosbox_pure.yml b/emulators/dosbox_pure.yml index c2cd6c7f..43bc30b8 100644 --- a/emulators/dosbox_pure.yml +++ b/emulators/dosbox_pure.yml @@ -1,10 +1,11 @@ emulator: DOSBox Pure type: standalone + libretro +core_classification: enhanced_fork source: "https://github.com/libretro/dosbox-pure" upstream: "https://github.com/schellingb/dosbox-pure" logo: "https://raw.githubusercontent.com/schellingb/dosbox-pure/main/images/logo.png" -profiled_date: "2026-03-19" -core_version: "0.9.9" +profiled_date: "2026-03-23" +core_version: "1.0-preview5" display_name: "DOS (DOSBox-Pure)" cores: [dosbox_pure] systems: [dos] @@ -17,7 +18,7 @@ notes: | ref: dosbox_pure_libretro.cpp:1367-1378 MT-32 requires matched pair: *_CONTROL.ROM + *_PCM.ROM (PCM name derived from CONTROL name by replacing CONTROL with PCM, preserving case). - ref: dosbox_pure_libretro.cpp:182-199 + ref: midi_mt32.h:189-199 ZIP archives also supported — scanned for files by size (65536/131072 = control, 524288/1048576 = PCM), not by name. ref: midi_mt32.h:160-166 @@ -28,8 +29,7 @@ notes: | Bundled MUNT (header-only mt32emu.h) for MT-32 emulation. SHA1-based ROM identification (mt32emu.h:5112-5127,5185). - 13 full control ROMs + 2 PCM ROMs supported (no split ROMs in this MUNT). - Includes MT-32 v2.03 (not in dosbox-core's MUNT). + 12 full control ROMs + 2 PCM ROMs supported (no split ROMs in this MUNT). TinySoundFont (tsf.h) for SF2/SF3 playback. No firmware entries in .info file — all MIDI files optional. diff --git a/emulators/dosbox_svn.yml b/emulators/dosbox_svn.yml index fc8d03da..3e2cbc4e 100644 --- a/emulators/dosbox_svn.yml +++ b/emulators/dosbox_svn.yml @@ -1,24 +1,28 @@ emulator: DOSBox-SVN type: libretro +core_classification: community_fork source: "https://github.com/libretro/dosbox-svn" upstream: "https://sourceforge.net/projects/dosbox/" -profiled_date: "2026-03-19" +profiled_date: "2026-03-23" core_version: "SVN" display_name: "DOS (DOSBox-SVN)" cores: [dosbox_svn] systems: [dos] notes: | - DOSBox-SVN is the same codebase as dosbox_svn_ce but builds with a fake - SDL shim (WITH_FAKE_SDL=1) instead of real SDL, for broader platform compat. + Same codebase as dosbox_svn_ce, builds against a fake SDL shim + (WITH_FAKE_SDL=1) instead of real SDL, for broader platform compat. ref: libretro/Makefile.libretro, libretro/fakesdl/ - No MT-32 emulation — no MUNT bundled, no mt32emu, no FluidSynth, no BASS. - The src/midi/munt directory referenced in Makefile.common does not exist. - MIDI output is hardware-only via fake SDL stubs. + No MT-32 emulation. src/midi/munt referenced in Makefile.common:15 + does not exist, no MUNT submodule. MIDI is hardware-only + (ALSA, CoreAudio, CoreMIDI, Win32, OSS) + retro_midi_interface. ref: src/gui/midi.cpp - system_directory is read (libretro.cpp:1399) but only logged, never used - to load any files. + system_directory set and logged (libretro.cpp:1399-1401), never used + to load files. Config uses retro_save_directory (cross.cpp:61-71). + Keyboard layouts and codepages embedded in binary. + ref: dos_keyboard_layout_data.h, dos_codepages.h + + .info firmware_count=0, matches code. files: [] -# No BIOS, firmware, ROMs, or system files of any kind. diff --git a/emulators/dosbox_svn_ce.yml b/emulators/dosbox_svn_ce.yml index ad504809..9edcfe13 100644 --- a/emulators/dosbox_svn_ce.yml +++ b/emulators/dosbox_svn_ce.yml @@ -1,26 +1,28 @@ emulator: DOSBox-SVN CE type: libretro +core_classification: community_fork source: "https://github.com/libretro/dosbox-svn" upstream: "https://sourceforge.net/projects/dosbox/" -profiled_date: "2026-03-19" +profiled_date: "2026-03-23" core_version: "SVN CE" display_name: "DOS (DOSBox-SVN CE)" cores: [dosbox_svn_ce] systems: [dos] notes: | - DOSBox-SVN CE (Community Edition) is the same codebase as dosbox_svn but - builds against real SDL 1.2 + SDL_net instead of the fake SDL shim. - ref: libretro/Makefile.libretro (WITH_FAKE_SDL flag) + Same codebase as dosbox_svn, builds against real SDL 1.2 + SDL_net + instead of the fake SDL shim (WITH_FAKE_SDL not set). + ref: libretro/Makefile.libretro:238 - No MT-32 emulation — no MUNT bundled, no mt32emu, no FluidSynth, no BASS. - The src/midi/munt directory referenced in Makefile.common does not exist. - MIDI output is hardware-only (ALSA, CoreAudio, CoreMIDI, Win32, OSS). - ref: src/gui/midi.cpp, src/gui/midi_alsa.h, midi_coreaudio.h, etc. + No MT-32 emulation. src/midi/munt referenced in Makefile.common:15 + does not exist, no MUNT submodule. MIDI is hardware-only + (ALSA, CoreAudio, CoreMIDI, Win32, OSS) + retro_midi_interface. + ref: src/gui/midi.cpp - system_directory is read (libretro.cpp:1399) but only logged, never used - to load any files. + system_directory set and logged (libretro.cpp:1399-1401), never used + to load files. Config uses retro_save_directory (cross.cpp:61-73). + Keyboard layouts and codepages embedded in binary. + ref: dos_keyboard_layout_data.h, dos_codepages.h - Requires libsdl1.2 and libsdl-net1.2 at runtime (.info notes). + .info firmware_count=0, matches code. files: [] -# No BIOS, firmware, ROMs, or system files of any kind. diff --git a/emulators/doukutsu_rs.yml b/emulators/doukutsu_rs.yml index 579c78ac..6516caeb 100644 --- a/emulators/doukutsu_rs.yml +++ b/emulators/doukutsu_rs.yml @@ -1,8 +1,9 @@ emulator: doukutsu-rs type: standalone + libretro +core_classification: game_engine source: "https://github.com/DrGlaucous/doukutsu-rs-nm" upstream: "https://github.com/doukutsu-rs/doukutsu-rs" -profiled_date: "2026-03-19" +profiled_date: "2026-03-23" core_version: "1.2.0 - 0.101.0" display_name: "Cave Story (drs)" cores: diff --git a/emulators/duckstation.yml b/emulators/duckstation.yml index 20373acd..5cdd9bb0 100644 --- a/emulators/duckstation.yml +++ b/emulators/duckstation.yml @@ -1,8 +1,10 @@ emulator: DuckStation type: standalone + libretro +core_classification: official_port source: "https://github.com/stenzek/duckstation" +upstream: "https://github.com/stenzek/duckstation" logo: "https://raw.githubusercontent.com/stenzek/duckstation/master/data/resources/images/duck.png" -profiled_date: "2026-03-19" +profiled_date: "2026-03-23" core_version: "v0.1" display_name: "Sony - PlayStation (DuckStation)" cores: [duckstation] @@ -11,14 +13,14 @@ bios_size: 524288 # 0x80000 (512 KB), also accepts PS2 (4 MB) and PS3 (0x3E66F0 verification: md5 notes: | DuckStation auto-detects BIOS by MD5 hash from a flat scan of the BIOS directory. - ref: src/core/bios.cpp:459-481 (FindBIOSImagesInDirectory — scans all files by size) + ref: src/core/bios.cpp:460-482 (FindBIOSImagesInDirectory — scans all files by size) ref: src/core/bios.cpp:208 (MD5Digest::HashData identification) Accepts PS1 (512 KB), PS2 (4 MB), and PS3 (0x3E66F0) BIOS images. ref: src/core/bios.h:24-26 (BIOS_SIZE, BIOS_SIZE_PS2, BIOS_SIZE_PS3) Only the first 512 KB are mapped (bios.cpp:212). - 105 known BIOS entries (24 PS1 + 80 PS2 + 1 KDL-22PX300) identified by MD5. + 104 known BIOS entries (24 PS1 + 80 PS2) identified by MD5. ref: src/core/bios.cpp:34-139 (s_image_info_by_hash) Each image has: region, region_check, fast_boot_patch type, priority score. Lower priority = preferred. PS2 deprioritized (>= 100) for dynamic fast boot. diff --git a/emulators/easyrpg.yml b/emulators/easyrpg.yml index 7b758755..1724e165 100644 --- a/emulators/easyrpg.yml +++ b/emulators/easyrpg.yml @@ -1,8 +1,9 @@ emulator: EasyRPG Player type: standalone + libretro +core_classification: game_engine source: "https://github.com/libretro/easyrpg-libretro" upstream: "https://github.com/EasyRPG/Player" -profiled_date: "2026-03-19" +profiled_date: "2026-03-23" core_version: "0.8.1.0" display_name: "RPG Maker 2000/2003 (EasyRPG)" cores: @@ -69,12 +70,12 @@ files: path: "easyrpg.soundfont" required: false hle_fallback: true - source_ref: "decoder_fluidsynth.cpp:125, scene_logo.cpp:261" + source_ref: "decoder_fluidsynth.cpp:125" note: > General MIDI soundfont (SF2 format) for MIDI music playback. Many RPG Maker games use MIDI for background music. Without a soundfont, MIDI - tracks are silent. Any GM-compatible .sf2 works. Can also be placed in - easyrpg-player/Soundfont/ with any filename. + falls back to the built-in FmMidi synthesizer (lower quality). Any + GM-compatible .sf2 works. # ================================================================ # WildMidi configuration (optional, alternative MIDI backend) @@ -101,7 +102,6 @@ files: category: game_data path: "rtp/2000/" required: false - hle_fallback: true type: directory source_ref: "filefinder_rtp.cpp:73-74" note: > @@ -121,7 +121,6 @@ files: category: game_data path: "rtp/2003/" required: false - hle_fallback: true type: directory source_ref: "filefinder_rtp.cpp:73-74" note: > diff --git a/emulators/ecwolf.yml b/emulators/ecwolf.yml index 72dd8a2e..bd990644 100644 --- a/emulators/ecwolf.yml +++ b/emulators/ecwolf.yml @@ -1,45 +1,45 @@ emulator: ECWolf type: standalone + libretro +core_classification: game_engine source: "https://github.com/libretro/ecwolf" upstream: "https://bitbucket.org/ecwolf/ecwolf" -profiled_date: "2026-03-19" -core_version: "1.4.1" +profiled_date: "2026-03-23" +core_version: "1.3.99999" display_name: "Wolfenstein 3D (ECWolf)" cores: [ecwolf] systems: [wolfenstein3d] -verification: md5 notes: | Wolfenstein 3D source port by Braden Obrzut. Plays Wolf3D (wl6/wl1), Spear of Destiny (sod/sdm), Super 3D Noah's Ark (n3d), and community pk3 mods. + Blake Stone and Rise of the Triad support flagged as Preview in upstream. Requires ecwolf.pk3 — engine data package built from wadsrc/static/. Contains IWADINFO (game detection rules), palettes, sprites, map configs, DECORATE actor definitions, MAPINFO, SNDINFO, fonts, and localization strings. Without this file: "Could not open ecwolf.pk3!" fatal error. - ref: version.h:12 (MAIN_PK3), wl_iwad.cpp:642-657 (load + fatal) Libretro: ecwolf.pk3 searched in system_dir. - ref: libretro/libretro.cpp:831-832 (sysDir passed to SelectGame) + ref: libretro.cpp:831-832 (sysDir passed to SelectGame) Standalone: ecwolf.pk3 searched in progdir (binary directory). - ref: wl_main.cpp:1289 (progdir passed to SelectGame) + ref: wl_main.cpp:1295 (progdir passed to SelectGame) Also: INSTALL_PREFIX/share/ecwolf/ on Linux (wl_iwad.cpp:648) Game data files (vswap, gamemaps, vgagraph, audiot) loaded from content directory, not system directory. Auto-detects game variant by scanning lump contents against IWADINFO MustContain rules. - Blake Stone and Rise of the Triad support flagged as Preview. + + Libretro fork based on ECWolf 1.3.99999-dev (forked 2020-02-23). + Upstream head at 1.5.0pre with broader game support. files: - name: "ecwolf.pk3" description: "ECWolf engine data package" required: true md5: "c011b428819eea4a80b455c245a5a04d" - source_ref: "ecwolf_libretro.info:firmware0, version.h:MAIN_PK3, wl_iwad.cpp:SelectGame" + source_ref: "version.h:12 (MAIN_PK3), wl_iwad.cpp:642-657 (open + fatal), libretro.cpp:831-832 (sysDir)" notes: > Built from wadsrc/static/ via zipdir. Contains IWADINFO (game detection rules), palettes (wolfpal, spearpal, blakepal, noahpal), map lump remappers (wl6map, sodmap, etc.), DECORATE actor definitions, MAPINFO, SNDINFO, SNDSEQ, textures, - sprites, fonts, and localization strings. Without this file the core errors - with "Could not open ecwolf.pk3!". The md5 corresponds to the version shipped - with the current libretro buildbot release. + sprites, fonts, and localization strings. md5 from .info, not validated by code. diff --git a/emulators/emuscv.yml b/emulators/emuscv.yml index 170229bc..d669103e 100644 --- a/emulators/emuscv.yml +++ b/emulators/emuscv.yml @@ -1,9 +1,10 @@ emulator: EmuSCV -type: standalone + libretro +type: libretro +core_classification: community_fork source: "https://github.com/wzcwzc/emuscv" -upstream: "https://github.com/wzcwzc/emuscv" -profiled_date: "2026-03-19" -core_version: "" +upstream: "http://takeda-toshiya.my.coocan.jp/" +profiled_date: "2026-03-23" +core_version: "0.12" display_name: "EPOCH/YENO Super Cassette Vision" cores: - emuscv @@ -11,37 +12,44 @@ systems: - scv notes: | - EmuSCV is an Epoch/YENO Super Cassette Vision emulator for libretro, - based on eSCV by Takeda Toshiya. + Libretro port of eSCV by Takeda Toshiya (Common Source Code Project), + ported to libretro by MARCONATO Maxime. Upstream source mirrored at + https://github.com/tautologico/common-src-project (src/vm/scv/). - BIOS loading in src/vm/scv/memory.cpp:initialize() (line 71-242). The core - tries multiple filenames in order: upd7801g.s01, upd7801g.bin, upd7801g.bios, - bios.rom, bios.bin. First successful open wins. + BIOS loading in src/vm/scv/memory.cpp:initialize() (lines 74-243). + Tries filenames in order: upd7801g.s01, upd7801g.bin, upd7801g.bios, + bios.rom, bios.bin. First successful open wins. Upstream eSCV uses + only BIOS.ROM (uppercase); the libretro port renamed and added + fallback aliases. The BIOS is read as 0x1000 (4096) bytes into the bios[] array, mapped read-only at CPU address 0x0000-0x0FFF (UPD7801 internal ROM area). - When CHECKBIOS core option is YES or AUTO, the core computes MD5 of the - loaded data and compares against 635a978fd40db9a18ee44eff449fc126. If the - hash does not match, the BIOS is rejected (zeroed out, bios_present=false). - When CHECKBIOS is NO, any file content is accepted. + When CHECKBIOS core option is YES, the core computes MD5 of the loaded + data and compares against 635a978fd40db9a18ee44eff449fc126. If the + hash does not match, the BIOS is rejected (zeroed out, + bios_present=false). When CHECKBIOS is AUTO (default) or NO, any file + content is accepted. The log message for AUTO says "automatic (yes)" + but the code skips the check (code bug: != YES_VAL at line 80). The font/character data is embedded within the BIOS at offset 0x200 - (memory.h:163 get_font() returns bios + 0x200). No separate font ROM file. + (memory.h get_font() returns bios + 0x200). No separate font ROM file. The core can start without BIOS (supports_no_game=true) but shows - "BIOS not found" or "Bad BIOS" on the OSD. Games will not run without it. + "BIOS not found" or "Bad BIOS" on the OSD. Games will not run without + it. - The .info file declares firmware_count = 1, firmware0_opt = false. + The .info declares firmware_count=1, firmware0_opt=false. Matches code. files: - name: "upd7801g.s01" system: scv required: true - size: 4096 # 4 KB, UPD7801G internal ROM + size: 4096 md5: 635a978fd40db9a18ee44eff449fc126 + validation: [md5] note: "UPD7801G internal ROM (BIOS). Mapped at 0x0000-0x0FFF. Contains character font at offset 0x200." - source_ref: "src/vm/scv/memory.cpp:74, libretro-core-info/emuscv_libretro.info" + source_ref: "src/vm/scv/memory.cpp:74-243" aliases: - "upd7801g.bin" - "upd7801g.bios" @@ -54,7 +62,7 @@ platform_details: upd7801g: target: "0x0000-0x0FFF (CPU internal ROM, 4 KB)" format: "raw binary" - source_ref: "src/vm/scv/memory.cpp:249" + source_ref: "src/vm/scv/memory.cpp:249-254" notes: | Memory map from memory.cpp:initialize(): 0x0000-0x0FFF BIOS ROM (read-only) diff --git a/emulators/emux_chip8.yml b/emulators/emux_chip8.yml index 2a291316..9fb380dc 100644 --- a/emulators/emux_chip8.yml +++ b/emulators/emux_chip8.yml @@ -1,7 +1,9 @@ emulator: "emux (CHIP-8)" type: libretro +core_classification: official_port source: "https://github.com/libretro/emux" -profiled_date: "2026-03-18" +upstream: "https://github.com/sronsse/emux" +profiled_date: "2026-03-23" core_version: "0.1" display_name: "CHIP-8 (Emux CHIP-8)" cores: diff --git a/emulators/emux_gb.yml b/emulators/emux_gb.yml index 30669c27..338d7ec6 100644 --- a/emulators/emux_gb.yml +++ b/emulators/emux_gb.yml @@ -1,7 +1,9 @@ emulator: "emux (Game Boy)" type: libretro +core_classification: official_port source: "https://github.com/libretro/emux" -profiled_date: "2026-03-19" +upstream: "https://github.com/sronsse/emux" +profiled_date: "2026-03-23" core_version: "0.1" display_name: "Nintendo - Game Boy / Color (Emux GB)" cores: @@ -10,41 +12,24 @@ systems: - nintendo-gb notes: | - emux is a multi-system emulator by Sebastien Ronsse, supporting CHIP-8, - Game Boy, NES, and Sega Master System as separate libretro cores. + emux is a multi-system emulator by Sebastien Ronsse. The libretro port + renamed the boot ROM from DMG_ROM.bin (upstream, gb_mapper.c:32) to + dmg_boot.bin (libretro, gb_mapper.c:35) to match RetroArch conventions. - Boot ROM loading in controllers/mapper/gb_mapper.c: - static char *bootrom_path = "dmg_boot.bin"; (line 32) - gb_mapper->bootrom = file_map(PATH_SYSTEM, bootrom_path, 0, BOOTROM_SIZE); - If file_map returns NULL, gb_mapper_init returns false — core cannot start. - No HLE fallback, no skip logic. + Boot ROM loaded via file_map(PATH_SYSTEM, "dmg_boot.bin", 0, 256) in + gb_mapper_init (gb_mapper.c:225-228). Returns false on failure — no HLE + fallback. Mapped at 0x0000-0x00FF, overlays ROM0 until BOOT_LOCK (0xFF50) + is written non-zero (lock_writeb, gb_mapper.c:97-106). - Boot ROM is 256 bytes (BOOTROM_SIZE in gb_mapper.h:10), mapped at 0x0000-0x00FF. - When register 0xFF50 (BOOT_LOCK) is written with non-zero, the bootrom region - is removed from the memory map (lock_writeb, gb_mapper.c:130-138). - - Memory map from mach/gb.c: - 0x0000-0x00FF Boot ROM (overlays ROM0 until BOOT_LOCK) - 0x0000-0x3FFF ROM bank 0 (16 KB) - 0x4000-0x7FFF ROM bank 1 (switchable, 16 KB) - 0x8000-0x9FFF VRAM (8 KB) - 0xA000-0xBFFF External RAM (8 KB) - 0xC000-0xDFFF WRAM (8 KB) - 0xFE00-0xFE9F OAM (160 bytes) - 0xFF80-0xFFFE HRAM (127 bytes) - - The .info declares firmware_count=1, firmware0_opt=false. - is_experimental=true. Core does not support save states, rewind, or netplay. - - system_directory obtained via RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY - (libretro/libretro.c:23-25), passed as "system-dir" config param. + No hash validation. Code accepts any 256+ byte file. + is_experimental=true. No save states, rewind, or netplay. files: - name: "dmg_boot.bin" + aliases: ["DMG_ROM.bin"] system: nintendo-gb description: "Game Boy (DMG) boot ROM" required: true size: 256 - md5: "32fbbd84168d3482956eb3c5051637f5" - source_ref: "controllers/mapper/gb_mapper.c:32 (bootrom_path), gb_mapper.h:10 (BOOTROM_SIZE=256)" - note: "Mapped at 0x0000-0x00FF, overlays ROM0 until BOOT_LOCK (0xFF50) written. No HLE — core fails to init without this file." + source_ref: "controllers/mapper/gb_mapper.c:35 (bootrom_path), gb_mapper.h:13 (BOOTROM_SIZE=256), gb_mapper.c:225-232 (file_map + error)" + note: "Upstream name DMG_ROM.bin, renamed by libretro port (gb_mapper.c:33-34)." diff --git a/emulators/emux_nes.yml b/emulators/emux_nes.yml index 86e37234..45f3f6ac 100644 --- a/emulators/emux_nes.yml +++ b/emulators/emux_nes.yml @@ -1,7 +1,9 @@ emulator: "emux (NES)" type: libretro +core_classification: official_port source: "https://github.com/libretro/emux" -profiled_date: "2026-03-19" +upstream: "https://github.com/sronsse/emux" +profiled_date: "2026-03-23" core_version: "0.1" display_name: "Nintendo - NES / Famicom (Emux NES)" cores: diff --git a/emulators/emux_sms.yml b/emulators/emux_sms.yml index 2eb25f65..91e0aefe 100644 --- a/emulators/emux_sms.yml +++ b/emulators/emux_sms.yml @@ -1,7 +1,9 @@ emulator: "emux (SMS)" type: libretro +core_classification: official_port source: "https://github.com/libretro/emux" -profiled_date: "2026-03-19" +upstream: "https://github.com/sronsse/emux" +profiled_date: "2026-03-23" core_version: "0.1" display_name: "Sega - Master System (Emux SMS)" cores: @@ -10,37 +12,17 @@ systems: - sms notes: | - emux is a multi-system emulator by Sebastien Ronsse, supporting CHIP-8, - Game Boy, NES, and Sega Master System as separate libretro cores. + emux is a multi-system emulator by Sebastien Ronsse. BIOS and cartridge + code identical between upstream and libretro fork (only difference: libretro + adds g_ram_data/g_ram_size exposure in mach/sms.c for RETRO_MEMORY_SYSTEM_RAM). - BIOS loading in controllers/mapper/sms_mapper.c: - static char *bios_path = "bios.sms"; (line 33) - #define BIOS_SIZE 0x2000 (line 7, 8192 bytes) - sms_mapper->bios = file_map(PATH_SYSTEM, bios_path, 0, BIOS_SIZE); - If file_map returns NULL, init returns false — core cannot start. - No HLE fallback, no skip logic. + BIOS loaded via file_map(PATH_SYSTEM, "bios.sms", 0, BIOS_SIZE) in + sms_mapper_init (sms_mapper.c:162-165). Returns false on failure — no HLE + fallback. Mapped at 0x0000, overlays cartridge ROM until bios_disable bit + set in slot control register (sms_mapper.c:79-82). - BIOS enable/disable via slot control register port write (lines 74-90): - bios_disable bit in control union. Reset clears bios_disable and - adds BIOS region to memory map. Writing bios_disable=1 removes - the BIOS overlay, exposing cartridge ROM underneath. - - Cartridge loading delegated to sega_mapper controller: - ROM mapped via file_map(PATH_DATA, ...), 16 KB banks (BANK_SIZE=0x4000), - 3 bank slots (NUM_BANKS=3), bank select registers at 0xFFFD-0xFFFF. - - Memory map from mach/sms.c: - 0x0000-0xBFFF Mapper (BIOS overlay + cartridge ROM banks) - 0xC000-0xDFFF RAM (8 KB) - 0xE000-0xFFFF RAM mirror - - The .info declares firmware_count=1, firmware0_opt=false. - is_experimental=true. No save states, rewind, or netplay support. - Supported extensions: sms, bms, bin, rom. - - system_directory obtained via RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY - (libretro/libretro.c:23-25), passed as "system-dir" config param. - BIOS loaded from this directory via PATH_SYSTEM. + No hash validation. Code accepts any file >= 8192 bytes. + is_experimental=true. No save states, rewind, or netplay. files: - name: "bios.sms" @@ -48,6 +30,6 @@ files: description: "Sega Master System BIOS" required: true size: 8192 - md5: "840481177270d5642a14ca71ee72844c" - source_ref: "controllers/mapper/sms_mapper.c:7 (BIOS_SIZE=0x2000), :33 (bios_path), :167-172 (file_map)" - note: "Mapped at 0x0000, overlays cartridge ROM until bios_disable bit set in slot control register. No HLE — core fails to init without this file." + validation: [size] + source_ref: "controllers/mapper/sms_mapper.c:12 (BIOS_SIZE=0x2000), :61 (bios_path), :162-170 (file_map + NULL check → return false)" + note: "Mapped at 0x0000, overlays cartridge ROM until bios_disable bit set. file_map rejects files < 8192 bytes (file.c:59)." diff --git a/emulators/ep128emu_core.yml b/emulators/ep128emu_core.yml new file mode 100644 index 00000000..97aae520 --- /dev/null +++ b/emulators/ep128emu_core.yml @@ -0,0 +1,179 @@ +emulator: ep128emu_core +type: libretro +core_classification: community_fork +display_name: "Enterprise - 64/128 (ep128emu)" +source: https://github.com/libretro/ep128emu-core +upstream: https://github.com/istvan-v/ep128emu +profiled_date: "2026-03-23" +core_version: "1.2.10" + +cores: + - ep128emu_core + +systems: + - enterprise-64 + - enterprise-128 + - videoton-tvc + - amstrad-cpc + - zx-spectrum + +notes: >- + Emulates Enterprise 64/128, Videoton TVC, Amstrad CPC 464/664/6128, + and ZX Spectrum 16/48/128. All ROMs are embedded in the binary since + v1.1.0; external files override built-in data. Content type is + auto-detected and determines machine configuration and ROM selection. + Custom ROM mappings are possible via .ep128cfg config files placed in + ep128emu/config/ or next to content. The .info declares epd19hft.rom + and zt19hfnt.rom which are phantom entries never referenced in code. + The .info omits epdos16f.rom and exdos14isdos10uk.rom which are used + by the code. SDEXT, ReSID, and MIDI port features are compile-disabled + in the libretro build. + +files: + - name: exos21.rom + description: Enterprise 128 Expandible OS 2.1 + path: ep128emu/roms/exos21.rom + required: false + source_ref: "core/core.cpp:234-237, roms/roms.hpp:18472-21205" + aliases: + - EXOS21.ROM + + - name: exos20.rom + description: Enterprise 64 Expandible OS 2.0 + path: ep128emu/roms/exos20.rom + required: false + source_ref: "core/core.cpp:226-229, roms/roms.hpp:15738-18471" + aliases: + - EXOS20.ROM + + - name: exos24uk.rom + description: Enterprise 128 Expandible OS 2.4 (enhanced, fast memory test) + path: ep128emu/roms/exos24uk.rom + required: false + source_ref: "core/core.cpp:214-221, roms/roms.hpp:32838-38302" + + - name: basic21.rom + description: Enterprise 128 BASIC Interpreter v2.1 + path: ep128emu/roms/basic21.rom + required: false + source_ref: "core/core.cpp:248,266,276, roms/roms.hpp:3433-4801" + + - name: basic20.rom + description: Enterprise 64 BASIC Interpreter v2.0 + path: ep128emu/roms/basic20.rom + required: false + source_ref: "core/core.cpp:246,264,274, roms/roms.hpp:2064-3432" + + - name: exdos13.rom + description: Enterprise 128 Disk Controller v1.3 + path: ep128emu/roms/exdos13.rom + required: false + source_ref: "core/core.cpp:303-306, roms/roms.hpp:13004-15737" + aliases: + - EXDOS14.ROM + + - name: exdos14isdos10uk.rom + description: Enterprise 128 IS-DOS (CP/M compatible disk system) + path: ep128emu/roms/exdos14isdos10uk.rom + required: false + source_ref: "core/core.cpp:295-298, roms/roms.hpp:30103-32836" + + - name: epfileio.rom + description: Enterprise 128 Direct File I/O + path: ep128emu/roms/epfileio.rom + required: false + source_ref: "core/core.cpp:283-284, roms/roms.hpp:9-1377" + + - name: epdos16f.rom + description: Enterprise 128 EP-DOS v1.6f (Hungarian font and CLKOFF) + path: ep128emu/roms/epdos16f.rom + required: false + source_ref: "core/core.cpp:252-255, roms/roms.hpp:43779-46512" + + - name: hun.rom + description: Enterprise 128 Hungarian language extension + path: ep128emu/roms/hun.rom + required: false + source_ref: "core/core.cpp:242, roms/roms.hpp:41039-42407" + + - name: brd.rom + description: Enterprise 128 German language extension + path: ep128emu/roms/brd.rom + required: false + source_ref: "core/core.cpp:260, roms/roms.hpp:42409-43777" + + - name: zt19uk.rom + description: Enterprise 128 ZozoTools extension (DTF file loading) + path: ep128emu/roms/zt19uk.rom + required: false + source_ref: "core/core.cpp:287-290, roms/roms.hpp:38304-41037" + + - name: tvc22_sys.rom + description: Videoton TVC system ROM v2.2 + path: ep128emu/roms/tvc22_sys.rom + required: false + source_ref: "core/core.cpp:313-314, roms/roms.hpp:21206-22574" + aliases: + - TVC22_D6_D4.64K + + - name: tvc22_ext.rom + description: Videoton TVC extension ROM v2.2 + path: ep128emu/roms/tvc22_ext.rom + required: false + source_ref: "core/core.cpp:315-316, roms/roms.hpp:22575-23260" + aliases: + - TVC22_D7.64K + + - name: tvcfileio.rom + description: Videoton TVC Direct File I/O + path: ep128emu/roms/tvcfileio.rom + required: false + source_ref: "core/core.cpp:319-320, roms/roms.hpp:1378-2063" + + - name: tvc_dos12d.rom + description: Videoton TVC disk BIOS v1.2d + path: ep128emu/roms/tvc_dos12d.rom + required: false + source_ref: "core/core.cpp:324-325, roms/roms.hpp:23261-24629" + aliases: + - VT-DOS12-DISK.ROM + + - name: cpc464.rom + description: Amstrad CPC 464 OS + BASIC + path: ep128emu/roms/cpc464.rom + required: false + source_ref: "core/core.cpp:335-338, roms/roms.hpp:4802-7535" + + - name: cpc664.rom + description: Amstrad CPC 664 OS + BASIC + path: ep128emu/roms/cpc664.rom + required: false + source_ref: "core/core.cpp:343-346, roms/roms.hpp:7536-10269" + + - name: cpc6128.rom + description: Amstrad CPC 6128 OS + BASIC + path: ep128emu/roms/cpc6128.rom + required: false + source_ref: "core/core.cpp:352-355, roms/roms.hpp:10270-13003" + + - name: cpc_amsdos.rom + description: Amstrad CPC AMSDOS disk BIOS + path: ep128emu/roms/cpc_amsdos.rom + required: false + source_ref: "core/core.cpp:359-360, roms/roms.hpp:24630-25998" + aliases: + - AMSDOS_0.5.ROM + + - name: zx128.rom + description: ZX Spectrum 128 ROM + path: ep128emu/roms/zx128.rom + required: false + source_ref: "core/core.cpp:382-385, roms/roms.hpp:27368-30101" + + - name: zx48.rom + description: ZX Spectrum 48 ROM + path: ep128emu/roms/zx48.rom + required: false + source_ref: "core/core.cpp:389-390, roms/roms.hpp:25999-27367" + aliases: + - 48.rom diff --git a/emulators/fake08.yml b/emulators/fake08.yml index 982521b8..9befe23e 100644 --- a/emulators/fake08.yml +++ b/emulators/fake08.yml @@ -1,7 +1,9 @@ emulator: FAKE-08 type: libretro +core_classification: game_engine source: "https://github.com/jtothebell/fake-08" -profiled_date: "2026-03-18" +upstream: "https://github.com/jtothebell/fake-08" +profiled_date: "2026-03-23" core_version: "v0.0.2.19" display_name: "PICO-8 (FAKE-08)" cores: diff --git a/emulators/fbalpha2012_cps1.yml b/emulators/fbalpha2012_cps1.yml index 8f782dd0..c3116ba8 100644 --- a/emulators/fbalpha2012_cps1.yml +++ b/emulators/fbalpha2012_cps1.yml @@ -3,7 +3,7 @@ type: libretro core_classification: frozen_snapshot source: "https://github.com/libretro/fbalpha2012_cps1" upstream: "https://www.fbalpha.com" -profiled_date: "2026-03-19" +profiled_date: "2026-03-23" core_version: "v0.2.97.28" display_name: "Arcade (FB Alpha 2012 CPS-1)" cores: @@ -24,8 +24,8 @@ notes: | BRF_OPT (optional). These are GAL/PAL dumps for hardware preservation — never loaded by the emulator. - ROM path: ROMs are loaded from the content directory (g_rom_dir), not system - directory. system_directory is obtained (libretro.cpp:1645) but never used. + ROM path: ROMs are loaded from the content directory (g_rom_dir). + system_directory (libretro.cpp:2202) is used only for hiscore.dat. The .info note "BIOS files must be inside the ROM directory" is misleading — there are no BIOS files for CPS-1. This note is generic across all FBA cores. @@ -35,6 +35,7 @@ notes: | files: - name: "hiscore.dat" + path: "fbalpha2012/hiscore.dat" required: false - note: "High score database, loaded from save directory" - source_ref: "src/burn/hiscore.cpp:411" + description: "High score database, loaded from system directory" + source_ref: "src/burn/hiscore.cpp:226"