feat: re-profile 20 emulators, add trident and vice_x128

This commit is contained in:
Abdessamad Derraz
2026-03-25 12:23:32 +01:00
parent 93b071730a
commit a7bcd9b252
20 changed files with 964 additions and 279 deletions

View File

@@ -1,9 +1,10 @@
emulator: Amiberry emulator: Amiberry
type: standalone + libretro type: standalone + libretro
core_classification: official_port
source: "https://github.com/BlitterStudio/amiberry" source: "https://github.com/BlitterStudio/amiberry"
upstream: "https://github.com/tonioni/WinUAE" upstream: "https://github.com/tonioni/WinUAE"
profiled_date: "2026-03-18" profiled_date: "2026-03-25"
core_version: "v6.3.4" core_version: "v8.1.1"
display_name: "Commodore - Amiga (Amiberry)" display_name: "Commodore - Amiga (Amiberry)"
cores: [amiberry] cores: [amiberry]
systems: systems:
@@ -12,111 +13,179 @@ systems:
- commodore-cdtv - commodore-cdtv
notes: | notes: |
Amiberry is an Amiga emulator based on WinUAE, available as both Amiberry is an Amiga emulator based on WinUAE, available as both standalone
standalone and libretro core. No built-in kickstart fallback — a real and libretro core. No built-in kickstart — requires a real Kickstart ROM or
Kickstart ROM is required. external AROS replacement files (aros-ext.bin + aros-rom.bin).
Core option "amiberry_kickstart" selects the ROM file: Core option "amiberry_kickstart" overrides ROM selection: auto, kick.rom,
auto, kick.rom, kick13.rom, kick20.rom, kick31.rom, kick205.rom, kick13.rom, kick20.rom, kick31.rom, kick205.rom, kick40068.A1200,
kick40068.A1200, kick40068.A4000, cd32.rom, cdtv.rom. kick40068.A4000, cd32.rom, cdtv.rom. "auto" selects per model.
"auto" selects based on the model option. ref: libretro/libretro.cpp:558,621-640
ref: BlitterStudio/amiberry/libretro/libretro.cpp:558,621-634
Standalone mode ships with data/ directory (UI icons, virtual keyboards, Default model is A500 (KS 1.3). ROM search directories:
floppy sounds, AmigaTopaz.ttf font, gamecontrollerdb.txt). These are save_dir/Kickstarts, system_dir/Kickstarts, system_dir/save-data/Kickstarts,
compiled into the standalone binary but the libretro core may look for then system_dir as fallback.
them in the system directory. 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: files:
# --- Required Kickstart ROMs (from .info) --- # --- Kickstart ROMs (searched by find_kickstart_in_system_dir) ---
# ref: BlitterStudio/amiberry/libretro/libretro.cpp:558 # ref: libretro/libretro.cpp:1502-1565
# ref: WinUAE rommgr.cpp for ROM identification
- name: kick34005.A500 - name: kick13.rom
system: commodore-amiga system: commodore-amiga
required: true required: true
size: 262144 size: 262144
crc32: c4f0f55f note: "A500 Kickstart v1.3 rev 34.005, default for A500 model"
note: "A500 Kickstart v1.3 rev 34.5" source_ref: "libretro/libretro.cpp:1516 candidates_a500"
source_ref: "libretro-super/dist/info/amiberry_libretro.info firmware0"
- name: kick37350.A600 - name: kick12.rom
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
system: commodore-amiga system: commodore-amiga
required: false required: false
size: 262144 size: 262144
crc32: a6ce1636 note: "A500 Kickstart v1.2 rev 33.180, for A500OG model"
note: "A500 Kickstart v1.2 rev 33.180" source_ref: "libretro/libretro.cpp:1515 candidates_a500og"
source_ref: "amiberry_libretro.info firmware3"
- 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 - name: kick40068.A4000
system: commodore-amiga system: commodore-amiga
required: false required: false
size: 524288 size: 524288
crc32: d6bae334 note: "A4000 Kickstart v3.1 rev 40.68, fallback after kick31.rom"
note: "A4000 Kickstart v3.1 rev 40.68" source_ref: "libretro/libretro.cpp:1520 candidates_a4000"
source_ref: "amiberry_libretro.info firmware4"
- name: kick40060.CD32 - name: kick.rom
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
system: commodore-amiga system: commodore-amiga
required: false required: false
note: "alias for kick34005.A500 (v1.3)" note: "Generic name, any Kickstart ROM. Last resort fallback for all models."
source_ref: "libretro.cpp:630" 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 system: commodore-cdtv
required: false required: false
note: "CDTV extended ROM" aliases: [kick34005.CDTV]
source_ref: "libretro.cpp:558 cdtv.rom option" 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 system: commodore-amiga
required: false required: false
mode: standalone hle_fallback: true
note: "Amiga Topaz font for UI rendering" note: "AROS extended ROM replacement. Used when no Kickstart ROM is found."
source_ref: "BlitterStudio/amiberry/data/AmigaTopaz.ttf" source_ref: "src/memory.cpp:1877 load_kickstart_replacement"
- name: gamecontrollerdb.txt - name: aros-rom.bin
system: commodore-amiga system: commodore-amiga
required: false required: false
mode: standalone hle_fallback: true
note: "SDL gamepad mapping database" note: "AROS main ROM replacement. Used with aros-ext.bin as Kickstart fallback."
source_ref: "BlitterStudio/amiberry/controllers/gamecontrollerdb.txt" 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"

