diff --git a/emulators/amiberry.yml b/emulators/amiberry.yml index 335aef9d..479466ad 100644 --- a/emulators/amiberry.yml +++ b/emulators/amiberry.yml @@ -1,9 +1,10 @@ emulator: Amiberry type: standalone + libretro +core_classification: official_port source: "https://github.com/BlitterStudio/amiberry" upstream: "https://github.com/tonioni/WinUAE" -profiled_date: "2026-03-18" -core_version: "v6.3.4" +profiled_date: "2026-03-25" +core_version: "v8.1.1" display_name: "Commodore - Amiga (Amiberry)" cores: [amiberry] systems: @@ -12,111 +13,179 @@ systems: - commodore-cdtv notes: | - Amiberry is an Amiga emulator based on WinUAE, available as both - standalone and libretro core. No built-in kickstart fallback — a real - Kickstart ROM is required. + Amiberry is an Amiga emulator based on WinUAE, available as both standalone + and libretro core. No built-in kickstart — requires a real Kickstart ROM or + external AROS replacement files (aros-ext.bin + aros-rom.bin). - Core option "amiberry_kickstart" selects the ROM file: - auto, kick.rom, kick13.rom, kick20.rom, kick31.rom, kick205.rom, - kick40068.A1200, kick40068.A4000, cd32.rom, cdtv.rom. - "auto" selects based on the model option. - ref: BlitterStudio/amiberry/libretro/libretro.cpp:558,621-634 + Core option "amiberry_kickstart" overrides ROM selection: auto, kick.rom, + kick13.rom, kick20.rom, kick31.rom, kick205.rom, kick40068.A1200, + kick40068.A4000, cd32.rom, cdtv.rom. "auto" selects per model. + ref: libretro/libretro.cpp:558,621-640 - Standalone mode ships with data/ directory (UI icons, virtual keyboards, - floppy sounds, AmigaTopaz.ttf font, gamecontrollerdb.txt). These are - compiled into the standalone binary but the libretro core may look for - them in the system directory. + Default model is A500 (KS 1.3). ROM search directories: + save_dir/Kickstarts, system_dir/Kickstarts, system_dir/save-data/Kickstarts, + then system_dir as fallback. + ref: libretro/libretro.cpp:2740-2756 + + ROM identification uses SHA1 against WinUAE database (340+ entries) but does + not reject unknown ROMs. Cloanto encrypted ROMs supported with rom.key. + + Munt MT-32/CM-32L emulation compiled in (WITH_MIDIEMU). ROMs loaded from + mt32-roms/ subdirectory of the ROM path. + ref: src/midiemu.cpp:120-157 + + WHDLoad autoboot requires whdboot/ directory in system_dir with boot-data.zip, + WHDLoad, AmiQuit, JST, whdload_db.xml. These ship with the standalone build + but must be obtained separately for the libretro core. + ref: libretro/libretro.cpp:1151-1184 files: - # --- Required Kickstart ROMs (from .info) --- - # ref: BlitterStudio/amiberry/libretro/libretro.cpp:558 - # ref: WinUAE rommgr.cpp for ROM identification + # --- Kickstart ROMs (searched by find_kickstart_in_system_dir) --- + # ref: libretro/libretro.cpp:1502-1565 - - name: kick34005.A500 + - name: kick13.rom system: commodore-amiga required: true size: 262144 - crc32: c4f0f55f - note: "A500 Kickstart v1.3 rev 34.5" - source_ref: "libretro-super/dist/info/amiberry_libretro.info firmware0" + note: "A500 Kickstart v1.3 rev 34.005, default for A500 model" + source_ref: "libretro/libretro.cpp:1516 candidates_a500" - - name: kick37350.A600 - system: commodore-amiga - required: true - size: 524288 - crc32: 43b0df7b - note: "A600 Kickstart v2.05 rev 37.350" - source_ref: "amiberry_libretro.info firmware1" - - - name: kick40068.A1200 - system: commodore-amiga - required: true - size: 524288 - crc32: 1483a091 - note: "A1200 Kickstart v3.1 rev 40.68" - source_ref: "amiberry_libretro.info firmware2" - - # --- Optional Kickstart ROMs --- - - - name: kick33180.A500 + - name: kick12.rom system: commodore-amiga required: false size: 262144 - crc32: a6ce1636 - note: "A500 Kickstart v1.2 rev 33.180" - source_ref: "amiberry_libretro.info firmware3" + note: "A500 Kickstart v1.2 rev 33.180, for A500OG model" + source_ref: "libretro/libretro.cpp:1515 candidates_a500og" + + - name: kick20.rom + system: commodore-amiga + required: false + size: 524288 + aliases: [kick204.rom] + note: "A500+ Kickstart v2.04 rev 37.175" + source_ref: "libretro/libretro.cpp:1517 candidates_a500p" + + - name: kick205.rom + system: commodore-amiga + required: false + size: 524288 + note: "A600 Kickstart v2.05 rev 37.350, also used for WHDLoad" + source_ref: "libretro/libretro.cpp:1518 candidates_a600, 1479 pick_whdload_kickstart" + + - name: kick31.rom + system: commodore-amiga + required: false + size: 524288 + note: "Kickstart v3.1 (generic), first candidate for A1200 and A4000" + source_ref: "libretro/libretro.cpp:1519-1520 candidates_a1200/a4000" + + - name: kick40068.A1200 + system: commodore-amiga + required: false + size: 524288 + note: "A1200 Kickstart v3.1 rev 40.68, fallback after kick31.rom" + source_ref: "libretro/libretro.cpp:1519 candidates_a1200" - name: kick40068.A4000 system: commodore-amiga required: false size: 524288 - crc32: d6bae334 - note: "A4000 Kickstart v3.1 rev 40.68" - source_ref: "amiberry_libretro.info firmware4" + note: "A4000 Kickstart v3.1 rev 40.68, fallback after kick31.rom" + source_ref: "libretro/libretro.cpp:1520 candidates_a4000" - - name: kick40060.CD32 - system: commodore-cd32 - required: false - size: 524288 - crc32: 1e62d4a5 - note: "CD32 Kickstart v3.1 rev 40.60" - source_ref: "amiberry_libretro.info firmware5" - - - name: kick40060.CD32.ext - system: commodore-cd32 - required: false - size: 524288 - crc32: 87746be2 - note: "CD32 Extended ROM rev 40.60" - source_ref: "amiberry_libretro.info firmware6" - - # --- Alternative names accepted by core option --- - # these are common user-facing names, same ROMs as above - - - name: kick13.rom + - name: kick.rom system: commodore-amiga required: false - note: "alias for kick34005.A500 (v1.3)" - source_ref: "libretro.cpp:630" + note: "Generic name, any Kickstart ROM. Last resort fallback for all models." + source_ref: "libretro/libretro.cpp:1510-1521 last in all candidate lists" - - name: kick34005.CDTV + # --- CD32 ROMs --- + + - name: cd32.rom + system: commodore-cd32 + required: false + size: 524288 + aliases: [amiga-os-310-cd32.rom, kick40060.CD32] + note: "CD32 Kickstart v3.1 rev 40.60" + source_ref: "libretro/libretro.cpp:1521 candidates_cd32" + + - name: cd32ext.rom + system: commodore-cd32 + required: false + size: 524288 + aliases: [amiga-ext-310-cd32.rom, "CD32 Extended.ROM"] + note: "CD32 extended ROM rev 40.60. Not needed if using a combined 1MB ROM." + source_ref: "libretro/libretro.cpp:1579 candidates_cd32 (find_ext_rom_in_system_dir)" + + # --- CDTV ROMs --- + + - name: cdtv.rom system: commodore-cdtv required: false - note: "CDTV extended ROM" - source_ref: "libretro.cpp:558 cdtv.rom option" + aliases: [kick34005.CDTV] + note: "CDTV extended ROM v1.00, used as kickstart candidate" + source_ref: "libretro/libretro.cpp:1522 candidates_cdtv" - # --- Standalone data files --- + - name: cdtvext.rom + system: commodore-cdtv + required: false + aliases: ["CDTV Extended.ROM"] + note: "CDTV extended ROM file" + source_ref: "libretro/libretro.cpp:1581 candidates_cdtv (find_ext_rom_in_system_dir)" - - name: AmigaTopaz.ttf + # --- AROS replacement ROMs --- + # ref: src/memory.cpp:1871-1930 load_kickstart_replacement + + - name: aros-ext.bin system: commodore-amiga required: false - mode: standalone - note: "Amiga Topaz font for UI rendering" - source_ref: "BlitterStudio/amiberry/data/AmigaTopaz.ttf" + hle_fallback: true + note: "AROS extended ROM replacement. Used when no Kickstart ROM is found." + source_ref: "src/memory.cpp:1877 load_kickstart_replacement" - - name: gamecontrollerdb.txt + - name: aros-rom.bin system: commodore-amiga required: false - mode: standalone - note: "SDL gamepad mapping database" - source_ref: "BlitterStudio/amiberry/controllers/gamecontrollerdb.txt" + hle_fallback: true + note: "AROS main ROM replacement. Used with aros-ext.bin as Kickstart fallback." + source_ref: "src/memory.cpp:1910 load_kickstart_replacement" + + # --- Cloanto key --- + + - name: rom.key + system: commodore-amiga + required: false + note: "Decryption key for Cloanto Amiga Forever encrypted ROMs" + source_ref: "src/rommgr.cpp:1738 AMIROMTYPE1 decryption" + + # --- Munt MT-32/CM-32L MIDI ROMs --- + # Located in mt32-roms/ subdirectory of the ROM path + # ref: src/midiemu.cpp:120-157 midi_emu_add_roms + + - name: mt32-roms/mt32_control.rom + system: commodore-amiga + required: false + aliases: [mt32-roms/ctrl_mt32.rom, mt32-roms/MT32_CONTROL.rom] + note: "Roland MT-32 control ROM for Munt MIDI emulation" + source_ref: "src/midiemu.cpp:38-61 mt32ctl candidates, 151-156 load loop" + + - name: mt32-roms/pcm_mt32.rom + system: commodore-amiga + required: false + aliases: [mt32-roms/mt32_pcm.rom, mt32-roms/MT32_PCM.rom, mt32-roms/PCM_MT32.rom] + note: "Roland MT-32 PCM ROM for Munt MIDI emulation" + source_ref: "src/midiemu.cpp:133-140 MT-32 PCM loading" + + - name: mt32-roms/cm32l_control.rom + system: commodore-amiga + required: false + aliases: [mt32-roms/ctrl_cm32l.rom, mt32-roms/CM32L_CONTROL.rom] + note: "Roland CM-32L control ROM for Munt MIDI emulation" + source_ref: "src/midiemu.cpp:25-37 cm32lctl candidates, 151-156 load loop" + + - name: mt32-roms/pcm_cm32l.rom + system: commodore-amiga + required: false + aliases: [mt32-roms/cm32l_pcm.rom, mt32-roms/PCM_CM32L.rom, mt32-roms/CM32L_PCM.rom] + note: "Roland CM-32L PCM ROM for Munt MIDI emulation" + source_ref: "src/midiemu.cpp:142-149 CM-32L PCM loading" diff --git a/emulators/bsnes2014.yml b/emulators/bsnes2014.yml index b45e3e3b..77c3b545 100644 --- a/emulators/bsnes2014.yml +++ b/emulators/bsnes2014.yml @@ -3,7 +3,7 @@ type: libretro core_classification: frozen_snapshot source: "https://github.com/libretro/bsnes2014" upstream: "https://github.com/bsnes-emu/bsnes" -profiled_date: "2026-03-23" +profiled_date: "2026-03-25" core_version: "v094" display_name: "Nintendo - SNES / SFC (bsnes 2014)" cores: [bsnes2014_accuracy, bsnes2014_balanced, bsnes2014_performance] @@ -15,30 +15,23 @@ systems: notes: | Frozen at bsnes v094. Three build profiles: accuracy (dot-based PPU), - balanced, performance (scanline PPU). All 3 share the same 18 firmware + balanced, performance (scanline PPU). All 3 share the same 16 firmware files. Profiles only differ in PPU (sfc/profile-*.hpp), not coprocessors. - Performance .info is wrong (firmware_count=17, missing cx4.data.rom). SPC700 IPL ROM (64 bytes) embedded in target-libretro/libretro.cpp:31. No HLE fallback for any coprocessor in v094. Firmware loaded from system_dir via file::exists() + mmapstream. - DSP1 (non-b) names used via embedded database for specific SHA256-matched - games; DSP1B names used via heuristic fallback for all DSP1/DSP1B games. + No hash or size validation on any firmware file. + Libretro build uses heuristics only (ananke/heuristics/), not the SHA256 + database (ananke/database/). All DSP1 games use DSP1B filenames via + heuristic fallback. The database dsp1.program.rom / dsp1.data.rom names + are only in the standalone build (target-ethos via ananke). + .info accuracy/balanced: firmware_count=18 (overcounts by 2, includes + phantom dsp1.* from unused database). Performance .info: firmware_count=17 + (also missing cx4.data.rom). Upstream v094 source is contained within the libretro repo (sfc/, ananke/). bsnes-emu/bsnes is the modern rewrite (v115+). files: - - name: dsp1.program.rom - system: nintendo-snes - required: false - size: 6144 - source_ref: "ananke/database/super-famicom.hpp:5658" - - - name: dsp1.data.rom - system: nintendo-snes - required: false - size: 2048 - source_ref: "ananke/database/super-famicom.hpp:5659" - - name: dsp1b.program.rom system: nintendo-snes required: false diff --git a/emulators/bsnes_mercury.yml b/emulators/bsnes_mercury.yml index 5b715152..4057b72d 100644 --- a/emulators/bsnes_mercury.yml +++ b/emulators/bsnes_mercury.yml @@ -3,7 +3,7 @@ type: libretro core_classification: enhanced_fork source: "https://github.com/libretro/bsnes-mercury" upstream: "https://byuu.org/higan" -profiled_date: "2026-03-23" +profiled_date: "2026-03-25" core_version: "v094 (Mercury)" display_name: "Nintendo - SNES / SFC (bsnes-mercury)" cores: [bsnes_mercury_accuracy, bsnes_mercury_balanced, bsnes_mercury_performance] @@ -22,7 +22,7 @@ notes: | Firmware loaded from system_dir via file::exists + mmapstream. No hash or size validation on any firmware file. - ref: target-libretro/libretro.cpp:241-263 + ref: target-libretro/libretro.cpp:242-264 firmware_appended: firmware can be appended to end of ROM file. ref: ananke/heuristics/super-famicom.hpp:83 diff --git a/emulators/gw.yml b/emulators/gw.yml index a7bf2d56..9e2cef0d 100644 --- a/emulators/gw.yml +++ b/emulators/gw.yml @@ -2,7 +2,8 @@ emulator: "Game & Watch" type: libretro core_classification: pure_libretro source: "https://github.com/libretro/gw-libretro" -profiled_date: "2026-03-21" +upstream: "http://www.madrigaldesign.it/sim/" +profiled_date: "2026-03-25" core_version: "Git" display_name: "Handheld Electronic (GW)" cores: diff --git a/emulators/lowresnx.yml b/emulators/lowresnx.yml index ad2047c4..68f83783 100644 --- a/emulators/lowresnx.yml +++ b/emulators/lowresnx.yml @@ -3,7 +3,7 @@ type: libretro core_classification: official_port source: "https://github.com/timoinutilis/lowres-nx" upstream: "https://github.com/timoinutilis/lowres-nx" -profiled_date: "2026-03-22" +profiled_date: "2026-03-25" core_version: "v1.2" display_name: "LowRes NX" cores: @@ -18,9 +18,10 @@ notes: | the same repository. retro_load_game() copies the .nx source code into memory - (libretro_main.c:490) and compiles it with the built-in interpreter. - The boot intro is a string constant embedded in boot_intro.c. The core - never accesses the system directory. No BIOS, firmware, or external + (libretro_main.c:490-493) and compiles it with the built-in interpreter. + The boot intro is a string constant embedded in boot_intro.c:26. Default + characters and charsets are compiled-in C arrays. The core never calls + RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. No BIOS, firmware, or external files required. files: [] diff --git a/emulators/lrps2.yml b/emulators/lrps2.yml index 3666a854..d94f411a 100644 --- a/emulators/lrps2.yml +++ b/emulators/lrps2.yml @@ -7,7 +7,7 @@ type: libretro core_classification: community_fork source: "https://github.com/libretro/ps2" upstream: "https://github.com/PCSX2/pcsx2" -profiled_date: "2026-03-24" +profiled_date: "2026-03-25" core_version: "Git" display_name: "Sony - PlayStation 2 (LRPS2)" cores: [lrps2] @@ -17,12 +17,14 @@ bios_directory: "pcsx2/bios/" resources_directory: "pcsx2/resources/" notes: | - Hard fork of PCSX2 ported to libretro. BIOS detection is filename-agnostic: the core - scans pcsx2/bios/ for any file between 4-8 MB with a valid romdir structure containing - RESET and ROMVER entries. The ROMVER entry determines region and version. - Companion files (.rom1, .rom2, .nvm, .mec) derive their paths from the selected BIOS. - DEV9 (network adapter) and USB are stubbed in the libretro port. - GameIndex.yaml in pcsx2/resources/ provides per-game patches for compatibility. + Hard fork of PCSX2 (pre-Qt, 1.7-dev era) ported to libretro. x86_64 only. + BIOS detection is filename-agnostic: scans pcsx2/bios/ for any file between 4-8 MB + with a valid romdir structure (RESET + ROMVER entries). No hash validation. + Companion files (.rom1, .rom2, .nvm, .mec) derive paths from the selected BIOS. + DEV9 (network/HDD) and USB are stubbed in the libretro port. + Widescreen patches are largely compiled into the core (libretro/patches.cpp). + .info firmware_count=2 counts the bios folder and GameIndex.yaml. + .info description mentions EROM.BIN but no EROM loading path exists in the code. files: - name: ".bin" @@ -32,7 +34,7 @@ files: min_size: 4194304 max_size: 8388608 validation: [size] - source_ref: "pcsx2/ps2/BiosTools.cpp:230-254,266-322" + source_ref: "pcsx2/ps2/BiosTools.cpp:231-254,267-322" note: > Scans pcsx2/bios/ for any file between 4 MB and 8 MB. Validates via romdir structure parsing (RESET + ROMVER entries). User selects BIOS via core option @@ -43,7 +45,7 @@ files: required: false max_size: 4194304 description: "DVD player ROM" - source_ref: "pcsx2/ps2/BiosTools.cpp:189-210,313" + source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,314" note: > DVD player ROM. Tries .rom1 (appended) then .rom1 (extension replaced). Silently skipped if not found. @@ -51,9 +53,9 @@ files: - name: ".rom2" path: "pcsx2/bios/" required: false - max_size: 4194304 + max_size: 524288 description: "Chinese ROM extension" - source_ref: "pcsx2/ps2/BiosTools.cpp:189-210,314" + source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,315" note: > Chinese region ROM extension. Same naming convention as rom1. Only present on Chinese region consoles. diff --git a/emulators/pcsx_rearmed.yml b/emulators/pcsx_rearmed.yml index 7633d1eb..08be2851 100644 --- a/emulators/pcsx_rearmed.yml +++ b/emulators/pcsx_rearmed.yml @@ -3,7 +3,7 @@ type: libretro core_classification: embedded_hle source: "https://github.com/libretro/pcsx_rearmed" upstream: "https://github.com/notaz/pcsx_rearmed" -profiled_date: "2026-03-24" +profiled_date: "2026-03-25" core_version: "r25" display_name: "Sony - PlayStation (PCSX ReARMed)" cores: [pcsx_rearmed, pcsx_rearmed_neon, pcsx_rearmed_interpreter] diff --git a/emulators/trident.yml b/emulators/trident.yml new file mode 100644 index 00000000..af432eb0 --- /dev/null +++ b/emulators/trident.yml @@ -0,0 +1,39 @@ +emulator: trident +display_name: "Nintendo - 3DS (Trident)" +type: libretro +core_classification: community_fork +source: https://github.com/DanAlexMorton/3dsTrident +upstream: https://github.com/wheremyfoodat/Panda3DS +profiled_date: 2026-03-25 +core_version: git + +cores: + - trident + +systems: + - 3ds + +notes: >- + Libretro core wrapping Panda3DS, an HLE Nintendo 3DS emulator. + Shared font, Mii data, country list and bad word list are embedded in + the binary via CMRC and compiled-in headers. DSP firmware is loaded from + the game ROM at runtime, not from an external file. + DSP modes: HLE (default), LLE (Teakra), Null. + Files are resolved from the RetroArch save directory + (/Emulator Files/sysdata/), not the system directory. + +files: + - name: aes_keys.txt + description: AES encryption keys for decrypting encrypted 3DS ROMs + required: false + source_ref: >- + src/emulator.cpp:234,242-244 (path construction and existence check); + src/core/crypto/aes_engine.cpp:13-92 (loadKeys, parses key=value text); + src/core/loader/ncch.cpp:151-164 (panic if encrypted ROM loaded without keys) + + - name: seeddb.bin + description: seed database for seed-encrypted 3DS games + required: false + source_ref: >- + src/emulator.cpp:235,246-248 (path construction and existence check); + src/core/crypto/aes_engine.cpp:94-153 (setSeedPath, loadSeeds, getSeedFromDB) diff --git a/emulators/tyrquake.yml b/emulators/tyrquake.yml index d8b4db91..bf4bfcb6 100644 --- a/emulators/tyrquake.yml +++ b/emulators/tyrquake.yml @@ -1,27 +1,25 @@ emulator: TyrQuake type: libretro +core_classification: game_engine source: "https://github.com/libretro/tyrquake" -profiled_date: "2026-03-18" +upstream: "http://disenchant.net/tyrquake/" +profiled_date: "2026-03-25" core_version: "v0.62" display_name: "Quake (TyrQuake)" cores: [tyrquake] systems: [quake] -verification: existence notes: > - Quake engine source port. Plays Quake (id1), mission packs Scourge of Armagon - (hipnotic) and Dissolution of Eternity (rogue), Quoth mod, and custom mods via - -game parameter. The core accepts .pak extensions (retro_get_system_info sets - valid_extensions = "pak"). Content is loaded directly from the PAK file path - - the directory containing the PAK becomes basedir (libretro.c:988,1050). - The engine auto-detects game variant by checking the content path for id1, - hipnotic, rogue, or quoth substrings (libretro.c:1030-1070) and passes the - corresponding command-line flag. For non-standard paths it uses -game with the - directory basename. PAK files are game data (maps, textures, models, sounds) - shipped with the original retail game, not engine firmware. The engine checks - for gfx/pop.lmp inside pak0.pak to distinguish registered vs shareware - (common.c:974-991). COM_AddGameDirectory (common.c:1709) loads pak0.pak through - pak9.pak sequentially from the game directory, trying both lowercase and - uppercase filenames. No engine data files are required in the RetroArch system - directory. The core needs no BIOS or firmware. + Quake engine source port by Kevin Shanahan (Tyrann). Plays Quake (id1), mission + packs Scourge of Armagon (hipnotic) and Dissolution of Eternity (rogue), Quoth + mod, and custom mods via -game parameter. Content is loaded directly from the + PAK file path — the directory containing the PAK becomes basedir + (libretro.c:988,1050). The engine auto-detects game variant by checking the + content path for id1, hipnotic, rogue, or quoth substrings + (libretro.c:1030-1070). All engine assets (gfx/palette.lmp, gfx/colormap.lmp, + gfx.wad, textures, models, sounds) are loaded from within PAK files via + COM_AddGameDirectory (common.c:1709), which tries pak0.pak through pak9.pak in + both lowercase and uppercase. The core never calls + RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. BGM as OGG tracks in music/ subfolder + of each game directory. files: [] diff --git a/emulators/uae4arm.yml b/emulators/uae4arm.yml index 217caf70..c33c0f2c 100644 --- a/emulators/uae4arm.yml +++ b/emulators/uae4arm.yml @@ -1,8 +1,64 @@ -emulator: "uae4arm" -type: alias -alias_of: "puae" -profiled_date: "2026-03-18" +emulator: uae4arm +type: libretro +core_classification: community_fork +cores: [uae4arm] +source: "https://github.com/libretro/uae4arm-libretro" +upstream: "https://github.com/PandTomB/uae4arm" +profiled_date: "2026-03-25" core_version: "v0.5" display_name: "Commodore - Amiga (UAE4ARM)" -note: "This core uses the same BIOS/firmware as puae. See emulators/puae.yml for details." -files: [] +systems: + - commodore-amiga + +notes: | + ARM-optimized Amiga emulator by TomB, ported to libretro by Chips-fr. + Based on an older uae4arm version, intended for low-powered ARM hardware + where PUAE cannot maintain full speed. + + Core options expose three models: A500, A600, A1200. Each selects its + Kickstart ROM automatically. Extended ROMs (CDTV/CD32) can be set via + .uae config files but CD32/CDTV hardware emulation is absent from + this port (no akiko chip, CD support listed as missing). + + Built-in AROS Kickstart replacement used as fallback when no ROM is found. + + Cloanto-encrypted ROMs require rom.key in the system directory. + +files: + - name: "kick34005.A500" + description: "Amiga 500 Kickstart v1.3 rev 34.005" + required: false + hle_fallback: true + source_ref: "libretro/core/libretro-core.cpp:73,420 src/memory.cpp:2080-2180" + + - name: "kick40063.A600" + description: "Amiga 600 Kickstart v3.1 rev 40.063" + required: false + hle_fallback: true + source_ref: "libretro/core/libretro-core.cpp:74,391 src/memory.cpp:2080-2180" + + - name: "kick40068.A1200" + description: "Amiga 1200 Kickstart v3.1 rev 40.068" + required: false + hle_fallback: true + source_ref: "libretro/core/libretro-core.cpp:75,405 src/memory.cpp:2080-2180" + + - name: "kick34005.CDTV" + description: "CDTV extended ROM v1.00 rev 34.005" + required: false + source_ref: "src/memory.cpp:1931-1971 (EXTENDED_ROM_CDTV via romextfile)" + + - name: "kick40060.CD32" + description: "CD32 Kickstart v3.1 rev 40.060" + required: false + source_ref: "src/memory.cpp:2080-2180 (loaded via romfile from .uae config)" + + - name: "kick40060.CD32.ext" + description: "CD32 extended ROM rev 40.060" + required: false + source_ref: "src/memory.cpp:1931-1971 (EXTENDED_ROM_CD32 via romextfile)" + + - name: "rom.key" + description: "Cloanto Amiga Forever decryption key" + required: false + source_ref: "src/memory.cpp:598-613,625-700 (addkeydir, load_keyring)" diff --git a/emulators/ume2015.yml b/emulators/ume2015.yml index 77c8c889..f5bf51be 100644 --- a/emulators/ume2015.yml +++ b/emulators/ume2015.yml @@ -1,8 +1,477 @@ -emulator: "ume2015" -type: alias -alias_of: "mame2016" -profiled_date: "2026-03-18" -core_version: "0.160" +emulator: UME 2015 +type: libretro +core_classification: frozen_snapshot +source: "https://github.com/libretro/mame2015-libretro" +upstream: "https://github.com/mamedev/mame/tree/mame0159" +logo: "https://raw.githubusercontent.com/mamedev/mame/master/docs/source/images/MAMElogo.svg" +profiled_date: "2026-03-25" +core_version: "0.159" display_name: "Multi (UME 2015)" -note: "This core uses the same BIOS/firmware as mame2016. See emulators/mame2016.yml for details." -files: [] +mame_version: "0.159" + +cores: + - ume2015 +systems: + - snk-neogeo-mvs + - snk-neogeo-aes + - igs-pgm + - sega-naomi + - sega-naomi2 + - sega-naomigd + - sammy-atomiswave + - sega-stv + - sega-lindbergh + - sega-hikaru + - sega-chihiro + - sega-triforce + - deco-cassette + - nintendo-playch10 + - sega-megaplay + - sega-megatech + - nintendo-sfcbox + - nintendo-nss + - philips-cdi + - commodore-cubo + - namco-system246 + - namco-system256 + - namco-system573 + - konami-viper + - taito-gnet + - super-kaneko-nova + - capcom-zn1 + - capcom-zn2 + - konami-gv + - panasonic-3do + - hyper-neogeo64 + - konami-twinkle + +notes: | + Universal Machine Emulator — combined MAME + MESS before the official + merge at MAME 0.162. Same repo as mame2015 (mame2015-libretro), built + with -DWANT_UME including both mame.mak and mess.mak. 69 arcade BIOS + root sets (identical to mame2015), plus 619 MESS computer/console + drivers. Source version.c says 0.159, .info claims 0.160. + + Paths under system_dir/ume2015/ (samples, artwork, cheat, hash, ini). + Software list hash XMLs in system_dir/ume2015/hash/ (375 files from + repo hash/ directory, required for MESS software list support). + Per-game XML cheats in system_dir/ume2015/cheat/. + hiscore.dat loaded via f.open("hiscore", ".dat") without explicit + search path (libretro-specific path code disabled via #if 0). + + ROM naming follows MAME 0.159 conventions. + +files: + # Data files (system_dir/ume2015/) + - name: hiscore.dat + required: false + category: game_data + source_ref: "src/emu/hiscore.c:335-337" + note: "high score definitions, external file, not embedded" + + # SNK Neo Geo MVS/AES + - name: neogeo.zip + required: true + category: bios_zip + system: snk-neogeo-mvs + source_ref: "src/mame/drivers/neogeo.c:1529" + + # IGS PGM + - name: pgm.zip + required: true + category: bios_zip + system: igs-pgm + source_ref: "src/mame/drivers/pgm.c:4147" + + # Sega Naomi / Naomi 2 / Naomi GD-ROM / Atomiswave + - name: naomi.zip + required: true + category: bios_zip + system: sega-naomi + source_ref: "src/mame/drivers/naomi.c:8960" + + - name: naomi2.zip + required: true + category: bios_zip + system: sega-naomi2 + source_ref: "src/mame/drivers/naomi.c:8965" + + - name: naomigd.zip + required: true + category: bios_zip + system: sega-naomigd + source_ref: "src/mame/drivers/naomi.c:8966" + + - name: awbios.zip + required: true + category: bios_zip + system: sammy-atomiswave + source_ref: "src/mame/drivers/naomi.c:9275" + + - name: hod2bios.zip + required: false + category: bios_zip + source_ref: "src/mame/drivers/naomi.c:8961" + note: "game-specific BIOS for House of the Dead 2" + + - name: f355dlx.zip + required: false + category: bios_zip + source_ref: "src/mame/drivers/naomi.c:8962" + note: "game-specific BIOS for Ferrari F355 Challenge deluxe" + + - name: f355bios.zip + required: false + category: bios_zip + source_ref: "src/mame/drivers/naomi.c:8963" + note: "game-specific BIOS for Ferrari F355 Challenge twin" + + - name: airlbios.zip + required: false + category: bios_zip + source_ref: "src/mame/drivers/naomi.c:8964" + note: "game-specific BIOS for Airline Pilots deluxe" + + # Sega ST-V + - name: stvbios.zip + required: true + category: bios_zip + system: sega-stv + source_ref: "src/mame/drivers/stv.c:3042" + + # Sega Hikaru / Chihiro / Triforce / Lindbergh + - name: hikaru.zip + required: true + category: bios_zip + system: sega-hikaru + source_ref: "src/mame/drivers/hikaru.c:744" + + - name: chihiro.zip + required: true + category: bios_zip + system: sega-chihiro + source_ref: "src/mame/drivers/chihiro.c:2192" + + - name: triforce.zip + required: true + category: bios_zip + system: sega-triforce + source_ref: "src/mame/drivers/triforce.c:1021" + + - name: lindbios.zip + required: true + category: bios_zip + system: sega-lindbergh + source_ref: "src/mame/drivers/lindbergh.c:569" + + # DECO Cassette + - name: decocass.zip + required: true + category: bios_zip + system: deco-cassette + source_ref: "src/mame/drivers/decocass.c:1647" + + # Nintendo arcade + - name: playch10.zip + required: true + category: bios_zip + system: nintendo-playch10 + source_ref: "src/mame/drivers/playch10.c:1639" + + - name: nss.zip + required: true + category: bios_zip + system: nintendo-nss + source_ref: "src/mame/drivers/nss.c:1058" + + - name: sfcbox.zip + required: true + category: bios_zip + system: nintendo-sfcbox + source_ref: "src/mame/drivers/sfcbox.c:572" + + # Sega Mega Drive arcade + - name: megaplay.zip + required: true + category: bios_zip + system: sega-megaplay + source_ref: "src/mame/drivers/megaplay.c:942" + + - name: megatech.zip + required: true + category: bios_zip + system: sega-megatech + source_ref: "src/mame/drivers/megatech.c:1393" + + # Philips CD-i + - name: cdibios.zip + required: true + category: bios_zip + system: philips-cdi + source_ref: "src/mame/drivers/cdi.c:611" + + # Commodore Cubo (CD32-based) + - name: cubo.zip + required: true + category: bios_zip + system: commodore-cubo + source_ref: "src/mame/drivers/cubo.c:1362" + + # Namco boards + - name: sys246.zip + required: true + category: bios_zip + system: namco-system246 + source_ref: "src/mame/drivers/namcops2.c:672" + + - name: sys256.zip + required: true + category: bios_zip + system: namco-system256 + source_ref: "src/mame/drivers/namcops2.c:705" + + - name: sys573.zip + required: true + category: bios_zip + system: namco-system573 + source_ref: "src/mame/drivers/ksys573.c:4678" + + # Konami + - name: kviper.zip + required: true + category: bios_zip + system: konami-viper + source_ref: "src/mame/drivers/viper.c:2609" + + - name: konamigv.zip + required: true + category: bios_zip + system: konami-gv + source_ref: "src/mame/drivers/konamigv.c:822" + + - name: konamigx.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/konamigx.c:3775" + + - name: gq863.zip + required: true + category: bios_zip + system: konami-twinkle + source_ref: "src/mame/drivers/twinkle.c:1330" + + # Taito + - name: taitogn.zip + required: true + category: bios_zip + system: taito-gnet + source_ref: "src/mame/drivers/taitogn.c:1081" + + - name: taitotz.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/taitotz.c:2951" + + - name: taitofx1.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/zn.c:4906" + + # PSX-based arcade boards (ZN) + - name: cpzn1.zip + required: true + category: bios_zip + system: capcom-zn1 + source_ref: "src/mame/drivers/zn.c:4800" + + - name: cpzn2.zip + required: true + category: bios_zip + system: capcom-zn2 + source_ref: "src/mame/drivers/zn.c:4823" + + - name: atpsx.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/zn.c:4853" + + - name: acpsx.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/zn.c:4862" + + - name: tps.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/zn.c:4873" + + - name: vspsx.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/zn.c:4896" + + - name: psarc95.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/zn.c:4935" + + - name: atluspsx.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/zn.c:4961" + + # Super Kaneko Nova System + - name: skns.zip + required: true + category: bios_zip + system: super-kaneko-nova + source_ref: "src/mame/drivers/suprnova.c:1734" + + - name: mac2bios.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/macs.c:747" + + - name: macsbios.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/macs.c:746" + + # Panasonic 3DO + - name: 3dobios.zip + required: true + category: bios_zip + system: panasonic-3do + source_ref: "src/mame/drivers/3do.c:253" + + # Hyper Neo-Geo 64 + - name: hng64.zip + required: true + category: bios_zip + system: hyper-neogeo64 + source_ref: "src/mame/drivers/hng64.c:1991" + + # Arcadia Systems + - name: ar_bios.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/arcadia.c:963" + + # American Laser Games + - name: alg_bios.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/alg.c:772" + + # Aleck64 (N64-based) + - name: aleck64.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/aleck64.c:1161" + + # Atari System 1 + - name: atarisy1.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/atarisy1.c:2368" + + # Exidy Max-A-Flex + - name: maxaflex.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/maxaflex.c:536" + + # Crystal System + - name: crysbios.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/crystal.c:1134" + + # Galaxy Games + - name: galgbios.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/tmaster.c:1850" + + # Aristocrat MK5/MK6 + - name: aristmk5.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/aristmk5.c:739" + + - name: aristmk6.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/aristmk6.c:224" + + - name: mk6nsw11.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/aristmk6.c:225" + + # Pinball + - name: allied.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/allied.c:711" + + - name: gp_110.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/gp_1.c:531" + + - name: gts1.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/gts1.c:978" + + - name: gts1s.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/gts1.c:981" + + # Other BIOS root sets + - name: bubsys.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/nemesis.c:2707" + + - name: isgsm.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/segas16b.c:7501" + + - name: iteagle.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/iteagle.c:315" + + - name: pyson.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/pyson.c:251" + + - name: sammymdl.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/sigmab98.c:2277" + + - name: shtzone.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/shtzone.c:121" + + - name: su2000.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/su2000.c:296" + + - name: tourvis.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/tourvis.c:612" + + - name: v4bios.zip + required: true + category: bios_zip + source_ref: "src/mame/drivers/mpu4vid.c:3655" diff --git a/emulators/uw8.yml b/emulators/uw8.yml index 61f01c1e..09b882af 100644 --- a/emulators/uw8.yml +++ b/emulators/uw8.yml @@ -1,13 +1,16 @@ emulator: MicroW8 -profiled_date: "2026-03-18" +profiled_date: "2026-03-25" core_version: "0.2.2" display_name: "MicroW8" type: game +core_classification: pure_libretro +source: https://github.com/libretro/uw8-libretro +upstream: https://github.com/exoticorn/microw8 cores: [uw8] systems: [] files: [] notes: > - MicroW8 is a WebAssembly-based fantasy console with a 320x240 screen, - 32-color palette, and a 256KB memory limit. Programs are compiled to - compact WASM modules (.uw8 format). The runtime is fully self-contained - with no external dependencies. No BIOS or system directory files required. + WebAssembly-based fantasy console. 320x240 screen, 32-color palette, + 256KB memory. The WASM runtime (platform + loader modules) is compiled + to C via wasm2c and embedded in the binary. No external files required. + firmware_count=0 in .info is correct. diff --git a/emulators/uxn.yml b/emulators/uxn.yml index d1b96c18..d6b02d88 100644 --- a/emulators/uxn.yml +++ b/emulators/uxn.yml @@ -1,15 +1,19 @@ emulator: UXN -type: game -source: "https://github.com/libretro/uxn" -profiled_date: "2026-03-18" -core_version: "0.0.0" +type: libretro +core_classification: community_fork +source: "https://codeberg.org/iyzsong/uxn-libretro" +upstream: "https://github.com/chmod222/zuxn" +profiled_date: "2026-03-25" +core_version: "0.0.1" display_name: "Uxn / Varvara (zuxn)" cores: [uxn] systems: [] files: [] +exclusion_note: > + Uxn/Varvara is a software-defined stack machine with 64KB of memory. + The VM has no firmware or BIOS. ROMs compiled from Uxntal assembly are + loaded directly via libretro game_info. The .info declares no firmware. notes: > - Libretro port of the Varvara/UXN stack machine designed by Hundred Rabbits. - UXN is a portable 8-bit virtual computer with 64KB of memory and a - minimal instruction set. Loads .rom files compiled from Uxntal assembly. - The VM is entirely software-defined with no firmware or BIOS dependencies. - No system directory files required. + Libretro wrapper around the zuxn library (Zig implementation of the + Uxn/Varvara spec by Hundred Rabbits). The file device in Varvara handles + ROM-initiated I/O but does not load system files from the system directory. diff --git a/emulators/uzem.yml b/emulators/uzem.yml index 169fa5be..bf436313 100644 --- a/emulators/uzem.yml +++ b/emulators/uzem.yml @@ -1,46 +1,38 @@ emulator: uzem type: libretro +core_classification: pure_libretro source: "https://github.com/libretro/libretro-uzem" -profiled_date: "2026-03-18" -core_version: "3.1" -display_name: "Uzem (Uzebox)" +upstream: "https://github.com/Uzebox/uzebox" +profiled_date: "2026-03-25" +core_version: "v2.0" display_name: "Uzebox (Uzem)" cores: - uzem systems: - uzebox -# Uzem emulates the Uzebox, an open-source 8-bit game console based on an -# ATmega644 AVR microcontroller. The console was designed by Alec Bourque (Uze) -# and all hardware/software is open-source. +# No BIOS or firmware files required. The Uzebox is an open-source 8-bit game +# console (ATmega644 AVR MCU) with no proprietary firmware. Games are +# self-contained .uze files loaded directly into progmem +# (uzem_libretro.cpp:254-286, "UZEBOX" magic header + RomHeader + program data). # -# No BIOS or firmware files are required. The core loads .uze ROM files directly -# into progmem (uzem_libretro.cpp:254-286). The .uze format includes a "UZEBOX" -# magic header followed by a RomHeader struct (uzerom.h) and raw program data. +# The libretro core does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. +# SD card emulation uses GET_CORE_ASSETS_DIRECTORY (uzem_libretro.cpp:186-192) +# for optional game data via virtual FAT16 filesystem (SDEmulator.cpp). +# EEPROM is handled via RETRO_MEMORY_SAVE_RAM (uzem_libretro.cpp:407-408). # -# The standalone uzem (oldsrcs/uzem.cpp:90) has a --boot flag that sets PC to -# 0xF000 for bootloader mode, but this is NOT exposed in the libretro port. -# The libretro core has no retro_environment calls for RETRO_ENVIRONMENT_SET_SYSTEM_DIR -# or any firmware loading paths. +# The standalone uzem supports --boot (PC=0xF000) for bootloader mode +# (uzem.cpp:206) and .hex format loading, neither exposed in the libretro port. # -# SD card emulation uses RETRO_ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY -# (uzem_libretro.cpp:186-192) for virtual FAT16 filesystem access via SDEmulator.cpp, -# but this is optional game data, not system firmware. -# -# The .info file declares no firmware entries. +# The .info file declares no firmware entries (firmware_count absent). files: [] notes: open_source_console: > - The Uzebox is fully open-source hardware and software. There is no proprietary - BIOS or bootloader required. Games are self-contained .uze files that include - all code needed to run on the ATmega644 MCU emulation. + Fully open-source hardware and software designed by Alec Bourque. + No proprietary BIOS or bootloader. Games are self-contained .uze files. sd_card: > Some games use SD card access for loading assets. The core reads from the - libretro core assets directory to emulate a FAT16 SD card, but this is game - data, not system firmware. - standalone_bootloader: > - The original standalone uzem supports a --boot flag for bootloader mode - (PC starts at 0xF000 instead of 0x0000). This feature is not available in - the libretro port. + libretro core assets directory to emulate a FAT16 SD card (game data, not + system firmware). diff --git a/emulators/vaporspec.yml b/emulators/vaporspec.yml index d3e29a82..a2f6dc88 100644 --- a/emulators/vaporspec.yml +++ b/emulators/vaporspec.yml @@ -1,14 +1,17 @@ emulator: VaporSpec -type: game -source: "https://github.com/libretro/libretro-vaporspec" -profiled_date: "2026-03-18" +type: libretro +core_classification: official_port +source: "https://github.com/minkcv/vm" +upstream: "https://github.com/minkcv/vm" +profiled_date: "2026-03-25" core_version: "GIT" display_name: "VaporSpec" cores: [vaporspec] -systems: [] +systems: [vaporspec] files: [] notes: > - Fantasy console for libretro inspired by retro hardware aesthetics. - Provides a virtual machine with fixed specs (256x192 display, 4-channel - audio) for running homebrew .vaporbin cartridge files. - No BIOS, firmware, or system directory files required. + Fantasy console with fixed specs (256x192 display, 4-channel audio, + 256-color palette). Runs .vaporbin cartridge bundles containing code + and optional ROM data. All content is self-contained in the bundle + passed by the frontend; no system directory files loaded. + firmware_count=0 confirmed by code analysis. diff --git a/emulators/vba_next.yml b/emulators/vba_next.yml index 8318c8af..4a289f2b 100644 --- a/emulators/vba_next.yml +++ b/emulators/vba_next.yml @@ -1,7 +1,9 @@ emulator: VBA-Next type: libretro +core_classification: frozen_snapshot source: "https://github.com/libretro/vba-next" -profiled_date: "2026-03-18" +upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m" +profiled_date: "2026-03-25" core_version: "SVN" display_name: "Nintendo - Game Boy Advance (VBA Next)" cores: @@ -10,64 +12,34 @@ systems: - nintendo-gba notes: | - VBA-Next is a Game Boy Advance emulator forked from VBA-M, optimized for - libretro. It includes a built-in HLE BIOS (myROM array in src/gba.cpp:8423) - that handles all standard SWI calls, so no external BIOS file is needed for - most games. + Frozen snapshot of VBA-M circa 2011, optimized for libretro by Squarepusher. - BIOS loading is gated behind HAVE_HLE_BIOS (defined in build/Makefile.common) - and controlled by core option vbanext_bios (default: enabled). When enabled, - the libretro port looks for gba_bios.bin in RetroArch's system directory - (libretro/libretro.cpp:198-203). CPUInit() loads the file via utilLoad(), - validates it is exactly 0x4000 bytes (16 KB), and sets useBios = true - (src/gba.cpp:12413-12443). If loading fails or the option is off, the HLE - BIOS (myROM) is memcpy'd into the bios buffer instead. + Built-in HLE BIOS (myROM array, src/gba.cpp:8423) handles all standard SWI + calls. No external BIOS file needed for most games. - CPUIsGBABios() accepts extensions: .gba, .agb, .bin, .bios, .rom + BIOS loading gated by HAVE_HLE_BIOS (build/Makefile.common:3) and core option + vbanext_bios (default: enabled). When enabled, retro_init resolves gba_bios.bin + in system_dir (libretro/libretro.cpp:198-202). CPUInit loads via utilLoad(), + validates size == 0x4000, sets useBios = true (src/gba.cpp:12430-12438). On + failure, myROM is memcpy'd as HLE fallback (src/gba.cpp:12443). + + With real BIOS, execution starts at 0x00000000 (BIOS entry point). Without, + jumps to 0x08000000 (ROM entry), skipping boot animation + (src/gba.cpp:12657-12675). + + CPUIsGBABios accepts extensions: .gba, .agb, .bin, .bios, .rom (src/gba.cpp:8851-8873). - When useBios is true and skipBios is false, execution starts at 0x00000000 - (real BIOS entry). Otherwise it jumps straight to 0x08000000 (ROM entry), - skipping the boot animation (src/gba.cpp:12657-12675). - - The HLE BIOS covers: SoftReset, RegisterRamReset, Halt, VBlankIntrWait, - Div, Sqrt, ArcTan, ArcTan2, CpuSet, CpuFastSet, GetBiosChecksum, - BgAffineSet, ObjAffineSet, BitUnPack, LZ77UnComp (WRAM/VRAM), - HuffUnComp, RLUnComp (WRAM/VRAM), Diff8bitUnFilter (WRAM/VRAM), - Diff16bitUnFilter, MidiKey2Freq, SndDriverJmpTableCopy - (src/gba.cpp:2369-2578). - - Some per-game overrides in gbaover[] (libretro/libretro.cpp:235) have a - useBios field, but all entries currently set it to 0 (no game forces BIOS). + Upstream VBA-M CPUInit (src/core/gba/gba.cpp:3674-3702) is functionally + identical. No divergences in BIOS handling. files: - # ------------------------------------------------------- - # Game Boy Advance - BIOS (optional, HLE fallback) - # ------------------------------------------------------- - name: gba_bios.bin system: nintendo-gba required: false hle_fallback: true - size: 16384 # 16 KB (0x4000) - note: "GBA BIOS. Optional -- HLE replacement (myROM) handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy." - source_ref: "libretro/libretro.cpp:198-203, src/gba.cpp:12413-12443" - -platform_details: - gba: - bios_size: 16384 # 0x4000 - hle_bios: true - source_ref: "src/gba.cpp:8423 (myROM), src/gba.cpp:2369-2578 (SWI handlers)" - notes: | - BIOS buffer is always allocated at 0x4000 bytes (src/gba.cpp:8963). - If the real BIOS loads successfully (exactly 0x4000 bytes), useBios is - set to true and CPUReset starts at address 0x00000000 with IRQ disabled. - Otherwise myROM (built-in HLE stub) is copied in and execution starts - at 0x08000000 with standard register init. - - The core option vbanext_bios defaults to "enabled", so if gba_bios.bin - is present in the system directory it will be loaded automatically. - - BIOS reads at runtime go through the memory map (src/gba.cpp:792-1076). - Address range 0x0000-0x3FFF maps to the bios buffer. A biosProtected[4] - array at 0x00f029e1 is returned when reading outside the current PC - region, matching real GBA BIOS protection behavior. + size: 16384 + validation: [size] + description: "GBA BIOS" + note: "Optional. HLE replacement handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy." + source_ref: "libretro/libretro.cpp:198-202, src/gba.cpp:12430-12438" diff --git a/emulators/vbam.yml b/emulators/vbam.yml index cb94a4a8..c5217790 100644 --- a/emulators/vbam.yml +++ b/emulators/vbam.yml @@ -1,8 +1,49 @@ -emulator: "vbam" -type: alias -alias_of: "vba_next" -profiled_date: "2026-03-18" +emulator: VBA-M +type: "standalone + libretro" +core_classification: official_port +source: "https://github.com/libretro/vbam-libretro" +upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m" +profiled_date: "2026-03-25" core_version: "2.1.4" display_name: "Nintendo - Game Boy Advance (VBA-M)" -note: "This core uses the same BIOS/firmware as vba_next. See emulators/vba_next.yml for details." -files: [] +cores: + - vbam +systems: + - nintendo-gba + - nintendo-gb + - nintendo-gbc + +notes: | + Supports GB, GBC, GBA, and SGB (borders/palette only). + BIOS usage controlled by vbam_usebios core option (default: disabled). + Built-in HLE BIOS (myROM array) handles GBA SWI calls without external file. + GB/GBC boot sequence skipped when BIOS absent. + Upstream repo includes the libretro port in src/libretro/. + +files: + - name: gba_bios.bin + system: nintendo-gba + required: false + hle_fallback: true + size: 16384 + validation: [size] + description: "GBA BIOS" + source_ref: "src/gba/GBA.cpp:3262-3272 (CPUInit size check), src/libretro/libretro.cpp:846-851 (gba_init)" + + - name: gb_bios.bin + system: nintendo-gb + required: false + hle_fallback: true + size: 256 + validation: [size] + description: "Game Boy boot ROM" + source_ref: "src/gb/GB.cpp:2172-2192 (gbCPUInit size check), src/libretro/libretro.cpp:861-879 (gb_init)" + + - name: gbc_bios.bin + system: nintendo-gbc + required: false + hle_fallback: true + size: 2304 + validation: [size] + description: "Game Boy Color boot ROM" + source_ref: "src/gb/GB.cpp:2172-2192 (gbCPUInit size check), src/libretro/libretro.cpp:861-879 (gb_init)" diff --git a/emulators/vecx.yml b/emulators/vecx.yml index e694d1af..140616ed 100644 --- a/emulators/vecx.yml +++ b/emulators/vecx.yml @@ -1,7 +1,9 @@ emulator: vecx type: libretro +core_classification: community_fork source: "https://github.com/libretro/libretro-vecx" -profiled_date: "2026-03-18" +upstream: "https://github.com/jhawthorn/vecx" +profiled_date: "2026-03-25" core_version: "SVN" display_name: "GCE - Vectrex (vecx)" cores: diff --git a/emulators/vemulator.yml b/emulators/vemulator.yml index 4933c2c8..29574278 100644 --- a/emulators/vemulator.yml +++ b/emulators/vemulator.yml @@ -1,7 +1,9 @@ emulator: VeMUlator type: libretro +core_classification: official_port source: "https://github.com/libretro/vemulator-libretro" -profiled_date: "2026-03-18" +upstream: "closed-source Android app (removed from Google Play ~2020)" +profiled_date: "2026-03-25" core_version: "0.1" display_name: "VeMUlator" cores: @@ -10,32 +12,18 @@ systems: - sega-vmu notes: | - VeMUlator is a Sega Dreamcast Visual Memory Unit (VMU/VMS) emulator ported - from Android (Java) to C++ for libretro. It emulates the Sanyo LC8670 - "Potato" CPU, 128 KB flash memory, 48x32 monochrome LCD, piezo buzzer, - and basic timer subsystems. + Sega Dreamcast VMU/VMS emulator. Same author (Mahmoud Jaoune) ported + the original Android Java app to C++ for libretro. Emulates the Sanyo + LC8670 CPU, 128 KB flash, 48x32 LCD, piezo buzzer, and timers. - No BIOS files are required. The core uses High Level Emulation (HLE) to - bypass the VMU firmware entirely: + No BIOS files required. The core uses HLE exclusively: startCPU() + checks BIOSExists (always false), then initializeHLE() sets SFR + registers and system RAM directly (vmu.cpp:193-222). - - At startup, startCPU() checks the BIOSExists flag (vmu.cpp:195). When - false (always, in the libretro port), it calls initializeHLE() which - sets up SFR registers (SP=0x7F, PSW=0x02, IE=0x80, MCR=0x08, P7=0x02, - OCR=0xA3, BTCR=0x41) and system RAM variables directly (vmu.cpp:206-222). - - - A loadBIOS() function exists in the VMU class (vmu.cpp:82-137) and can - handle both encrypted (XOR 0x37, 4-byte header stripped) and unencrypted - BIOS images (first byte must be 0x2A = JMPF opcode). Maximum accepted - size is 0xF004 (61444) bytes, loaded into 0xF000 (61440) bytes of ROM. - However, this function is never called by the libretro frontend code. - retro_load_game() in main.cpp only loads game flash data, with no BIOS - path resolution or RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY call. - - - The README lists "BIOS support" as a planned future feature. - - The .info file declares no firmware entries (firmware_count absent). - Supported ROM formats: VMS (.vms), DCI (.dci), raw flash dump (.bin). - The core option "enable_flash_write" allows persistent saves for .bin files. + A loadBIOS() function exists (vmu.cpp:82-137) handling encrypted and + unencrypted BIOS images, but is never called from the libretro + interface. retro_load_game() only loads game flash data, with no + system directory query. README lists BIOS support as planned. files: [] diff --git a/emulators/vice_x128.yml b/emulators/vice_x128.yml new file mode 100644 index 00000000..2611c175 --- /dev/null +++ b/emulators/vice_x128.yml @@ -0,0 +1,52 @@ +emulator: "VICE x128" +type: libretro +core_classification: community_fork +source: "https://github.com/libretro/vice-libretro" +upstream: "https://sourceforge.net/projects/vice-emu/" +profiled_date: "2026-03-25" +core_version: "3.10" +display_name: "Commodore - C128 (VICE x128)" +cores: [vice_x128] +systems: [commodore-c128] +notes: > + System ROMs embedded in binary: C128 kernal (318020-05), chargen (390059-01), + BASIC lo (318018-04), BASIC hi (318019-04), C64 kernal (901227-03), C64 BASIC (901226-01), + plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001, 2031, + 2040, 3040, 4040, 9000). Embedded ROM check in sysfile_load takes priority over filesystem. + Localized kernal/chargen variants (DE, FI, FR, IT, NO, SE, CH) are in the embedded list + with NULL data pointers; selecting a non-international model produces uninitialized ROM data. + JiffyDOS requires True Drive Emulation enabled and a 1541/1571/1581 drive type. + C64 BASIC/kernal use shared names (basic-901226-01.bin, kernal-901227-03.bin) instead of + upstream c128-specific names (basic64-901226-01.bin, kernal64-901227-03.bin) to share + files with the C64 core in RetroArch's shared system directory. + +files: + - name: "JiffyDOS_C128.bin" + description: "JiffyDOS C128 kernal replacement" + required: false + source_ref: "retrodep/ui.c:309-310" + notes: "Loaded into KernalIntName when vice_jiffydos option is enabled." + + - name: "JiffyDOS_C64.bin" + description: "JiffyDOS C64 kernal replacement (GO64 mode)" + required: false + source_ref: "retrodep/ui.c:307-308" + notes: "Loaded into Kernal64Name when vice_jiffydos option is enabled." + + - name: "JiffyDOS_1541-II.bin" + description: "JiffyDOS 1541-II drive DOS replacement" + required: false + source_ref: "retrodep/ui.c:283-284" + notes: "Loaded into DosName1541ii when vice_jiffydos option is enabled." + + - name: "JiffyDOS_1571_repl310654.bin" + description: "JiffyDOS 1571 drive DOS replacement" + required: false + source_ref: "retrodep/ui.c:285-286" + notes: "Loaded into DosName1571 when vice_jiffydos option is enabled." + + - name: "JiffyDOS_1581.bin" + description: "JiffyDOS 1581 drive DOS replacement" + required: false + source_ref: "retrodep/ui.c:287-288" + notes: "Loaded into DosName1581 when vice_jiffydos option is enabled."