From 69987cc0bbf97959d3027c4da41d855d14811784 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 24 Mar 2026 14:06:20 +0100 Subject: [PATCH] feat: re-profile 30 emulators, beetle to parallel_n64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit source-verified: mesen FdsBios.bin→alias, MesenDB.txt phantom (embedded). mupen64plus 64DD_IPL.bin→IPL.n64 (code path fix). neocd 000-lo.lo/ng-lo.rom phantoms (algorithmically generated). new profiles: mesen-s, mupen64plus next develop/gles2/gles3. regenerate database. --- database.json | 27 ++-- emulators/beetle_psx.yml | 35 +++-- emulators/beetle_saturn.yml | 85 ++++------- emulators/beetle_wswan.yml | 5 +- emulators/mednafen_psx.yml | 2 +- emulators/mednafen_saturn.yml | 2 +- emulators/mednafen_supafaust.yml | 26 +++- emulators/mednafen_supergrafx.yml | 55 ++++++- emulators/mednafen_wswan.yml | 5 +- emulators/melonds.yml | 89 ++++++----- emulators/melonds_ds.yml | 83 +++++++---- emulators/mesen-s.yml | 197 +++++++++++++++++++++++++ emulators/mesen.yml | 92 +++++------- emulators/mess2015.yml | 44 +++++- emulators/meteor.yml | 52 ++----- emulators/mgba.yml | 23 ++- emulators/minivmac.yml | 66 ++++----- emulators/mkxp-z.yml | 9 +- emulators/mkxp_z.yml | 144 ++++++------------ emulators/mojozork.yml | 19 ++- emulators/moonlight.yml | 18 ++- emulators/mpv.yml | 19 ++- emulators/mrboom.yml | 11 +- emulators/mu.yml | 53 +++---- emulators/mupen64plus.yml | 50 ++----- emulators/mupen64plus_next_develop.yml | 8 + emulators/mupen64plus_next_gles2.yml | 8 + emulators/mupen64plus_next_gles3.yml | 8 + emulators/neocd.yml | 180 ++++++++++------------ emulators/noods.yml | 47 +++--- emulators/parallel_n64.yml | 20 ++- 31 files changed, 836 insertions(+), 646 deletions(-) create mode 100644 emulators/mesen-s.yml create mode 100644 emulators/mupen64plus_next_develop.yml create mode 100644 emulators/mupen64plus_next_gles2.yml create mode 100644 emulators/mupen64plus_next_gles3.yml diff --git a/database.json b/database.json index 18cc549b..b4476c40 100644 --- a/database.json +++ b/database.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-24T10:35:58Z", + "generated_at": "2026-03-24T11:45:29Z", "total_files": 6733, "total_size": 5288644732, "files": { @@ -94909,7 +94909,8 @@ ], "sgb_bios.bin": [ "aa2f50a77dfb4823da96ba99309085a3c6278515", - "369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de" + "369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de", + "f282b3aaf98f8423dab7d77f1aa0192be630f2fb" ], "sgb1.boot.rom": [ "aa2f50a77dfb4823da96ba99309085a3c6278515" @@ -95238,6 +95239,12 @@ "DBPATCH.wav": [ "e0c98d00fe3004942c4a2842f06e2702dd2bd7c7" ], + "DMG_ROM.bin": [ + "1db57a1e8b6e4096f811587f9eab0c6675fd9755" + ], + "dmg0_rom.bin": [ + "1db57a1e8b6e4096f811587f9eab0c6675fd9755" + ], "amiga-os-300-a4000.rom": [ "f0b4e9e29e12218c2d5bd7020e4e785297d91fd7" ], @@ -95274,6 +95281,9 @@ "upd7801g.bios": [ "6e89d1227581c76441a53d605f9e324185f1da33" ], + "FdsBios.bin": [ + "57fe1bdee955bb48d357e463ccbf129496930b62" + ], "BS-X.bios": [ "604556b2e62860af18db5a77f2956ebc75450020" ], @@ -95346,12 +95356,6 @@ "2608_RYM.WAV": [ "c65592330c9dd84011151daed52f9aec926b7e56" ], - "DMG_ROM.bin": [ - "1db57a1e8b6e4096f811587f9eab0c6675fd9755" - ], - "dmg0_rom.bin": [ - "1db57a1e8b6e4096f811587f9eab0c6675fd9755" - ], "dc_flash_wb.bin": [ "72c65f2a11ee7b72b77b9945187b7a332632e14a" ], @@ -115656,6 +115660,9 @@ "c0a04b87ad138e6754a6688ad757004467950c08", "35e101f63194d75e234ef843ae6af893423b7f64", "e0c98d00fe3004942c4a2842f06e2702dd2bd7c7", + "1db57a1e8b6e4096f811587f9eab0c6675fd9755", + "369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de", + "f282b3aaf98f8423dab7d77f1aa0192be630f2fb", "f0b4e9e29e12218c2d5bd7020e4e785297d91fd7", "4e83a94ae5155bbea14d7331a5a8db82457bd5ae", "6386e58bc1bba5e76baec9e8a1ca4b99dc3c573f", @@ -115666,6 +115673,7 @@ "34fa37599f2f9eb607390ef2458a3c22d87f09a9", "273a9933b68a290c5aedcd6d69faa7b1d22c0344", "6e89d1227581c76441a53d605f9e324185f1da33", + "57fe1bdee955bb48d357e463ccbf129496930b62", "604556b2e62860af18db5a77f2956ebc75450020", "d1ae642aed4f0584eeb81ff50180db694e5101d4", "4ae4d37409ff99411a623da9f6a44192170a854e", @@ -115684,12 +115692,9 @@ "db1031585968cfc6ec2ecda5c9a5a52f61444a3b", "b4f14e58030ed40fff2dc312b58ea4440bdf8cc5", "c65592330c9dd84011151daed52f9aec926b7e56", - "1db57a1e8b6e4096f811587f9eab0c6675fd9755", "72c65f2a11ee7b72b77b9945187b7a332632e14a", "6d27d71aec4dfba98f66316ae74a1426d567698a", "1293d68bf9643bc4f36954c1e80e38f39864528d", - "369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de", - "f282b3aaf98f8423dab7d77f1aa0192be630f2fb", "3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3", "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498", "b7af62f0bc95fdca4b31d236f8327dafc80f83b7", diff --git a/emulators/beetle_psx.yml b/emulators/beetle_psx.yml index 42d020ce..d234468f 100644 --- a/emulators/beetle_psx.yml +++ b/emulators/beetle_psx.yml @@ -1,20 +1,20 @@ emulator: Beetle PSX (Mednafen PSX) type: libretro +core_classification: community_fork source: "https://github.com/libretro/beetle-psx-libretro" -profiled_date: "2026-03-18" +upstream: "https://mednafen.github.io/" +profiled_date: "2026-03-24" core_version: "v0.9.44.1" display_name: "Sony - PlayStation (Beetle PSX)" cores: [mednafen_psx, mednafen_psx_hw] systems: [sony-playstation] -bios_size: 524288 # 512 KB for all accepted BIOS images -verification: sha1 notes: > Region-based BIOS selection: the core picks JP/NA/EU firmware based on disc region. SHA1 validated with warning on mismatch (does not block loading). + SHA1 and alternate filenames sourced from MAME psx.cpp (libretro.cpp:184). Override option allows using PSP or PS3 extracted PS1 BIOS as region-free alternative. - "Skip BIOS" option exists but causes compatibility issues (PAL copy protection, Saga Frontier). - Alternate filenames are case variants and model aliases for the same image. - Comment in source references MAME psx.cpp as hash source. + "Skip BIOS" option patches BIOS ROM but causes compatibility issues. + Upstream Mednafen loads the same 3 region BIOS; override BIOS are libretro additions. files: # -- Region: Japan (REGION_JP) -- @@ -23,8 +23,11 @@ files: description: "SCPH-5500 (v3.0 09-09-96 J)" region: "NTSC-J" required: true + size: 524288 sha1: "b05def971d8ec59f346f2d9ac21fb742e3eb6917" md5: "8dd7d5296a650fac7319bce665a6a53c" + validation: [sha1] + mode: both source_ref: "libretro.cpp:252-256" aliases: ["SCPH5500.bin", "SCPH-5500.bin"] @@ -34,8 +37,11 @@ files: description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)" region: "NTSC-U" required: true + size: 524288 sha1: "0555c6fae8906f3f09baf5988f00e55f88e9f30b" md5: "490f666e1afb15b7362b406ed1cea246" + validation: [sha1] + mode: both source_ref: "libretro.cpp:258-270" aliases: - "SCPH5501.bin" @@ -53,8 +59,11 @@ files: description: "SCPH-5502, 5552 (v3.0 01-06-97 E)" region: "PAL" required: true + size: 524288 sha1: "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0" md5: "32736f17079d0b2b7024407c39bd3050" + validation: [sha1] + mode: both source_ref: "libretro.cpp:272-282" aliases: - "SCPH5502.bin" @@ -69,18 +78,24 @@ files: description: "PSP embedded PS1 BIOS (region-free override)" region: "Auto" required: false + size: 524288 sha1: "96880d1ca92a016ff054be5159bb06fe03cb4e14" md5: "c53ca5908936d412331790f4426c6c33" - source_ref: "libretro.cpp:190-196" + validation: [sha1] + mode: libretro + source_ref: "libretro.cpp:190-195" aliases: ["PSXONPSP660.bin"] - notes: "override_bios=1 (psxonpsp option). Falls back to region BIOS if not found." + notes: "override_bios=1. Falls back to region BIOS if not found." - name: "ps1_rom.bin" description: "PS3 embedded PS1 BIOS (region-free override)" region: "Auto" required: false + size: 524288 sha1: "c40146361eb8cf670b19fdc9759190257803cab7" md5: "81bbe60ba7a3d1cea1d48c14cbcc647b" - source_ref: "libretro.cpp:198-204" + validation: [sha1] + mode: libretro + source_ref: "libretro.cpp:198-203" aliases: ["PS1_ROM.bin"] - notes: "override_bios=2 (ps1_rom option). Falls back to region BIOS if not found." + notes: "override_bios=2. Falls back to region BIOS if not found." diff --git a/emulators/beetle_saturn.yml b/emulators/beetle_saturn.yml index e3640150..e5bec66f 100644 --- a/emulators/beetle_saturn.yml +++ b/emulators/beetle_saturn.yml @@ -1,96 +1,67 @@ -emulator: Beetle Saturn (Mednafen) +emulator: beetle_saturn type: libretro +core_classification: community_fork core: mednafen_saturn_libretro source: "https://github.com/libretro/beetle-saturn-libretro" -profiled_date: "2026-03-18" +upstream: "https://mednafen.github.io/" +profiled_date: "2026-03-24" core_version: "v0.9.45.1" display_name: "Sega - Saturn (Beetle Saturn)" +cores: + - mednafen_saturn systems: - sega-saturn notes: | - Beetle Saturn is the libretro port of Mednafen's Sega Saturn emulation module. - Two region-specific BIOS files are used: sega_101.bin for Japan/Asia NTSC, - mpr-17933.bin for North America, Europe, and all other regions. The core - returns false from InitCommon() if the BIOS file is missing or not exactly - 512 KB, so both BIOS files are required for full region coverage. + Libretro port of Mednafen's Saturn emulation module, frozen circa v0.9.45.1 + (2017) with some later backports. Region auto-detection reads the disc header + and selects the matching BIOS. Manual override via beetle_saturn_region option. - Region auto-detection reads the disc header and picks the matching BIOS. - Manual region override is available via beetle_saturn_region core option. + InitCommon() returns false if the BIOS file is missing or not exactly 512 KB. + Both region BIOS files are required for full region coverage. - The KOF95 and Ultraman ROM carts are optional game-specific expansion - cartridges loaded from the system directory. The Action Replay 4M Plus - cart (satar4mp.bin) is listed but marked unfinished in source (needs - CPU UBC emulation). + KOF95 and Ultraman ROM carts are loaded when the cart type is set via core + option or auto-detected from the internal game database. - BIOS loading: mednafen/ss/ss.cpp InitCommon() lines 920-961. - Cart loading: mednafen/ss/cart.cpp CART_Init() lines 128-220. - Firmware path: libretro.cpp MDFN_MakeFName(MDFNMKF_FIRMWARE) -> system dir. - Default cart ROM filenames: mednafen/settings.cpp MDFN_GetSettingS(). + Upstream Mednafen (1.32.x) has ST-V arcade board support (3 additional BIOS + files) and bootable ROM cart support, both absent from this libretro port. files: - # ------------------------------------------------------- - # Saturn BIOS - Japan / Asia NTSC - # ------------------------------------------------------- - name: "sega_101.bin" system: sega-saturn region: [japan, asia-ntsc] required: true - size: 524288 # 512 KB - md5: "85ec9ca47d8f6807718151cbcca8b964" + size: 524288 + validation: [size] note: "Saturn BIOS v1.01 (Japan). Used when region is JP or Asia NTSC." - source_ref: "mednafen/ss/ss.cpp:928-929" + source_ref: "mednafen/ss/ss.cpp:928-929,937-949" - # ------------------------------------------------------- - # Saturn BIOS - North America / Europe / other - # ------------------------------------------------------- - name: "mpr-17933.bin" system: sega-saturn region: [north-america, europe, south-korea, asia-pal, brazil, latin-america] required: true - size: 524288 # 512 KB - md5: "3240872c70984b6cbfda1586cab68dbe" + size: 524288 + validation: [size] note: "Saturn BIOS (NA/EU). Used for all non-JP/Asia-NTSC regions." - source_ref: "mednafen/ss/ss.cpp:930-931" + source_ref: "mednafen/ss/ss.cpp:930-931,937-949" - # ------------------------------------------------------- - # King of Fighters '95 ROM cart - # ------------------------------------------------------- - name: "mpr-18811-mx.ic1" system: sega-saturn required: false - size: 2097152 # 2 MB (0x200000, rom.cpp reads up to this) - md5: "255113ba943c92a54facd25a10fd780c" + size: 2097152 note: "KOF95 expansion ROM cart. Loaded when cart type set to KOF95." - source_ref: "mednafen/ss/cart.cpp:157-172, mednafen/settings.cpp:64-65" + source_ref: "mednafen/ss/cart.cpp:157-172, mednafen/ss/cart/rom.cpp:32-43" - # ------------------------------------------------------- - # Ultraman ROM cart - # ------------------------------------------------------- - name: "mpr-19367-mx.ic1" system: sega-saturn required: false - size: 2097152 # 2 MB - md5: "1cd19988d1d72a3e7caa0b73234c96b4" + size: 2097152 note: "Ultraman expansion ROM cart. Loaded when cart type set to Ultraman." - source_ref: "mednafen/ss/cart.cpp:157-172, mednafen/settings.cpp:66-67" + source_ref: "mednafen/ss/cart.cpp:157-172, mednafen/ss/cart/rom.cpp:32-43" - # ------------------------------------------------------- - # Action Replay 4M Plus (unfinished) - # ------------------------------------------------------- - name: "satar4mp.bin" system: sega-saturn required: false - note: "Action Replay 4M Plus firmware. Unfinished in source, needs CPU UBC emulation." - source_ref: "mednafen/ss/cart.cpp:174-188, mednafen/settings.cpp:68-69" - -platform_details: - saturn: - bios_size: 524288 # 512 KB - rom_cart_size: 2097152 # 2 MB max (rom.cpp) - workram_low: 1048576 # 1 MB - workram_high: 1048576 # 1 MB - bios_address: "0x00000000-0x000FFFFF" - cart_address: "0x02000000-0x03FFFFFF" - hle_available: false - source_ref: "mednafen/ss/ss.cpp:906-908" + size: 262144 + note: "Action Replay 4M Plus firmware. Unfinished in source (ar4mp.cpp:22-24), needs CPU UBC emulation. Cart type not exposed in core options." + source_ref: "mednafen/ss/cart.cpp:174-188, mednafen/ss/cart/ar4mp.cpp:120-159" diff --git a/emulators/beetle_wswan.yml b/emulators/beetle_wswan.yml index fea371f1..5891407a 100644 --- a/emulators/beetle_wswan.yml +++ b/emulators/beetle_wswan.yml @@ -1,9 +1,12 @@ emulator: Beetle WonderSwan (Mednafen WonderSwan) type: libretro +core_classification: pure_libretro source: "https://github.com/libretro/beetle-wswan-libretro" -profiled_date: "2026-03-18" +upstream: "https://mednafen.github.io/" +profiled_date: "2026-03-24" core_version: "v0.9.35.1" display_name: "Bandai - WonderSwan/Color (Beetle Wonderswan)" +cores: [beetle_wswan] systems: [bandai-wswan, bandai-wswanc] notes: | diff --git a/emulators/mednafen_psx.yml b/emulators/mednafen_psx.yml index fd1c2879..27d20330 100644 --- a/emulators/mednafen_psx.yml +++ b/emulators/mednafen_psx.yml @@ -1,7 +1,7 @@ emulator: "mednafen_psx" type: alias alias_of: "beetle_psx" -profiled_date: "2026-03-18" +profiled_date: "2026-03-24" core_version: "v0.9.44.1" display_name: "Sony - PlayStation (Beetle PSX)" note: "This core uses the same BIOS/firmware as beetle_psx. See emulators/beetle_psx.yml for details." diff --git a/emulators/mednafen_saturn.yml b/emulators/mednafen_saturn.yml index 2e6d15b3..c2b1fc01 100644 --- a/emulators/mednafen_saturn.yml +++ b/emulators/mednafen_saturn.yml @@ -1,7 +1,7 @@ emulator: "mednafen_saturn" type: alias alias_of: "beetle_saturn" -profiled_date: "2026-03-18" +profiled_date: "2026-03-24" core_version: "v0.9.45.1" display_name: "Sega - Saturn (Beetle Saturn)" note: "This core uses the same BIOS/firmware as beetle_saturn. See emulators/beetle_saturn.yml for details." diff --git a/emulators/mednafen_supafaust.yml b/emulators/mednafen_supafaust.yml index 3f874f1e..628a04f7 100644 --- a/emulators/mednafen_supafaust.yml +++ b/emulators/mednafen_supafaust.yml @@ -1,8 +1,24 @@ -emulator: "mednafen_supafaust" -type: alias -alias_of: "bsnes" -profiled_date: "2026-03-18" +emulator: mednafen_supafaust +type: libretro +core_classification: community_fork +source: "https://github.com/libretro/supafaust" +upstream: "https://mednafen.github.io/" +profiled_date: "2026-03-24" core_version: "1.29.0" display_name: "Nintendo - SNES / SFC (Beetle Supafaust)" -note: "This core uses the same BIOS/firmware as bsnes. See emulators/bsnes.yml for details." +cores: [mednafen_supafaust] +systems: [nintendo-snes] + +# Port of Mednafen's experimental snes_faust module. +# All special chips (DSP-1, DSP-2, CX4, SuperFX, SA-1, S-DD1) emulated via HLE. +# DSP-1 data ROM synthesized in code (dsp1-datarom-synth.h). +# DSP-3, DSP-4, ST010, ST011, ST018, SPC7110 detected but not emulated (fall through). +# MSU1 supported (loads data from game directory, not system directory). +# RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY never called. +notes: > + Port of Mednafen's snes_faust module. All special chip firmware + emulated via HLE with synthesized data ROMs. No external firmware loading. + source_ref: dsp1.cpp:120-177, dsp2.cpp:118-140, cx4.cpp:1548-1656, + cart.cpp:129-584, libretro.cpp:496-742 + files: [] diff --git a/emulators/mednafen_supergrafx.yml b/emulators/mednafen_supergrafx.yml index 68bfff13..7948ed64 100644 --- a/emulators/mednafen_supergrafx.yml +++ b/emulators/mednafen_supergrafx.yml @@ -1,8 +1,53 @@ -emulator: "mednafen_supergrafx" -type: alias -alias_of: "mednafen_pce" +emulator: mednafen_supergrafx +type: libretro +core_classification: community_fork +source: "https://github.com/libretro/beetle-supergrafx-libretro" +upstream: "https://mednafen.github.io/" profiled_date: "2026-03-24" core_version: "v1.23.0" display_name: "NEC - PC Engine SuperGrafx (Beetle SuperGrafx)" -note: "Different repo (beetle-supergrafx-libretro) but loads identical BIOS files as mednafen_pce." -files: [] +cores: [mednafen_supergrafx] +systems: [nec-pc-engine] +verification: existence +notes: > + Fork of Mednafen's pce_fast module with SuperGrafx and CD support. + Separate codebase from beetle_pce (mednafen/pce_fast/ vs mednafen/pce/). + BIOS loaded via HuC_LoadCD() at CD-ROM load time. Core option "sgx_cdbios" + selects which card image to use (default: System Card 3). + DetectGECD() auto-detects Games Express discs and overrides to gexpress.pce. + DetectSGXCD() detects SuperGrafx CD titles via magic bytes. + Arcade Card mode (sgx_arcadecard option, not exposed) extends System Card 3 + with extra RAM mapping. + No hash or size validation on BIOS load. + Upstream pce_fast module has a single pce_fast.cdbios string setting; + the 4-option dropdown is a libretro addition. Upstream has no separate + gecdbios setting (unlike the accurate pce module). + +files: + - name: "syscard3.pce" + description: "CD-ROM System Card 3.0 (Japan)" + region: "NTSC-J" + required: true + source_ref: "libretro.cpp:972-973, mednafen/settings.cpp:37" + notes: "Default value for sgx_cdbios option." + + - name: "syscard2.pce" + description: "CD-ROM System Card 2.0 (Japan)" + region: "NTSC-J" + required: false + source_ref: "libretro.cpp:974-975" + notes: "sgx_cdbios = 'System Card 2'." + + - name: "syscard1.pce" + description: "CD-ROM System Card 1.0 (Japan)" + region: "NTSC-J" + required: false + source_ref: "libretro.cpp:976-977" + notes: "sgx_cdbios = 'System Card 1'." + + - name: "gexpress.pce" + description: "Games Express CD Card" + region: "NTSC-J" + required: false + source_ref: "libretro.cpp:978-979, mednafen/pce_fast/pce.cpp:330-367,453-454" + notes: "sgx_cdbios = 'Games Express' or auto-detected via DetectGECD()." diff --git a/emulators/mednafen_wswan.yml b/emulators/mednafen_wswan.yml index 41ec27a8..63d52887 100644 --- a/emulators/mednafen_wswan.yml +++ b/emulators/mednafen_wswan.yml @@ -1,8 +1,9 @@ emulator: "mednafen_wswan" type: alias alias_of: "beetle_wswan" -profiled_date: "2026-03-18" +source: "https://github.com/libretro/beetle-wswan-libretro" +profiled_date: "2026-03-24" core_version: "v0.9.35.1" display_name: "Bandai - WonderSwan/Color (Beetle Wonderswan)" -note: "This core uses the same BIOS/firmware as beetle_wswan. See emulators/beetle_wswan.yml for details." +note: "Binary name for beetle_wswan. Same codebase, single .so/.dll." files: [] diff --git a/emulators/melonds.yml b/emulators/melonds.yml index 26643a7f..70df7667 100644 --- a/emulators/melonds.yml +++ b/emulators/melonds.yml @@ -1,82 +1,91 @@ -emulator: MelonDS +emulator: melonDS type: standalone + libretro -source: "https://github.com/melonDS-emu/melonDS" -logo: "https://raw.githubusercontent.com/melonDS-emu/melonDS/master/res/melon.svg" -profiled_date: "2026-03-18" +core_classification: community_fork +cores: [melonds] +source: "https://github.com/libretro/melonDS" +upstream: "https://github.com/melonDS-emu/melonDS" +profiled_date: "2026-03-24" core_version: "Git" display_name: "Nintendo - DS (melonDS)" systems: [nintendo-ds, nintendo-dsi] notes: | - MelonDS includes a built-in FreeBIOS replacement for basic DS mode (NTR). - Native BIOS/firmware files are required for DSi mode and recommended for - full DS compatibility (Key1 crypto for cartridge auth). - ARM9 BIOS size: 0x1000 (4 KB), ARM7 BIOS size: 0x4000 (16 KB). - DSi BIOS size: 0x10000 (64 KB) each. - Config keys: DS.BIOS9Path, DS.BIOS7Path, DS.FirmwarePath, - DSi.BIOS9Path, DSi.BIOS7Path, DSi.FirmwarePath, DSi.NANDPath. + FreeBIOS fallback for DS mode (NTR); DSi mode requires all native files. + Libretro fork based on melonDS ~0.9.x era, validates size only. + Upstream adds CRC32 validation on BIOS files (MemConstants.h). + DSi SD card emulation controlled by melonds_dsi_sdcard core option. files: # --- Nintendo DS (NTR) --- - - name: "bios9.bin" + - name: bios9.bin system: nintendo-ds - description: "ARM9 BIOS (NDS mode)" + description: "ARM9 BIOS" required: false hle_fallback: true size: 4096 + validation: {core: [size], upstream: [size, crc32]} crc32: "0x2ab23573" - source_ref: "src/MemConstants.h:30,37" - notes: "FreeBIOS fallback available; native needed for Key1 cartridge crypto (src/NDSCart.cpp:147-153)" + source_ref: "src/NDS.h:196, src/NDS.cpp:467-477, src/frontend/Util_ROM.cpp:99-111" + notes: "FreeBIOS fallback (src/FreeBIOS.h); native needed for Key1 cartridge crypto" - - name: "bios7.bin" + - name: bios7.bin system: nintendo-ds - description: "ARM7 BIOS (NDS mode)" + description: "ARM7 BIOS" required: false hle_fallback: true size: 16384 + validation: {core: [size], upstream: [size, crc32]} crc32: "0x1280f0d5" - source_ref: "src/MemConstants.h:31,36" - notes: "FreeBIOS fallback available; native needed for Key1 init at offset 0x0030 (src/NDSCart.cpp:149-153)" + source_ref: "src/NDS.h:197, src/NDS.cpp:482-492, src/frontend/Util_ROM.cpp:117-131" + notes: "FreeBIOS fallback (src/FreeBIOS.h); native needed for Key1 init at offset 0x0030" - - name: "firmware.bin" + - name: firmware.bin system: nintendo-ds description: "NDS firmware image" required: false hle_fallback: true - source_ref: "src/frontend/qt_sdl/EmuInstance.cpp:561" - notes: "Generated firmware used as default; native firmware needed for boot animation and wifi settings" + validation: [size] + source_ref: "src/SPI.cpp:192-211, src/frontend/Util_ROM.cpp:174-195" + notes: "Generated 128KB firmware as fallback; native must be 256KB or 512KB for boot" # --- Nintendo DSi (TWL) --- - - name: "dsi_bios9.bin" + - name: dsi_bios9.bin system: nintendo-dsi - description: "ARM9i BIOS (DSi mode)" + description: "DSi ARM9 BIOS" required: true size: 65536 - crc32_full: "0xBAE84F6C" - crc32_low32k: "0x11E7C1EA" - source_ref: "src/MemConstants.h:32,41,45" - notes: "No FreeBIOS fallback for DSi; full dump needed for native boot (src/DSi.cpp:150-152)" + validation: {core: [size], upstream: [size, crc32]} + crc32: "0xBAE84F6C" + source_ref: "src/DSi.h:33, src/DSi.cpp:587-599, src/frontend/Util_ROM.cpp:145-156" - - name: "dsi_bios7.bin" + - name: dsi_bios7.bin system: nintendo-dsi - description: "ARM7i BIOS (DSi mode)" + description: "DSi ARM7 BIOS" required: true size: 65536 - crc32_full: "0x4316CC42" - crc32_low32k: "0x5434691D" - source_ref: "src/MemConstants.h:32,40,44" - notes: "Contains eMMC key-Y at offset 0x8308 used for NAND init (src/frontend/qt_sdl/EmuInstance.cpp:1044)" + validation: {core: [size], upstream: [size, crc32]} + crc32: "0x4316CC42" + source_ref: "src/DSi.h:34, src/DSi.cpp:604-620, src/frontend/Util_ROM.cpp:158-170" + notes: "Contains eMMC key-Y at offset 0x8308 for NAND init" - - name: "dsi_firmware.bin" + - name: dsi_firmware.bin system: nintendo-dsi description: "DSi firmware image" required: true - source_ref: "src/frontend/qt_sdl/EmuInstance.cpp:593" - notes: "Separate from DS firmware; config key DSi.FirmwarePath" + size: 131072 + validation: [size] + source_ref: "src/SPI.cpp:197-211, src/frontend/Util_ROM.cpp:201-217" - - name: "dsi_nand.bin" + - name: dsi_nand.bin system: nintendo-dsi description: "DSi NAND dump" required: true - source_ref: "src/DSi_NAND.h:34, src/Args.h:132" - notes: "eMMC image; uses AES keys from ARM7i BIOS and ARM9i BIOS (src/DSi_AES.cpp:94)" + source_ref: "src/frontend/Util_ROM.cpp:224-235, src/DSi_NAND.cpp" + notes: "Uses AES keys from ARM7i BIOS offset 0x8308" + + - name: dsi_sd_card.bin + system: nintendo-dsi + description: "DSi SD card image" + required: false + source_ref: "src/frontend/Util_ROM.cpp:237-243, src/libretro/libretro.cpp:837,553" + notes: "Created if missing; requires melonds_dsi_sdcard core option enabled" diff --git a/emulators/melonds_ds.yml b/emulators/melonds_ds.yml index b09cfe50..84c405d0 100644 --- a/emulators/melonds_ds.yml +++ b/emulators/melonds_ds.yml @@ -1,58 +1,83 @@ -# melonDS DS — Nintendo DS/DSi (libretro, newer fork) -# ref: JesseTG/melonds-ds, docs.libretro.com/library/melonds_ds -# Prefers files in "melonDS DS/" subfolder. DS mode has HLE fallback. -# DSi mode requires real BIOS + NAND dump. -# -# doc vs source: docs use bios7.bin/bios9.bin (NDS) and dsi_bios7.bin/ -# dsi_bios9.bin (DSi). The older melonDS core uses the same names. -# Repo stores NDS ARM7/ARM9 as biosdsi7.bin/biosdsi9.bin (DSi dumps that -# also work for NDS). The md5 in docs (df692a80/a392174e) are for the -# smaller NDS-only dumps, different from the DSi dumps in the repo. emulator: melonDS DS type: libretro +core_classification: community_fork cores: [melonds_ds] source: "https://github.com/JesseTG/melonds-ds" +upstream: "https://github.com/melonDS-emu/melonDS" +profiled_date: "2026-03-24" +core_version: "1.2.0" +display_name: "Nintendo - DS (melonDS DS)" systems: - nintendo-ds - nintendo-dsi notes: | - Newer fork of melonDS for libretro with DSi support. - DS BIOS files are optional (built-in FreeBIOS used as fallback). - DSi mode requires all four DSi-specific files. - Core searches "melonDS DS/" subfolder first, then system root. + Libretro-specific remake using melonDS as a statically-linked library. + DS mode has FreeBIOS/generated firmware fallback; DSi mode requires all + native files. Core searches "melonDS DS/" subfolder first, then system root. + In DSi mode, NDS BIOS (bios7/bios9) are also required alongside DSi BIOS. + Firmware and NAND filenames are user-selectable via core options. files: - # DS mode (optional, FreeBIOS fallback) + # --- Nintendo DS (NTR) --- - name: bios7.bin system: nintendo-ds + description: "ARM7 BIOS" required: false hle_fallback: true - md5: df692a80a5b1bc90728bc3dfc76cd948 - note: "NDS ARM7 BIOS" + size: 16384 + validation: [size] + crc32: "0x1280f0d5" + source_ref: "src/libretro/config/console.cpp:219, melonDS:src/MemConstants.h:31,36" + - name: bios9.bin system: nintendo-ds + description: "ARM9 BIOS" required: false hle_fallback: true - md5: a392174eb3e572fed6447e956bde4b25 - note: "NDS ARM9 BIOS" + size: 4096 + validation: [size] + crc32: "0x2ab23573" + source_ref: "src/libretro/config/console.cpp:220, melonDS:src/MemConstants.h:30,37" + - name: firmware.bin system: nintendo-ds + description: "NDS firmware image" required: false hle_fallback: true - sha1: 8497afdd16af92d6887b71582846c40514e9039f - md5: 145eaef5bd3037cbc247c213bb3da1b3 - size: 262144 - # DSi mode (required) + source_ref: "src/libretro/config/console.cpp:184" + notes: "Filename configurable via core options; generated firmware used as fallback" + + # --- Nintendo DSi (TWL) --- + - name: dsi_bios7.bin + system: nintendo-dsi + description: "DSi ARM7 BIOS" + required: true + size: 65536 + validation: [size] + crc32: "0x4316CC42" + source_ref: "src/libretro/config/console.cpp:333, melonDS:src/MemConstants.h:32,44" + notes: "Contains eMMC key-Y at offset 0x8308 for NAND init" + + - name: dsi_bios9.bin + system: nintendo-dsi + description: "DSi ARM9 BIOS" + required: true + size: 65536 + validation: [size] + crc32: "0xBAE84F6C" + source_ref: "src/libretro/config/console.cpp:338, melonDS:src/MemConstants.h:32,45" + - name: dsi_firmware.bin system: nintendo-dsi + description: "DSi firmware image" required: true - sha1: d2a5af338f09c5cbdd5d7628db5b9c075c69b616 - md5: 8daa89fd280b3e5ec79fbab73ad6684e - size: 131072 + source_ref: "src/libretro/config/console.cpp:352-358" + notes: "Filename configurable via core options; must have DSi firmware header" + - name: dsi_nand.bin system: nintendo-dsi + description: "DSi NAND dump" required: true - sha1: b48f44194fe918aaaec5298861479512b581d661 - md5: dfafb1908da8f527df7a372e649b50be - size: 251658304 + source_ref: "src/libretro/config/console.cpp:378" + notes: "Filename configurable via core options; 240MB or 245.5MB with optional no$cash footer" diff --git a/emulators/mesen-s.yml b/emulators/mesen-s.yml new file mode 100644 index 00000000..9babde32 --- /dev/null +++ b/emulators/mesen-s.yml @@ -0,0 +1,197 @@ +# mesen-s - SNES / Game Boy / Game Boy Color emulator +# Profiled from: libretro/Mesen-S (libretro port) + SourMesen/Mesen-S (upstream) + +emulator: mesen-s +display_name: "Mesen-S" +type: libretro +core_classification: official_port +source: "https://github.com/libretro/Mesen-S" +upstream: "https://github.com/SourMesen/Mesen-S" +profiled_date: "2026-03-24" +core_version: "0.4.0" +cores: [mesen-s] +systems: [nintendo-snes, nintendo-gb, nintendo-gbc, nintendo-super-game-boy, nintendo-satellaview] + +notes: > + High-accuracy SNES/SFC emulator with Game Boy/Color and Super Game Boy + support. Upstream archived at 0.4.0, superseded by Mesen2. DSP firmware + can be loaded as combined files (dsp1.rom, dsp1b.rom, dsp2.rom, dsp3.rom, + dsp4.rom, st010.rom, st011.rom) or split program/data ROMs. Combined + files are tried first, size validated. HLE coprocessor option available + for DSP-1/DSP-1B only (libretro core option mesen-s_hle_coprocessor). + CX4 is fully HLE, no firmware needed. ST018 detected but not emulated. + GB/GBC/SGB boot ROMs fall back to embedded open-source SameBoy boot ROMs + when external files are not found. + +files: + # -- NEC uPD7725 DSP firmware (split format) -- + # Combined format also accepted: dsp1.rom (8192), dsp1b.rom (8192), + # dsp2.rom (8192), dsp3.rom (8192), dsp4.rom (8192) + + - name: "dsp1.program.rom" + size: 6144 + required: false + hle_fallback: true + validation: [size] + note: "DSP-1 program ROM. HLE fallback in libretro port only" + source_ref: "Core/NecDsp.cpp:95, Core/FirmwareHelper.h:17-35" + + - name: "dsp1.data.rom" + size: 2048 + required: false + hle_fallback: true + validation: [size] + note: "DSP-1 data ROM" + source_ref: "Core/NecDsp.cpp:95, Core/FirmwareHelper.h:17-35" + + - name: "dsp1b.program.rom" + size: 6144 + required: false + hle_fallback: true + validation: [size] + note: "DSP-1B program ROM. HLE fallback in libretro port only" + source_ref: "Core/NecDsp.cpp:96" + + - name: "dsp1b.data.rom" + size: 2048 + required: false + hle_fallback: true + validation: [size] + note: "DSP-1B data ROM" + source_ref: "Core/NecDsp.cpp:96" + + - name: "dsp2.program.rom" + size: 6144 + required: false + validation: [size] + note: "DSP-2 program ROM" + source_ref: "Core/NecDsp.cpp:97" + + - name: "dsp2.data.rom" + size: 2048 + required: false + validation: [size] + note: "DSP-2 data ROM" + source_ref: "Core/NecDsp.cpp:97" + + - name: "dsp3.program.rom" + size: 6144 + required: false + validation: [size] + note: "DSP-3 program ROM" + source_ref: "Core/NecDsp.cpp:98" + + - name: "dsp3.data.rom" + size: 2048 + required: false + validation: [size] + note: "DSP-3 data ROM" + source_ref: "Core/NecDsp.cpp:98" + + - name: "dsp4.program.rom" + size: 6144 + required: false + validation: [size] + note: "DSP-4 program ROM" + source_ref: "Core/NecDsp.cpp:99" + + - name: "dsp4.data.rom" + size: 2048 + required: false + validation: [size] + note: "DSP-4 data ROM" + source_ref: "Core/NecDsp.cpp:99" + + # -- NEC uPD96050 coprocessor firmware (split format) -- + # Combined format also accepted: st010.rom (53248), st011.rom (53248) + + - name: "st010.program.rom" + size: 49152 + required: false + validation: [size] + note: "ST-010 program ROM" + source_ref: "Core/NecDsp.cpp:100" + + - name: "st010.data.rom" + size: 4096 + required: false + validation: [size] + note: "ST-010 data ROM" + source_ref: "Core/NecDsp.cpp:100" + + - name: "st011.program.rom" + size: 49152 + required: false + validation: [size] + note: "ST-011 program ROM" + source_ref: "Core/NecDsp.cpp:101" + + - name: "st011.data.rom" + size: 4096 + required: false + validation: [size] + note: "ST-011 data ROM" + source_ref: "Core/NecDsp.cpp:101" + + # -- Game Boy boot ROMs -- + + - name: "dmg_boot.bin" + size: 256 + required: false + hle_fallback: true + aliases: [gb_bios.bin] + validation: [size] + note: "Game Boy (DMG) boot ROM. Falls back to embedded SameBoy open-source boot ROM" + source_ref: "Core/FirmwareHelper.h:148, Core/Gameboy.cpp:108-114, Core/GbBootRom.h:6" + + - name: "cgb_boot.bin" + size: 2304 + required: false + hle_fallback: true + aliases: [gbc_bios.bin] + validation: [size] + note: "Game Boy Color boot ROM. Falls back to embedded SameBoy open-source boot ROM" + source_ref: "Core/FirmwareHelper.h:149, Core/Gameboy.cpp:108-119, Core/GbBootRom.h:6" + + - name: "sgb_boot.bin" + size: 256 + required: false + hle_fallback: true + aliases: [sgb_bios.bin] + validation: [size] + note: "Super Game Boy boot ROM for GB CPU. Falls back to embedded SameBoy open-source boot ROM" + source_ref: "Core/FirmwareHelper.h:150, Core/Gameboy.cpp:108-127, Core/GbBootRom.h:6" + + - name: "sgb2_boot.bin" + size: 256 + required: false + hle_fallback: true + aliases: [sgb_bios.bin] + validation: [size] + note: "Super Game Boy 2 boot ROM for GB CPU. Falls back to embedded SameBoy open-source boot ROM" + source_ref: "Core/FirmwareHelper.h:151, Core/Gameboy.cpp:108-127, Core/GbBootRom.h:6" + + # -- Super Game Boy cartridge ROMs -- + + - name: "SGB1.sfc" + size: 262144 + required: false + validation: [size] + note: "Super Game Boy SNES cartridge ROM. Without it, SGB mode falls back to regular GB" + source_ref: "Core/FirmwareHelper.h:118-133, Core/BaseCartridge.cpp:630-638" + + - name: "SGB2.sfc" + size: 524288 + required: false + validation: [size] + note: "Super Game Boy 2 SNES cartridge ROM. Core option mesen-s_sgb2 selects SGB version" + source_ref: "Core/FirmwareHelper.h:118-133, Core/BaseCartridge.cpp:630-638" + + # -- Satellaview -- + + - name: "BS-X.bin" + size: 1048576 + required: false + validation: [size] + note: "Satellaview BS-X BIOS ROM. Minimum accepted size is 32768 bytes" + source_ref: "Core/FirmwareHelper.h:39-47,96-113, Core/BaseCartridge.cpp:65" diff --git a/emulators/mesen.yml b/emulators/mesen.yml index 3aa573c1..98fa68de 100644 --- a/emulators/mesen.yml +++ b/emulators/mesen.yml @@ -1,95 +1,69 @@ emulator: Mesen type: libretro +core_classification: official_port source: "https://github.com/libretro/Mesen" +upstream: "https://github.com/SourMesen/Mesen" logo: "https://raw.githubusercontent.com/SourMesen/Mesen2/master/UI/Assets/Mesen.svg" -profiled_date: "2026-03-18" +profiled_date: "2026-03-24" core_version: "0.9.9" display_name: "Nintendo - NES / Famicom (Mesen)" +cores: [mesen] systems: [nintendo-nes, nintendo-fds] notes: | - Mesen is a cycle-accurate NES/Famicom emulator (the original, NES-only - version -- not Mesen2 which adds SNES/GB/PCE). NES cartridge games - need no BIOS. Famicom Disk System games require the FDS BIOS ROM. + Mesen is a cycle-accurate NES/Famicom emulator by Sour (the original + NES-only version, archived in 2020 in favor of Mesen2). NES cartridge + games need no BIOS. Famicom Disk System games require the FDS BIOS ROM. - The core tries two filenames for the FDS BIOS: FdsBios.bin first, then - disksys.rom as fallback. Both are loaded from the system directory root - (GetHomeFolder = RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY). If neither is - found or the file is not exactly 8192 bytes, FDS games fail to load. + The core tries FdsBios.bin first, then disksys.rom as fallback. Both are + loaded from the system directory root. If neither is found or the file is + not exactly 8192 bytes, FDS games fail to load (BiosMissing). - The Study Box is an obscure Famicom tape-based learning peripheral - (mapper 186). Its BIOS (StudyBox.bin, 256 KB) is loaded the same way. - Only needed for Study Box tape dumps (.stbx format). + The Study Box is a Famicom tape-based learning peripheral (mapper 186). + Its BIOS (StudyBox.bin, 256 KB) is loaded the same way. Only needed for + Study Box tape dumps (.stbx format). - MesenDB.txt (game database for CRC-based ROM identification) is baked - into the core binary as MesenDB.inc. An external file in the system - directory overrides the built-in copy but is never required. + MesenDB.txt (game database) is baked into the libretro binary as + MesenDB.inc and loaded in retro_init(). The external file path in + InitDatabase() is never reached in the libretro context. MesenPalette.pal is an optional custom palette file, loaded only when the mesen_palette core option is set to Custom. Accepts 192 bytes - (64 colors) or 1536 bytes (512 colors with emphasis combos). Multiple - palettes exist so no canonical hash. + (64 colors) or 1536 bytes (512 colors with emphasis combos). - HdPacks go in system/HdPacks// -- not BIOS files, ignored - here. + HdPacks go in system/HdPacks// -- per-game content, not + system BIOS. - File path construction: Libretro/libretro.cpp retro_init() sets + File path construction: retro_load_game() sets FolderUtilities::SetHomeFolder(systemFolder). All BIOS lookups use - FolderUtilities::CombinePath(GetHomeFolder(), filename) -- flat, - no subdirectories. + CombinePath(GetHomeFolder(), filename) -- flat, no subdirectories. + + No functional divergence between upstream and libretro for BIOS loading. files: - # --- Famicom Disk System BIOS (required for FDS games) --- - name: "disksys.rom" + aliases: ["FdsBios.bin"] system: nintendo-fds description: "FDS BIOS ROM" required: true size: 8192 - md5: "ca30b50f880eb660a320674ed365ef7a" - sha1: "57fe1bdee955bb48d357e463ccbf129496930b62" - source_ref: "Core/FdsLoader.cpp:45-60 (LoadBios), Core/FdsLoader.cpp:140-146 (LoadRom validates size == 0x2000)" - notes: "Mapped at 0xE000-0xFFFF as PRG ROM bank 0. Core tries FdsBios.bin first, falls back to disksys.rom. CRC32 0x5E607DCF (standard Famicom). Size must be exactly 8192 bytes or BiosMissing is set." + validation: [size] + source_ref: "Core/FdsLoader.cpp:45-59 (LoadBios tries FdsBios.bin then disksys.rom), Core/FdsLoader.cpp:143-146 (LoadRom validates size == 0x2000)" + notes: "Mapped at 0xE000-0xFFFF as PRG ROM bank 0. Core checks FdsBios.bin first, falls back to disksys.rom. Size must be exactly 8192 bytes or BiosMissing is set." - # --- FDS BIOS alternate filename --- - - name: "FdsBios.bin" - system: nintendo-fds - description: "FDS BIOS ROM (Mesen-preferred filename)" - required: false - size: 8192 - md5: "ca30b50f880eb660a320674ed365ef7a" - sha1: "57fe1bdee955bb48d357e463ccbf129496930b62" - source_ref: "Core/FdsLoader.cpp:50 (primary lookup path)" - notes: "Same file as disksys.rom. Mesen checks this name first. Only one of the two is needed." - - # --- Study Box BIOS (required for Study Box tape content) --- - name: "StudyBox.bin" system: nintendo-nes description: "Famicom Study Box BIOS ROM" required: false size: 262144 - md5: ~ - sha1: ~ - source_ref: "Core/StudyBoxLoader.cpp:125-133 (LoadBios), Core/StudyBoxLoader.cpp:146-157 (LoadRom validates size == 0x40000)" - notes: "256 KB BIOS for the Study Box tape peripheral (mapper 186, iNES mapper 65533). Only needed for .stbx tape dumps. Extremely obscure hardware, no widely-known hash." + validation: [size] + source_ref: "Core/StudyBoxLoader.cpp:125-133 (LoadBios), Core/StudyBoxLoader.cpp:149-152 (LoadRom validates size == 0x40000)" + notes: "256 KB BIOS for the Study Box tape peripheral (mapper 186). Only needed for .stbx tape dumps. Size must be exactly 262144 bytes." - # --- Game database (optional, baked-in fallback) --- - - name: "MesenDB.txt" - system: nintendo-nes - description: "Mesen game database for CRC-based ROM identification" - required: false - size: ~ - md5: ~ - sha1: ~ - source_ref: "Core/GameDatabase.cpp:74-81 (InitDatabase), Libretro/MesenDB.inc (baked-in copy)" - notes: "CSV game database keyed by CRC32. Used for mapper, mirroring, input type, and VS System detection. A complete copy is compiled into the binary, so this file is optional. Placing a newer version in the system directory overrides the built-in data." - - # --- Custom palette (optional, core option mesen_palette = Custom) --- - name: "MesenPalette.pal" system: nintendo-nes description: "External NES color palette" required: false - size: 192 - md5: ~ - sha1: ~ - source_ref: "Libretro/libretro.cpp:301-323 (load_custom_palette)" - notes: "Loaded when mesen_palette core option is Custom. Accepts 192 bytes (64 RGB triplets) or 1536 bytes (512 entries for emphasis combos). Falls back to built-in default palette. Multiple valid palettes exist so no canonical hash." + source_ref: "Libretro/libretro.cpp:301-323 (load_custom_palette), Libretro/libretro.cpp:405-406 (called when mesen_palette == Custom)" + validation: [size] + notes: "Loaded when mesen_palette core option is Custom. Accepts exactly 192 bytes (64 RGB triplets) or 1536 bytes (512 entries for emphasis combos). Falls back to built-in default palette if size doesn't match." diff --git a/emulators/mess2015.yml b/emulators/mess2015.yml index 8be0f00a..9fb6d4fb 100644 --- a/emulators/mess2015.yml +++ b/emulators/mess2015.yml @@ -1,8 +1,38 @@ -emulator: "mess2015" -type: alias -alias_of: "mame2016" -profiled_date: "2026-03-18" -core_version: "Git" +emulator: MESS 2015 +type: libretro +core_classification: frozen_snapshot +source: "https://github.com/libretro/mame2015-libretro" +upstream: "https://github.com/mamedev/mame/tree/mame0160" +profiled_date: "2026-03-24" +core_version: "0.160" display_name: "Multi (MESS 2015)" -note: "This core uses the same BIOS/firmware as mame2016. See emulators/mame2016.yml for details." -files: [] +mame_version: "0.159" + +cores: + - mess2015 +systems: [] + +notes: | + Frozen snapshot of MAME/MESS 0.159 (version.c says 0.159, core reports 0.160). + Built from same repo as mame2015/ume2015/cdi2015 with TARGET=mess. + 619 machine drivers (home computers, consoles, handhelds, calculators). + No BIOS root sets (no GAME_IS_BIOS_ROOT in src/mess/). Machine ROMs loaded + per-machine via MAME ROM system from content directory. + + Software list support via 375 XML hash files in system_dir/mess2015/hash/. + Hash files are bundled in the source repo at /hash/. Not on libretro buildbot. + .info incorrectly says SYSTEMDIR\ume\hash — actual path is mess2015/hash. + + hiscore.c integrated (libretro addition, not in upstream MAME 0.159). + SAMPLES sound driver disabled in mess.mak. + Per-game cheat XMLs via system_dir/mess2015/cheat/. + Artwork layouts via system_dir/mess2015/artwork/. + + Upstream comparison (tag mame0160): romload.c and softlist.c unmodified. + +files: + - name: hiscore.dat + required: false + category: game_data + source_ref: "src/emu/hiscore.c:335-337" + note: "high score definitions, loaded via f.open without explicit search path" diff --git a/emulators/meteor.yml b/emulators/meteor.yml index 88a0379e..91e8d883 100644 --- a/emulators/meteor.yml +++ b/emulators/meteor.yml @@ -1,7 +1,9 @@ emulator: Meteor GBA type: libretro +core_classification: community_fork source: "https://github.com/libretro/meteor-libretro" -profiled_date: "2026-03-18" +upstream: "https://github.com/blastrock/meteor" +profiled_date: "2026-03-24" core_version: "v1.4" display_name: "Nintendo - Game Boy Advance (Meteor)" cores: @@ -10,49 +12,21 @@ systems: - nintendo-gba notes: | - Meteor is a Game Boy Advance emulator by Philippe Daouadi (2009-2011). - - The libretro port does NOT load or use any external BIOS file. The core has - a complete HLE BIOS implementation (ameteor/source/bios.cpp) that handles - GBA SWI calls directly in C++. When no real BIOS is loaded (HasBios() returns - false), Cpu::SoftwareInterrupt() dispatches SWI calls to the HLE handlers - instead of executing the BIOS ROM (ameteor/source/cpu.cpp:244-311). - - The standalone frontends (GTK, text) expose LoadBios() for optional real BIOS - loading, but the libretro port (libretro/libretro.cpp) never calls LoadBios() - and never queries RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. The retro_load_game() - function only loads the ROM via LoadRom(). - - HLE SWI coverage: SoftReset (0x00), RegisterRamReset (0x01), Halt (0x02), - IntrWait (0x04), VBlankIntrWait (0x05), Div (0x06), DivArm (0x07), - Sqrt (0x08), ArcTan (0x09), ArcTan2 (0x0A), CpuSet (0x0B), - CpuFastSet (0x0C), BgAffineSet (0x0E), ObjAffineSet (0x0F), - LZ77UnCompWram (0x11), LZ77UnCompVram (0x12), HuffUnComp (0x13), - RLUnCompWram (0x14), RLUnCompVram (0x15). - - Missing from HLE: Stop (0x03), BitUnPack (0x10), Diff8bitUnFilter (0x16-0x17), - Diff16bitUnFilter (0x18), SoundBias (0x19), SoundDriverInit (0x1A-0x1F), - MidiKey2Freq (0x1F), SoundDriverVSyncOff/On (0x28-0x29), GetBiosChecksum (0x0D). - - The BIOS memory region (0x00000000-0x00003FFF, 16 KB) is allocated only if - LoadBios() is called. Memory reads to this region return BIOS protection values - (0x0E for 8-bit, 0xF00E for 16-bit, 0xE1B0F00E for 32-bit) when no BIOS is - loaded and PC is outside the BIOS area. - - Bios000h() (entry point) initializes stack pointers and jumps to 0x08000004, - matching real GBA hardware boot sequence. In the libretro port, retro_reset() - resets all units except BIOS and ROM memory. + GBA emulator by Philippe Daouadi (2009-2011), libretro port by + Hans-Kristian Arntzen. HLE BIOS in ameteor/source/bios.cpp handles + SWI calls via Cpu::SoftwareInterrupt() when HasBios() is false + (ameteor/source/cpu.cpp:245-311). The libretro port never calls + LoadBios() and never queries RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. + Standalone frontends (GTK, text) support optional real BIOS loading. files: [] platform_details: gba: - bios_size: 16384 # 0x4000 + bios_size: 16384 hle_bios: true - source_ref: "ameteor/source/bios.cpp, ameteor/source/cpu.cpp:244-311" + source_ref: "ameteor/source/bios.cpp, ameteor/source/cpu.cpp:245-311" notes: | Full HLE BIOS. The libretro port never loads an external BIOS file. - Cpu::SoftwareInterrupt() checks HasBios() -- if false (always in libretro), - SWI calls are routed to C++ reimplementations. If a real BIOS were loaded - (standalone only), execution would go through the actual BIOS ROM code via - SoftwareInterrupt() -> branch to 0x08. + Cpu::SoftwareInterrupt() checks HasBios() — if false (always in + libretro), SWI calls are routed to C++ reimplementations. diff --git a/emulators/mgba.yml b/emulators/mgba.yml index 0974b791..2e2932d4 100644 --- a/emulators/mgba.yml +++ b/emulators/mgba.yml @@ -1,8 +1,10 @@ emulator: mGBA type: libretro +core_classification: official_port source: "https://github.com/libretro/mgba" +upstream: "https://github.com/mgba-emu/mgba" logo: "https://raw.githubusercontent.com/mgba-emu/mgba/master/res/mgba-256.png" -profiled_date: "2026-03-18" +profiled_date: "2026-03-24" core_version: "0.10-dev" display_name: "Nintendo - Game Boy Advance (mGBA)" cores: @@ -32,10 +34,12 @@ notes: | GBA -> gba_bios.bin GB (DMG/MGB) -> gb_bios.bin GBC (CGB/AGB) -> gbc_bios.bin - SGB (SGB/SGB2)-> sgb_bios.bin + SGB -> sgb_bios.bin + SGB2 -> gb_bios.bin (falls to default, missing case) - The standalone core (src/gb/core.c:637-684) handles the same models - and maps SGB2 to sgb_bios.bin (marked TODO for a dedicated file). + The standalone core (src/gb/core.c:637-684) correctly maps SGB2 to + sgb_bios.bin (marked TODO for a dedicated file). The libretro port + omits GB_MODEL_SGB2 from its switch, so SGB2 falls to default. GBIsBIOS() in src/gb/gb.c validates BIOS files by CRC32 checksum. Accepted checksums cover DMG, DMG0, MGB, SGB, SGB2, CGB, CGB0, CGBE, @@ -50,6 +54,7 @@ files: required: false hle_fallback: true size: 16384 # 16 KB (0x4000, GBA_SIZE_BIOS) + validation: [size] note: "GBA BIOS. HLE replacement built in. Real BIOS adds boot logo and full SWI accuracy." source_ref: "src/platform/libretro/libretro.c:2099" @@ -60,6 +65,7 @@ files: system: nintendo-gb required: false size: 256 # 256 B (0x100) + validation: [crc32] note: "DMG/MGB boot ROM. Scrolling Nintendo logo. Skipped if absent." source_ref: "src/platform/libretro/libretro.c:2134" @@ -70,6 +76,7 @@ files: system: nintendo-gbc required: false size: 2304 # 2304 B (0x900) + validation: [crc32] note: "CGB boot ROM. Used for CGB, AGB (GBA in GB mode), and SCGB models." source_ref: "src/platform/libretro/libretro.c:2127" @@ -80,14 +87,15 @@ files: system: nintendo-sgb required: false size: 256 # 256 B (0x100) - note: "SGB/SGB2 boot ROM. Also used when model is SGB2 (no separate sgb2_bios.bin)." + validation: [crc32] + note: "SGB boot ROM. SGB2 maps here in standalone (src/gb/core.c:643) but falls to gb_bios.bin in libretro." source_ref: "src/platform/libretro/libretro.c:2130" platform_details: gba: bios_size: 16384 # 16 KB hle_bios: true - source_ref: "src/gba/hle-bios.c, src/gba/gba.c:520-548" + source_ref: "src/gba/hle-bios.c, src/gba/gba.c:520-551" notes: | GBALoadBIOS() validates size (must be exactly 0x4000) then computes an internal checksum. Two official checksums are recognized: @@ -120,4 +128,5 @@ platform_details: notes: | Accepted SGB CRC32 checksums: SGB = 0xEC8A83B9, SGB2 = 0x53D0DD63 - SGB2 model falls through to sgb_bios.bin (marked TODO upstream). + SGB2 maps here in standalone (marked TODO upstream). Libretro port + omits SGB2 case, falls to gb_bios.bin. diff --git a/emulators/minivmac.yml b/emulators/minivmac.yml index 559ce210..511667d2 100644 --- a/emulators/minivmac.yml +++ b/emulators/minivmac.yml @@ -1,69 +1,55 @@ emulator: Mini vMac type: libretro +core_classification: community_fork source: "https://github.com/libretro/libretro-minivmac" -profiled_date: "2026-03-18" -core_version: "GIT" +upstream: "https://www.gryphel.com/c/minivmac/" +profiled_date: "2026-03-24" +core_version: "36.04" display_name: "Mac II (minivmac)" +cores: [minivmac] systems: [macintosh-ii] -# Mini vMac is a Macintosh II emulator. The libretro port is hardcoded for -# Mac II emulation (CurEmMd = kEmMd_II) with 68020 CPU, FPU, ADB, VIA2, ASC. -# ROM is loaded from the RetroArch system directory. +# Libretro port of Mini vMac 36.04, hardcoded for Mac II emulation +# (CurEmMd = kEmMd_II). 68020 CPU, FPU, ADB, VIA2, ASC. 640x480, 8-bit color. +# The VidROM is generated in memory by Vid_Init(), not loaded from a file. -# ROM loading order (OSGLUERETRO.c LoadMacRom): -# 1. /MacIIx.ROM (tried first, same 256 KB size) -# 2. /MacII.ROM (defined as RomFileName in CNFGRAPI.h) -# 3. --rom command line arg (if provided) +# ROM loading order in LoadMacRom (OSGLUERETRO.c:774): +# 1. /MacIIx.ROM +# 2. /MacII.ROM +# 3. --rom command line arg # 4. ~/.gryphel/mnvm_rom/MacII.ROM # 5. app parent directory # 6. current directory -# ROM size: kROM_Size = 0x00040000 = 262144 bytes (256 KB) -# ROM checksums defined in CNFGRAPI.h: -# kRomCheckSum1 = 0x9779D2C4 (Mac II v1) -# kRomCheckSum2 = 0x97221136 (Mac II v2) -# Note: DisableRomCheck = 1, so checksum validation is skipped at runtime -# (ROMEMDEV.c patches the ROM check jump). Any 256 KB Mac II ROM works. +# The libretro port does NOT call ROM_IsValid() (unlike upstream backends), +# so no checksum validation occurs. ROM_Init() patches the Mac's own boot +# ROM check (DisableRomCheck = 1, ROMEMDEV.c:279). files: - # -- MacII.ROM (primary, required) -- - # Standard Macintosh II ROM image. This is the hardcoded RomFileName. - # The core reads exactly kROM_Size (262144) bytes from this file. - - name: "MacII.ROM" path: "MacII.ROM" required: true size: 262144 + validation: [size] source_ref: "minivmac/cfg/CNFGRAPI.h:32, minivmac/src/OSGLUERETRO.c:781" note: > - Macintosh II ROM image (256 KB). The core loads this from the system - directory. Must be exactly 262144 bytes. ROM checksum verification is - disabled in the libretro build, so either Mac II ROM revision works. - - # -- MacIIx.ROM (alternative, optional) -- - # Tried before MacII.ROM in the loading sequence. The Mac IIx ROM is the - # same 256 KB size and is compatible with the Mac II emulation mode. + Macintosh II ROM image (256 KB). Hardcoded as RomFileName. The core + reads exactly kROM_Size (262144) bytes via filestream_read. - name: "MacIIx.ROM" path: "MacIIx.ROM" required: false size: 262144 + validation: [size] source_ref: "minivmac/src/OSGLUERETRO.c:778" note: > - Macintosh IIx ROM image (256 KB). Checked first in the ROM loading - sequence. If present, it takes priority over MacII.ROM. The Mac IIx - uses the same 68020-class architecture as the Mac II. + Macintosh IIx ROM image (256 KB). Tried first in the loading sequence. + If present, takes priority over MacII.ROM. notes: emulation_target: > - The libretro build is configured exclusively for Macintosh II emulation - (kEmMd_II). Build options: 68020 CPU, FPU enabled, ADB keyboard/mouse, - VIA2, ASC sound chip. Screen: 640x480, 8-bit color depth. - disk_formats: > - Supported disk image formats: .dsk, .img, .zip, .hvf, .cmd - The core auto-inserts the loaded content as a floppy disk. - Supports up to NumDrives simultaneous disk images. - rom_checksum_note: > - DisableRomCheck is set to 1 in ROMEMDEV.c, meaning the core patches out - the ROM checksum verification at boot. This allows any valid Mac II era - ROM to work regardless of exact revision. + Configured for Macintosh II (kEmMd_II). 68020 CPU, FPU, ADB, VIA2, ASC + sound. Screen: 640x480, 8-bit color depth. + info_discrepancy: > + .info declares firmware_count=1 (MacII.ROM only). The code also tries + MacIIx.ROM first (OSGLUERETRO.c:778). diff --git a/emulators/mkxp-z.yml b/emulators/mkxp-z.yml index 78db2d89..b6373968 100644 --- a/emulators/mkxp-z.yml +++ b/emulators/mkxp-z.yml @@ -1,9 +1,6 @@ -emulator: "mkxp-z" +emulator: mkxp-z type: alias -alias_of: "mkxp_z" -core_version: "" +alias_of: mkxp_z display_name: "RPG Maker XP/VX/VX Ace (mkxp-z)" -profiled_date: "2026-03-18" -display_name: "RPG Maker XP/VX/VX Ace (mkxp-z)" -note: "This core uses the same BIOS/firmware as mkxp_z. See emulators/mkxp_z.yml for details." +profiled_date: "2026-03-24" files: [] diff --git a/emulators/mkxp_z.yml b/emulators/mkxp_z.yml index 3ddf9ba0..ee61edef 100644 --- a/emulators/mkxp_z.yml +++ b/emulators/mkxp_z.yml @@ -1,124 +1,66 @@ emulator: mkxp-z type: libretro -source: "https://github.com/mkxp-z/mkxp-z" -profiled_date: "2026-03-18" -core_version: "" +core_classification: game_engine +source: "https://github.com/white-axe/mkxp-z" +source_ref: "branch: libretro (PR #255 to mkxp-z/mkxp-z)" +upstream: "https://github.com/mkxp-z/mkxp-z" +profiled_date: "2026-03-24" +core_version: "f4bc5aa" display_name: "RPG Maker XP/VX/VX Ace (mkxp-z)" cores: - mkxp-z systems: - rpgmaker -# mkxp-z is an open-source player for RPG Maker XP, VX and VX Ace games. -# Heavily modified fork of mkxp implementing the RGSS (Ruby Game Scripting -# System) interface versions 1, 2 and 3. -# -# The libretro .info file (mkxp-z_libretro.info) declares 3 firmware entries, -# all optional. These are RTP (Run-Time Package) directories, not individual -# files. Each RTP contains default assets (tilesets, sprites, music, sound -# effects, fonts) shared by games that don't bundle their own. -# -# Games that ship all assets internally need no RTP at all. -# -# firmware0: mkxp-z/RTP/Standard (RPG Maker XP RTP) optional -# firmware1: mkxp-z/RTP/RPGVX (RPG Maker VX RTP) optional -# firmware2: mkxp-z/RTP/RPGVXAce (RPG Maker VX Ace RTP) optional -# -# Directory layout under : -# mkxp-z/RTP/Standard/ RPG Maker XP RTP -# Audio/ BGM, BGS, ME, SE in ogg/midi/wav -# Graphics/ tilesets, characters, battlers, etc. -# mkxp-z/RTP/RPGVX/ RPG Maker VX RTP -# Audio/ -# Fonts/ -# Graphics/ -# mkxp-z/RTP/RPGVXAce/ RPG Maker VX Ace RTP -# Audio/ -# Fonts/ -# Graphics/ -# -# RTP installers are available from https://www.rpgmakerweb.com/run-time-package -# On non-Windows, use innoextract to unpack the Windows installers. -# -# RTP path resolution (sharedstate.cpp:144-145, config.cpp:326): -# config.rtps[] is populated from the "RTP" JSON array in mkxp.json. -# The libretro port sets these to /mkxp-z/RTP/. -# Each path is added to PhysFS search path via fileSystem.addPath(). -# -# Additional optional directories: -# mkxp-z/Fonts/ custom fallback fonts (.otf/.ttf) -# mkxp-z/Scripts/Preload/ Ruby scripts run before game scripts -# mkxp-z/Scripts/Postload/ Ruby scripts run before rgss_main (RGSS3) -# -# MIDI playback: mkxp-z uses FluidSynth internally. A soundfont can be -# specified per-game in mkxp.json via "midiSoundFont". No global soundfont -# file is declared as firmware. -# -# Supported extensions: ini, json, rxproj, rvproj, rvproj2, mkxp, mkxpz, zip, 7z -# Required GPU: OpenGL Core >= 2.0 or OpenGL ES >= 2.0 - notes: | - No individual BIOS or firmware files required. The three RTP directories - listed below are optional collections of default game assets. Only needed - when a game references stock RPG Maker assets instead of bundling them. + Game engine implementing RGSS 1/2/3 (Ruby Game Scripting System) for + RPG Maker XP, VX and VX Ace. Fork of Ancurio/mkxp. Libretro port by + white-axe, not yet merged upstream. - RPG Maker XP uses RGSS1 (Ruby Game Scripting System 1). - RPG Maker VX uses RGSS2. - RPG Maker VX Ace uses RGSS3. - - Each RTP is a directory tree containing Audio/ and Graphics/ subdirs, - plus Fonts/ for VX and VX Ace. These are not hashable single files. + All entries are directories, not individual files. No hashable BIOS. + RTPs are shared asset packages needed only when a game references stock + assets instead of bundling its own. MIDI soundfont (GMGSx.sf2) is + embedded in the binary. files: - # ================================================================ - # RPG Maker XP RTP (optional, game-dependent) - # mkxp-z_libretro.info firmware0 - # ================================================================ - - - name: "RPG Maker XP RTP (Standard)" + - name: "Standard" + description: "RPG Maker XP Run-Time Package" category: game_data path: "mkxp-z/RTP/Standard/" required: false - type: directory - source_ref: "mkxp-z_libretro.info:firmware0, sharedstate.cpp:144-145" - note: > - Run-Time Package for RPG Maker XP (RGSS1) games. Contains default - tilesets, character sprites, battle animations, panoramas, windowskins, - BGM, BGS, ME and SE audio files. Only needed by games that reference - stock XP assets. Distributed by Enterbrain as a Windows installer, - extractable with innoextract on other platforms. + source_ref: "core.cpp:1042-1085, core.cpp:1087-1158" - # ================================================================ - # RPG Maker VX RTP (optional, game-dependent) - # mkxp-z_libretro.info firmware1 - # ================================================================ - - - name: "RPG Maker VX RTP (RPGVX)" + - name: "RPGVX" + description: "RPG Maker VX Run-Time Package" category: game_data path: "mkxp-z/RTP/RPGVX/" required: false - type: directory - source_ref: "mkxp-z_libretro.info:firmware1, sharedstate.cpp:144-145" - note: > - Run-Time Package for RPG Maker VX (RGSS2) games. Contains default - tilesets, character sprites, face graphics, battle animations, fonts - and audio assets. VX uses a different tileset format than XP. Only - needed by games that reference stock VX assets. + source_ref: "core.cpp:1042-1085, core.cpp:1087-1158" - # ================================================================ - # RPG Maker VX Ace RTP (optional, game-dependent) - # mkxp-z_libretro.info firmware2 - # ================================================================ - - - name: "RPG Maker VX Ace RTP (RPGVXAce)" + - name: "RPGVXAce" + description: "RPG Maker VX Ace Run-Time Package" category: game_data path: "mkxp-z/RTP/RPGVXAce/" required: false - type: directory - source_ref: "mkxp-z_libretro.info:firmware2, sharedstate.cpp:144-145" - note: > - Run-Time Package for RPG Maker VX Ace (RGSS3) games. Largest of the - three RTPs with expanded tilesets, character generators, battle system - assets, fonts and audio. VX Ace is the most commonly used RPG Maker - version on the RGSS engine. Only needed by games that reference stock - VX Ace assets. + source_ref: "core.cpp:1042-1085, core.cpp:1087-1158" + + - name: "Fonts" + description: "Fallback font directory (.otf/.ttf)" + category: game_data + path: "mkxp-z/Fonts/" + required: false + source_ref: "core.cpp:1160-1172" + + - name: "Preload" + description: "Ruby scripts loaded before game scripts" + category: game_data + path: "mkxp-z/Scripts/Preload/" + required: false + source_ref: "core.cpp:876-907" + + - name: "Postload" + description: "Ruby scripts loaded after game scripts (RGSS3 only)" + category: game_data + path: "mkxp-z/Scripts/Postload/" + required: false + source_ref: "core.cpp:886-917" diff --git a/emulators/mojozork.yml b/emulators/mojozork.yml index bdbd8f6f..731d3deb 100644 --- a/emulators/mojozork.yml +++ b/emulators/mojozork.yml @@ -1,19 +1,18 @@ emulator: MojoZork -type: game -source: "https://github.com/libretro/libretro-mojozork" -profiled_date: "2026-03-18" +type: libretro +core_classification: pure_libretro +source: "https://github.com/icculus/mojozork" +upstream: "https://github.com/icculus/mojozork" +profiled_date: "2026-03-24" core_version: "0.1" display_name: "Infocom Z-Machine (MojoZork)" cores: - mojozork -systems: [] +systems: [zmachine] notes: | - MojoZork is a Z-machine interpreter for libretro, capable of running - Infocom-era interactive fiction (Zork, Hitchhiker's Guide, etc.) and - other Z-code story files (.z1 through .z8, .zblorb). - - No BIOS or system files required. Story files are loaded directly - as content. + Z-Machine interpreter for Infocom text adventures (v1-v3). + Fonts embedded in binary. No system directory access. Story files + loaded as content. files: [] diff --git a/emulators/moonlight.yml b/emulators/moonlight.yml index b2494d27..ab456b58 100644 --- a/emulators/moonlight.yml +++ b/emulators/moonlight.yml @@ -1,7 +1,9 @@ emulator: Moonlight type: utility -source: "https://github.com/libretro/moonlight-libretro" -profiled_date: "2026-03-18" +core_classification: community_fork +source: "https://github.com/rock88/moonlight-libretro" +upstream: "https://github.com/moonlight-stream/moonlight-embedded" +profiled_date: "2026-03-24" core_version: "1.0.3" display_name: "Moonlight" cores: @@ -9,11 +11,13 @@ cores: systems: [] notes: | - Moonlight is a game streaming client that connects to NVIDIA - GameStream or Sunshine hosts. The libretro port allows streaming - PC games through RetroArch. + Game streaming client for NVIDIA GameStream / Sunshine. + Port of moonlight-embedded for RetroArch, primarily targeting + Lakka on Nintendo Switch. - No BIOS or system files required. Configuration (host IP, pairing) - is handled through core options and the pairing process. + The core auto-generates all needed files on first run + (crypto keypair for pairing, unique ID, settings) in the + system directory under a key/ subdirectory. No user-supplied + files required. files: [] diff --git a/emulators/mpv.yml b/emulators/mpv.yml index 410b4463..6b8b3c1b 100644 --- a/emulators/mpv.yml +++ b/emulators/mpv.yml @@ -1,18 +1,23 @@ emulator: mpv type: utility +core_classification: community_fork source: "https://github.com/libretro/libretro-mpv" -profiled_date: "2026-03-18" -core_version: "Git" +upstream: "https://github.com/mpv-player/mpv" +profiled_date: "2026-03-24" +core_version: "0.2.alpha" display_name: "MPV" cores: - mpv systems: [] notes: | - Libretro port of mpv, a media player based on MPlayer and mplayer2. - Plays video and audio files within RetroArch using mpv's decoding - pipeline. - - No BIOS or system files required. + Libretro wrapper around libmpv. Links against the mpv shared library + for video/audio decoding and OpenGL rendering. Experimental, proof of + concept. No system directory access — the core only loads the content + file passed by RetroArch. +# source_ref: mpv-libretro.c — single-file core (672 lines). No call to +# RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. Only file access is the content +# path via retro_load_game(info->path) forwarded to mpv loadfile command +# (line 241, 296). No fopen, no system_dir path construction. files: [] diff --git a/emulators/mrboom.yml b/emulators/mrboom.yml index cc773b77..e27c093d 100644 --- a/emulators/mrboom.yml +++ b/emulators/mrboom.yml @@ -1,14 +1,15 @@ emulator: Mr.Boom type: game +core_classification: official_port source: "https://github.com/libretro/mrboom-libretro" -profiled_date: "2026-03-18" +upstream: "https://github.com/libretro/mrboom-libretro" +profiled_date: "2026-03-24" core_version: "3.1" display_name: "Mr.Boom (Bomberman)" cores: [mrboom] systems: [] files: [] notes: > - Bomberman clone supporting up to 8 players. Ported to libretro from - the original x86 assembly game by Remdy Software. - All game assets are compiled into the core binary. - No content file, BIOS, or system directory files required. + Bomberman clone supporting up to 8 players. Converted from DOS x86 + assembly by the original author (Remdy Software) using asm2c. + All game assets (graphics, sounds, music) are compiled into the core binary. diff --git a/emulators/mu.yml b/emulators/mu.yml index cfeb5777..c00431f4 100644 --- a/emulators/mu.yml +++ b/emulators/mu.yml @@ -1,35 +1,27 @@ emulator: Mu type: libretro +core_classification: pure_libretro source: "https://github.com/libretro/Mu" -profiled_date: "2026-03-18" +upstream: "https://github.com/meepingsnesroms/Mu" +profiled_date: "2026-03-24" core_version: "v1.3.3" display_name: "Palm OS (Mu)" +cores: [mu] systems: [palm-os] notes: | - Mu emulates Palm OS handhelds: Palm m500, Palm m515, and (if compiled - with EMU_SUPPORT_PALM_OS5) the Tungsten T3. - - A Palm OS ROM dump is required. The core selects the ROM filename based - on the "OS Version" core option: + Mu emulates Palm m500, Palm m515, and (with EMU_SUPPORT_PALM_OS5) + Tungsten T3. A Palm OS ROM dump is required. The core selects the + ROM filename based on the "OS Version" core option: Palm m500 / Palm OS 4.0 -> palmos40-en-m500.rom Palm m515 / Palm OS 4.1 -> palmos41-en-m515.rom (default) Tungsten T3 / Palm OS 5.2 -> palmos52-en-t3.rom Tungsten T3 / Palm OS 6.0 -> palmos60-en-t3.rom - ROM path construction: retro_load_game() joins - RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY + "/" + osVersion + ".rom". - - The bootloader (bootloader-dbvz.rom) is optional. It contains the - MC68VZ328 UART bootloader and is only relevant for m500/m515 devices. - For the Tungsten T3 it is ignored even if present. - - The m500/m515 ROM is loaded into a 4 MB region (M5XX_ROM_SIZE), - padded with 0x00 if smaller, and byte-swapped on little-endian hosts. - The Tungsten T3 ROM maps into a 16 MB region (TUNGSTEN_T3_ROM_SIZE). - - The core also supports no-game mode (supports_no_game = true). Without - content, it boots the standard Palm OS desktop from the ROM. + ROM path: RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY + "/" + osVersion + ".rom". + No hash or size validation; the code reads whatever file is present. + The bootloader is optional and ignored for Tungsten T3. + Supports no-game mode (boots Palm OS desktop from ROM without content). files: # --- Palm m515 / Palm OS 4.1 (default device) --- @@ -37,17 +29,15 @@ files: system: palm-os description: "Palm m515 ROM, Palm OS 4.1 English" required: true - md5: "83cb1d1c76e568b916dc2e7c0bf669f6" - note: "Default ROM. Selected when core option is 'Palm m515/Palm OS 4.1'. Max 4 MB, byte-swapped on LE." - source_ref: "libretroBuildSystem/libretro.c:173-176,744-763 (retro_load_game ROM loading)" + note: "Default ROM. Selected when core option is 'Palm m515/Palm OS 4.1'." + source_ref: "libretroBuildSystem/libretro.c:173-176 (check_variables), 744-763 (retro_load_game ROM loading)" # --- Palm m500 / Palm OS 4.0 --- - name: "palmos40-en-m500.rom" system: palm-os description: "Palm m500 ROM, Palm OS 4.0 English" required: false - md5: "f50e4d5e4d98dc831f2c34a9107651eb" - note: "Selected when core option is 'Palm m500/Palm OS 4.0'. Max 4 MB." + note: "Selected when core option is 'Palm m500/Palm OS 4.0'." source_ref: "libretroBuildSystem/libretro.c:169-172" # --- Tungsten T3 / Palm OS 5.2.1 (requires EMU_SUPPORT_PALM_OS5) --- @@ -55,8 +45,7 @@ files: system: palm-os description: "Tungsten T3 ROM, Palm OS 5.2.1 English" required: false - md5: "de46ec84d9aabf655eabdf9b00a3845d" - note: "Selected when core option is 'Tungsten T3/Palm OS 5.2.1'. Max 16 MB. Only available if core compiled with EMU_SUPPORT_PALM_OS5." + note: "Selected when core option is 'Tungsten T3/Palm OS 5.2.1'. Requires EMU_SUPPORT_PALM_OS5 compile flag." source_ref: "libretroBuildSystem/libretro.c:178-181" # --- Tungsten T3 / Palm OS 6.0 (requires EMU_SUPPORT_PALM_OS5) --- @@ -64,7 +53,7 @@ files: system: palm-os description: "Tungsten T3 ROM, Palm OS 6.0 English" required: false - note: "Selected when core option is 'Tungsten T3/Palm OS 6.0'. Max 16 MB. Only available if core compiled with EMU_SUPPORT_PALM_OS5." + note: "Selected when core option is 'Tungsten T3/Palm OS 6.0'. Requires EMU_SUPPORT_PALM_OS5 compile flag." source_ref: "libretroBuildSystem/libretro.c:182-185" # --- MC68VZ328 bootloader --- @@ -72,17 +61,17 @@ files: system: palm-os description: "MC68VZ328 UART bootloader" required: false - md5: "9da101cd2317830649a31f8fa46debec" - note: "Optional for m500/m515. Ignored for Tungsten T3. Loads from system directory." - source_ref: "libretroBuildSystem/libretro.c:766-782" + note: "Optional for m500/m515. Ignored for Tungsten T3." + source_ref: "libretroBuildSystem/libretro.c:766-782, src/dbvz.c:1408-1423 (dbvzLoadBootloader)" platform_details: palm_m5xx: rom_size: 4194304 # 4 MB (M5XX_ROM_SIZE) + bootloader_size: 512 # DBVZ_BOOTLOADER_SIZE (0x200) cpu: "MC68VZ328" - source_ref: "include/m5XXBus.h:23, src/emulator.c:191-212" + source_ref: "include/m5XXBus.h:23,28, src/emulator.c:191-212" tungsten_t3: rom_size: 16777216 # 16 MB (TUNGSTEN_T3_ROM_SIZE) cpu: "PXA260 (ARM)" - source_ref: "include/tungstenT3Bus.h:17, src/emulator.c:158-164" + source_ref: "include/tungstenT3Bus.h:17, src/emulator.c:145-162" diff --git a/emulators/mupen64plus.yml b/emulators/mupen64plus.yml index 876e096d..2bbde454 100644 --- a/emulators/mupen64plus.yml +++ b/emulators/mupen64plus.yml @@ -1,51 +1,31 @@ emulator: Mupen64Plus-Next type: libretro +core_classification: enhanced_fork source: "https://github.com/libretro/mupen64plus-libretro-nx" -profiled_date: "2026-03-18" -core_version: "1.0" +upstream: "https://github.com/mupen64plus/mupen64plus-core" +profiled_date: "2026-03-24" +core_version: "2.8" display_name: "Nintendo - Nintendo 64 (Mupen64Plus-Next)" systems: [nintendo-64, nintendo-64dd] -cores: [mupen64plus_next, mupen64plus_next_gles3, mupen64plus_next_gles2, parallel_n64] - -# PIF boot ROM is fully HLE'd (bootrom_hle.c), no external PIF ROM needed. -# CIC emulation is also handled internally (n64_cic_nus_6105.c). -# The only optional firmware is the 64DD IPL ROM for N64 Disk Drive games. - -# mupen64plus_next cores use: system/Mupen64plus/IPL.n64 -# parallel_n64 uses: system/64DD_IPL.bin -# Both expect the same ROM, different path. +cores: [mupen64plus_next, mupen64plus_next_develop, mupen64plus_next_gles3, mupen64plus_next_gles2] files: - # -- 64DD IPL ROM (mupen64plus_next variants) -- - name: "IPL.n64" path: "Mupen64plus/IPL.n64" - size: 4194304 # 0x400000 (4 MB) - md5: "8d3d9f294b6e174bc7b1d2fd1c727530" + size: 4194304 required: false - note: "64DD IPL ROM for N64 Disk Drive games. Only needed for .ndd disk images via subsystem API" - source_ref: "mupen64plus-core/src/main/main.c:959-961, libretro/libretro.c:641" - cores: [mupen64plus_next, mupen64plus_next_gles3, mupen64plus_next_gles2] - - # -- 64DD IPL ROM (parallel_n64) -- - - name: "64DD_IPL.bin" - path: "64DD_IPL.bin" - md5: "8d3d9f294b6e174bc7b1d2fd1c727530" - required: false - note: "Same 64DD IPL ROM, different path expected by parallel_n64" - cores: [parallel_n64] + note: "64DD IPL ROM. Only needed for N64 Disk Drive games (.ndd) via subsystem API" + source_ref: "mupen64plus-core/src/main/main.c:954-979" notes: hle_available: true hle_note: > - N64 does not require any BIOS or firmware files for standard cartridge games. - The PIF boot ROM is fully emulated via HLE (bootrom_hle.c). CIC chip - challenge/response is handled in software (n64_cic_nus_6105.c). + PIF boot ROM is fully HLE'd (bootrom_hle.c). CIC challenge/response + handled in software (n64_cic_nus_6105.c). No BIOS files needed for + standard cartridge games. dd_note: > - The 64DD IPL ROM is only needed to run N64 Disk Drive games (.ndd). - It is loaded via the retro subsystem API (RETRO_GAME_TYPE_DD), which - takes both a disk image and an optional cartridge ROM. - The core accepts Z64 (big-endian), N64 (little-endian), and V64 - (byte-swapped) formats and converts internally. + 64DD IPL ROM loaded from system/Mupen64plus/IPL.n64 when a .ndd disk + is present. Accepts Z64, N64, and V64 byte-swap formats. transferpak_note: > - Transfer Pak support (GB/GBC games on N64) is handled via subsystem API. - No additional firmware files needed, just the GB ROM and save file. + Transfer Pak support (GB/GBC games on N64) handled via subsystem API. + No additional firmware files needed. diff --git a/emulators/mupen64plus_next_develop.yml b/emulators/mupen64plus_next_develop.yml new file mode 100644 index 00000000..0de3c280 --- /dev/null +++ b/emulators/mupen64plus_next_develop.yml @@ -0,0 +1,8 @@ +emulator: "Mupen64Plus-Next Develop" +type: alias +alias_of: "mupen64plus_next" +profiled_date: "2026-03-24" +core_version: "2.8" +display_name: "Nintendo - Nintendo 64 (Mupen64Plus-Next Develop)" +note: "Same codebase as mupen64plus_next, built from develop branch. Experimental/testing variant." +files: [] diff --git a/emulators/mupen64plus_next_gles2.yml b/emulators/mupen64plus_next_gles2.yml new file mode 100644 index 00000000..50ebe0cf --- /dev/null +++ b/emulators/mupen64plus_next_gles2.yml @@ -0,0 +1,8 @@ +emulator: "Mupen64Plus-Next GLES2" +type: alias +alias_of: "mupen64plus_next" +profiled_date: "2026-03-24" +core_version: "2.8" +display_name: "Nintendo - Nintendo 64 (Mupen64Plus-Next GLES2)" +note: "Same codebase as mupen64plus_next, compiled with GLES=1 (-DHAVE_OPENGLES2) for OpenGL ES 2.0 devices. Same BIOS files." +files: [] diff --git a/emulators/mupen64plus_next_gles3.yml b/emulators/mupen64plus_next_gles3.yml new file mode 100644 index 00000000..42709355 --- /dev/null +++ b/emulators/mupen64plus_next_gles3.yml @@ -0,0 +1,8 @@ +emulator: "Mupen64Plus-Next GLES3" +type: alias +alias_of: "mupen64plus_next" +profiled_date: "2026-03-24" +core_version: "2.8" +display_name: "Nintendo - Nintendo 64 (Mupen64Plus-Next GLES3)" +note: "Same codebase as mupen64plus_next, compiled with -DHAVE_OPENGLES3 for OpenGL ES 3.0 devices. Same BIOS files." +files: [] diff --git a/emulators/neocd.yml b/emulators/neocd.yml index 88ab1638..22742221 100644 --- a/emulators/neocd.yml +++ b/emulators/neocd.yml @@ -1,144 +1,122 @@ emulator: NeoCD type: libretro +core_classification: pure_libretro source: "https://github.com/libretro/neocd_libretro" -profiled_date: "2026-03-18" -core_version: "2019" +upstream: "https://github.com/libretro/neocd_libretro" +profiled_date: "2026-03-24" +core_version: "2022" display_name: "SNK - Neo Geo CD (NeoCD)" +cores: + - neocd systems: - snk-neogeo-cd notes: | - NeoCD is a dedicated SNK Neo Geo CD emulator. It supports Front Loader, - Top Loader, and CDZ hardware variants. BIOS files go in {system_dir}/neocd/ - subdirectory (src/path.cpp:7, src/libretro_bios.cpp:76-81). + Complete rewrite of NeoCD in C++11. Scans {system_dir}/neocd/ for any .rom + or .bin file, also inside .zip archives (src/libretro_bios.cpp:69-105, + src/path.cpp:6 NEOCD_SYSTEM_SUBDIR = "neocd"). - The core scans the neocd/ directory for any .rom or .bin file (also inside - .zip archives), reads the first 512 bytes, and identifies the BIOS type by - binary pattern matching at fixed ROM addresses (src/bios.cpp:168-208). - Filenames listed in the .info are conventional but not enforced by the core. + BIOS identified by binary pattern matching at fixed ROM addresses, not by + filename (src/bios.cpp:167-206). Files are auto byte-swapped if needed + (src/bios.cpp:148-160). Files smaller than 524288 bytes are skipped + (src/libretro_bios.cpp:42). - Three hardware families are detected: Front Loader (NeoCD), Top Loader - (NeoCD), and CDZ. Modified BIOS variants are also recognized: SMKDan 0.07, - SMKDan 0.07b, Universe BIOS 3.2, and Universe BIOS 3.3. The core applies - speed hack patches and CD recognition patches at load time for each type - (src/bios.cpp:209-280). + Three hardware families detected: Front Loader, Top Loader, CDZ. Modified + variants recognized: SMKDan 0.07, SMKDan 0.07b, Universe BIOS 3.2, + Universe BIOS 3.3 (src/bios.h:11-27). Any single valid BIOS is sufficient; + selection via core options dropdown sorted alphabetically. - The Y-ZOOM ROM (ng-lo.rom / 000-lo.lo) is a sprite zoom lookup table loaded - separately (src/memory.h:22, YZOOMROM_SIZE = 0x10000 = 65536 bytes). It is - optional but improves sprite scaling accuracy. + Y-ZOOM ROM (ng-lo.rom / 000-lo.lo) listed in .info but generated + algorithmically, never loaded from file (src/memory.cpp:223-253 + generateYZoomData, CRC32 E09E253C). These are phantom .info entries. - All firmware entries are marked optional in the .info (any single valid BIOS - is sufficient). The core presents detected BIOSes as a dropdown in the core - options menu, sorted alphabetically by description. - - BIOS ROM size: 524288 bytes (0x80000, src/memory.h:16). - Y-ZOOM ROM size: 65536 bytes (0x10000, src/memory.h:22). + .info firmware_count=12 but 2 are phantoms (Y-ZOOM), effective count=10. + .info lists uni-bioscd.rom as "Universe BIOS 3.2" but SHA1 matches + Universe BIOS 3.3 (confirmed by GitHub README). files: - # Front Loader BIOS (NeoCD original front-loading unit) + # --- Front Loader family --- + - name: neocd_f.rom dest: neocd/neocd_f.rom system: snk-neogeo-cd required: false size: 524288 - note: "Front Loader BIOS, official NeoCD format" - source_ref: "retroarch/libneocd_libretro.info:15 (firmware0)" + note: "Front Loader BIOS (big-endian, NeoCD naming)" + source_ref: "src/bios.cpp:59 FRONT_LOADER_SEARCH_PATTERN at 0xC0006C" - # Front Loader BIOS, SMKDan custom - - name: neocd_sf.rom - dest: neocd/neocd_sf.rom - system: snk-neogeo-cd - required: false - size: 524288 - note: "Front Loader BIOS, SMKDan custom" - source_ref: "retroarch/libneocd_libretro.info:18 (firmware1)" - - # Top Loader BIOS (NeoCD top-loading unit) - - name: neocd_t.rom - dest: neocd/neocd_t.rom - system: snk-neogeo-cd - required: false - size: 524288 - note: "Top Loader BIOS, official NeoCD format" - source_ref: "retroarch/libneocd_libretro.info:21 (firmware2)" - - # Top Loader BIOS, SMKDan custom - - name: neocd_st.rom - dest: neocd/neocd_st.rom - system: snk-neogeo-cd - required: false - size: 524288 - note: "Top Loader BIOS, SMKDan custom" - source_ref: "retroarch/libneocd_libretro.info:24 (firmware3)" - - # CDZ BIOS (Neo Geo CDZ, last revision) - - name: neocd_z.rom - dest: neocd/neocd_z.rom - system: snk-neogeo-cd - required: false - size: 524288 - note: "CDZ BIOS, official NeoCD format" - source_ref: "retroarch/libneocd_libretro.info:27 (firmware4)" - - # CDZ BIOS, SMKDan custom - - name: neocd_sz.rom - dest: neocd/neocd_sz.rom - system: snk-neogeo-cd - required: false - size: 524288 - note: "CDZ BIOS, SMKDan custom" - source_ref: "retroarch/libneocd_libretro.info:30 (firmware5)" - - # Y-ZOOM ROM (sprite zoom lookup table) - - name: ng-lo.rom - dest: neocd/ng-lo.rom - system: snk-neogeo-cd - required: false - size: 65536 - note: "Y-ZOOM ROM, NeoCD format" - source_ref: "retroarch/libneocd_libretro.info:33 (firmware6)" - - # Y-ZOOM ROM, MAME naming - - name: 000-lo.lo - dest: neocd/000-lo.lo - system: snk-neogeo-cd - required: false - size: 65536 - note: "Y-ZOOM ROM, MAME naming (same content as ng-lo.rom)" - source_ref: "retroarch/libneocd_libretro.info:36 (firmware7)" - - # Front Loader BIOS, MAME naming - name: front-sp1.bin dest: neocd/front-sp1.bin system: snk-neogeo-cd required: false size: 524288 - note: "Front Loader BIOS, MAME naming (same content as neocd_f.rom)" - source_ref: "retroarch/libneocd_libretro.info:39 (firmware8)" + note: "Front Loader BIOS (little-endian, MAME naming)" + source_ref: "src/bios.cpp:59 FRONT_LOADER_SEARCH_PATTERN, src/bios.cpp:148-160 autoByteSwap" + + - name: neocd_sf.rom + dest: neocd/neocd_sf.rom + system: snk-neogeo-cd + required: false + size: 524288 + note: "Front Loader BIOS, SMKDan 0.07b" + source_ref: "src/bios.cpp:62 SMKDANBETA_FRONT_SEARCH_PATTERN at 0xC00004" + + # --- Top Loader family --- + + - name: neocd_t.rom + dest: neocd/neocd_t.rom + system: snk-neogeo-cd + required: false + size: 524288 + note: "Top Loader BIOS (big-endian, NeoCD naming)" + source_ref: "src/bios.cpp:60 TOP_LOADER_SEARCH_PATTERN at 0xC0006C" - # Top Loader BIOS, MAME naming - name: top-sp1.bin dest: neocd/top-sp1.bin system: snk-neogeo-cd required: false size: 524288 - note: "Top Loader BIOS, MAME naming (same content as neocd_t.rom)" - source_ref: "retroarch/libneocd_libretro.info:42 (firmware9)" + note: "Top Loader BIOS (little-endian, MAME naming)" + source_ref: "src/bios.cpp:60 TOP_LOADER_SEARCH_PATTERN, src/bios.cpp:148-160 autoByteSwap" + + - name: neocd_st.rom + dest: neocd/neocd_st.rom + system: snk-neogeo-cd + required: false + size: 524288 + note: "Top Loader BIOS, SMKDan 0.07b" + source_ref: "src/bios.cpp:63 SMKDANBETA_TOP_SEARCH_PATTERN at 0xC00004" + + # --- CDZ family --- + + - name: neocd_z.rom + dest: neocd/neocd_z.rom + system: snk-neogeo-cd + required: false + size: 524288 + note: "CDZ BIOS (big-endian, NeoCD naming)" + source_ref: "src/bios.cpp:61 CDZ_SEARCH_PATTERN at 0xC0006C" - # CDZ BIOS, MAME naming - name: neocd.bin dest: neocd/neocd.bin system: snk-neogeo-cd required: false size: 524288 - note: "CDZ BIOS, MAME naming (same content as neocd_z.rom)" - source_ref: "retroarch/libneocd_libretro.info:45 (firmware10)" + note: "CDZ BIOS (little-endian, MAME naming)" + source_ref: "src/bios.cpp:61 CDZ_SEARCH_PATTERN, src/bios.cpp:148-160 autoByteSwap" + + - name: neocd_sz.rom + dest: neocd/neocd_sz.rom + system: snk-neogeo-cd + required: false + size: 524288 + note: "CDZ BIOS, SMKDan 0.07b" + source_ref: "src/bios.cpp:64 SMKDANBETA_CDZ_SEARCH_PATTERN at 0xC00004" - # Universe BIOS for CD systems - name: uni-bioscd.rom dest: neocd/uni-bioscd.rom system: snk-neogeo-cd required: false size: 524288 - note: "Universe BIOS CD, third-party multi-region BIOS (hack)" - source_ref: "retroarch/libneocd_libretro.info:48 (firmware11)" + note: "Universe BIOS 3.3, CDZ-based third-party multi-region BIOS" + source_ref: "src/bios.cpp:68 UNIVERSE33_SEARCH_PATTERN at 0xC00150" diff --git a/emulators/noods.yml b/emulators/noods.yml index c5dcab2d..d37c2a51 100644 --- a/emulators/noods.yml +++ b/emulators/noods.yml @@ -1,25 +1,24 @@ emulator: NooDS type: libretro -source: "https://github.com/Hydr8gon/NooDS" -profiled_date: "2026-03-18" +core_classification: community_fork +source: "https://github.com/jonian/libretro-noods" +upstream: "https://github.com/Hydr8gon/NooDS" +profiled_date: "2026-03-24" core_version: "Git" display_name: "Nintendo - DS (NooDS)" cores: [noods] systems: [nintendo-ds, nintendo-gba] notes: | - NooDS includes full HLE BIOS for ARM9, ARM7 and GBA SWI routines, making - all BIOS files optional when direct boot is enabled (default). HLE tables - cover SWI 0x00-0x20 for each processor (hle_bios.cpp:24-62). When BIOS - files are missing, a special opcode (0xFF at offset 3) is written for - interrupt return and the HLE handler is activated (memory.cpp:130-169). - Firmware is auto-generated (128KB non-bootable) if not provided, with - default WiFi config, touch calibration and user settings (spi.cpp:90-160). - Native BIOS+firmware required only for firmware boot (non-direct-boot mode). - ARM9 BIOS read: 0x1000 bytes (4 KB), ARM7 BIOS read: 0x4000 bytes (16 KB), - GBA BIOS read: 0x4000 bytes (16 KB). Firmware bootable threshold: >128 KB - (spi.cpp:87). DSi mode supported but uses same BIOS files. - Config: noods.ini keys bios9Path, bios7Path, firmwarePath, gbaBiosPath. + Full HLE BIOS for ARM9, ARM7 and GBA SWI routines (hle_bios.cpp:24-60). + All BIOS files optional when direct boot is enabled (default). When missing, + HLE handler activated via special opcode at offset 3 (memory.cpp:139-168). + Firmware auto-generated (128KB non-bootable) if not provided, with default + WiFi config, touch calibration and user settings (spi.cpp:90-160). Native + BIOS+firmware required only for firmware boot (non-direct-boot mode). + Bootable firmware threshold: >128KB (spi.cpp:87). DLDI patching provides + SD card access for homebrew via nds_sd_card.bin (dldi.cpp:29-77). + File loading code identical between upstream and libretro port. files: - name: "bios9.bin" @@ -28,8 +27,7 @@ files: required: false hle_fallback: true size: 4096 - md5: "a392174eb3e572fed6447e956bde4b25" - source_ref: "src/memory.cpp:130-142, src/memory.h:73" + source_ref: "src/memory.cpp:130-141" notes: "HLE fallback for all SWI calls; native needed for firmware boot and logo verification (copyBiosLogo)" - name: "bios7.bin" @@ -38,8 +36,7 @@ files: required: false hle_fallback: true size: 16384 - md5: "df692a80a5b1bc90728bc3dfc76cd948" - source_ref: "src/memory.cpp:144-156, src/memory.h:74" + source_ref: "src/memory.cpp:144-155" notes: "HLE fallback for all SWI calls; native needed for firmware boot" - name: "firmware.bin" @@ -47,7 +44,7 @@ files: description: "NDS firmware image" required: false hle_fallback: true - source_ref: "src/spi.cpp:62-160, src/settings.cpp:42" + source_ref: "src/spi.cpp:62-160" notes: "Auto-generated 128KB non-bootable firmware as fallback; native dump (>128KB) needed for firmware boot" - name: "gba_bios.bin" @@ -56,6 +53,12 @@ files: required: false hle_fallback: true size: 16384 - md5: "a860e8c0b6d573d191e4ec7db1b1e4f6" - source_ref: "src/memory.cpp:158-169, src/memory.h:75, src/core.cpp:244-252" - notes: "HLE fallback via swiTableGba; native BIOS disables HLE and enables real GBA boot (core.cpp:244-247)" + source_ref: "src/memory.cpp:158-168, src/core.cpp:252-256" + notes: "HLE fallback via swiTableGba; native BIOS disables HLE and enables real GBA boot" + + - name: "nds_sd_card.bin" + system: nintendo-ds + description: "DLDI SD card image for homebrew" + required: false + source_ref: "src/dldi.cpp:80-83, src/libretro/libretro.cpp:331" + notes: "Opened on DLDI startup() call from homebrew ROMs; user-created FAT image" diff --git a/emulators/parallel_n64.yml b/emulators/parallel_n64.yml index 912ab3bc..b2ae4088 100644 --- a/emulators/parallel_n64.yml +++ b/emulators/parallel_n64.yml @@ -1,8 +1,16 @@ -emulator: "parallel_n64" -type: alias -alias_of: "mupen64plus" -profiled_date: "2026-03-18" +emulator: "ParaLLEl N64" +type: libretro +source: "https://github.com/libretro/parallel-n64" +profiled_date: "2026-03-24" core_version: "2.0-rc2" display_name: "Nintendo - Nintendo 64 (ParaLLEl N64)" -note: "This core uses the same BIOS/firmware as mupen64plus. See emulators/mupen64plus.yml for details." -files: [] +systems: [nintendo-64, nintendo-64dd] +cores: [parallel_n64, parallel_n64_debug] + +# Needs full source-verified profiling. Minimal profile based on known file paths. + +files: + - name: "64DD_IPL.bin" + path: "64DD_IPL.bin" + required: false + note: "64DD IPL ROM. Only needed for N64 Disk Drive games"