View File

@@ -3,7 +3,7 @@ type: libretro
core_classification: frozen_snapshot core_classification: frozen_snapshot
source: "https://github.com/libretro/bsnes2014" source: "https://github.com/libretro/bsnes2014"
upstream: "https://github.com/bsnes-emu/bsnes" upstream: "https://github.com/bsnes-emu/bsnes"
profiled_date: "2026-03-23" profiled_date: "2026-03-25"
core_version: "v094" core_version: "v094"
display_name: "Nintendo - SNES / SFC (bsnes 2014)" display_name: "Nintendo - SNES / SFC (bsnes 2014)"
cores: [bsnes2014_accuracy, bsnes2014_balanced, bsnes2014_performance] cores: [bsnes2014_accuracy, bsnes2014_balanced, bsnes2014_performance]
@@ -15,30 +15,23 @@ systems:
notes: | notes: |
Frozen at bsnes v094. Three build profiles: accuracy (dot-based PPU), 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. 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. SPC700 IPL ROM (64 bytes) embedded in target-libretro/libretro.cpp:31.
No HLE fallback for any coprocessor in v094. No HLE fallback for any coprocessor in v094.
Firmware loaded from system_dir via file::exists() + mmapstream. Firmware loaded from system_dir via file::exists() + mmapstream.
DSP1 (non-b) names used via embedded database for specific SHA256-matched No hash or size validation on any firmware file.
games; DSP1B names used via heuristic fallback for all DSP1/DSP1B games. 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/). Upstream v094 source is contained within the libretro repo (sfc/, ananke/).
bsnes-emu/bsnes is the modern rewrite (v115+). bsnes-emu/bsnes is the modern rewrite (v115+).
files: 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 - name: dsp1b.program.rom
system: nintendo-snes system: nintendo-snes
required: false required: false

View File

@@ -3,7 +3,7 @@ type: libretro
core_classification: enhanced_fork core_classification: enhanced_fork
source: "https://github.com/libretro/bsnes-mercury" source: "https://github.com/libretro/bsnes-mercury"
upstream: "https://byuu.org/higan" upstream: "https://byuu.org/higan"
profiled_date: "2026-03-23" profiled_date: "2026-03-25"
core_version: "v094 (Mercury)" core_version: "v094 (Mercury)"
display_name: "Nintendo - SNES / SFC (bsnes-mercury)" display_name: "Nintendo - SNES / SFC (bsnes-mercury)"
cores: [bsnes_mercury_accuracy, bsnes_mercury_balanced, bsnes_mercury_performance] cores: [bsnes_mercury_accuracy, bsnes_mercury_balanced, bsnes_mercury_performance]
@@ -22,7 +22,7 @@ notes: |
Firmware loaded from system_dir via file::exists + mmapstream. Firmware loaded from system_dir via file::exists + mmapstream.
No hash or size validation on any firmware file. 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. firmware_appended: firmware can be appended to end of ROM file.
ref: ananke/heuristics/super-famicom.hpp:83 ref: ananke/heuristics/super-famicom.hpp:83

View File

@@ -2,7 +2,8 @@ emulator: "Game & Watch"
type: libretro type: libretro
core_classification: pure_libretro core_classification: pure_libretro
source: "https://github.com/libretro/gw-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" core_version: "Git"
display_name: "Handheld Electronic (GW)" display_name: "Handheld Electronic (GW)"
cores: cores:

View File

@@ -3,7 +3,7 @@ type: libretro
core_classification: official_port core_classification: official_port
source: "https://github.com/timoinutilis/lowres-nx" source: "https://github.com/timoinutilis/lowres-nx"
upstream: "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" core_version: "v1.2"
display_name: "LowRes NX" display_name: "LowRes NX"
cores: cores:
@@ -18,9 +18,10 @@ notes: |
the same repository. the same repository.
retro_load_game() copies the .nx source code into memory retro_load_game() copies the .nx source code into memory
(libretro_main.c:490) and compiles it with the built-in interpreter. (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. The core The boot intro is a string constant embedded in boot_intro.c:26. Default
never accesses the system directory. No BIOS, firmware, or external 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 required.
files: [] files: []

View File

@@ -7,7 +7,7 @@ type: libretro
core_classification: community_fork core_classification: community_fork
source: "https://github.com/libretro/ps2" source: "https://github.com/libretro/ps2"
upstream: "https://github.com/PCSX2/pcsx2" upstream: "https://github.com/PCSX2/pcsx2"
profiled_date: "2026-03-24" profiled_date: "2026-03-25"
core_version: "Git" core_version: "Git"
display_name: "Sony - PlayStation 2 (LRPS2)" display_name: "Sony - PlayStation 2 (LRPS2)"
cores: [lrps2] cores: [lrps2]
@@ -17,12 +17,14 @@ bios_directory: "pcsx2/bios/"
resources_directory: "pcsx2/resources/" resources_directory: "pcsx2/resources/"
notes: | notes: |
Hard fork of PCSX2 ported to libretro. BIOS detection is filename-agnostic: the core Hard fork of PCSX2 (pre-Qt, 1.7-dev era) ported to libretro. x86_64 only.
scans pcsx2/bios/ for any file between 4-8 MB with a valid romdir structure containing BIOS detection is filename-agnostic: scans pcsx2/bios/ for any file between 4-8 MB
RESET and ROMVER entries. The ROMVER entry determines region and version. with a valid romdir structure (RESET + ROMVER entries). No hash validation.
Companion files (.rom1, .rom2, .nvm, .mec) derive their paths from the selected BIOS. Companion files (.rom1, .rom2, .nvm, .mec) derive paths from the selected BIOS.
DEV9 (network adapter) and USB are stubbed in the libretro port. DEV9 (network/HDD) and USB are stubbed in the libretro port.
GameIndex.yaml in pcsx2/resources/ provides per-game patches for compatibility. 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: files:
- name: "<bios>.bin" - name: "<bios>.bin"
@@ -32,7 +34,7 @@ files:
min_size: 4194304 min_size: 4194304
max_size: 8388608 max_size: 8388608
validation: [size] validation: [size]
source_ref: "pcsx2/ps2/BiosTools.cpp:230-254,266-322" source_ref: "pcsx2/ps2/BiosTools.cpp:231-254,267-322"
note: > note: >
Scans pcsx2/bios/ for any file between 4 MB and 8 MB. Validates via romdir 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 structure parsing (RESET + ROMVER entries). User selects BIOS via core option
@@ -43,7 +45,7 @@ files:
required: false required: false
max_size: 4194304 max_size: 4194304
description: "DVD player ROM" description: "DVD player ROM"
source_ref: "pcsx2/ps2/BiosTools.cpp:189-210,313" source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,314"
note: > note: >
DVD player ROM. Tries <biospath>.rom1 (appended) then <biosbase>.rom1 DVD player ROM. Tries <biospath>.rom1 (appended) then <biosbase>.rom1
(extension replaced). Silently skipped if not found. (extension replaced). Silently skipped if not found.
@@ -51,9 +53,9 @@ files:
- name: "<bios>.rom2" - name: "<bios>.rom2"
path: "pcsx2/bios/" path: "pcsx2/bios/"
required: false required: false
max_size: 4194304 max_size: 524288
description: "Chinese ROM extension" description: "Chinese ROM extension"
source_ref: "pcsx2/ps2/BiosTools.cpp:189-210,314" source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,315"
note: > note: >
Chinese region ROM extension. Same naming convention as rom1. Chinese region ROM extension. Same naming convention as rom1.
Only present on Chinese region consoles. Only present on Chinese region consoles.

View File

@@ -3,7 +3,7 @@ type: libretro
core_classification: embedded_hle core_classification: embedded_hle
source: "https://github.com/libretro/pcsx_rearmed" source: "https://github.com/libretro/pcsx_rearmed"
upstream: "https://github.com/notaz/pcsx_rearmed" upstream: "https://github.com/notaz/pcsx_rearmed"
profiled_date: "2026-03-24" profiled_date: "2026-03-25"
core_version: "r25" core_version: "r25"
display_name: "Sony - PlayStation (PCSX ReARMed)" display_name: "Sony - PlayStation (PCSX ReARMed)"
cores: [pcsx_rearmed, pcsx_rearmed_neon, pcsx_rearmed_interpreter] cores: [pcsx_rearmed, pcsx_rearmed_neon, pcsx_rearmed_interpreter]

39
emulators/trident.yml Normal file
View File

@@ -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
(<save_dir>/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)

View File

@@ -1,27 +1,25 @@
emulator: TyrQuake emulator: TyrQuake
type: libretro type: libretro
core_classification: game_engine
source: "https://github.com/libretro/tyrquake" 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" core_version: "v0.62"
display_name: "Quake (TyrQuake)" display_name: "Quake (TyrQuake)"
cores: [tyrquake] cores: [tyrquake]
systems: [quake] systems: [quake]
verification: existence
notes: > notes: >
Quake engine source port. Plays Quake (id1), mission packs Scourge of Armagon Quake engine source port by Kevin Shanahan (Tyrann). Plays Quake (id1), mission
(hipnotic) and Dissolution of Eternity (rogue), Quoth mod, and custom mods via packs Scourge of Armagon (hipnotic) and Dissolution of Eternity (rogue), Quoth
-game parameter. The core accepts .pak extensions (retro_get_system_info sets mod, and custom mods via -game parameter. Content is loaded directly from the
valid_extensions = "pak"). Content is loaded directly from the PAK file path - PAK file path — the directory containing the PAK becomes basedir
the directory containing the PAK becomes basedir (libretro.c:988,1050). (libretro.c:988,1050). The engine auto-detects game variant by checking the
The engine auto-detects game variant by checking the content path for id1, content path for id1, hipnotic, rogue, or quoth substrings
hipnotic, rogue, or quoth substrings (libretro.c:1030-1070) and passes the (libretro.c:1030-1070). All engine assets (gfx/palette.lmp, gfx/colormap.lmp,
corresponding command-line flag. For non-standard paths it uses -game with the gfx.wad, textures, models, sounds) are loaded from within PAK files via
directory basename. PAK files are game data (maps, textures, models, sounds) COM_AddGameDirectory (common.c:1709), which tries pak0.pak through pak9.pak in
shipped with the original retail game, not engine firmware. The engine checks both lowercase and uppercase. The core never calls
for gfx/pop.lmp inside pak0.pak to distinguish registered vs shareware RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. BGM as OGG tracks in music/ subfolder
(common.c:974-991). COM_AddGameDirectory (common.c:1709) loads pak0.pak through of each game directory.
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.
files: [] files: []

View File

@@ -1,8 +1,64 @@
emulator: "uae4arm" emulator: uae4arm
type: alias type: libretro
alias_of: "puae" core_classification: community_fork
profiled_date: "2026-03-18" cores: [uae4arm]
source: "https://github.com/libretro/uae4arm-libretro"
upstream: "https://github.com/PandTomB/uae4arm"
profiled_date: "2026-03-25"
core_version: "v0.5" core_version: "v0.5"
display_name: "Commodore - Amiga (UAE4ARM)" display_name: "Commodore - Amiga (UAE4ARM)"
note: "This core uses the same BIOS/firmware as puae. See emulators/puae.yml for details." systems:
files: [] - 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)"

View File

@@ -1,8 +1,477 @@
emulator: "ume2015" emulator: UME 2015
type: alias type: libretro
alias_of: "mame2016" core_classification: frozen_snapshot
profiled_date: "2026-03-18" source: "https://github.com/libretro/mame2015-libretro"
core_version: "0.160" 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)" display_name: "Multi (UME 2015)"
note: "This core uses the same BIOS/firmware as mame2016. See emulators/mame2016.yml for details." mame_version: "0.159"
files: []
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"

View File

@@ -1,13 +1,16 @@
emulator: MicroW8 emulator: MicroW8
profiled_date: "2026-03-18" profiled_date: "2026-03-25"
core_version: "0.2.2" core_version: "0.2.2"
display_name: "MicroW8" display_name: "MicroW8"
type: game type: game
core_classification: pure_libretro
source: https://github.com/libretro/uw8-libretro
upstream: https://github.com/exoticorn/microw8
cores: [uw8] cores: [uw8]
systems: [] systems: []
files: [] files: []
notes: > notes: >
MicroW8 is a WebAssembly-based fantasy console with a 320x240 screen, WebAssembly-based fantasy console. 320x240 screen, 32-color palette,
32-color palette, and a 256KB memory limit. Programs are compiled to 256KB memory. The WASM runtime (platform + loader modules) is compiled
compact WASM modules (.uw8 format). The runtime is fully self-contained to C via wasm2c and embedded in the binary. No external files required.
with no external dependencies. No BIOS or system directory files required. firmware_count=0 in .info is correct.

View File

@@ -1,15 +1,19 @@
emulator: UXN emulator: UXN
type: game type: libretro
source: "https://github.com/libretro/uxn" core_classification: community_fork
profiled_date: "2026-03-18" source: "https://codeberg.org/iyzsong/uxn-libretro"
core_version: "0.0.0" upstream: "https://github.com/chmod222/zuxn"
profiled_date: "2026-03-25"
core_version: "0.0.1"
display_name: "Uxn / Varvara (zuxn)" display_name: "Uxn / Varvara (zuxn)"
cores: [uxn] cores: [uxn]
systems: [] systems: []
files: [] 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: > notes: >
Libretro port of the Varvara/UXN stack machine designed by Hundred Rabbits. Libretro wrapper around the zuxn library (Zig implementation of the
UXN is a portable 8-bit virtual computer with 64KB of memory and a Uxn/Varvara spec by Hundred Rabbits). The file device in Varvara handles
minimal instruction set. Loads .rom files compiled from Uxntal assembly. ROM-initiated I/O but does not load system files from the system directory.
The VM is entirely software-defined with no firmware or BIOS dependencies.
No system directory files required.

View File

@@ -1,46 +1,38 @@
emulator: uzem emulator: uzem
type: libretro type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-uzem" source: "https://github.com/libretro/libretro-uzem"
profiled_date: "2026-03-18" upstream: "https://github.com/Uzebox/uzebox"
core_version: "3.1" profiled_date: "2026-03-25"
display_name: "Uzem (Uzebox)" core_version: "v2.0"
display_name: "Uzebox (Uzem)" display_name: "Uzebox (Uzem)"
cores: cores:
- uzem - uzem
systems: systems:
- uzebox - uzebox
# Uzem emulates the Uzebox, an open-source 8-bit game console based on an # No BIOS or firmware files required. The Uzebox is an open-source 8-bit game
# ATmega644 AVR microcontroller. The console was designed by Alec Bourque (Uze) # console (ATmega644 AVR MCU) with no proprietary firmware. Games are
# and all hardware/software is open-source. # 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 # The libretro core does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
# into progmem (uzem_libretro.cpp:254-286). The .uze format includes a "UZEBOX" # SD card emulation uses GET_CORE_ASSETS_DIRECTORY (uzem_libretro.cpp:186-192)
# magic header followed by a RomHeader struct (uzerom.h) and raw program data. # 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 # The standalone uzem supports --boot (PC=0xF000) for bootloader mode
# 0xF000 for bootloader mode, but this is NOT exposed in the libretro port. # (uzem.cpp:206) and .hex format loading, neither exposed in the libretro port.
# The libretro core has no retro_environment calls for RETRO_ENVIRONMENT_SET_SYSTEM_DIR
# or any firmware loading paths.
# #
# SD card emulation uses RETRO_ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY # The .info file declares no firmware entries (firmware_count absent).
# (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.
files: [] files: []
notes: notes:
open_source_console: > open_source_console: >
The Uzebox is fully open-source hardware and software. There is no proprietary Fully open-source hardware and software designed by Alec Bourque.
BIOS or bootloader required. Games are self-contained .uze files that include No proprietary BIOS or bootloader. Games are self-contained .uze files.
all code needed to run on the ATmega644 MCU emulation.
sd_card: > sd_card: >
Some games use SD card access for loading assets. The core reads from the 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 libretro core assets directory to emulate a FAT16 SD card (game data, not
data, not system firmware. 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.

View File

@@ -1,14 +1,17 @@
emulator: VaporSpec emulator: VaporSpec
type: game type: libretro
source: "https://github.com/libretro/libretro-vaporspec" core_classification: official_port
profiled_date: "2026-03-18" source: "https://github.com/minkcv/vm"
upstream: "https://github.com/minkcv/vm"
profiled_date: "2026-03-25"
core_version: "GIT" core_version: "GIT"
display_name: "VaporSpec" display_name: "VaporSpec"
cores: [vaporspec] cores: [vaporspec]
systems: [] systems: [vaporspec]
files: [] files: []
notes: > notes: >
Fantasy console for libretro inspired by retro hardware aesthetics. Fantasy console with fixed specs (256x192 display, 4-channel audio,
Provides a virtual machine with fixed specs (256x192 display, 4-channel 256-color palette). Runs .vaporbin cartridge bundles containing code
audio) for running homebrew .vaporbin cartridge files. and optional ROM data. All content is self-contained in the bundle
No BIOS, firmware, or system directory files required. passed by the frontend; no system directory files loaded.
firmware_count=0 confirmed by code analysis.

View File

@@ -1,7 +1,9 @@
emulator: VBA-Next emulator: VBA-Next
type: libretro type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/vba-next" 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" core_version: "SVN"
display_name: "Nintendo - Game Boy Advance (VBA Next)" display_name: "Nintendo - Game Boy Advance (VBA Next)"
cores: cores:
@@ -10,64 +12,34 @@ systems:
- nintendo-gba - nintendo-gba
notes: | notes: |
VBA-Next is a Game Boy Advance emulator forked from VBA-M, optimized for Frozen snapshot of VBA-M circa 2011, optimized for libretro by Squarepusher.
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.
BIOS loading is gated behind HAVE_HLE_BIOS (defined in build/Makefile.common) Built-in HLE BIOS (myROM array, src/gba.cpp:8423) handles all standard SWI
and controlled by core option vbanext_bios (default: enabled). When enabled, calls. No external BIOS file needed for most games.
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.
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). (src/gba.cpp:8851-8873).
When useBios is true and skipBios is false, execution starts at 0x00000000 Upstream VBA-M CPUInit (src/core/gba/gba.cpp:3674-3702) is functionally
(real BIOS entry). Otherwise it jumps straight to 0x08000000 (ROM entry), identical. No divergences in BIOS handling.
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).
files: files:
# -------------------------------------------------------
# Game Boy Advance - BIOS (optional, HLE fallback)
# -------------------------------------------------------
- name: gba_bios.bin - name: gba_bios.bin
system: nintendo-gba system: nintendo-gba
required: false required: false
hle_fallback: true hle_fallback: true
size: 16384 # 16 KB (0x4000) size: 16384
note: "GBA BIOS. Optional -- HLE replacement (myROM) handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy." validation: [size]
source_ref: "libretro/libretro.cpp:198-203, src/gba.cpp:12413-12443" description: "GBA BIOS"
note: "Optional. HLE replacement handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy."
platform_details: source_ref: "libretro/libretro.cpp:198-202, src/gba.cpp:12430-12438"
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.

View File

@@ -1,8 +1,49 @@
emulator: "vbam" emulator: VBA-M
type: alias type: "standalone + libretro"
alias_of: "vba_next" core_classification: official_port
profiled_date: "2026-03-18" 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" core_version: "2.1.4"
display_name: "Nintendo - Game Boy Advance (VBA-M)" 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." cores:
files: [] - 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)"

View File

@@ -1,7 +1,9 @@
emulator: vecx emulator: vecx
type: libretro type: libretro
core_classification: community_fork
source: "https://github.com/libretro/libretro-vecx" 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" core_version: "SVN"
display_name: "GCE - Vectrex (vecx)" display_name: "GCE - Vectrex (vecx)"
cores: cores:

View File

@@ -1,7 +1,9 @@
emulator: VeMUlator emulator: VeMUlator
type: libretro type: libretro
core_classification: official_port
source: "https://github.com/libretro/vemulator-libretro" 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" core_version: "0.1"
display_name: "VeMUlator" display_name: "VeMUlator"
cores: cores:
@@ -10,32 +12,18 @@ systems:
- sega-vmu - sega-vmu
notes: | notes: |
VeMUlator is a Sega Dreamcast Visual Memory Unit (VMU/VMS) emulator ported Sega Dreamcast VMU/VMS emulator. Same author (Mahmoud Jaoune) ported
from Android (Java) to C++ for libretro. It emulates the Sanyo LC8670 the original Android Java app to C++ for libretro. Emulates the Sanyo
"Potato" CPU, 128 KB flash memory, 48x32 monochrome LCD, piezo buzzer, LC8670 CPU, 128 KB flash, 48x32 LCD, piezo buzzer, and timers.
and basic timer subsystems.
No BIOS files are required. The core uses High Level Emulation (HLE) to No BIOS files required. The core uses HLE exclusively: startCPU()
bypass the VMU firmware entirely: 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 A loadBIOS() function exists (vmu.cpp:82-137) handling encrypted and
false (always, in the libretro port), it calls initializeHLE() which unencrypted BIOS images, but is never called from the libretro
sets up SFR registers (SP=0x7F, PSW=0x02, IE=0x80, MCR=0x08, P7=0x02, interface. retro_load_game() only loads game flash data, with no
OCR=0xA3, BTCR=0x41) and system RAM variables directly (vmu.cpp:206-222). system directory query. README lists BIOS support as planned.
- 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.
files: [] files: []

52
emulators/vice_x128.yml Normal file
View File

@@ -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."