chore: merge issue 87 and platform refresh

This commit is contained in:
Abdessamad Derraz committed 2026-11-09 07:24:48 +01:00
commit 19264db538
42 files changed
+3123 -376

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
emulator: "HyperScanEmu"
type: libretro
core_classification: official_port
source: "https://git.libretro.com/libretro/HyperScanEmu"
upstream: "https://github.com/AloysHF/HyperScanEmu"
profiled_date: "2026-11-09"
source_commit: "44509de141c7b9adf947b3130500e552cfa98f56"
upstream_commit: "44509de141c7b9adf947b3130500e552cfa98f56"
core_version: "0.1.0"
version_basis:
kind: file
path: "Cargo.toml"
pattern: 'version\s+=\s+"([^"]+)'
display_name: "Mattel - HyperScan (HyperScanEmu)"
cores:
- "hyperscanemu"
systems:
- mattel-hyperscan
notes: |
Mattel HyperScan (Sunplus SPG290) emulator written in Rust. The libretro
core and the standalone frontend share the same firmware loader.
ref: crates/hyperscanemu-core/src/firmware.rs:88-115
Both firmware files are read from <system>/hyperscanemu/. The folder and
file names are compared byte for byte against the directory listing, so a
name differing only in case is not found, Windows included. A missing
folder or file fails retro_load_game.
ref: crates/hyperscanemu-core/src/firmware.rs:10-14,
crates/hyperscanemu-core/src/firmware.rs:71-86,
crates/hyperscanemu-libretro/src/lib.rs:559-566
Each file must have its exact size and must not be filled with a single
byte value. No hash is checked.
ref: crates/hyperscanemu-core/src/firmware.rs:7-8,
crates/hyperscanemu-core/src/firmware.rs:160-178
files:
- name: "spg290.bin"
path: "hyperscanemu/spg290.bin"
system: mattel-hyperscan
required: true
size: 32768
validation: [size]
description: "SPG290 internal ROM"
note: "Rejected unless exactly 32768 bytes and not blank."
source_ref: "crates/hyperscanemu-core/src/firmware.rs:7, crates/hyperscanemu-core/src/firmware.rs:13, crates/hyperscanemu-core/src/firmware.rs:103-114, crates/hyperscanemu-core/src/firmware.rs:133"
- name: "hyperscan.bin"
path: "hyperscanemu/hyperscan.bin"
system: mattel-hyperscan
required: true
size: 1048576
validation: [size]
description: "HyperScan BIOS"
note: "Rejected unless exactly 1048576 bytes and not blank."
source_ref: "crates/hyperscanemu-core/src/firmware.rs:8, crates/hyperscanemu-core/src/firmware.rs:14, crates/hyperscanemu-core/src/firmware.rs:104-114, crates/hyperscanemu-core/src/firmware.rs:134"
+56
View File
@@ -0,0 +1,56 @@
emulator: "HypseusHW"
type: libretro
core_classification: community_fork
source: "https://git.libretro.com/libretro/hypseushw"
upstream: "https://github.com/DirtBagXon/hypseus-singe"
profiled_date: "2026-11-09"
source_commit: "cb4de9f9b3e8264e71b25b5552dfa1e26121c636"
upstream_commit: "a16e2521ee3233ef20c44e562008c47f4b4293df"
upstream_frozen: "Hypseus Singe is vendored in core/ at this commit, named in UPSTREAM.md, with local changes under __LIBRETRO__."
core_version: "0.2.0"
version_basis:
kind: file
path: "libretro/hypseushw_libretro.info"
pattern: 'display_version\s*=\s*"([^"]+)"'
display_name: "Arcade (Daphne HypseusHW)"
cores:
- "hypseushw"
systems:
- "arcade-laserdisc"
notes: |
Libretro port of Hypseus Singe, vendored in core/. The same core also runs
inside the project's Android app through its own libretro host
(host/lr_host.cpp), which passes an app-private folder as the system
directory.
Content is the Daphne folder: roms/<game>.zip, framefile/<game>.txt, vldp/,
or a RocketLauncher <game>.bat for Singe games. The ROM directory and the
game root are derived from the loaded path (libretro/lr_core.cpp:1418-1454)
and passed as -romdir. ROM members are read and checked by the engine as in
the standalone build.
The engine's pics/ and sound/ trees are compiled into the core
(libretro/CMakeLists.txt:215-223). At load the core uses
<system>/daphne/ as the asset folder when <system>/daphne/pics exists,
otherwise it writes the embedded copies to <saves>/daphne/assets/ and uses
those (libretro/lr_core.cpp:555-573, 1472-1487). Pictures and samples
resolve through find_file(): <saves>/daphne, then the asset folder, then the
game root (core/src/io/homedir.h:66-73, core/src/io/homedir.cpp:137-156).
The system folder only overrides files the core already carries.
fonts/ is never read: init_display() returns from lr_init_display() before
load_fonts() can run (core/src/video/video.cpp:550-554). hypinput.ini and
gamecontrollerdb.txt are skipped, input comes from the frontend
(core/src/io/input.cpp:1063-1068).
An optional <system>/daphne/<game>.commands file adds engine arguments,
read after roms/<game>.commands and <root>/<game>.commands
(libretro/lr_core.cpp:575-600, 1543-1549). It is user configuration.
files: []
exclusion_note: >
.info declares firmware_count = 0. Code confirmed: the system directory
holds only optional overrides of the pics/ and sound/ assets compiled into
the core, and optional .commands argument files.
+46
View File
@@ -0,0 +1,46 @@
emulator: "n64emu"
type: libretro
core_classification: enhanced_fork
source: "https://git.libretro.com/libretro/n64emu"
profiled_date: "2026-11-09"
source_commit: "c9da0acadaebe9bbfa4cf2b5662f2af7252988a3"
core_version: "0.01"
version_basis:
kind: file
path: "src/libretro.c"
pattern: 'info->library_version\s*=\s*"([^"]+)"'
display_name: "Nintendo - Nintendo 64 (n64emu)"
cores:
- "n64emu"
systems:
- nintendo-64
- nintendo-64dd
notes: |
Started in 2022 by mudlord from a copy of parallel-n64, imported without its
git history, and rewritten since: cycle-based CPU and RSP JITs, RSP HLE per
task with LLE fallback, GL, D3D, SoftRDP and paraLLEl-RDP backends.
The PIF boot ROM is high-level emulated, so cartridges need no file
(src/device/pif.c:35).
The 64DD IPL is the only file read from the system directory. A disk loaded
through the "N64 Disk Drive" subsystem with no IPL as second content looks for
IPL.n64, then 64DD_IPL.bin, at the root of the system directory and rejects
the load when neither passes the check (src/libretro.c:309-343). A disk found
as a .ndd sidecar of a cartridge reads IPL.n64 only, and a missing or
unrecognised IPL disables the 64DD while the cartridge still runs
(src/main/main.c:303-372). The IPL is accepted in Z64, N64 and V64 byte order.
Transfer Pak Game Boy ROM and save come from subsystem content or from .gb and
.sav sidecars of the cartridge (src/libretro.c:633-636).
files:
- name: "IPL.n64"
aliases: ["64DD_IPL.bin"]
path: "IPL.n64"
system: nintendo-64dd
required: true
min_size: 4096
max_size: 4194304
validation: [size]
description: "Nintendo 64DD IPL ROM"
note: "Size between 0x1000 and 0x400000 bytes, a multiple of 4, and a first word of 80270740 in one of the three byte orders. 64DD_IPL.bin is tried second by the subsystem path only."
source_ref: "src/libretro.c:259-271, 314-331"
+215
View File
@@ -0,0 +1,215 @@
emulator: "Odin"
type: libretro
core_classification: community_fork
source: "https://git.libretro.com/libretro/odin-libretro"
upstream: "https://github.com/Tovarichtch/Odin"
source_branch: "libretro"
profiled_date: "2026-11-09"
source_commit: "7cc427e4cc048e86753275f664bf0e59bbd002bf"
upstream_commit: "6ebf2b40ccbca9534d1a0e58b7602db11e4485d9"
core_version: "v0.1.1-46-g7cc427e"
version_basis:
kind: tag
tag: "v0.1.1"
distance: 46
display_name: "Sega - Hikaru / Gaelco PowerVR (Odin)"
cores:
- "odin"
systems:
- sega-hikaru
- gaelco-powervr
notes: |
Odin, a low-level emulator of the Sega Hikaru board and of Gaelco's PowerVR
boards (ATV Track, Smashing Drive, Gaelco Football), with a libretro frontend
by WizzardSK on top of Tovarichtch/Odin. The port's libretro branch holds the
upstream HEAD 6ebf2b40 as merge base. The ROM loader, the game list and the
board code are the upstream ones. The only difference in odin-games.json is
the direction of one Virtual-On lever.
retro_get_system_info reports library_version "libretro" unless the build
defines ODIN_LIBRETRO_VERSION, which the CMake files never do.
ref: src/odin/libretro/libretro_odin.cpp:1926-1936
The content is a MAME set, recognised by its stem in the game list. The
list is odin-games.json, embedded in the core and written to
<system>/odin/odin-games.json whenever the file there differs, then read back.
The mesh program lists under <system>/odin/shaders/ are written the same way,
and <system>/odin/cache/ is filled by the renderer. None of these is a file
the user supplies.
ref: src/odin/libretro/games_json.S:9, src/odin/libretro/libretro_odin.cpp:1019-1041,
src/odin/libretro/libretro_odin.cpp:1059-1090, src/odin/libretro/libretro_odin.cpp:1989-1993
Each file of a section is looked for in the content's folder (a folder
named after the game, then <game>.zip or .7z), then for the set the list
names (and for the parent set) as <set>.zip, <set>.7z and a <set>/ folder,
first in <system>/odin and then beside the content. Inside an archive a member
matches by size and the CRC32 of the list, the member name is not read. In a
folder the file matches by size and name, then by size and CRC32. A loose
file whose CRC32 differs is loaded with an error line in the log.
ref: src/odin/host/app/rom_files.cpp:296-314, src/odin/host/app/rom_files.cpp:316-347,
src/odin/host/app/rom_files.cpp:349-380, src/odin/host/app/rom_files.cpp:416-436,
src/odin/libretro/libretro_odin.cpp:2004-2006
A section of type alternative loads the first of its files found. A missing
section stops the load unless the list marks it optional, and the frontend is
told which sets miss files.
ref: src/odin/host/app/games.cpp:138-149, src/odin/host/app/games.cpp:1281-1316,
src/odin/libretro/libretro_odin.cpp:2007-2021
Every Hikaru game needs mie (315-6146) and the hikaru set: one of three boot
ROMs and the two EEPROM images 93c46.ic115 and x76f100.ic85. The I/O board
program (jvs13551 for 837-13551, 18wheelr for NASCAR Arcade's 837-13741) and
NASCAR Arcade's drive board program (srally2) are optional: without them
the board's imitation of that part runs.
ref: odin-games.json:56-93, odin-games.json:583-628,
src/odin/machine/boards/hikaru/hikaru.cpp:216-233,
src/odin/machine/boards/hikaru/mie_board.cpp:75-95,
src/odin/machine/boards/hikaru/hikaru.cpp:496-511
The Gaelco games read only their own sets, none shared.
ref: odin-games.json:853-1184
archive_prefix: "odin"
files:
- name: "hikaru.zip"
path: "odin/hikaru.zip"
system: sega-hikaru
required: true
category: bios_zip
note: "Hikaru BIOS set. Holds the boot ROM and the two EEPROM images every Hikaru game loads. Also read as hikaru.7z or a hikaru/ folder, in system/odin or beside the game."
source_ref: "odin-games.json:71-93, src/odin/host/app/rom_files.cpp:349-380"
- name: "epr-23400a.ic94"
archive: hikaru.zip
system: sega-hikaru
required: false
variant_group: "hikaru-bootrom"
priority: 1
size: 2097152
crc32: "2aa906a7"
validation: [size, crc32]
note: "Boot ROM v0.96, tried first of the three. One of the three is required. The list names it hikaru_0.96.bin, the name a loose file in a hikaru/ folder is matched by."
source_ref: "odin-games.json:85-93, src/odin/host/app/games.cpp:138-149, src/odin/machine/boards/hikaru/hikaru.cpp:218-221"
- name: "epr-23400.ic94"
archive: hikaru.zip
system: sega-hikaru
required: false
variant_group: "hikaru-bootrom"
priority: 2
size: 2097152
crc32: "3d557104"
validation: [size, crc32]
note: "Boot ROM v0.92, listed as hikaru_0.92.bin."
source_ref: "odin-games.json:85-93, src/odin/host/app/games.cpp:138-149"
- name: "epr-21904.ic94"
archive: hikaru.zip
system: sega-hikaru
required: false
variant_group: "hikaru-bootrom"
priority: 3
size: 2097152
crc32: "d96298b6"
validation: [size, crc32]
note: "Boot ROM v0.84, listed as hikaru_0.84.bin."
source_ref: "odin-games.json:85-93, src/odin/host/app/games.cpp:138-149"
- name: "93c46.ic115"
archive: hikaru.zip
system: sega-hikaru
required: true
size: 128
crc32: "737dc714"
validation: [size, crc32]
note: "Main board 93C46 EEPROM image. Its section is not optional, so a set without it does not load."
source_ref: "odin-games.json:71-77, src/odin/host/app/games.cpp:1305-1312, src/odin/machine/boards/hikaru/hikaru.cpp:298-303"
- name: "x76f100.ic85"
archive: hikaru.zip
system: sega-hikaru
required: true
size: 132
crc32: "194c6c18"
validation: [size, crc32]
note: "ROM board X76F100 EEPROM image. Its section is not optional, so a set without it does not load."
source_ref: "odin-games.json:78-84, src/odin/host/app/games.cpp:1305-1312, src/odin/machine/boards/hikaru/hikaru.cpp:304-308"
- name: "mie.zip"
path: "odin/mie.zip"
system: sega-hikaru
required: true
category: bios_zip
note: "MIE MCU firmware set. Also read as mie.7z or a mie/ folder, in system/odin or beside the game."
source_ref: "odin-games.json:56-62, src/odin/host/app/rom_files.cpp:349-380"
- name: "315-6146.bin"
archive: mie.zip
system: sega-hikaru
required: true
size: 2048
crc32: "9b197e35"
validation: [size, crc32]
note: "MIE Z80 program. The board refuses an image that is not 2048 bytes."
source_ref: "odin-games.json:56-62, src/odin/machine/boards/hikaru/hikaru.cpp:230-234"
- name: "jvs13551.zip"
path: "odin/jvs13551.zip"
system: sega-hikaru
required: false
hle_fallback: true
category: bios_zip
note: "837-13551 JVS I/O board set, for every Hikaru game but NASCAR Arcade. Without it the I/O board is imitated."
source_ref: "odin-games.json:63-70, src/odin/machine/boards/hikaru/mie_board.cpp:75-95"
- name: "315-6215.bin"
archive: jvs13551.zip
system: sega-hikaru
required: false
hle_fallback: true
size: 16384
crc32: "98202738"
validation: [size, crc32]
note: "TMP90PH44 program of the 837-13551 I/O board, run when its size is the chip's ROM size."
source_ref: "odin-games.json:63-70, src/odin/machine/boards/hikaru/mie_board.cpp:83-85"
- name: "18wheelr.zip"
path: "odin/18wheelr.zip"
system: sega-hikaru
required: false
hle_fallback: true
category: bios_zip
note: "MAME set of 18 Wheeler, read for the program of the 837-13741 I/O board NASCAR Arcade uses. Without it that board is imitated."
source_ref: "odin-games.json:590-597, src/odin/machine/boards/hikaru/mie_board.cpp:75-95"
- name: "epr-21868.ic7"
archive: 18wheelr.zip
system: sega-hikaru
required: false
hle_fallback: true
size: 65536
crc32: "c306a51f"
validation: [size, crc32]
note: "837-13741 I/O board EPROM."
source_ref: "odin-games.json:590-597, src/odin/machine/boards/hikaru/mie_board.cpp:86-88"
- name: "srally2.zip"
path: "odin/srally2.zip"
system: sega-hikaru
required: false
hle_fallback: true
category: bios_zip
note: "MAME set of Sega Rally 2, read for the program of the 838-13366 drive board NASCAR Arcade's steering wheel uses. Without it the drive board is imitated."
source_ref: "odin-games.json:598-605, src/odin/machine/boards/hikaru/hikaru.cpp:496-511"
- name: "epr-20512.bin"
archive: srally2.zip
system: sega-hikaru
required: false
hle_fallback: true
size: 65536
crc32: "cf64350d"
validation: [size, crc32]
note: "838-13366 drive board program, run when its size is the board's ROM size."
source_ref: "odin-games.json:598-605, src/odin/machine/boards/hikaru/hikaru.cpp:500-502"
+302
View File
@@ -0,0 +1,302 @@
emulator: "ParaLLEl DC"
type: libretro
core_classification: enhanced_fork
source: "https://github.com/libretro/parallel-dc"
upstream: "https://github.com/flyinghead/flycast"
profiled_date: "2026-11-09"
source_commit: "6f315dd55a66cb2299dd2282b24d2fd84fe7f390"
core_version: "0.1"
version_basis:
kind: file
path: "core/libretro/libretro.cpp"
pattern: 'info->library_version\s+=\s+"([^"]+)'
display_name: "Sega - Dreamcast/Naomi (ParaLLEl DC)"
cores:
- "parallel_dc"
systems:
- sega-dreamcast
- sega-naomi
- sega-naomi2
- sega-atomiswave
- sega-systemsp
notes: |
The libretro/flycast tree, renamed libretro/parallel-dc. Its master
descends from the April 2022 libretro merge base 4c293f30 and has been
developed on its own since December 2025, with fixes from flyinghead's
Flycast brought over by hand. The library is parallel_dc_libretro.so.
ref: source core/libretro/libretro.cpp:3490-3494
Every system file lives in <system>/dc/. The core creates <system>/dc/data,
where it writes shader and pipeline caches and texture dumps. Nothing is
read from it.
ref: source core/libretro/libretro.cpp:2917-2921, source core/libretro/libretro.cpp:3047-3055,
source core/stdclass.cpp:15-25
Dreamcast: the "Use Real BIOS" core option (use_real_bios) defaults to
enabled. The boot ROM is then looked for as dc_boot.bin, dc_boot.bin.bin,
dc_bios.bin, dc_bios.bin.bin, the first that yields a full 2 MB read wins.
With the option off, or no boot ROM found, the HLE BIOS (reios) boots the
disc. Booting to the BIOS menu, or starting without a disc, needs the real
boot ROM and fails with -3 without it. Eight product ids and every MIL-CD
are switched to the real boot ROM when it is there, and fall back to reios
when it is not.
ref: source core/libretro/libretro_core_options.h:134-146, source core/libretro/libretro.cpp:1056-1064,
source core/hw/holly/sb_mem.cpp:69-105, source core/hw/holly/sb_mem.cpp:255-273,
source core/hw/flashrom/flashrom.h:57-70, source core/hw/flashrom/flashrom.h:87-118,
source core/nullDC.cpp:356-397, source core/nullDC.cpp:592-605, source core/nullDC.cpp:643-658
NAOMI, NAOMI 2, Atomiswave and System SP: a BIOS archive is opened as
<system>/dc/<name>, then with .zip, .ZIP, .7z, .7Z, .rar and .RAR appended,
and recognised by its signature. Each member is looked for in the game
archive, its parent, then the BIOS archive, by the CRC32 the table gives
and then by name. The newest revision held for the configured region is
loaded, else the first held of any region. Romsets name their BIOS in the
game table, and a game that names none reads naomi. Flat .bin and .dat
images read naomi, or naomi2 when the header starts with Naomi2.
ref: source core/archive/archive.c:736-753, source core/hw/naomi/naomi_cart.cpp:147-170,
source core/hw/naomi/naomi_cart.cpp:418-584, source core/hw/naomi/naomi_cart.cpp:658-670,
source core/hw/naomi/naomi_cart.cpp:1018-1045, source core/hw/naomi/naomi_cart.cpp:1048-1088
A NAOMI or NAOMI 2 game whose BIOS archive is absent, or with Use Real
BIOS disabled, starts on reios, which hands over to the game as the BIOS
does. Atomiswave and System SP games refuse to start without theirs.
ref: source core/hw/naomi/naomi_cart.cpp:671-713, source core/nullDC.cpp:628-634
Seven archive names are reachable from the game table: naomi, naomi2,
awbios, f355bios, f355dlx, hod2bios and segasp, plus naomi-jp-d, which is
kept in naomi.zip. airlbios, naomigd, naomidev and naomi-ko-h have table
entries but no game names them, so airlbios.zip and naomigd.zip are never
opened.
ref: source core/hw/naomi/naomi_roms.h:62-301, source core/hw/naomi/naomi_roms.h:2630
LoadRomFiles also reads naomi_boot.bin, naomi_boot.bin.bin,
naomi_bios.bin, naomi_bios.bin.bin and epr-21576d.bin for NAOMI and the
naomi2_ names for NAOMI 2, but naomi_cart_Close clears bios_loaded before
the cartridge loads, and reios then replaces that ROM.
ref: source core/hw/holly/sb_mem.cpp:87-105, source core/nullDC.cpp:608,
source core/hw/naomi/naomi_cart.cpp:1159, source core/hw/naomi/naomi_cart.cpp:1176
files:
- name: "dc_boot.bin"
path: "dc/dc_boot.bin"
aliases: ["dc_boot.bin.bin", "dc_bios.bin", "dc_bios.bin.bin"]
system: sega-dreamcast
required: false
hle_fallback: true
min_size: 2097152
validation: [size]
description: "Dreamcast boot ROM"
note: "Read as 2 MB into the system ROM, and a shorter file is rejected. Needed to boot to the BIOS menu or without a disc, and used for every game while Use Real BIOS is on."
source_ref: "source core/hw/holly/sb_mem.cpp:69-105, source core/hw/holly/sb_mem.cpp:255-273, source core/hw/flashrom/flashrom.h:57-70, source core/nullDC.cpp:465-473, source core/nullDC.cpp:592-605"
- name: "dc_nvmem.bin"
path: "dc/dc_nvmem.bin"
aliases: ["dc_flash_wb.bin", "dc_flash.bin", "dc_flash.bin.bin"]
system: sega-dreamcast
required: false
min_size: 131072
validation: [size]
description: "Dreamcast flash ROM"
note: "Loaded with the boot ROM and by the HLE path. A missing file leaves the flash blank, factory settings are written into it and the core runs. Written back as dc_nvmem.bin."
source_ref: "source core/hw/holly/sb_mem.cpp:237-253, source core/hw/holly/sb_mem.cpp:269, source core/hw/holly/sb_mem.cpp:276-283, source core/hw/holly/sb_mem.cpp:295-303, source core/nullDC.cpp:465-473"
- name: "font.bin"
path: "dc/font.bin"
system: sega-dreamcast
required: false
description: "Dreamcast system font for the HLE BIOS"
note: "Read into the font table of the reios ROM image, at most 536496 bytes. Absent, a built-in font is copied there."
source_ref: "source core/reios/reios.cpp:2066-2088"
- name: "naomi.zip"
path: "dc/naomi.zip"
category: bios_zip
system: sega-naomi
required: false
hle_fallback: true
description: "NAOMI BIOS archive"
note: "BIOS of every NAOMI game whose table entry names none or names naomi, and of flat NAOMI images. Mars TV asks for naomi-jp-d, epr-21576d.ic27 from this archive, and falls back to its other members. Absent, the game starts on reios."
source_ref: "source core/hw/naomi/naomi_roms.h:158-217, source core/hw/naomi/naomi_roms.h:271-284, source core/hw/naomi/naomi_roms.h:2630, source core/hw/naomi/naomi_cart.cpp:658-713"
contents:
- name: "epr-21576h.ic27"
size: 2097152
crc32: "d4895685"
description: "Japan"
- name: "epr-21576g.ic27"
size: 2097152
crc32: "d2a1c6bf"
description: "Japan"
- name: "epr-21578h.ic27"
size: 2097152
crc32: "7b452946"
description: "Export"
- name: "epr-21578g.ic27"
size: 2097152
crc32: "55413214"
description: "Export"
- name: "epr-21577h.ic27"
size: 2097152
crc32: "fdf17452"
description: "USA"
- name: "epr-21577g.ic27"
size: 2097152
crc32: "25f64af7"
description: "USA"
- name: "epr-21579d.ic27"
size: 2097152
crc32: "33513691"
description: "Korea"
- name: "epr-21576h_multi.ic27"
size: 2097152
crc32: "cce01f1f"
description: "Multi-region, read when the region is Korea and epr-21579d.ic27 is absent"
- name: "epr-21576d.ic27"
size: 2097152
crc32: "3b2afa7b"
description: "Japan, the BIOS of naomi-jp-d"
- name: "naomi2.zip"
path: "dc/naomi2.zip"
category: bios_zip
system: sega-naomi2
required: false
hle_fallback: true
description: "NAOMI 2 BIOS archive"
note: "Named by 45 NAOMI 2 games, which run as NAOMI 2, and read for flat NAOMI 2 images. Absent, the game starts on reios."
source_ref: "source core/hw/naomi/naomi_roms.h:136-157, source core/hw/naomi/naomi_roms.h:7358, source core/hw/naomi/naomi_cart.cpp:1018-1045, source core/hw/naomi/naomi_cart.cpp:1084-1086"
contents:
- name: "epr-23605c.ic27"
size: 2097152
crc32: "297ea6ed"
description: "Japan"
- name: "epr-23605b.ic27"
size: 2097152
crc32: "3a3242d4"
description: "Japan"
- name: "epr-23607c.ic27"
size: 2097152
crc32: "750e254b"
description: "USA"
- name: "epr-23607b.ic27"
size: 2097152
crc32: "f308c5e9"
description: "USA"
- name: "epr-23608c.ic27"
size: 2097152
crc32: "6ef1dd8e"
description: "Export"
- name: "epr-23608b.ic27"
size: 2097152
crc32: "a554b1e3"
description: "Export"
- name: "epr-23609b.ic27"
size: 2097152
crc32: "99e3751f"
description: "Korea"
- name: "epr-23605c_multi.ic27"
size: 2097152
crc32: "353fdbcd"
description: "Multi-region, read when the region is Korea and epr-23609b.ic27 is absent"
- name: "awbios.zip"
path: "dc/awbios.zip"
category: bios_zip
system: sega-atomiswave
required: true
description: "Atomiswave BIOS archive"
note: "Named by all 34 Atomiswave games, which refuse to start without it. Loaded into the 128 KB flash chip, whose writable half is then reloaded from the game's save file."
source_ref: "source core/hw/naomi/naomi_roms.h:90-98, source core/hw/naomi/naomi_roms.h:6531, source core/hw/naomi/naomi_cart.cpp:576-578, source core/hw/naomi/naomi_cart.cpp:701-708, source core/nullDC.cpp:503-512"
contents:
- name: "bios0.ic23"
size: 131072
crc32: "719b2b0b"
- name: "f355bios.zip"
path: "dc/f355bios.zip"
category: bios_zip
system: sega-naomi
required: false
hle_fallback: true
description: "Ferrari F355 Challenge Twin BIOS archive"
note: "Named by the f355twin, f355twinp and f355twn2 entries. Absent, the game starts on reios."
source_ref: "source core/hw/naomi/naomi_roms.h:99-107, source core/hw/naomi/naomi_roms.h:2088, source core/hw/naomi/naomi_roms.h:2127, source core/hw/naomi/naomi_roms.h:2166, source core/hw/naomi/naomi_cart.cpp:658-713"
contents:
- name: "epr-22851.ic27"
size: 2097152
crc32: "62483677"
description: "Export"
- name: "epr-22850.ic27"
size: 2097152
crc32: "28aa539d"
description: "USA"
- name: "epr-22849.ic27"
size: 2097152
crc32: "121e009c"
description: "Japan"
- name: "f355dlx.zip"
path: "dc/f355dlx.zip"
category: bios_zip
system: sega-naomi
required: false
hle_fallback: true
description: "Ferrari F355 Challenge Deluxe BIOS archive"
note: "Named by the f355 entry. Absent, the game starts on reios."
source_ref: "source core/hw/naomi/naomi_roms.h:108-123, source core/hw/naomi/naomi_roms.h:2043, source core/hw/naomi/naomi_cart.cpp:658-713"
contents:
- name: "epr-21864.ic27"
size: 2097152
crc32: "12ed7c66"
description: "Export"
- name: "epr-21863.ic27"
size: 2097152
crc32: "0615a4d1"
description: "USA"
- name: "epr-21862.ic27"
size: 2097152
crc32: "1f630716"
description: "Japan"
- name: "hod2bios.zip"
path: "dc/hod2bios.zip"
category: bios_zip
system: sega-naomi
required: false
hle_fallback: true
description: "The House of the Dead 2 BIOS archive"
note: "Named by the hotd2, hotd2o, hotd2e and hotd2p entries. Absent, the game starts on reios."
source_ref: "source core/hw/naomi/naomi_roms.h:124-135, source core/hw/naomi/naomi_roms.h:2415, source core/hw/naomi/naomi_cart.cpp:658-713"
contents:
- name: "epr-21331.ic27"
size: 2097152
crc32: "065f8500"
description: "Export"
- name: "epr-21330.ic27"
size: 2097152
crc32: "9e3bfa1b"
description: "USA"
- name: "epr-21329.ic27"
size: 2097152
crc32: "d99e5b9b"
description: "Japan"
- name: "segasp.zip"
path: "dc/segasp.zip"
category: bios_zip
system: sega-systemsp
required: true
description: "Sega System SP BIOS archive"
note: "Named by 28 System SP games, which refuse to start without it. Regions above export are read as export. For the USA and export regions the motherboard EEPROM of that region is also loaded as the default EEPROM, and the BIOS fails to load without it."
source_ref: "source core/hw/naomi/naomi_roms.h:243-260, source core/hw/naomi/naomi_roms.h:8508, source core/hw/naomi/naomi_cart.cpp:536-567, source core/hw/naomi/naomi_cart.cpp:665-670, source core/hw/naomi/naomi_cart.cpp:696-700"
contents:
- name: "epr-24328a.ic50"
size: 2097152
crc32: "03ec3805"
description: "BOOT VER 2.01"
- name: "mb_eeprom_us.ic54s"
crc32: "4186d7ab"
description: "USA"
- name: "mb_eeprom_exp.ic54s"
crc32: "947ddfad"
description: "Export"
+2 -2
View File
@@ -1,4 +1,4 @@
{"source":"redump","system":"sega-saturn","dat":"Sega - Saturn","version":"2026-10-23 10-18-56","fetched_from":"https://redump.info/datfile/SS","fetched":"2026-11-03","archive":{"member":"Sega - Saturn - Datfile (2464) (2026-10-23 10-18-56).dat","file":"Sega - Saturn - Datfile (2464) (2026-10-23 10-18-56).zip","dat_date":"2026-10-23"},"licence":{"terms_url":"https://redump.info/about","read":"2026-11-03","quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit"},"fields":["crc32","size","sha1","region","title","serials"],"regions":[["brazil"],["europe"],["finland"],["france"],["germany"],["italy"],["japan"],["north-america"],["south-korea"],["spain"],["taiwan"],["uk"],["brazil","north-america"],["europe","north-america"],["france","spain"],["hong-kong","taiwan"]],"serial_note":"Serials are written as the DAT writes them, and the DAT uses both forms: 'SLES-01971' and 'SLPS 02251' in the PlayStation DAT of the same day. A core reads the serial from the disc in its own spelling (SYSTEM.CNF holds 'SLPS_022.51', DuckStation reports 'SLPS-02251'). No source fixes a rule joining the two, so the comparison rule is the reader's to state.","games":[
{"source":"redump","system":"sega-saturn","dat":"Sega - Saturn","version":"2026-11-08 23-29-16","fetched_from":"https://redump.info/datfile/SS","fetched":"2026-11-09","archive":{"member":"Sega - Saturn - Datfile (2464) (2026-11-08 23-29-16).dat","file":"Sega - Saturn - Datfile (2464) (2026-11-08 23-29-16).zip","dat_date":"2026-11-08"},"licence":{"terms_url":"https://redump.info/about","read":"2026-11-03","quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit"},"fields":["crc32","size","sha1","region","title","serials"],"regions":[["brazil"],["europe"],["finland"],["france"],["germany"],["italy"],["japan"],["north-america"],["south-korea"],["spain"],["taiwan"],["uk"],["brazil","north-america"],["europe","north-america"],["france","spain"],["hong-kong","taiwan"]],"serial_note":"Serials are written as the DAT writes them, and the DAT uses both forms: 'SLES-01971' and 'SLPS 02251' in the PlayStation DAT of the same day. A core reads the serial from the disc in its own spelling (SYSTEM.CNF holds 'SLPS_022.51', DuckStation reports 'SLPS-02251'). No source fixes a rule joining the two, so the comparison rule is the reader's to state.","games":[
["0000691d",381188640,"2be747180f7ea26416ece20b201918e3790a68f8",6,"Flash SegaSaturn Vol. 1 (Japan) (2M)",["610-6166-01"]],
["00278769",640437840,"7de67a5f1242d803fcc49b77759f7ba125f4b46b",6,"Ousama Game (Japan) (Disc 2) (Momo Disc)",["T-21904G"]],
["004fe32b",23371824,"9b550b6daabad0dd63068fdfd1ae35306b61846f",7,"Darius Gaiden (USA)",["T-8123H"]],
@@ -2357,7 +2357,7 @@
["f4c5b0d2",522520320,"44de1fc7f287f9fb2d8b1d83ccc3f22eeca62a63",6,"Riven - The Sequel to Myst (Japan) (Disc 1)",["T-35503G"]],
["f4c9b8ff",536112528,"e6c2e44ff2f6f01c69b72460f803c32807abef0f",6,"Capcom Generation - Dai-5-shuu Kakutoukatachi (Japan)",["T-1236G"]],
["f4c9b9eb",539953344,"f16525ef8049ec220f202717066ea3936175d914",6,"WanChai Connection (Japan) (Disc A)",["GS-9007"]],
["f4d69bc0",133120848,"a52ed3f42a2bae2ed5087fa5506917d8c8d611b8",6,"Yuukyuu Gensoukyoku Ensemble (Japan)",["T-27811G"]],
["f4d69bc0",133120848,"a52ed3f42a2bae2ed5087fa5506917d8c8d611b8",6,"Yuukyuu Gensoukyoku Ensemble (Japan)",["T-27808G","T-27811G"]],
["f4f3f0d3",27556032,"5804b65956257d191f2fcbb0ed409549d0c392bc",6,"Zap! Snowboarding Trix '98 (Japan)",["T-7504G"]],
["f4f98e4f",71503152,"df2feeb5a047f6c1f1b8aa2c0e7f0ad00309d363",6,"Paneltia Story - Koln no Daibouken (Japan)",["T-21510G"]],
["f54c6a91",43507296,"85f23086acee99634c41dce4cea1c95bd5588db8",6,"Alien Trilogy (Japan) (Demo)",["ST-8113G"]],
@@ -1,4 +1,4 @@
{"source":"redump","system":"sony-playstation-2","dat":"Sony - PlayStation 2","version":"2026-11-03 09-06-30","fetched_from":"https://redump.info/datfile/PS2","fetched":"2026-11-03","archive":{"member":"Sony - PlayStation 2 - Datfile (11845) (2026-11-03 09-06-30).dat","file":"Sony - PlayStation 2 - Datfile (11845) (2026-11-03 09-06-30).zip","dat_date":"2026-11-03"},"licence":{"terms_url":"https://redump.info/about","read":"2026-11-03","quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit"},"fields":["crc32","size","sha1","region","title","serials"],"regions":[["asia"],["australia"],["brazil"],["canada"],["china"],["denmark"],["europe"],["finland"],["france"],["germany"],["greece"],["india"],["italy"],["japan"],["latin-america"],["netherlands"],["north-america"],["norway"],["poland"],["portugal"],["russia"],["south-korea"],["spain"],["sweden"],["taiwan"],["uk"],["world"],["asia","japan"],["australia","europe"],["australia","new-zealand"],["australia","uk"],["brazil","north-america"],["canada","north-america"],["europe","netherlands"],["france","spain"],["japan","south-korea"],["portugal","spain"]],"serial_note":"Serials are written as the DAT writes them, and the DAT uses both forms: 'SLES-01971' and 'SLPS 02251' in the PlayStation DAT of the same day. A core reads the serial from the disc in its own spelling (SYSTEM.CNF holds 'SLPS_022.51', DuckStation reports 'SLPS-02251'). No source fixes a rule joining the two, so the comparison rule is the reader's to state.","games":[
{"source":"redump","system":"sony-playstation-2","dat":"Sony - PlayStation 2","version":"2026-11-08 23-27-42","fetched_from":"https://redump.info/datfile/PS2","fetched":"2026-11-09","archive":{"member":"Sony - PlayStation 2 - Datfile (11845) (2026-11-08 23-27-42).dat","file":"Sony - PlayStation 2 - Datfile (11845) (2026-11-08 23-27-42).zip","dat_date":"2026-11-08"},"licence":{"terms_url":"https://redump.info/about","read":"2026-11-03","quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit"},"fields":["crc32","size","sha1","region","title","serials"],"regions":[["asia"],["australia"],["brazil"],["canada"],["china"],["denmark"],["europe"],["finland"],["france"],["germany"],["greece"],["india"],["italy"],["japan"],["latin-america"],["netherlands"],["north-america"],["norway"],["poland"],["portugal"],["russia"],["south-korea"],["spain"],["sweden"],["taiwan"],["uk"],["world"],["asia","japan"],["australia","europe"],["australia","new-zealand"],["australia","uk"],["brazil","north-america"],["canada","north-america"],["europe","netherlands"],["france","spain"],["japan","south-korea"],["portugal","spain"]],"serial_note":"Serials are written as the DAT writes them, and the DAT uses both forms: 'SLES-01971' and 'SLPS 02251' in the PlayStation DAT of the same day. A core reads the serial from the disc in its own spelling (SYSTEM.CNF holds 'SLPS_022.51', DuckStation reports 'SLPS-02251'). No source fixes a rule joining the two, so the comparison rule is the reader's to state.","games":[
["00019551",642938016,"ad521d28f458359ed62300c6af8e7f76d3ed7c48",16,"Mark of Kri, The (USA) (Demo)",["SCUS 97222"]],
["0002adf4",3786768384,"e399fb42b406ad6c4f42e91188457894b4588b75",8,"Crimson Sea 2 (France)",["SLES-52557"]],
["0004646d",4346052608,"8fbfc7f3879bbce02885c7975bd76901f58025fe",6,"Naruto - Uzumaki Chronicles 2 (Europe) (En,Ja,Fr,De,Es,It)",["SLES-55090"]],
+7 -6
View File
@@ -1,4 +1,4 @@
{"source":"redump","system":"sony-playstation","dat":"Sony - PlayStation","version":"2026-10-31 22-38-06","fetched_from":"https://redump.info/datfile/PSX","fetched":"2026-11-03","archive":{"member":"Sony - PlayStation - Datfile (10982) (2026-10-31 22-38-06).dat","file":"Sony - PlayStation - Datfile (10982) (2026-10-31 22-38-06).zip","dat_date":"2026-10-31"},"licence":{"terms_url":"https://redump.info/about","read":"2026-11-03","quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit"},"fields":["crc32","size","sha1","region","title","serials"],"regions":[["asia"],["australia"],["canada"],["china"],["denmark"],["europe"],["finland"],["france"],["germany"],["greece"],["italy"],["japan"],["netherlands"],["north-america"],["norway"],["poland"],["portugal"],["russia"],["south-korea"],["spain"],["sweden"],["taiwan"],["uk"],["world"],["asia","japan"],["australia","europe"],["canada","north-america"],["europe","netherlands"],["europe","north-america"]],"serial_note":"Serials are written as the DAT writes them, and the DAT uses both forms: 'SLES-01971' and 'SLPS 02251' in the PlayStation DAT of the same day. A core reads the serial from the disc in its own spelling (SYSTEM.CNF holds 'SLPS_022.51', DuckStation reports 'SLPS-02251'). No source fixes a rule joining the two, so the comparison rule is the reader's to state.","games":[
{"source":"redump","system":"sony-playstation","dat":"Sony - PlayStation","version":"2026-11-08 18-37-42","fetched_from":"https://redump.info/datfile/PSX","fetched":"2026-11-09","archive":{"member":"Sony - PlayStation - Datfile (10983) (2026-11-08 18-37-42).dat","file":"Sony - PlayStation - Datfile (10983) (2026-11-08 18-37-42).zip","dat_date":"2026-11-08"},"licence":{"terms_url":"https://redump.info/about","read":"2026-11-03","quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit"},"fields":["crc32","size","sha1","region","title","serials"],"regions":[["asia"],["australia"],["canada"],["china"],["denmark"],["europe"],["finland"],["france"],["germany"],["greece"],["italy"],["japan"],["netherlands"],["north-america"],["norway"],["poland"],["portugal"],["russia"],["south-korea"],["spain"],["sweden"],["taiwan"],["uk"],["world"],["asia","japan"],["australia","europe"],["canada","north-america"],["europe","netherlands"],["europe","north-america"]],"serial_note":"Serials are written as the DAT writes them, and the DAT uses both forms: 'SLES-01971' and 'SLPS 02251' in the PlayStation DAT of the same day. A core reads the serial from the disc in its own spelling (SYSTEM.CNF holds 'SLPS_022.51', DuckStation reports 'SLPS-02251'). No source fixes a rule joining the two, so the comparison rule is the reader's to state.","games":[
["000d989c",381169824,"1c990bae9b76b5659a41c67696f61b463c6ce82c",5,"Pop n' Pop (Europe)",["SLES-01971"]],
["00137035",69574512,"28bedf7c5c7f28847221500e09a3acd1fce923c4",11,"Jigsaw World (Japan) (Honkakuha de 1300)",["SLPS 02251"]],
["0014420d",25500384,"ca0b112f27cc10e0853576a94d19a644d1490ef0",5,"Revolution X - Music Is the Weapon (Europe)",["SLES-00129"]],
@@ -998,7 +998,7 @@
["18dfb82d",729423408,"a617b948e23c198a4d0eb521b874d0f563987d98",13,"Gran Turismo 2 (USA) (Arcade Mode)",["SCUS-94455"]],
["18e1c83c",114928128,"2d24572e92415e09c37b68c83ba8b8947aee1ce4",13,"Die Hard Trilogy (USA) (Rev 1)",["SLUS-00119"]],
["18e1ddcc",458600016,"7cdc58c6268633c6b9e2d1bf686c6ac994f75451",5,"Mummy, The (Europe) (En,Fr,De,Es,It)",["SLES-02973"]],
["18e546eb",256313904,"26b288ec11fb19afd2cd6bc959c23fcf3ed7a9a1",11,"I.Q Final (Japan) (Demo 2)",["PAPX 90063"]],
["18e546eb",256313904,"26b288ec11fb19afd2cd6bc959c23fcf3ed7a9a1",11,"I.Q Final (Japan) (Muryou Rental-ban)",["PAPX 90063"]],
["18ebdeb3",86045568,"5694008c30fa9896d17afdd6281e4bebb9f63953",13,"Wipeout XL (USA)",["SCUS-94351"]],
["18ec8c9b",657809712,"18c5172fe0ab64bb80f983791cf735f3f0df918a",13,"Bomberman World (USA)",["SLUS-00680"]],
["18eda366",544956048,"0939992a8931a13193c1ad585de6a35061ee63e4",5,"In Cold Blood (Europe) (Beta) (2000-03-24)",[]],
@@ -1499,7 +1499,7 @@
["242025e5",321941760,"43971e07cf4d06631b0b4d21248617f5ec21d10a",11,"Tokimeki Memorial 2 Emotional Voice System Append Disc (Japan) (Disc 2) (Akai - Ichimonji - Yae)",["SLPM 80544"]],
["2426055c",570503472,"b63a76dbf9703c6819b11068cac8f7df0b8ee6b3",11,"Harry Potter to Himitsu no Heya (Japan)",["SLPS 03492"]],
["2434d4e6",14688240,"81bb2e859ed7e3127e089993052259007187d19d",11,"Arcade Gears - Pu-Li-Ru-La (Japan)",["SLPS 00928"]],
["2436a910",162690192,"b7b25b1f0b584b57d77bd5399ab15184d663ab2b",24,"Saru! Get You! (Japan, Asia) (Demo 1)",["PAPX 90079","SCPS 10084","SCPS 45396"]],
["2436a910",162690192,"b7b25b1f0b584b57d77bd5399ab15184d663ab2b",24,"Saru! Get You! (Japan, Asia) (Taikenban)",["PAPX 90079","PAPX 90110","SCPS 10084","SCPS 45396"]],
["2437145d",416849664,"69be46529c17a398e8d64a7d4fe0def2959d8329",11,"Assault Suits Valken 2 (Japan)",["SLPM 86872","SLPS 00854"]],
["243dfcd5",64296624,"f82b9f3f89401cd683f8468c3c92b63e19bc8602",5,"Time Crisis - Project Titan (Europe) (En,Fr,De,Es,It)",["SCES-02776","SCES-02776-P"]],
["243ed628",659547840,"8396e575e9a7099305e31f336c648eec7cc79e9f",8,"Final Fantasy VII (Germany) (Disc 3)",["SCES-20869"]],
@@ -2684,7 +2684,7 @@
["40d1e1ba",294508032,"c0e60a0d2e7535a974860b1b3f3f73baf5eb5e96",13,"PlayStation Picks (USA) (SCUS-94952)",["SPUS-94951"]],
["40d1f5ef",271202064,"1bd699b9ee879724c02ef279d183be582a137f0e",5,"Who Wants to Be a Millionaire - Irish Edition (Ireland)",["SLES-03583"]],
["40dd3ad7",466613280,"0d26af68276235f4953bc145ebb32390adc9cff1",11,"Harry Potter to Kenja no Ishi (Japan) (Coca-Cola Kenshouhin)",["SLPM 84013"]],
["40decb97",256313904,"f8d7648c72f6fa577cdf16fc653ff2cde1d806e6",11,"I.Q Final (Japan) (Demo 1)",["PCPX 96137"]],
["40decb97",256313904,"f8d7648c72f6fa577cdf16fc653ff2cde1d806e6",11,"I.Q Final (Japan) (Taikenban)",["PCPX 96137"]],
["40e8bc22",686010192,"a61c2fa3b900b9aab8c27be60aaa8647bcddf321",18,"Kids Station - Gomdori Pooh Hakseup Series - Gomdori Pooh Sinnaneun Yuagyosil (Korea)",["SLPM 88511"]],
["40ec65af",485184672,"1cbb529c1f42761d8b78d18770cd09fb4d5f01d6",13,"Nectaris - Military Madness (USA)",["SLUS-00764"]],
["40f066ce",719883696,"887049e5123eac50949bff248b720f7ebfff48da",11,"Tomoyasu Hotei - Stolen Song (Japan) (Disc 1)",["SCPS 18009"]],
@@ -3421,6 +3421,7 @@
["51d5806e",369941376,"34abaea65d406420fbc592018e6169a734bda4aa",5,"Championship Bass (Europe)",["SLES-02775"]],
["51d91e38",297918432,"fe816a19bcd0f451b2b8f92f6afb8c1ce57eda47",11,"GunBullet (Japan)",["SLPS 00930"]],
["51d95fdb",375285120,"5a60904791236c39b39ff76e282536f8a4c7e1dc",5,"Jupiter Strike (Europe)",["SLES-00130"]],
["51e372de",289319520,"1c17927c186e50c4098bac4e298b0386b291bcc2",21,"Dafuweng Zhi Xiao Xiao Jianghu (Taiwan) (Unl)",[]],
["51e394ff",418249104,"3ed1551dda17bf14f56c6ce23a3b69a7ef0bb70a",11,"Tantei Jinguuji Saburou - Mikan no Report (Japan)",["SLPS 00544"]],
["51e4d0e3",658567056,"ffbabb7e86069d857e1e4812ddcdada25f5aaca6",5,"Vandal Hearts (Europe) (En,Fr,De)",["SLES-00204"]],
["51ee0d69",275099328,"9b6c3fb18f00578c2e9a345ab6a6afa2f8dd60a8",5,"Poy Poy (Europe)",["SLES-00785"]],
@@ -4702,7 +4703,7 @@
["6f2d194f",263572176,"2c2574d5ce110de71dee8be4a629ff101b914863",5,"Last Report, The (Europe) (En,De) (Demo)",["SLED-01365"]],
["6f30ed81",324543072,"0f4264233d0d7aca5dad80c6845468a723973051",11,"Slap Happy Rhythm Busters (Japan)",["SLPS 02789","SLPS 91460"]],
["6f311c54",436822848,"e1c1a85e7b22db8a35c7bec96e1c3da7b5c7ff0f",11,"SuperLite Gold Series - Wizardry - Llylgamyn Saga (Japan)",["SLPM 87037"]],
["6f391fcb",142801680,"77dba4a9724545b3f93f09d33c31280d2e5a74aa",11,"Saru! Get You! (Japan) (Demo 2)",["PCPX 96166"]],
["6f391fcb",142801680,"77dba4a9724545b3f93f09d33c31280d2e5a74aa",11,"Saru! Get You! (Japan) (Tentou-you Taikenban)",["PCPX 96166"]],
["6f3a64eb",169214640,"fe5b0b63c11cc557f3407a52153052162ab7a966",13,"Frogger 2 - Swampy's Revenge (USA) (Beta) (2000-06-14)",[]],
["6f438c6d",544495056,"6c4c695d6cf0bad4449efc7aaeb882c2b20af53b",24,"Gran Turismo (Japan, Asia)",["SCPS 10045","SCPS 45147","SCPS 45149","SCPS 91128","SCPS 91301"]],
["6f45ea03",203746704,"151c1ebb654487f189cc7a10696b1e1e7ce2ae12",5,"Lucky Luke (Europe) (Demo)",["SLED-01249"]],
@@ -6647,7 +6648,7 @@
["9ca78f07",581028672,"638e7e1edb006a07554629cd2eb74af6d7c8ef95",7,"Ace Combat 2 (France)",["SCES-00901"]],
["9cac5b3e",267384768,"86e3afa510538b45ea894a33ed4851d22a44db4a",13,"Steel Harbinger (USA)",["SLUS-00093"]],
["9cb07ee3",97191696,"ffe68b3708b32d67e18a433b624a845ef137b55f",11,"Simple 1500 Series Vol. 57 - The Meiro (Japan)",["SLPM 86715"]],
["9cb09851",68671344,"e3960f680a020f9ad9a79a509aac3310a66bc430",11,"Pilot ni Narou! (Japan) (Demo)",["SLPM 80293"]],
["9cb09851",68671344,"e3960f680a020f9ad9a79a509aac3310a66bc430",11,"Pilot ni Narou! (Japan) (Taikenban)",["PAPX 90066","SLPM 80293"]],
["9cb5c83f",43199184,"3e2235eda4a3e7b24935153cd1768e6a451bf1bf",11,"Gunpey (Japan)",["SLPS 02485"]],
["9cbc8661",197843184,"708e009570ca0e9549ca6527dc15fcc9c993c62d",7,"Euro Demo 07 (France)",["SCED-00668"]],
["9cc878f9",505957536,"fe04c5f84119a3952e5f34381877b4c143297539",13,"Test Drive Off-Road 3 (USA)",["SLUS-00840"]],
+111 -1
View File
@@ -702,6 +702,11 @@ EVENT_KEYS: dict[str, tuple[str, ...]] = {
# says it. A kind of its own: the full-screen interface always gives
# --dest, and the board was never applied there.
"board": ("platform", "board", "applied", "message"),
# --installed-cores, before choices, once per installed core the list
# has no profile for: info is whether its .info was found, dests the
# firmware paths it declares, kept whatever the narrowing drops. A
# core with no .info keeps nothing it alone reads, and message says so.
"unknown_core": ("platform", "core", "info", "dests", "message"),
# Before the file events of a check: the systems the run's list lets
# one choose among, --system aside, in id order (other for the files
# no system names). What Choose systems lists, and what the plan counts
@@ -3158,6 +3163,67 @@ def installed_cores(dirs: list[Path]) -> list[str]:
return sorted(names)
def info_dirs(plat: str, bios_path: Path, searched: list[Path]) -> list[Path]:
"""The directories RetroArch reads core .info files from.
libretro_info_path in retroarch.cfg, info/ beside RetroArch by default,
then the cores folders: Linux builds and Lakka keep each .info beside
its core.
"""
found = _retroarch_config_for(bios_path)
if found is None and _is_file(bios_path.parent / "retroarch.cfg"):
found = (bios_path.parent / "retroarch.cfg", bios_path.parent)
dirs: list[Path] = []
if found is not None:
cfg, app_dir = found
dirs.append(_retroarch_cfg_dir(cfg, "libretro_info_path", app_dir, "info")
or app_dir / "info")
dirs.extend(searched)
return list(dict.fromkeys(dirs))
_INFO_FIRMWARE_RE = re.compile(r'^\s*firmware\d+_path\s*=\s*"?([^"\r\n]*?)"?\s*$')
def info_firmware(dirs: list[Path], core: str) -> list[str] | None:
"""The firmware paths a core's .info declares, None without a .info.
RetroArch reads firmware<N>_path, relative to the system directory
(core_info.c), and so does this.
"""
for directory in dirs:
info = directory / f"{core}_libretro.info"
try:
text = info.read_text(encoding="utf-8", errors="replace")
except OSError:
continue
paths = (m.group(1).strip().replace("\\", "/")
for m in map(_INFO_FIRMWARE_RE.match, text.splitlines()) if m)
return list(dict.fromkeys(p for p in paths if p))
return None
def known_core_names(manifest: dict) -> set[str]:
"""Every core name a file list answers for: profiles and their other names."""
names: set[str] = set()
for profile, aliases in (manifest.get("core_names") or {}).items():
names.add(profile)
names.update(aliases)
for cores in (manifest.get("system_cores") or {}).values():
names.update(cores)
for entry in [*manifest.get("files", []), *manifest.get("omitted_files", [])]:
names.update(entry.get("cores") or [])
for alternative in entry.get("alternatives", []):
names.update(alternative.get("cores") or [])
return names
def unknown_cores(manifest: dict, names: list[str]) -> list[str]:
"""The installed cores the file list has no profile for, in name order."""
known = known_core_names(manifest)
return sorted(name for name in names if name not in known)
def display_name(plat: str, manifest: dict | None = None) -> str:
"""A platform's name as the frontend writes it, the manifest's when it has one."""
named = (manifest or {}).get("display_name")
@@ -4542,6 +4608,7 @@ def narrow_to_cores(
names: list[str],
files: list[dict] | None = None,
omitted: list[dict] | None = None,
declared_by_info: Collection[str] = (),
) -> tuple[list[dict], list[dict]]:
"""Keep what the named cores read, as a pack built for them carries.
@@ -4551,9 +4618,12 @@ def narrow_to_cores(
it does not list stays whatever is named. A dropped system's file gives
way to the first named core claiming its destination. A manifest without
the two maps keeps the platform's list whole and matches cores by name.
A destination in `declared_by_info`, what the .info of an installed core
no profile describes declares, stays whatever is named.
"""
cores = designated_cores(manifest, names)
reach = manifest.get("system_cores") or {}
info_dests = {dest.casefold() for dest in declared_by_info}
def kept_system(system: str) -> bool:
return system not in reach or bool(cores.intersection(reach[system]))
@@ -4563,6 +4633,9 @@ def narrow_to_cores(
def kept(entries: list[dict]) -> list[dict]:
result: list[dict] = []
for entry in entries:
if str(entry.get("dest", "")).casefold() in info_dests:
result.append(_for_cores(entry, cores) or _settle_slot(entry, cores))
continue
if entry.get("cores") is not None:
copy = _for_cores(entry, cores)
if copy is not None:
@@ -14199,6 +14272,37 @@ def _check_cores_dir(folder: Path) -> None:
sys.exit(1)
def _unprofiled_cores_firmware(
plat: str, bios_path: Path, manifest: dict, found: list[str], searched: list[Path],
) -> list[str]:
"""What the installed cores the list has no profile for declare, each said.
Such a core reads systems the list cannot name, and narrowing to the
installed cores dropped its BIOS without a word (issue 87, parallel_dc
before its profile). Its .info is what RetroArch itself checks, so the
files it declares are kept. A core without one is named.
"""
unknown = unknown_cores(manifest, found)
if not unknown:
return []
dirs = info_dirs(plat, bios_path, searched)
dests: list[str] = []
for core in unknown:
declared = info_firmware(dirs, core)
if declared is None:
message = (f"{core}: a core this list does not know, with no .info to read: "
"its files may be missing. Run without --installed-cores "
"to install every file.")
else:
message = (f"{core}: a core this list does not know, "
f"{_plural(len(declared), 'file')} its .info declares kept")
print(f" {message}")
EVENTS.emit("unknown_core", platform=plat, core=core,
info=declared is not None, dests=declared or [], message=message)
dests.extend(declared or [])
return dests
def _no_core_found(plat: str, bios_path: Path, searched: list[Path]) -> None:
"""Refuse --installed-cores with no core, and say how to point at them.
@@ -15547,12 +15651,14 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None:
# Every check --installed-cores makes before anything is written: a
# refusal for the second platform must not follow an install of the first.
cores_found: dict[tuple[str, Path], list[str]] = {}
cores_searched: dict[tuple[str, Path], list[Path]] = {}
for plat_name, bios_path in platforms:
if plat_name in CORE_PLATFORMS:
if args.cores_dir:
_check_cores_dir(args.cores_dir)
searched = [args.cores_dir] if args.cores_dir else core_dirs(plat_name, bios_path)
cores_found[(plat_name, bios_path)] = installed_cores(searched)
cores_searched[(plat_name, bios_path)] = searched
elif args.installed_cores:
print(
f"Error: {plat_name} ships its cores with the system. "
@@ -15687,8 +15793,12 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None:
print(_older_list_advice(plat_name), file=sys.stderr)
sys.exit(1)
before = len(files)
info_dests = _unprofiled_cores_firmware(
plat_name, bios_path, manifest, found_cores,
cores_searched.get((plat_name, bios_path), []),
)
files, omitted_files = narrow_to_cores(
manifest, found_cores, files, omitted_files
manifest, found_cores, files, omitted_files, info_dests
)
print(f" Narrowed {before} to {len(files)} files to the installed cores")
+151 -6
View File
@@ -1047,6 +1047,12 @@
}
],
"core_names": {
"81": [],
"a5200": [],
"advanced_drastic": [
"DraStic-original",
"drastic - standalone"
],
"advancemame": [
"AdvanceMame",
"advmame"
@@ -1054,9 +1060,11 @@
"amiberry": [
"AMIBERRY"
],
"arduous": [],
"ares": [
"ares-sa"
],
"atari800": [],
"beetle_gba": [
"mednafen_gba"
],
@@ -1064,6 +1072,10 @@
"beetle-lynx",
"mednafen_lynx"
],
"beetle_ngp": [
"beetle-ngp",
"mednafen_ngp"
],
"beetle_pce": [
"beetle-pce",
"mednafen_pce",
@@ -1083,6 +1095,17 @@
"beetle-saturn",
"mednafen_saturn"
],
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"beetle_wswan": [
"beetle-wswan",
"mednafen_wswan"
],
"bluemsx": [],
"bsnes": [],
"bsnes-jg": [
"bsnes_jg"
],
@@ -1100,17 +1123,24 @@
"bsnes_mercury_balanced",
"bsnes_mercury_performance"
],
"cap32": [
"caprice32"
],
"crocods": [],
"daedalusx64": [
"daedalusx64-sa"
],
"desmume2015": [
"desmume_2015"
],
"dosbox_core": [],
"dosbox_pure": [],
"doublecherrygb": [
"DoubleCherryGB"
],
"drastic": [
"drastic-sa"
"drastic-sa",
"drastic_standalone"
],
"dsperate": [
"dsperate-sa"
@@ -1119,22 +1149,37 @@
"Duckstation",
"duckstation-sa"
],
"easyrpg": [],
"ecwolf": [
"ECWolf"
],
"emuscv": [],
"ep128emu_core": [
"ep128emu",
"ep128emu-core"
],
"fake08": [
"fake_08"
],
"fbalpha2012": [
"fbalpha"
],
"fbalpha2019": [],
"fbneo": [
"FBNEOSA"
"FBNEOSA",
"fbneo_32b",
"fbneo_plus",
"km_fbneo_xtreme_amped"
],
"fceumm": [],
"flycast": [
"flycast-dev",
"flycast-next",
"flycast-sa",
"flycast32_rumble",
"flycast_32b",
"flycast_dev",
"flycast_rumble",
"flycastsa",
"flycastvl"
],
@@ -1144,16 +1189,22 @@
"flycast2021": [
"flycast-xtreme"
],
"flycast2021le": [],
"fmsx": [],
"fpse-ng": [
"fpse64",
"fpseng"
],
"freechaf": [],
"freeintv": [],
"freej2me": [],
"freej2me_plus": [
"freej2me-plus"
],
"fuse": [
"fuse_libretro"
],
"gambatte": [],
"gba-emu": [
"GBA-EMU",
"GBA.emu"
@@ -1162,6 +1213,9 @@
"GBC-EMU",
"GBC.emu"
],
"gearboy": [],
"gearcoleco": [],
"gearsystem": [],
"genesis_plus_gx": [
"genesis-plus-gx",
"genesis_plus_gx_cart_special",
@@ -1176,15 +1230,25 @@
"genesisplusgx-wide",
"genesisplusgxwide"
],
"geolith": [],
"gopher64": [
"gopher64-sa"
],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"gw": [
"gw_libretro"
],
"gzdoom": [
"GZDoom",
"gzdoom-sa"
],
"handy": [],
"hatari": [
"HATARISA",
"hatari-fast",
"hatarisa"
],
"hypseus-singe": [
@@ -1192,16 +1256,22 @@
"hypseus",
"hypseus_singe"
],
"jaxe": [],
"lexaloffle": [
"Pico-8",
"float-scaled",
"pico-8",
"pico8",
"pico_standalone",
"vox_official"
],
"linkboy": [
"LINKBOY",
"Linkboy"
],
"lowresnx": [
"lowres_nx"
],
"lynx-emu": [
"LYNX-EMU",
"Lynx.emu"
@@ -1228,6 +1298,7 @@
"mame2010": [
"mame0139"
],
"mame2015": [],
"mame2016": [
"mess2016"
],
@@ -1249,6 +1320,15 @@
"beetle_pce_fast",
"pce_fast"
],
"mednafen_snes": [
"beetle-bsnes",
"beetle_bsnes",
"beetle_snes"
],
"mednafen_supafaust": [
"beetle_supafaust",
"supafaust"
],
"mednafen_supergrafx": [
"beetle-supergrafx",
"beetle_supergrafx"
@@ -1269,13 +1349,18 @@
"mesen2"
],
"mgba": [
"mgba_fork"
"mgba_fork",
"mgba_rumble",
"msgb"
],
"mojozork": [],
"msx-emu": [
"MSX-EMU",
"MSX.emu"
],
"mupen64plus": [
"mupen64plus - standalone - glidemk2 - full",
"mupen64plus-auto",
"mupen64plus-sa",
"mupen64plussa"
],
@@ -1308,6 +1393,7 @@
"nekop2": [
"meowpc98"
],
"neocd": [],
"nes-emu": [
"NES-EMU",
"NES.emu"
@@ -1316,9 +1402,26 @@
"NESOID",
"Nesoid"
],
"nestopia": [],
"np2kai": [],
"o2em": [
"o2em_libretro"
],
"openbor": [
"OPENBOR",
"openbor v7530 - standalone",
"openbor4432",
"openbor6330",
"openbor6412",
"openbor6510",
"openbor7142",
"openbor7530",
"openbor_standalone_plus"
],
"openmsx": [
"openmsx-ld"
],
"opera": [],
"parallel-launcher": [
"ca.parallel_launcher.ParallelLauncher"
],
@@ -1334,13 +1437,18 @@
"pceemu"
],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"pcsx_rearmed_standalone": [
"pcsx-rearmed"
"pcsx-rearmed",
"pcsx_standalone"
],
"picodrive": [],
"piemu": [],
"pizza-boy-gba": [
"PIZZA-BOY-GBA",
"Pizza Boy GBA"
@@ -1355,19 +1463,29 @@
"it.dbtecno.pizzaboyscbasic",
"it.dbtecno.pizzaboyscpro"
],
"pokemini": [],
"potator": [],
"ppsspp": [
"PPSSPPSDL",
"ppsspp-sa"
],
"prboom": [],
"prosystem": [],
"puae": [
"uae"
],
"puae2021": [],
"px68k": [],
"px68k-sdl": [
"px68k"
],
"quasi88": [],
"quasi88kai": [
"quasi88"
],
"quicknes": [],
"race": [],
"raze": [],
"real3doplayer": [
"REAL3DOPLAYER",
"Real3DOPlayer"
@@ -1377,11 +1495,15 @@
"com.github.Rosalie241.RMG",
"mupen64"
],
"same_cdi": [],
"sameboy": [],
"sameduck": [],
"saturn-emu": [
"SATURN-EMU",
"Saturn.emu",
"saturnemu"
],
"scummvm": [],
"scummvm-standalone": [
"SCUMMVMSA",
"scummvm-sa"
@@ -1406,6 +1528,12 @@
"Snes9x EX+",
"Snes9xEXPlus"
],
"snes9x2002": [],
"snes9x2005_plus": [],
"snes9x2010": [],
"solarus": [
"Solarus"
],
"speccy": [
"SPECCY",
"com.fms.speccy",
@@ -1414,30 +1542,43 @@
"stella": [
"STELLASA"
],
"stella2014": [],
"swanstation": [],
"tgbdual": [
"TGB Dual"
],
"theodore": [],
"tic80": [],
"uae4all-rpi": [
"uae4all"
],
"uae4arm": [
"uae4arm_32b"
],
"uw8": [],
"uzem": [],
"vba_next": [
"vba-next"
],
"vbam": [
"vba-m"
],
"vecx": [],
"vice_x128": [
"x128"
],
"vice_x64": [
"x64"
],
"vice_xplus4": [
"xplus4"
],
"vice_xvic": [
"xvic"
],
"vircon32": [],
"virtualjaguar": [],
"wasm4": [],
"x1": [
"xmil"
],
@@ -1452,8 +1593,10 @@
],
"yabasanshiro": [
"yabasanshiro-2",
"yabasanshiro-libretro",
"yabasanshiro-sa",
"yabasanshiroSA"
"yabasanshiroSA",
"yabasanshiroSA1_5"
]
},
"system_cores": {
@@ -1583,6 +1726,7 @@
"mupen64plus-ae",
"mupen64plus-libretro",
"mupen64plus_next",
"n64emu",
"parallel-launcher",
"parallel_n64",
"project64",
@@ -1736,6 +1880,7 @@
"flycast-dojo",
"flycast2021",
"flycast2021le",
"parallel_dc",
"redream",
"reicast",
"retrodream"
+260 -10
View File
@@ -6315,12 +6315,21 @@
}
],
"core_names": {
"81": [],
"a5200": [],
"abuse": [],
"advanced_drastic": [
"DraStic-original",
"drastic - standalone"
],
"aethersx2": [
"aethersx2-sa"
],
"amiberry": [
"AMIBERRY"
],
"applewin": [],
"arduous": [],
"ares": [
"ares-sa"
],
@@ -6328,11 +6337,14 @@
"armsx2-sa",
"armsx2_libretro"
],
"atari800": [],
"azahar": [
"azahar - standalone",
"azahar-sa"
],
"basiliskii": [
"basilisk"
"basilisk",
"basilisk2"
],
"beetle_gba": [
"mednafen_gba"
@@ -6341,6 +6353,10 @@
"beetle-lynx",
"mednafen_lynx"
],
"beetle_ngp": [
"beetle-ngp",
"mednafen_ngp"
],
"beetle_pce": [
"beetle-pce",
"mednafen_pce",
@@ -6360,9 +6376,26 @@
"beetle-saturn",
"mednafen_saturn"
],
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"beetle_wswan": [
"beetle-wswan",
"mednafen_wswan"
],
"bennugd": [],
"bigpemu": [
"bigpemu-sa"
],
"bk": [],
"blastem": [],
"bluemsx": [],
"boom3": [
"boom3_xp"
],
"bsnes": [],
"bsnes-jg": [
"bsnes_jg"
],
@@ -6380,6 +6413,12 @@
"bsnes_mercury_balanced",
"bsnes_mercury_performance"
],
"bstone": [],
"cannonball": [],
"cap32": [
"caprice32"
],
"catacombgl": [],
"cdogs": [
"cdogs-sdl"
],
@@ -6392,27 +6431,42 @@
"chihiro-ds": [
"chihiro-gun"
],
"citron": [],
"clk": [],
"corsixth": [],
"cxbx-reloaded": [
"cxbx"
],
"cxbx-reloaded-2023": [
"chihiro"
],
"demul": [],
"desmume": [],
"desmume2015": [
"desmume_2015"
],
"devilutionx": [],
"dhewm3": [],
"dice": [],
"dolphin": [
"dolphin-gui",
"dolphin-sa"
"dolphin-qt-gc",
"dolphin-qt-wii",
"dolphin-sa",
"dolphin-sa-gc",
"dolphin-sa-wii"
],
"dosbox": [],
"dosbox-staging": [
"dosbox_staging"
],
"dosbox-x": [
"dosboxx"
],
"dosbox_pure": [],
"drastic": [
"drastic-sa"
"drastic-sa",
"drastic_standalone"
],
"dsperate": [
"dsperate-sa"
@@ -6421,17 +6475,30 @@
"Duckstation",
"duckstation-sa"
],
"duckstation-legacy": [],
"dxx-rebirth": [
"d1x-rebirth",
"d2x-rebirth"
],
"easyrpg": [],
"ecwolf": [
"ECWolf"
],
"eduke32": [],
"eka2l1": [],
"emuscv": [],
"ep128emu_core": [
"ep128emu",
"ep128emu-core"
],
"etlegacy": [],
"fake08": [
"fake_08"
],
"fallout1-ce": [
"fallout-ce"
],
"fallout2-ce": [],
"fba2x": [
"pifba"
],
@@ -6439,14 +6506,20 @@
"fbalpha"
],
"fbneo": [
"FBNEOSA"
"FBNEOSA",
"fbneo_32b",
"fbneo_plus",
"km_fbneo_xtreme_amped"
],
"fceumm": [],
"flycast": [
"flycast-dev",
"flycast-next",
"flycast-sa",
"flycast32_rumble",
"flycast_32b",
"flycast_dev",
"flycast_rumble",
"flycastsa",
"flycastvl"
],
@@ -6456,20 +6529,28 @@
"flycast2021": [
"flycast-xtreme"
],
"fmsx": [],
"fpse-ng": [
"fpse64",
"fpseng"
],
"freechaf": [],
"freeintv": [],
"freej2me": [],
"fsuae": [],
"fury": [
"ionfury"
],
"fuse": [
"fuse_libretro"
],
"gambatte": [],
"gba-emu": [
"GBA-EMU",
"GBA.emu"
],
"gearcoleco": [],
"gearsystem": [],
"genesis_plus_gx": [
"genesis-plus-gx",
"genesis_plus_gx_cart_special",
@@ -6484,42 +6565,68 @@
"genesisplusgx-wide",
"genesisplusgxwide"
],
"gong": [],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"gsplus-legacy": [
"gsplus"
],
"gw": [
"gw_libretro"
],
"gzdoom": [
"GZDoom",
"gzdoom-sa"
],
"handy": [],
"hatari": [
"HATARISA",
"hatari-fast",
"hatarisa"
],
"hatarib": [],
"hcl": [],
"higan_sfc_balanced": [
"nside_sfc_balanced"
],
"holani": [],
"hurrican": [],
"hypseus-singe": [
"HYPSEUS",
"hypseus",
"hypseus_singe"
],
"ikemen": [],
"ioquake3": [],
"iortcw": [],
"jazz2-native": [
"jazz2"
],
"kronos": [],
"lexaloffle": [
"Pico-8",
"float-scaled",
"pico-8",
"pico8",
"pico_standalone",
"vox_official"
],
"lightspark": [],
"lindbergh-loader": [],
"linkboy": [
"LINKBOY",
"Linkboy"
],
"lowresnx": [
"lowres_nx"
],
"lrps2": [
"pcsx2",
"ps2"
],
"lutro": [],
"lynx-emu": [
"LYNX-EMU",
"Lynx.emu"
@@ -6584,13 +6691,26 @@
"mesen2"
],
"mgba": [
"mgba_fork"
"mgba_fork",
"mgba_rumble",
"msgb"
],
"minivmac": [],
"model2": [
"m2emulator",
"model2emu"
],
"moonlight": [
"lr_moonlight"
],
"mrboom": [],
"msx-emu": [
"MSX-EMU",
"MSX.emu"
],
"mupen64plus": [
"mupen64plus - standalone - glidemk2 - full",
"mupen64plus-auto",
"mupen64plus-sa",
"mupen64plussa"
],
@@ -6620,6 +6740,7 @@
"nekop2": [
"meowpc98"
],
"neocd": [],
"nes-emu": [
"NES-EMU",
"NES.emu"
@@ -6628,6 +6749,7 @@
"NESOID",
"Nesoid"
],
"nestopia": [],
"nethersx2": [
"NETHERSX2",
"NetherSX2"
@@ -6640,18 +6762,37 @@
"NETHERSX2-TURNIP-CLASSIC",
"NetherSX2-Turnip-Classic"
],
"np2kai": [],
"nxengine": [
"nx"
],
"o2em": [
"o2em_libretro"
],
"openbor": [
"OPENBOR",
"openbor v7530 - standalone",
"openbor4432",
"openbor6330",
"openbor6412",
"openbor6510",
"openbor7142",
"openbor7530",
"openbor_standalone_plus"
],
"openjazz": [
"OpenJazz"
],
"openjk": [],
"openjkdf2": [],
"openmohaa": [],
"openmsx": [
"openmsx-ld"
],
"opentyrian": [
"tyrian"
],
"opera": [],
"parallel-launcher": [
"ca.parallel_launcher.ParallelLauncher"
],
@@ -6666,18 +6807,26 @@
"com.PceEmu",
"pceemu"
],
"pcsx2": [
"pcsx2-sa"
],
"pcsx2-legacy": [
"PCSX2-LEGACY",
"pcsx2-16"
],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"pcsx_rearmed_standalone": [
"pcsx-rearmed"
"pcsx-rearmed",
"pcsx_standalone"
],
"pd777": [],
"picodrive": [],
"pizza-boy-gba": [
"PIZZA-BOY-GBA",
"Pizza Boy GBA"
@@ -6695,19 +6844,40 @@
"play": [
"play!"
],
"pokemini": [],
"potator": [],
"ppsspp": [
"PPSSPPSDL",
"ppsspp-sa"
],
"prboom": [],
"prosystem": [],
"puae": [
"uae"
],
"puae2021": [],
"px68k": [],
"px68k-sdl": [
"px68k"
],
"pygame": [
"python-pygame2"
],
"pyxel": [
"mf",
"pixel2"
],
"quasi88": [],
"quasi88kai": [
"quasi88"
],
"raze": [],
"real3doplayer": [
"REAL3DOPLAYER",
"Real3DOPlayer"
],
"redream": [],
"reminiscence": [],
"rosalies-mupen-gui": [
"RMG",
"com.github.Rosalie241.RMG",
@@ -6716,17 +6886,29 @@
"rpcs3": [
"rpcs3-sa"
],
"ruffle": [],
"ryujinx": [],
"samcoupe": [
"simcoupe"
],
"same_cdi": [],
"sameduck": [],
"saturn-emu": [
"SATURN-EMU",
"Saturn.emu",
"saturnemu"
],
"scummvm": [],
"scummvm-standalone": [
"SCUMMVMSA",
"scummvm-sa"
],
"sdl2trs": [
"sdltrs"
"sdltrs",
"sdltrs-model1"
],
"sdlpop": [
"prince"
],
"shadps4": [
"shadps4-gui"
@@ -6747,34 +6929,66 @@
"Snes9x EX+",
"Snes9xEXPlus"
],
"solarus": [
"Solarus"
],
"sonic-mania": [
"sonicmania"
],
"sonic2013": [
"sonicretro"
],
"sonic3-air": [
"sonic3air"
],
"soniccd": [
"sonicretrocd"
],
"squirreljme": [],
"stella": [
"STELLASA"
],
"stella2014": [],
"superbroswar": [
"km_superbroswar"
],
"supermodel": [],
"supermodel-legacy": [],
"swanstation": [],
"taradino": [],
"tgbdual": [
"TGB Dual"
],
"theforceengine": [
"tfe"
],
"theodore": [],
"thextech": [],
"tic80": [],
"tr1x": [],
"tr2x": [],
"triforce": [
"dolphin-triforce",
"dolphin_triforce"
],
"tsugaru": [],
"tyrquake": [],
"uae4all-rpi": [
"uae4all"
],
"uae4arm": [
"uae4arm_32b"
],
"uqm": [],
"uzem": [],
"vba_next": [
"vba-next"
],
"vbam": [
"vba-m"
],
"vecx": [],
"vemulator": [],
"vice": [
"vice_x128",
"vice_x64",
@@ -6799,30 +7013,53 @@
"vice_x64sc": [
"x64sx"
],
"vice_xpet": [
"xpet"
],
"vice_xplus4": [
"xplus4"
],
"vice_xscpu64": [
"xscpu64"
],
"vice_xvic": [
"xvic"
],
"vircon32": [],
"virtualjaguar": [],
"visual-pinball": [
"vpinball"
],
"vita3k": [
"vita3k-sa"
],
"vitaquake2": [
"vitaquake2-rogue",
"vitaquake2-xatrix",
"vitaquake2-zaero"
],
"vkquake": [],
"vkquake2": [],
"vkquake3": [],
"wasm4": [],
"x1": [
"xmil"
],
"x1-box": [
"x1box"
],
"x16emu": [],
"xash3d_fwgs": [
"xash3d"
],
"xemu": [
"xemu-sa"
],
"xenia": [
"xenia-canary",
"xenia-manager",
"xenianative"
],
"xenia-edge": [
"xenia_edge"
],
@@ -6835,11 +7072,21 @@
"XM6TYPEG",
"XM6TYPEG-WINDOWS"
],
"xrick": [],
"xroar": [
"xroar-cocous",
"xroar-dragon32"
],
"yabasanshiro": [
"yabasanshiro-2",
"yabasanshiro-libretro",
"yabasanshiro-sa",
"yabasanshiroSA"
]
"yabasanshiroSA",
"yabasanshiroSA1_5"
],
"ymir": [],
"yquake2": [],
"zc210": []
},
"system_cores": {
"3do": [
@@ -7140,6 +7387,7 @@
"mame2016",
"mame4droid",
"mame4droid-2024",
"odin",
"teknoparrot",
"ume2015"
],
@@ -7217,6 +7465,7 @@
"mupen64plus",
"mupen64plus-ae",
"mupen64plus_next",
"n64emu",
"parallel-launcher",
"parallel_n64",
"project64",
@@ -7391,6 +7640,7 @@
"flycast-dojo",
"flycast2021",
"flycast2021le",
"parallel_dc",
"redream",
"reicast",
"retrodream"
+172 -6
View File
@@ -2204,6 +2204,10 @@
}
],
"core_names": {
"2048": [],
"81": [],
"a5200": [],
"abuse": [],
"advancemame": [
"AdvanceMame",
"advmame"
@@ -2214,6 +2218,7 @@
"ares": [
"ares-sa"
],
"atari800": [],
"beetle_gba": [
"mednafen_gba"
],
@@ -2221,6 +2226,10 @@
"beetle-lynx",
"mednafen_lynx"
],
"beetle_ngp": [
"beetle-ngp",
"mednafen_ngp"
],
"beetle_pce": [
"beetle-pce",
"mednafen_pce",
@@ -2240,9 +2249,23 @@
"beetle-saturn",
"mednafen_saturn"
],
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"beetle_wswan": [
"beetle-wswan",
"mednafen_wswan"
],
"bennugd-monolithic": [
"bgdi"
],
"bermuda": [
"bs"
],
"bk": [],
"bluemsx": [],
"bsnes-jg": [
"bsnes_jg"
],
@@ -2260,6 +2283,15 @@
"bsnes_mercury_balanced",
"bsnes_mercury_performance"
],
"bstone": [],
"cannonball": [],
"cap32": [
"caprice32"
],
"ccleste": [],
"cdogs": [
"cdogs-sdl"
],
"cgenius": [
"CGeniusExe"
],
@@ -2269,13 +2301,27 @@
"daedalusx64": [
"daedalusx64-sa"
],
"daphne": [
"km_daphne_xtreme"
],
"darkplaces": [
"darkplaces-quake"
],
"devilutionx": [],
"dinothawr": [],
"dolphin": [
"dolphin-gui",
"dolphin-sa"
"dolphin-qt-gc",
"dolphin-qt-wii",
"dolphin-sa",
"dolphin-sa-gc",
"dolphin-sa-wii"
],
"dosbox-sdl2": [
"DOSBOXSDL2"
],
"dosbox_pure": [],
"dosbox_svn": [],
"doublecherrygb": [
"DoubleCherryGB"
],
@@ -2283,21 +2329,38 @@
"Duckstation",
"duckstation-sa"
],
"easyrpg": [],
"ecwolf": [
"ECWolf"
],
"eduke32": [],
"fake08": [
"fake_08"
],
"fallout1-ce": [
"fallout-ce"
],
"fallout2-ce": [],
"fbalpha2012": [
"fbalpha"
],
"fbneo": [
"FBNEOSA"
"FBNEOSA",
"fbneo_32b",
"fbneo_plus",
"km_fbneo_xtreme_amped"
],
"fceumm": [],
"fceumm_mod": [],
"fheroes2": [],
"flycast": [
"flycast-dev",
"flycast-next",
"flycast-sa",
"flycast32_rumble",
"flycast_32b",
"flycast_dev",
"flycast_rumble",
"flycastsa",
"flycastvl"
],
@@ -2307,13 +2370,17 @@
"flycast2021": [
"flycast-xtreme"
],
"fmsx": [],
"fpse-ng": [
"fpse64",
"fpseng"
],
"freeintv": [],
"freej2me": [],
"fuse": [
"fuse_libretro"
],
"gambatte": [],
"gba-emu": [
"GBA-EMU",
"GBA.emu"
@@ -2322,6 +2389,11 @@
"GBC-EMU",
"GBC.emu"
],
"gearboy": [],
"gearcoleco": [],
"geargrafx": [],
"gearlynx": [],
"gearsystem": [],
"genesis_plus_gx": [
"genesis-plus-gx",
"genesis_plus_gx_cart_special",
@@ -2336,17 +2408,30 @@
"genesisplusgx-wide",
"genesisplusgxwide"
],
"geolith": [],
"gopher64": [
"gopher64-sa"
],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"gw": [
"gw_libretro"
],
"gzdoom": [
"GZDoom",
"gzdoom-sa"
],
"handy": [],
"hatari": [
"HATARISA",
"hatari-fast",
"hatarisa"
],
"hcl": [],
"hode": [],
"hurrican": [],
"hypseus-singe": [
"HYPSEUS",
"hypseus",
@@ -2356,10 +2441,14 @@
"diii4a",
"idtech4amm"
],
"ikemen": [],
"jzintv": [],
"lexaloffle": [
"Pico-8",
"float-scaled",
"pico-8",
"pico8",
"pico_standalone",
"vox_official"
],
"linkboy": [
@@ -2414,6 +2503,10 @@
"beetle_pce_fast",
"pce_fast"
],
"mednafen_supafaust": [
"beetle_supafaust",
"supafaust"
],
"mednafen_supergrafx": [
"beetle-supergrafx",
"beetle_supergrafx"
@@ -2428,13 +2521,18 @@
"mesen2"
],
"mgba": [
"mgba_fork"
"mgba_fork",
"mgba_rumble",
"msgb"
],
"mrboom": [],
"msx-emu": [
"MSX-EMU",
"MSX.emu"
],
"mupen64plus": [
"mupen64plus - standalone - glidemk2 - full",
"mupen64plus-auto",
"mupen64plus-sa",
"mupen64plussa"
],
@@ -2467,6 +2565,7 @@
"nekop2": [
"meowpc98"
],
"neocd": [],
"nes-emu": [
"NES-EMU",
"NES.emu"
@@ -2475,18 +2574,35 @@
"NESOID",
"Nesoid"
],
"nestopia": [],
"np2kai": [],
"nxengine": [
"nx"
],
"o2em": [
"o2em_libretro"
],
"openbor": [
"OPENBOR",
"openbor v7530 - standalone",
"openbor4432",
"openbor6330",
"openbor6412",
"openbor6510",
"openbor7142",
"openbor7530",
"openbor_standalone_plus"
],
"openjazz": [
"OpenJazz"
],
"openmsx": [
"openmsx-ld"
],
"opentyrian": [
"tyrian"
],
"opera": [],
"parallel-launcher": [
"ca.parallel_launcher.ParallelLauncher"
],
@@ -2502,13 +2618,17 @@
"pceemu"
],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"pcsx_rearmed_standalone": [
"pcsx-rearmed"
"pcsx-rearmed",
"pcsx_standalone"
],
"picodrive": [],
"pizza-boy-gba": [
"PIZZA-BOY-GBA",
"Pizza Boy GBA"
@@ -2523,9 +2643,20 @@
"it.dbtecno.pizzaboyscbasic",
"it.dbtecno.pizzaboyscpro"
],
"pocketcdg": [],
"pokemini": [],
"potator": [],
"ppsspp": [
"PPSSPPSDL",
"ppsspp-sa"
],
"prboom": [],
"prosystem": [],
"puae": [
"uae"
],
"puae2021": [],
"px68k": [],
"px68k-sdl": [
"px68k"
],
@@ -2533,6 +2664,7 @@
"REAL3DOPLAYER",
"Real3DOPlayer"
],
"reminiscence": [],
"rigelengine": [
"RigelEngine"
],
@@ -2541,15 +2673,22 @@
"com.github.Rosalie241.RMG",
"mupen64"
],
"same_cdi": [],
"sameboy": [],
"sameduck": [],
"saturn-emu": [
"SATURN-EMU",
"Saturn.emu",
"saturnemu"
],
"scummvm": [],
"scummvm-standalone": [
"SCUMMVMSA",
"scummvm-sa"
],
"sdlpop": [
"prince"
],
"simple64": [
"io.github.simple64.simple64",
"simple64-gui"
@@ -2570,6 +2709,12 @@
"Snes9x EX+",
"Snes9xEXPlus"
],
"snes9x2002": [],
"snes9x2005_plus": [],
"snes9x2010": [],
"solarus": [
"Solarus"
],
"sonic-mania": [
"sonicmania"
],
@@ -2582,21 +2727,33 @@
"stella": [
"STELLASA"
],
"supermariowar": [
"smw"
],
"supertux": [
"supertux2"
],
"supertuxkart": [],
"swanstation": [],
"tgbdual": [
"TGB Dual"
],
"tic80": [],
"tyrquake": [],
"uae4all-rpi": [
"uae4all"
],
"uae4arm": [
"uae4arm_32b"
],
"uzem": [],
"vba_next": [
"vba-next"
],
"vbam": [
"vba-m"
],
"vecx": [],
"vice_x128": [
"x128"
],
@@ -2606,9 +2763,13 @@
"vice_x64sc": [
"x64sx"
],
"vice_xplus4": [
"xplus4"
],
"vice_xvic": [
"xvic"
],
"virtualjaguar": [],
"vvvvvv": [
"VVVVVV"
],
@@ -2627,10 +2788,13 @@
"XM6TYPEG",
"XM6TYPEG-WINDOWS"
],
"xrick": [],
"yabasanshiro": [
"yabasanshiro-2",
"yabasanshiro-libretro",
"yabasanshiro-sa",
"yabasanshiroSA"
"yabasanshiroSA",
"yabasanshiroSA1_5"
]
},
"system_cores": {
@@ -2803,6 +2967,7 @@
"mupen64plus-ae",
"mupen64plus-libretro",
"mupen64plus_next",
"n64emu",
"parallel-launcher",
"parallel_n64",
"project64",
@@ -2948,6 +3113,7 @@
"flycast-dojo",
"flycast2021",
"flycast2021le",
"parallel_dc",
"redream",
"reicast",
"retrodream"
+30 -4
View File
@@ -6,7 +6,7 @@
"platform": "minui",
"display_name": "MinUI",
"version": "2025-11-27",
"generated": "2026-10-27T10:27:58Z",
"generated": "2026-11-06T07:21:27Z",
"base_destination": "",
"detect": [
{
@@ -24,19 +24,45 @@
"total_omitted": 0,
"omitted_files": [],
"core_names": {
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"fake08": [
"fake_08"
],
"fceumm": [],
"gambatte": [],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"mednafen_pce_fast": [
"beetle-pce-fast",
"beetle_pce_fast",
"pce_fast"
],
"mednafen_supafaust": [
"beetle_supafaust",
"supafaust"
],
"mgba": [
"mgba_fork"
"mgba_fork",
"mgba_rumble",
"msgb"
],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
]
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"picodrive": [],
"pokemini": [],
"race": [],
"snes9x2005_plus": []
},
"system_cores": {},
"system_names": {},
+50 -6
View File
@@ -87,12 +87,39 @@
}
],
"core_names": {
"fbneo": [
"FBNEOSA"
"a5200": [],
"beetle_ngp": [
"beetle-ngp",
"mednafen_ngp"
],
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"beetle_wswan": [
"beetle-wswan",
"mednafen_wswan"
],
"dosbox_pure": [],
"fake08": [
"fake_08"
],
"fbneo": [
"FBNEOSA",
"fbneo_32b",
"fbneo_plus",
"km_fbneo_xtreme_amped"
],
"fceumm": [],
"fuse": [
"fuse_libretro"
],
"gambatte": [],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"mame2003_plus": [
"mame078plus",
"mame2003-plus"
@@ -102,14 +129,31 @@
"beetle_pce_fast",
"pce_fast"
],
"mgba": [
"mgba_fork"
"mednafen_supafaust": [
"beetle_supafaust",
"supafaust"
],
"mgba": [
"mgba_fork",
"mgba_rumble",
"msgb"
],
"neocd": [],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
]
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"picodrive": [],
"pokemini": [],
"prboom": [],
"prosystem": [],
"puae2021": [],
"snes9x2005_plus": [],
"stella2014": [],
"tyrquake": []
},
"system_cores": {},
"system_names": {},
+49 -4
View File
@@ -67,32 +67,77 @@
}
],
"core_names": {
"fbneo": [
"FBNEOSA"
"a5200": [],
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"bluemsx": [],
"cap32": [
"caprice32"
],
"fake08": [
"fake_08"
],
"fbneo": [
"FBNEOSA",
"fbneo_32b",
"fbneo_plus",
"km_fbneo_xtreme_amped"
],
"fceumm": [],
"gambatte": [],
"gearcoleco": [],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"handy": [],
"mednafen_pce_fast": [
"beetle-pce-fast",
"beetle_pce_fast",
"pce_fast"
],
"mednafen_supafaust": [
"beetle_supafaust",
"supafaust"
],
"mgba": [
"mgba_fork"
"mgba_fork",
"mgba_rumble",
"msgb"
],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"picodrive": [],
"pokemini": [],
"prboom": [],
"prosystem": [],
"puae2021": [],
"race": [],
"snes9x": [
"pocketsnes",
"snes9x_next"
],
"stella2014": [],
"vice_x128": [
"x128"
],
"vice_x64": [
"x64"
],
"vice_xpet": [
"xpet"
],
"vice_xplus4": [
"xplus4"
],
"vice_xvic": [
"xvic"
]
+241 -8
View File
@@ -2283,6 +2283,13 @@
}
],
"core_names": {
"2048": [],
"81": [],
"a5200": [],
"advanced_drastic": [
"DraStic-original",
"drastic - standalone"
],
"advancemame": [
"AdvanceMame",
"advmame"
@@ -2293,6 +2300,8 @@
"amiberry": [
"AMIBERRY"
],
"applewin": [],
"arduous": [],
"ares": [
"ares-sa"
],
@@ -2300,6 +2309,9 @@
"armsx2-sa",
"armsx2_libretro"
],
"atari800": [],
"b2": [],
"beebem": [],
"beetle_gba": [
"mednafen_gba"
],
@@ -2307,6 +2319,10 @@
"beetle-lynx",
"mednafen_lynx"
],
"beetle_ngp": [
"beetle-ngp",
"mednafen_ngp"
],
"beetle_pce": [
"beetle-pce",
"mednafen_pce",
@@ -2326,6 +2342,21 @@
"beetle-saturn",
"mednafen_saturn"
],
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"beetle_wswan": [
"beetle-wswan",
"mednafen_wswan"
],
"bk": [],
"bluemsx": [],
"boom3": [
"boom3_xp"
],
"bsnes": [],
"bsnes-jg": [
"bsnes_jg"
],
@@ -2347,30 +2378,52 @@
"C64-EMU",
"C64.emu"
],
"cannonball": [],
"cap32": [
"caprice32"
],
"cdi2015": [],
"chihiro-ds": [
"chihiro-gun"
],
"corsixth": [],
"craft": [],
"crocods": [],
"cxbx-reloaded": [
"cxbx"
],
"cxbx-reloaded-2023": [
"chihiro"
],
"daphne": [
"km_daphne_xtreme"
],
"desmume": [],
"desmume2015": [
"desmume_2015"
],
"dice": [],
"dinothawr": [],
"dirksimple": [],
"dolphin": [
"dolphin-gui",
"dolphin-sa"
"dolphin-qt-gc",
"dolphin-qt-wii",
"dolphin-sa",
"dolphin-sa-gc",
"dolphin-sa-wii"
],
"dosbox": [],
"dosbox-x": [
"dosboxx"
],
"dosbox_pure": [],
"doublecherrygb": [
"DoubleCherryGB"
],
"drastic": [
"drastic-sa"
"drastic-sa",
"drastic_standalone"
],
"dsperate": [
"dsperate-sa"
@@ -2379,22 +2432,38 @@
"Duckstation",
"duckstation-sa"
],
"easyrpg": [],
"ecwolf": [
"ECWolf"
],
"eightyone": [],
"emuscv": [],
"ep128emu_core": [
"ep128emu",
"ep128emu-core"
],
"exel-hence": [],
"fake08": [
"fake_08"
],
"fba2x": [
"pifba"
],
"fbneo": [
"FBNEOSA"
"FBNEOSA",
"fbneo_32b",
"fbneo_plus",
"km_fbneo_xtreme_amped"
],
"fceumm": [],
"flycast": [
"flycast-dev",
"flycast-next",
"flycast-sa",
"flycast32_rumble",
"flycast_32b",
"flycast_dev",
"flycast_rumble",
"flycastsa",
"flycastvl"
],
@@ -2404,13 +2473,18 @@
"flycast2021": [
"flycast-xtreme"
],
"fmsx": [],
"fpse-ng": [
"fpse64",
"fpseng"
],
"freechaf": [],
"freeintv": [],
"frotz": [],
"fuse": [
"fuse_libretro"
],
"gambatte": [],
"gba-emu": [
"GBA-EMU",
"GBA.emu"
@@ -2419,6 +2493,9 @@
"GBC-EMU",
"GBC.emu"
],
"gearcoleco": [],
"geargrafx": [],
"gearsystem": [],
"genesis_plus_gx": [
"genesis-plus-gx",
"genesis_plus_gx_cart_special",
@@ -2433,36 +2510,59 @@
"genesisplusgx-wide",
"genesisplusgxwide"
],
"geolith": [],
"gong": [],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"gsplus-legacy": [
"gsplus"
],
"gw": [
"gw_libretro"
],
"handy": [],
"hatari": [
"HATARISA",
"hatari-fast",
"hatarisa"
],
"hatarib": [],
"holani": [],
"hypseus-singe": [
"HYPSEUS",
"hypseus",
"hypseus_singe"
],
"imageviewer": [],
"julius": [],
"kronos": [],
"lexaloffle": [
"Pico-8",
"float-scaled",
"pico-8",
"pico8",
"pico_standalone",
"vox_official"
],
"linkboy": [
"LINKBOY",
"Linkboy"
],
"lowresnx": [
"lowres_nx"
],
"lrps2": [
"pcsx2",
"ps2"
],
"lutro": [],
"lynx-emu": [
"LYNX-EMU",
"Lynx.emu"
],
"m2000": [],
"m64plus-fz": [
"M64PLUS-FZ",
"org.mupen64plusae.v3.fzurita",
@@ -2472,9 +2572,12 @@
"mame": [
"mame64"
],
"mame0258": [],
"mame0278": [],
"mame2000": [
"imame4all"
],
"mame2003": [],
"mame2003_plus": [
"mame078plus",
"mame2003-plus"
@@ -2482,6 +2585,7 @@
"mame2010": [
"mame0139"
],
"mame2015": [],
"mame2016": [
"mess2016"
],
@@ -2507,6 +2611,11 @@
"beetle_pce_fast",
"pce_fast"
],
"mednafen_stv": [],
"mednafen_supafaust": [
"beetle_supafaust",
"supafaust"
],
"mednafen_supergrafx": [
"beetle-supergrafx",
"beetle_supergrafx"
@@ -2526,14 +2635,26 @@
"mesence": [
"mesen2"
],
"meteor": [],
"mgba": [
"mgba_fork"
"mgba_fork",
"mgba_rumble",
"msgb"
],
"minivmac": [],
"mojozork": [],
"moonlight": [
"lr_moonlight"
],
"mrboom": [],
"msx-emu": [
"MSX-EMU",
"MSX.emu"
],
"mu": [],
"mupen64plus": [
"mupen64plus - standalone - glidemk2 - full",
"mupen64plus-auto",
"mupen64plus-sa",
"mupen64plussa"
],
@@ -2563,6 +2684,7 @@
"nekop2": [
"meowpc98"
],
"neocd": [],
"nes-emu": [
"NES-EMU",
"NES.emu"
@@ -2571,6 +2693,7 @@
"NESOID",
"Nesoid"
],
"nestopia": [],
"nethersx2": [
"NETHERSX2",
"NetherSX2"
@@ -2583,12 +2706,30 @@
"NETHERSX2-TURNIP-CLASSIC",
"NetherSX2-Turnip-Classic"
],
"np2kai": [],
"nxengine": [
"nx"
],
"o2em": [
"o2em_libretro"
],
"openbor": [
"OPENBOR",
"openbor v7530 - standalone",
"openbor4432",
"openbor6330",
"openbor6412",
"openbor6510",
"openbor7142",
"openbor7530",
"openbor_standalone_plus"
],
"openlara": [],
"openmsx": [
"openmsx-ld"
],
"opera": [],
"oricutron": [],
"parallel-launcher": [
"ca.parallel_launcher.ParallelLauncher"
],
@@ -2603,18 +2744,27 @@
"com.PceEmu",
"pceemu"
],
"pcsx2": [
"pcsx2-sa"
],
"pcsx2-legacy": [
"PCSX2-LEGACY",
"pcsx2-16"
],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"pcsx_rearmed_standalone": [
"pcsx-rearmed"
"pcsx-rearmed",
"pcsx_standalone"
],
"pd777": [],
"picodrive": [],
"pisnes": [],
"pizza-boy-gba": [
"PIZZA-BOY-GBA",
"Pizza Boy GBA"
@@ -2632,33 +2782,63 @@
"play": [
"play!"
],
"pokemini": [],
"potator": [],
"ppsspp": [
"PPSSPPSDL",
"ppsspp-sa"
],
"prboom": [],
"prosystem": [],
"puae": [
"uae"
],
"puae2021": [],
"px68k": [],
"px68k-sdl": [
"px68k"
],
"quasi88": [],
"quasi88kai": [
"quasi88"
],
"quicknes": [],
"race": [],
"rb5000": [],
"real3doplayer": [
"REAL3DOPLAYER",
"Real3DOPlayer"
],
"reicast": [],
"reminiscence": [],
"retro8": [
"picante8"
],
"retrodream": [],
"rosalies-mupen-gui": [
"RMG",
"com.github.Rosalie241.RMG",
"mupen64"
],
"samcoupe": [
"simcoupe"
],
"same_cdi": [],
"sameboy": [],
"sameduck": [],
"saturn-emu": [
"SATURN-EMU",
"Saturn.emu",
"saturnemu"
],
"scummvm": [],
"scummvm-standalone": [
"SCUMMVMSA",
"scummvm-sa"
],
"sdlpop": [
"prince"
],
"skyemu": [
"skyemu-sa"
],
@@ -2675,6 +2855,12 @@
"Snes9x EX+",
"Snes9xEXPlus"
],
"snes9x2002": [],
"snes9x2005": [],
"snes9x2010": [],
"solarus": [
"Solarus"
],
"speccy": [
"SPECCY",
"com.fms.speccy",
@@ -2683,25 +2869,38 @@
"stella": [
"STELLASA"
],
"stella2014": [],
"stonesoup": [],
"sugarbox2": [],
"supermodel": [],
"swanstation": [],
"tamalibretro": [],
"tgbdual": [
"TGB Dual"
],
"theodore": [],
"thepowdertoy": [],
"ti99sim": [],
"tic80": [],
"triforce": [
"dolphin-triforce",
"dolphin_triforce"
],
"tyrquake": [],
"uae4all-rpi": [
"uae4all"
],
"uae4arm": [
"uae4arm_32b"
],
"uzem": [],
"vba_next": [
"vba-next"
],
"vbam": [
"vba-m"
],
"vecx": [],
"vice": [
"vice_x128",
"vice_x64",
@@ -2726,18 +2925,40 @@
"vice_x64sc": [
"x64sx"
],
"vice_xcbm2": [
"xcbm2"
],
"vice_xcbm5x0": [
"xcbm5x0"
],
"vice_xpet": [
"xpet"
],
"vice_xplus4": [
"xplus4"
],
"vice_xscpu64": [
"xscpu64"
],
"vice_xvic": [
"xvic"
],
"vircon32": [],
"virtualjaguar": [],
"visual-pinball": [
"vpinball"
],
"vitaquake2": [
"vitaquake2-rogue",
"vitaquake2-xatrix",
"vitaquake2-zaero"
],
"vitaquake3": [],
"vitavoyager": [],
"vvvvvv": [
"VVVVVV"
],
"wasm4": [],
"x1": [
"xmil"
],
@@ -2759,11 +2980,20 @@
"XM6TYPEG",
"XM6TYPEG-WINDOWS"
],
"xrick": [],
"xroar": [
"xroar-cocous",
"xroar-dragon32"
],
"yabasanshiro": [
"yabasanshiro-2",
"yabasanshiro-libretro",
"yabasanshiro-sa",
"yabasanshiroSA"
]
"yabasanshiroSA",
"yabasanshiroSA1_5"
],
"yabause": [],
"ymir": []
},
"system_cores": {
"3do": [
@@ -2788,6 +3018,7 @@
"mupen64plus",
"mupen64plus-ae",
"mupen64plus_next",
"n64emu",
"parallel-launcher",
"parallel_n64",
"project64",
@@ -2951,6 +3182,7 @@
"mame4droid",
"mame4droid-2024",
"mamearcade",
"parallel_dc",
"teknoparrot",
"ume2015"
],
@@ -3156,6 +3388,7 @@
"flycast-dojo",
"flycast2021",
"flycast2021le",
"parallel_dc",
"redream",
"reicast",
"retrodream"
+293 -8
View File
@@ -3841,6 +3841,13 @@
}
],
"core_names": {
"2ship": [],
"81": [],
"a5200": [],
"advanced_drastic": [
"DraStic-original",
"drastic - standalone"
],
"advancemame": [
"AdvanceMame",
"advmame"
@@ -3848,12 +3855,18 @@
"aethersx2": [
"aethersx2-sa"
],
"altirra": [],
"amiarcadia": [
"winarcadia"
],
"amiberry": [
"AMIBERRY"
],
"applewin": [],
"arcadeduck": [],
"arcadeflashweb": [],
"ardens": [],
"arduous": [],
"ares": [
"ares-sa"
],
@@ -3861,9 +3874,12 @@
"armsx2-sa",
"armsx2_libretro"
],
"atari800": [],
"azahar": [
"azahar - standalone",
"azahar-sa"
],
"b2": [],
"beetle_gba": [
"mednafen_gba"
],
@@ -3894,9 +3910,27 @@
"beetle-saturn",
"mednafen_saturn"
],
"beetle_vb": [
"beetle-vb",
"mednafen_vb",
"vb"
],
"beetle_wswan": [
"beetle-wswan",
"mednafen_wswan"
],
"bennugd": [],
"bigpemu": [
"bigpemu-sa"
],
"bizhawk": [],
"bk": [],
"blastem": [],
"bluemsx": [],
"boom3": [
"boom3_xp"
],
"bsnes": [],
"bsnes-jg": [
"bsnes_jg"
],
@@ -3914,6 +3948,16 @@
"bsnes_mercury_balanced",
"bsnes_mercury_performance"
],
"bstone": [],
"bsyndrome": [],
"cannonball": [],
"cap32": [
"caprice32"
],
"capriceforever": [],
"cdogs": [
"cdogs-sdl"
],
"cemu": [
"cemu-sa"
],
@@ -3923,19 +3967,37 @@
"chihiro-ds": [
"chihiro-gun"
],
"citra": [],
"citron": [],
"corsixth": [],
"crocods": [],
"cxbx-reloaded": [
"cxbx"
],
"cxbx-reloaded-2023": [
"chihiro"
],
"daphne": [
"km_daphne_xtreme"
],
"demul": [],
"desmume": [],
"desmume2015": [
"desmume_2015"
],
"devilutionx": [],
"dhewm3": [],
"dice": [],
"dinothawr": [],
"dolphin": [
"dolphin-gui",
"dolphin-sa"
"dolphin-qt-gc",
"dolphin-qt-wii",
"dolphin-sa",
"dolphin-sa-gc",
"dolphin-sa-wii"
],
"dosbox": [],
"dosbox-pure-unleashed": [
"dosbox-pure",
"dosboxpure"
@@ -3946,11 +4008,14 @@
"dosbox-x": [
"dosboxx"
],
"dosbox_pure": [],
"doublecherrygb": [
"DoubleCherryGB"
],
"doukutsu_rs": [],
"drastic": [
"drastic-sa"
"drastic-sa",
"drastic_standalone"
],
"droidarcadia": [
"com.amigan.droidarcadia"
@@ -3962,25 +4027,44 @@
"Duckstation",
"duckstation-sa"
],
"dusklight": [],
"easyrpg": [],
"ecwolf": [
"ECWolf"
],
"eden": [],
"eduke32": [],
"eka2l1": [],
"emuscv": [],
"ep128emu_core": [
"ep128emu",
"ep128emu-core"
],
"fake08": [
"fake_08"
],
"fbalpha2012": [
"fbalpha"
],
"fbalpha2012_cps1": [],
"fbalpha2012_cps2": [],
"fbalpha2012_cps3": [],
"fbalpha2012_neogeo": [],
"fbneo": [
"FBNEOSA"
"FBNEOSA",
"fbneo_32b",
"fbneo_plus",
"km_fbneo_xtreme_amped"
],
"fceumm": [],
"flycast": [
"flycast-dev",
"flycast-next",
"flycast-sa",
"flycast32_rumble",
"flycast_32b",
"flycast_dev",
"flycast_rumble",
"flycastsa",
"flycastvl"
],
@@ -3994,15 +4078,20 @@
"fpse64",
"fpseng"
],
"freechaf": [],
"freeintv": [],
"freej2me": [],
"freej2me_plus": [
"freej2me-plus"
],
"frodo": [],
"fuse": [
"fuse_libretro"
],
"future-pinball": [
"fpinball"
],
"gambatte": [],
"gba-emu": [
"GBA-EMU",
"GBA.emu"
@@ -4011,6 +4100,10 @@
"GBC-EMU",
"GBC.emu"
],
"gearcoleco": [],
"geargrafx": [],
"gearsystem": [],
"gemrb": [],
"genesis_plus_gx": [
"genesis-plus-gx",
"genesis_plus_gx_cart_special",
@@ -4025,20 +4118,38 @@
"genesisplusgx-wide",
"genesisplusgxwide"
],
"geolith": [],
"ghostship": [],
"gopher64": [
"gopher64-sa"
],
"gpsp": [
"gpsp_ezode_mod",
"gpsp_plus"
],
"groovymame": [],
"gsplus-legacy": [
"gsplus"
],
"gw": [
"gw_libretro"
],
"gzdoom": [
"GZDoom",
"gzdoom-sa"
],
"handy": [],
"hatari": [
"HATARISA",
"hatari-fast",
"hatarisa"
],
"hatarib": [],
"hbmame": [],
"higan_sfc_balanced": [
"nside_sfc_balanced"
],
"holani": [],
"hypseus-singe": [
"HYPSEUS",
"hypseus",
@@ -4048,45 +4159,65 @@
"diii4a",
"idtech4amm"
],
"ikemen": [],
"imageviewer": [],
"j2me-loader": [
"J2ME-LOADER"
],
"jgenesis": [],
"jl-mod": [
"JL-MOD"
],
"jollycv": [],
"jynx": [],
"jzintv": [],
"kega-fusion": [],
"kemulator": [
"KEMULATOR"
],
"kronos": [],
"lexaloffle": [
"Pico-8",
"float-scaled",
"pico-8",
"pico8",
"pico_standalone",
"vox_official"
],
"linkboy": [
"LINKBOY",
"Linkboy"
],
"linuxloader": [],
"love": [],
"lowresnx": [
"lowres_nx"
],
"lrps2": [
"pcsx2",
"ps2"
],
"lutro": [],
"lynx-emu": [
"LYNX-EMU",
"Lynx.emu"
],
"m2000": [],
"m64plus-fz": [
"M64PLUS-FZ",
"org.mupen64plusae.v3.fzurita",
"org.mupen64plusae.v3.fzurita.amazon",
"org.mupen64plusae.v3.fzurita.pro"
],
"magicengine": [],
"mame": [
"mame64"
],
"mame2000": [
"imame4all"
],
"mame2003": [],
"mame2003_midway": [],
"mame2003_plus": [
"mame078plus",
"mame2003-plus"
@@ -4094,6 +4225,7 @@
"mame2010": [
"mame0139"
],
"mame2014": [],
"mame2016": [
"mess2016"
],
@@ -4117,11 +4249,17 @@
"MD-EMU",
"MD.emu"
],
"mednafen": [],
"mednafen_pce_fast": [
"beetle-pce-fast",
"beetle_pce_fast",
"pce_fast"
],
"mednafen_snes": [
"beetle-bsnes",
"beetle_bsnes",
"beetle_snes"
],
"mednafen_supergrafx": [
"beetle-supergrafx",
"beetle_supergrafx"
@@ -4142,13 +4280,21 @@
"mesen2"
],
"mgba": [
"mgba_fork"
"mgba_fork",
"mgba_rumble",
"msgb"
],
"model2": [
"m2emulator",
"model2emu"
],
"msx-emu": [
"MSX-EMU",
"MSX.emu"
],
"mupen64plus": [
"mupen64plus - standalone - glidemk2 - full",
"mupen64plus-auto",
"mupen64plus-sa",
"mupen64plussa"
],
@@ -4178,6 +4324,7 @@
"nekop2": [
"meowpc98"
],
"neocd": [],
"nes-emu": [
"NES-EMU",
"NES.emu"
@@ -4186,6 +4333,7 @@
"NESOID",
"Nesoid"
],
"nestopia": [],
"nethersx2": [
"NETHERSX2",
"NetherSX2"
@@ -4202,15 +4350,36 @@
"NGP-EMU",
"NGP.emu"
],
"noods": [],
"nosgba": [],
"np2kai": [],
"nxengine": [
"nx"
],
"o2em": [
"o2em_libretro"
],
"openbor": [
"OPENBOR",
"openbor v7530 - standalone",
"openbor4432",
"openbor6330",
"openbor6412",
"openbor6510",
"openbor7142",
"openbor7530",
"openbor_standalone_plus"
],
"opengoal": [],
"openjazz": [
"OpenJazz"
],
"openlara": [],
"openmsx": [
"openmsx-ld"
],
"opera": [],
"oricutron": [],
"parallel-launcher": [
"ca.parallel_launcher.ParallelLauncher"
],
@@ -4225,6 +4394,9 @@
"com.PceEmu",
"pceemu"
],
"pcsx2": [
"pcsx2-sa"
],
"pcsx2-legacy": [
"PCSX2-LEGACY",
"pcsx2-16"
@@ -4233,13 +4405,20 @@
"PCSX2X6"
],
"pcsx_rearmed": [
"pcsx_rearmed32",
"pcsx_rearmed_32b",
"pcsx_rearmed_interpreter",
"pcsx_rearmed_neon"
"pcsx_rearmed_neon",
"pcsx_rearmed_rumble"
],
"pcsx_rearmed_standalone": [
"pcsx-rearmed"
"pcsx-rearmed",
"pcsx_standalone"
],
"pd777": [],
"pdark": [],
"phoenix": [],
"picodrive": [],
"pizza-boy-gba": [
"PIZZA-BOY-GBA",
"Pizza Boy GBA"
@@ -4257,15 +4436,31 @@
"play": [
"play!"
],
"pocketcdg": [],
"pokemini": [],
"potator": [],
"ppsspp": [
"PPSSPPSDL",
"ppsspp-sa"
],
"prboom": [],
"project64": [],
"prosystem": [],
"psxmame": [],
"puae": [
"uae"
],
"px68k": [],
"px68k-sdl": [
"px68k"
],
"quasi88": [],
"quasi88kai": [
"quasi88"
],
"race": [],
"raine": [],
"raze": [],
"real3doplayer": [
"REAL3DOPLAYER",
"Real3DOPlayer"
@@ -4273,6 +4468,11 @@
"realrtcw": [
"rtcw"
],
"redream": [],
"reminiscence": [],
"retro8": [
"picante8"
],
"rosalies-mupen-gui": [
"RMG",
"com.github.Rosalie241.RMG",
@@ -4281,11 +4481,20 @@
"rpcs3": [
"rpcs3-sa"
],
"ruffle": [],
"ryujinx": [],
"samcoupe": [
"simcoupe"
],
"same_cdi": [],
"sameboy": [],
"sameduck": [],
"saturn-emu": [
"SATURN-EMU",
"Saturn.emu",
"saturnemu"
],
"scummvm": [],
"scummvm-standalone": [
"SCUMMVMSA",
"scummvm-sa"
@@ -4293,6 +4502,11 @@
"shadps4": [
"shadps4-gui"
],
"simple64": [
"io.github.simple64.simple64",
"simple64-gui"
],
"singe2": [],
"skyemu": [
"skyemu-sa"
],
@@ -4309,37 +4523,68 @@
"Snes9x EX+",
"Snes9xEXPlus"
],
"snes9x2005": [],
"soh": [],
"solarus": [
"Solarus"
],
"solarus-2.0.0": [
"solarus2"
],
"sonic-mania": [
"sonicmania"
],
"sonic2013": [
"sonicretro"
],
"sonic3-air": [
"sonic3air"
],
"soniccd": [
"sonicretrocd"
],
"ssf": [],
"starship": [],
"stella": [
"STELLASA"
],
"stella2014": [],
"sudachi": [],
"superbroswar": [
"km_superbroswar"
],
"supermodel": [],
"swanstation": [],
"teknoparrot": [],
"tgbdual": [
"TGB Dual"
],
"theforceengine": [
"tfe"
],
"theodore": [],
"tic80": [],
"triforce": [
"dolphin-triforce",
"dolphin_triforce"
],
"tsugaru": [],
"tyrquake": [],
"uae4all-rpi": [
"uae4all"
],
"uae4arm": [
"uae4arm_32b"
],
"uzdoom": [],
"uzem": [],
"vba_next": [
"vba-next"
],
"vbam": [
"vba-m"
],
"vecx": [],
"vice_x128": [
"x128"
],
@@ -4349,15 +4594,32 @@
"vice_x64sc": [
"x64sx"
],
"vice_xpet": [
"xpet"
],
"vice_xplus4": [
"xplus4"
],
"vice_xvic": [
"xvic"
],
"vircon32": [],
"virtualjaguar": [],
"visual-pinball": [
"vpinball"
],
"vita3k": [
"vita3k-sa"
],
"vitaquake2": [
"vitaquake2-rogue",
"vitaquake2-xatrix",
"vitaquake2-zaero"
],
"vkquake": [],
"vkquake2": [],
"wasm4": [],
"winuae": [],
"x1": [
"xmil"
],
@@ -4370,6 +4632,12 @@
"xemu": [
"xemu-sa"
],
"xemu-chihiro": [],
"xenia": [
"xenia-canary",
"xenia-manager",
"xenianative"
],
"xenia-edge": [
"xenia_edge"
],
@@ -4382,11 +4650,25 @@
"XM6TYPEG",
"XM6TYPEG-WINDOWS"
],
"xroar": [
"xroar-cocous",
"xroar-dragon32"
],
"yabasanshiro": [
"yabasanshiro-2",
"yabasanshiro-libretro",
"yabasanshiro-sa",
"yabasanshiroSA"
]
"yabasanshiroSA",
"yabasanshiroSA1_5"
],
"ymir": [],
"yuzu": [
"yuzu-sa"
],
"zc255": [],
"zesarux": [],
"zinc": [],
"zquestclassic": []
},
"system_cores": {
"3do": [
@@ -4680,6 +4962,7 @@
"mame2016",
"mame4droid",
"mame4droid-2024",
"odin",
"teknoparrot",
"ume2015"
],
@@ -4819,6 +5102,7 @@
"mupen64plus",
"mupen64plus-ae",
"mupen64plus_next",
"n64emu",
"parallel-launcher",
"parallel_n64",
"project64",
@@ -5008,6 +5292,7 @@
"flycast-dojo",
"flycast2021",
"flycast2021le",
"parallel_dc",
"redream",
"reicast",
"retrodream"
+159 -1
View File
@@ -55,6 +55,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha",
@@ -97,6 +98,8 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"hypseushw",
"irogb",
"jaxe",
"jollycv",
@@ -154,14 +157,17 @@
"o2em",
"oberon",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -214,6 +220,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -338,6 +345,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -393,10 +401,12 @@
"oberon",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -549,6 +559,7 @@
"galaksija",
"gam4980",
"gambatte",
"gametank",
"gearboy",
"gearcoleco",
"geargrafx",
@@ -568,6 +579,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -623,10 +635,12 @@
"oberon",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -800,6 +814,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -857,12 +872,14 @@
"oberon",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -999,6 +1016,7 @@
"dosbox_svn",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha2012",
@@ -1040,13 +1058,16 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
"mame",
"mame2000",
"mame2003",
@@ -1080,6 +1101,7 @@
"mojozork",
"mrboom",
"mu",
"mupen64plus_next",
"native32emu",
"nekop2",
"neocd",
@@ -1092,15 +1114,19 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -1150,6 +1176,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -1238,6 +1265,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha",
@@ -1280,11 +1308,14 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"hypseushw",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
@@ -1323,6 +1354,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -1336,10 +1368,13 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcem",
@@ -1347,6 +1382,7 @@
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -1399,6 +1435,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -1609,6 +1646,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -1650,6 +1688,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -1665,11 +1704,13 @@
"omicron",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcem",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -1835,6 +1876,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"irogb",
"jaxe",
"jollycv",
@@ -1888,12 +1930,14 @@
"o2em",
"oberon",
"opera",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -1940,6 +1984,7 @@
"tia",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -2026,6 +2071,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha",
@@ -2068,11 +2114,14 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"hypseushw",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
@@ -2111,6 +2160,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -2124,10 +2174,13 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcem",
@@ -2135,6 +2188,7 @@
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -2187,6 +2241,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -2274,6 +2329,7 @@
"dosbox_svn",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha2012",
@@ -2315,13 +2371,16 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
"mame",
"mame2000",
"mame2003",
@@ -2355,6 +2414,7 @@
"mojozork",
"mrboom",
"mu",
"mupen64plus_next",
"native32emu",
"nekop2",
"neocd",
@@ -2367,15 +2427,19 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -2425,6 +2489,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -2509,6 +2574,7 @@
"dosbox_svn",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha2012",
@@ -2550,13 +2616,16 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
"mame",
"mame2000",
"mame2003",
@@ -2590,6 +2659,7 @@
"mojozork",
"mrboom",
"mu",
"mupen64plus_next",
"native32emu",
"nekop2",
"neocd",
@@ -2602,15 +2672,19 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -2660,6 +2734,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -2982,6 +3057,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -3023,6 +3099,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -3038,11 +3115,13 @@
"omicron",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcem",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -3207,6 +3286,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -3248,6 +3328,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -3263,11 +3344,13 @@
"omicron",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcem",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -3400,6 +3483,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha",
@@ -3442,11 +3526,14 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"hypseushw",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
@@ -3485,6 +3572,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -3498,10 +3586,13 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcem",
@@ -3509,6 +3600,7 @@
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -3561,6 +3653,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -4147,6 +4240,7 @@
"gpsp",
"gw",
"handy",
"hatari",
"hatarib",
"jaxe",
"jumpnbump",
@@ -4183,6 +4277,7 @@
"nxengine",
"o2em",
"opera",
"parallel_dc",
"pcsx_rearmed",
"pd777",
"picodrive",
@@ -4549,6 +4644,7 @@
"gpsp",
"gw",
"handy",
"hatari",
"hatarib",
"jaxe",
"jumpnbump",
@@ -4585,6 +4681,7 @@
"nxengine",
"o2em",
"opera",
"parallel_dc",
"pcsx_rearmed",
"pd777",
"picodrive",
@@ -5022,6 +5119,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha2012",
@@ -5062,6 +5160,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"irogb",
"jaxe",
"jollycv",
@@ -5115,14 +5214,17 @@
"nxengine",
"o2em",
"oberon",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -5175,6 +5277,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -5302,6 +5405,7 @@
"hbmame",
"higan_sfc",
"holani",
"hyperscanemu",
"irogb",
"ishiiruka",
"jaxe",
@@ -5356,14 +5460,17 @@
"o2em",
"oberon",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -5504,6 +5611,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha",
@@ -5546,11 +5654,14 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"hypseushw",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
@@ -5589,6 +5700,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -5602,10 +5714,13 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcem",
@@ -5613,6 +5728,7 @@
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -5665,6 +5781,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -6272,6 +6389,7 @@
"gpsp",
"gw",
"handy",
"hatari",
"hatarib",
"jaxe",
"jumpnbump",
@@ -6308,6 +6426,7 @@
"nxengine",
"o2em",
"opera",
"parallel_dc",
"pcsx_rearmed",
"pd777",
"picodrive",
@@ -6418,6 +6537,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha2012",
@@ -6458,6 +6578,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"irogb",
"jaxe",
"jollycv",
@@ -6511,11 +6632,13 @@
"o2em",
"oberon",
"opera",
"parallel_dc",
"pcee2",
"pcsx2",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -6561,6 +6684,7 @@
"tia",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -6635,6 +6759,7 @@
"dosbox_pure",
"dosbox_svn",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha2012",
@@ -6674,6 +6799,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -6723,6 +6849,7 @@
"oberon",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcsx_rearmed",
"pd777",
@@ -6773,6 +6900,7 @@
"tyrquake",
"uae4arm",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -6803,10 +6931,12 @@
"blastem",
"cemu",
"dolphin",
"eduke32",
"emuscv",
"pcee2",
"pcsx2",
"rustynes"
"rustynes",
"uzdoom"
],
"webos-armv7a": [
"2048",
@@ -6852,6 +6982,7 @@
"dosbox_pure",
"dosbox_svn",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha2012",
@@ -6891,6 +7022,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -6940,6 +7072,7 @@
"oberon",
"openlara",
"opera",
"parallel_dc",
"parallel_n64",
"pcsx_rearmed",
"pd777",
@@ -6990,6 +7123,7 @@
"tyrquake",
"uae4arm",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -7104,6 +7238,7 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"jaxe",
"jollycv",
"jumpnbump",
@@ -7143,6 +7278,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -7155,11 +7291,13 @@
"o2em",
"oberon",
"opera",
"parallel_dc",
"parallel_n64",
"pcem",
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -7294,6 +7432,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha",
@@ -7335,11 +7474,14 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"hypseushw",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
@@ -7378,6 +7520,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -7391,9 +7534,12 @@
"nxengine",
"o2em",
"oberon",
"odin",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcem",
@@ -7401,6 +7547,7 @@
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -7453,6 +7600,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
@@ -7543,6 +7691,7 @@
"doukutsu_rs",
"easyrpg",
"ecwolf",
"eduke32",
"emuscv",
"ep128emu_core",
"fbalpha",
@@ -7585,11 +7734,14 @@
"hatarib",
"hbmame",
"holani",
"hyperscanemu",
"hypseushw",
"irogb",
"jaxe",
"jollycv",
"jumpnbump",
"kronos",
"linuxloader",
"lowresnx",
"lutro",
"m2000",
@@ -7628,6 +7780,7 @@
"mrboom",
"mu",
"mupen64plus_next",
"n64emu",
"native32emu",
"nekop2",
"neocd",
@@ -7641,10 +7794,13 @@
"nxengine",
"o2em",
"oberon",
"odin",
"omicron",
"openlara",
"openmsx",
"opera",
"panda3ds",
"parallel_dc",
"parallel_n64",
"pcee2",
"pcem",
@@ -7652,6 +7808,7 @@
"pcsx_rearmed",
"pd777",
"picodrive",
"piece",
"play",
"playdiaemu",
"pocketcdg",
@@ -7704,6 +7861,7 @@
"tic80",
"tyrquake",
"uw8",
"uzdoom",
"uzem",
"vaporspec",
"vba_next",
+55 -5
View File
@@ -1,7 +1,7 @@
platform: MiSTer FPGA
version: '2026-09-29'
version: '2026-11-04'
homepage: "https://misterfpga.org"
source: "https://raw.githubusercontent.com/ajgowans/BiosDB_MiSTer/7cfa7a3e84af078d0efba74fa46c50357c4f567c/bios_db.json.zip"
source: "https://raw.githubusercontent.com/ajgowans/BiosDB_MiSTer/06aad7b223950c974dcccc48498ab57f6477cfd7/bios_db.json.zip"
base_destination: games
hash_type: md5
verification_mode: md5
@@ -142,6 +142,22 @@ systems:
native_id: SCV
name: Epoch Super Cassette Vision
docs: "https://github.com/MiSTer-devel/SuperCassetteVision_MiSTer"
fm-7:
files:
- name: boot.rom
destination: FM-7/boot.rom
required: true
md5: a330817f8f7ced752a7bcc8dfba8fd2e
size: 131072
native_system: FM-7
- name: boot1.rom
destination: FM-7/boot1.rom
required: true
md5: 513893d316e2b45493c6306aca657239
size: 131072
native_system: FM-7
native_id: FM-7
name: fm-7
gamate:
files:
- name: boot.rom
@@ -251,7 +267,7 @@ systems:
- name: boot.rom
destination: PC8801/boot.rom
required: true
md5: f1ce4d5f83717093982e5f75516b8f3c
md5: 9f3ec09d19a0768f01fdbf2826ed3253
size: 393216
native_system: PC8801
native_id: PC8801
@@ -471,6 +487,34 @@ systems:
native_id: Saturn
name: Sega Saturn
docs: "https://github.com/MiSTer-devel/Saturn_MiSTer"
sharpx1:
files:
- name: boot.rom
destination: SharpX1/boot.rom
required: true
md5: a028f990cd1f4dbaa72ed8da771916be
size: 36864
native_system: SharpX1
- name: boot1.rom
destination: SharpX1/boot1.rom
required: true
md5: ba7285001eed1ba235ed6de199cf4cb5
size: 8192
native_system: SharpX1
- name: boot2.rom
destination: SharpX1/boot2.rom
required: true
md5: eeeea1cd29c6e0e8b094790ae969bfa7
size: 4096
native_system: SharpX1
- name: boot3.rom
destination: SharpX1/boot3.rom
required: true
md5: fd90317193bb20c8045bf6eebc921919
size: 262144
native_system: SharpX1
native_id: SharpX1
name: sharpx1
snk-neogeo:
files:
- name: 000-lo.lo
@@ -643,12 +687,18 @@ systems:
name: Tiger Game.com
videobrain:
files:
- name: boot.rom
destination: VideoBrain/boot.rom
- name: boot0.rom
destination: VideoBrain/boot0.rom
required: true
md5: e1e7f6120eb8e23ca5c63b4246f04f18
size: 4096
native_system: VideoBrain
- name: boot1.rom
destination: VideoBrain/boot1.rom
required: true
md5: 41de2bceffb8257930a16e03fc431550
size: 2048
native_system: VideoBrain
native_id: VideoBrain
name: videobrain
wonderswan:
+25 -1
View File
@@ -2,7 +2,7 @@ platform: RetroArch
version: v1.22.2
dat_version: v1.19.0
homepage: "https://www.retroarch.com"
source: "https://github.com/libretro/libretro-database/blob/12c21cf79f1e20eff6ac68b80875816c717d0a7a/dat/System.dat"
source: "https://github.com/libretro/libretro-database/blob/c4e17d41ec1bb744fb064f7cefeb61b878fc5d64/dat/System.dat"
base_destination: system
hash_type: sha1
verification_mode: existence
@@ -2385,6 +2385,30 @@ systems:
native_id: Phillips - Videopac+
philips-cdi:
files:
- name: cdi200.rom
destination: cdi200.rom
required: true
sha1: d961de803c89b3d1902d656ceb9ce7c02dccb40a
md5: 2969341396aa61e0143dc2351aaa6ef6
crc32: 40c4e6b9
size: 524288
native_system: Philips - CD-i
- name: cdi220b.rom
destination: cdi220b.rom
required: true
sha1: 53360a1f21ddac952e95306ced64186a3fc0b93e
md5: ac0d468be366779c9df633be98da250a
crc32: 279683ca
size: 524288
native_system: Philips - CD-i
- name: vmpega.rom
destination: vmpega.rom
required: true
sha1: be407fbc102f1731a0862554855e963e5a47c17b
md5: 53ba3bf7443187a657baa272d01d3771
crc32: db264e8b
size: 262144
native_system: Philips - CD-i
- name: cdimono1.zip
destination: cdimono1.zip
required: true
+216 -168
View File
@@ -1,7 +1,7 @@
platform: RetroBat
version: 8.3.1
homepage: "https://www.retrobat.org"
source: "https://raw.githubusercontent.com/RetroBat-Official/emulatorlauncher/48cdc61623c5943bb17647b80a60d32d395c3725/batocera-systems/Resources/batocera-systems.json"
source: "https://raw.githubusercontent.com/RetroBat-Official/emulatorlauncher/ca486005f598551600d04a33b3156a5d764368d6/batocera-systems/Resources/batocera-systems.json"
base_destination: bios
hash_type: md5
verification_mode: md5
@@ -523,7 +523,6 @@ systems:
- name: advision.zip
destination: advision.zip
required: true
md5: 1c08606408029751fd30ac91d2bf30d5
native_system: advision
native_path: bios/advision.zip
native_name: Adventure Vision
@@ -605,7 +604,6 @@ systems:
- name: apfm1000.zip
destination: apfm1000.zip
required: true
md5: b197db12f7a13827717bbeb7cfd9542a
native_system: apfm1000
native_path: bios/apfm1000.zip
native_name: APF M-1000
@@ -817,7 +815,6 @@ systems:
- name: ar_bios.zip
destination: ar_bios.zip
required: true
md5: 37e9746f4491aa2df9a83729d1a93620
native_system: arcadia
native_path: bios/ar_bios.zip
native_name: Arcadia 2001
@@ -854,7 +851,6 @@ systems:
- name: astrocde.zip
destination: astrocde.zip
required: true
md5: f58a3823ab308ef0a02b498d126e5d96
native_system: astrocde
native_path: bios/astrocde.zip
native_name: Astrocade
@@ -1037,14 +1033,12 @@ systems:
- name: awbios.zip
destination: dc/awbios.zip
required: true
md5: 0ec5ae5b5a5c4959fa8b43fcf8687f7c
native_system: atomiswave
native_path: bios/dc/awbios.zip
native_name: Atomiswave
- name: naomi.zip
destination: dc/naomi.zip
required: true
md5: eb4099aeb42ef089cfe94f8fe95e51f6
native_system: naomi
native_path: bios/dc/naomi.zip
native_name: Naomi
@@ -1224,7 +1218,6 @@ systems:
- name: casloopy.zip
destination: casloopy.zip
required: true
md5: 0e1d8dc0110ecf8201c0cef11ef4a858
native_system: loopy
native_path: bios/casloopy.zip
native_name: Casio Loopy
@@ -1575,22 +1568,10 @@ systems:
name: FM-7
fmtowns:
files:
- name: fmtowns.zip
destination: fmtowns.zip
required: true
native_system: fmtowns
native_path: bios/fmtowns.zip
native_name: FMTowns
- name: fmtownsux.zip
destination: fmtownsux.zip
required: true
native_system: fmtowns
native_path: bios/fmtownsux.zip
native_name: FMTowns
- name: FMT_DIC.ROM
destination: fmtowns/FMT_DIC.ROM
required: true
md5: 8fa4e553f28cfc0c30a0a1e589799942
md5: 34847786d7de94b5d1133c956ab1d75d
native_system: fmtowns
native_path: bios/fmtowns/FMT_DIC.ROM
native_name: FMTowns
@@ -1601,58 +1582,26 @@ systems:
native_system: fmtowns
native_path: bios/fmtowns/FMT_DOS.ROM
native_name: FMTowns
- name: FMT_F20.ROM
destination: fmtowns/FMT_F20.ROM
required: true
md5: ac0c7021e9bf48ca84b51ab651169a88
native_system: fmtowns
native_path: bios/fmtowns/FMT_F20.ROM
native_name: FMTowns
- name: FMT_FNT.ROM
destination: fmtowns/FMT_FNT.ROM
required: true
md5: b91300e55b70227ce98b59c5f02fa8dd
md5: eb44f2093f51eb7159f03e170b13af76
native_system: fmtowns
native_path: bios/fmtowns/FMT_FNT.ROM
native_name: FMTowns
- name: FMT_SYS.ROM
destination: fmtowns/FMT_SYS.ROM
required: true
md5: 86fb6f7280689259f0ca839dd3dd6cde
md5: feaf8c5675151e00cfe3ad27673bff29
native_system: fmtowns
native_path: bios/fmtowns/FMT_SYS.ROM
native_name: FMTowns
- name: fmtowns_cd.xml
destination: mame/hash/fmtowns_cd.xml
required: true
native_system: fmtowns
native_path: bios/mame/hash/fmtowns_cd.xml
native_name: FMTowns
- name: fmtowns_flop_cracked.xml
destination: mame/hash/fmtowns_flop_cracked.xml
required: true
native_system: fmtowns
native_path: bios/mame/hash/fmtowns_flop_cracked.xml
native_name: FMTowns
- name: fmtowns_flop_misc.xml
destination: mame/hash/fmtowns_flop_misc.xml
required: true
native_system: fmtowns
native_path: bios/mame/hash/fmtowns_flop_misc.xml
native_name: FMTowns
- name: fmtowns_flop_orig.xml
destination: mame/hash/fmtowns_flop_orig.xml
required: true
native_system: fmtowns
native_path: bios/mame/hash/fmtowns_flop_orig.xml
native_name: FMTowns
name: FMTowns
gamate:
files:
- name: gamate.zip
destination: gamate.zip
required: true
md5: 320bf3d4142fa1043255db7ff87d17c7
native_system: gamate
native_path: bios/gamate.zip
native_name: Gamate
@@ -1668,7 +1617,6 @@ systems:
- name: gamecom.zip
destination: gamecom.zip
required: true
md5: f2087ed09f7fa8d8856cfafb20dd00dc
native_system: gamecom
native_path: bios/gamecom.zip
native_name: Game.com
@@ -1684,7 +1632,6 @@ systems:
- name: gamepock.zip
destination: gamepock.zip
required: true
md5: 887479fe3c69a0b935c57a7a738e26c4
native_system: gamepock
native_path: bios/gamepock.zip
native_name: Game Pocket
@@ -1730,7 +1677,6 @@ systems:
- name: gmaster.zip
destination: gmaster.zip
required: true
md5: 4239d6f44a0d78d27c69f9b95885f48e
native_system: gmaster
native_path: bios/gmaster.zip
native_name: Game Master
@@ -1746,7 +1692,6 @@ systems:
- name: gp32.zip
destination: gp32.zip
required: true
md5: 8c392f475834218d88533150d36cc84c
native_system: gp32
native_path: bios/gp32.zip
native_name: Game Park 32
@@ -1762,14 +1707,12 @@ systems:
- name: hikaru.zip
destination: hikaru.zip
required: true
md5: aac601811a25d7b31a3d5f3f1f82f338
native_system: hikaru
native_path: bios/hikaru.zip
native_name: Hikaru
- name: mie.zip
destination: mie.zip
required: true
md5: e95415b161121bef35ade12367138c63
native_system: hikaru
native_path: bios/mie.zip
native_name: Hikaru
@@ -2323,7 +2266,6 @@ systems:
- name: neogeo.zip
destination: neogeo.zip
required: true
md5: dffb72f116d36d025068b23970a4f6df
native_system: neogeo
native_path: bios/neogeo.zip
native_name: NeoGeo
@@ -2333,7 +2275,6 @@ systems:
- name: neogeo.zip
destination: neogeo.zip
required: true
md5: dffb72f116d36d025068b23970a4f6df
native_system: neogeo64
native_path: bios/neogeo.zip
native_name: Hyper NeoGeo 64
@@ -2343,14 +2284,12 @@ systems:
- name: neogeo.zip
destination: neogeo.zip
required: true
md5: dffb72f116d36d025068b23970a4f6df
native_system: neogeocd
native_path: bios/neogeo.zip
native_name: NeoGeo CD
- name: neocdz.zip
destination: neocdz.zip
required: true
md5: c733b4b7bd30fa849874d96c591c8639
native_system: neogeocd
native_path: bios/neocdz.zip
native_name: NeoGeo CD
@@ -2609,7 +2548,6 @@ systems:
- name: pegasus.zip
destination: pegasus.zip
required: true
md5: fee37d8140e4fab48aac4fdab2847f7d
native_system: pegasus
native_path: bios/pegasus.zip
native_name: Aamber Pegasus
@@ -2638,6 +2576,75 @@ systems:
md5: 21038400dc633070a78ad53090c53017
native_system: ps2
native_path: bios/pcsx2/bios/ps2-0230a-20080220.bin
group: ps2
native_name: PS2
- name: ps2-0230e-20080220.bin
destination: pcsx2/bios/ps2-0230e-20080220.bin
required: true
md5: dc69f0643a3030aaa4797501b483d6c4
native_system: ps2
native_path: bios/pcsx2/bios/ps2-0230e-20080220.bin
group: ps2
native_name: PS2
- name: ps2-0230j-20080220.bin
destination: pcsx2/bios/ps2-0230j-20080220.bin
required: true
md5: 80ac46fa7e77b8ab4366e86948e54f83
native_system: ps2
native_path: bios/pcsx2/bios/ps2-0230j-20080220.bin
group: ps2
native_name: PS2
- name: ps2-0250e-20100415.bin
destination: pcsx2/bios/ps2-0250e-20100415.bin
required: true
md5: 93ea3bcee4252627919175ff1b16a1d9
native_system: ps2
native_path: bios/pcsx2/bios/ps2-0250e-20100415.bin
group: ps2
native_name: PS2
- name: SCPH30004R.bin
destination: pcsx2/bios/SCPH30004R.bin
required: true
md5: 28922c703cc7d2cf856f177f2985b3a9
native_system: ps2
native_path: bios/pcsx2/bios/SCPH30004R.bin
group: ps2
native_name: PS2
- name: scph39001.bin
destination: pcsx2/bios/scph39001.bin
required: true
md5: d5ce2c7d119f563ce04bc04dbc3a323e
native_system: ps2
native_path: bios/pcsx2/bios/scph39001.bin
group: ps2
native_name: PS2
- name: ps3_ps2_emu_bios.bin
destination: pcsx2/bios/ps3_ps2_emu_bios.bin
required: true
native_system: ps2
native_path: bios/pcsx2/bios/ps3_ps2_emu_bios.bin
group: ps2
native_name: PS2
- name: SCPH-39004_BIOS_V7_EUR_160.BIN
destination: pcsx2/bios/SCPH-39004_BIOS_V7_EUR_160.BIN
required: true
native_system: ps2
native_path: bios/pcsx2/bios/SCPH-39004_BIOS_V7_EUR_160.BIN
group: ps2
native_name: PS2
- name: SCPH-39001_BIOS_V7_USA_160.BIN
destination: pcsx2/bios/SCPH-39001_BIOS_V7_USA_160.BIN
required: true
native_system: ps2
native_path: bios/pcsx2/bios/SCPH-39001_BIOS_V7_USA_160.BIN
group: ps2
native_name: PS2
- name: SCPH-70000_BIOS_V12_JAP_200.BIN
destination: pcsx2/bios/SCPH-70000_BIOS_V12_JAP_200.BIN
required: true
native_system: ps2
native_path: bios/pcsx2/bios/SCPH-70000_BIOS_V12_JAP_200.BIN
group: ps2
native_name: PS2
name: PS2
sony-playstation:
@@ -2736,7 +2743,6 @@ systems:
- name: scv.zip
destination: scv.zip
required: true
md5: 33df021613fb12abe2ad14b9eb17c7fe
native_system: scv
native_path: bios/scv.zip
native_name: Super Cassette Vision
@@ -2907,14 +2913,14 @@ systems:
required: true
native_system: tutor
native_path: bios/tutor.zip
native_name: APF M-1000
native_name: Tomy Tutor
- name: tutor.xml
destination: mame/hash/tutor.xml
required: true
native_system: tutor
native_path: bios/mame/hash/tutor.xml
native_name: APF M-1000
name: APF M-1000
native_name: Tomy Tutor
name: Tomy Tutor
vc4000:
files:
- name: vc4000.xml
@@ -3533,7 +3539,7 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick34005.A500, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:69-74, 544-548, 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:69-74, 532-536, 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3547,7 +3553,7 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick33180.A500, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:76-81, 544-548, 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:76-81, 532-536, 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3561,7 +3567,7 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick37175.A500, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:83-88, 544-548, 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:83-88, 532-536, 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3575,7 +3581,7 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick40063.A600, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:90-95, 544-548, 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:90-95, 532-536, 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3589,8 +3595,8 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick40068.A1200, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:97-111, 544-548,\
\ 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:97-111, 532-536,\
\ 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3603,8 +3609,8 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick40068.A4000, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:113-127, 544-548,\
\ 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:113-127, 532-536,\
\ 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3618,7 +3624,7 @@ launchers:
passes_to: copied to <amiberry roms>/kick40060.CD32, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:129-134, 138-143,\
\ 544-548, 686-711"
\ 532-536, 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3631,8 +3637,8 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick40060.CD32.ext, kickstart_ext_rom_file
fails_when_missing: warning, kickstart_ext_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:129-145, 553-557,\
\ 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:129-145, 541-545,\
\ 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3645,8 +3651,8 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick34005.A500, kickstart_rom_file
fails_when_missing: warning, kickstart_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:147-151, 544-548,\
\ 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:147-151, 532-536,\
\ 674-699"
- emulator: amiberry
build: standalone
kind: names_searched
@@ -3660,20 +3666,20 @@ launchers:
search_dir: bios, bios/amiga, bios/Amiga
passes_to: copied to <amiberry roms>/kick34005.CDTV, kickstart_ext_rom_file
fails_when_missing: warning, kickstart_ext_rom_file not written
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:147-154, 553-557,\
\ 686-711"
source_ref: "emulatorLauncher/Generators/Amiberry.Generator.cs:147-154, 541-545,\
\ 674-699"
- emulator: arcadeduck
build: standalone
kind: names_searched
names:
- <bios archive of the game's system in resources/arcadedb.yaml>
case_insensitive: false
search_dir: <rom directory>, then bios
search_dir: <rom directory>, then the folder above it for a CHD-only set, then bios
passes_to: "settings.ini [BIOS] SearchDirectory = <folder found>"
fails_when_missing: "ApplicationException 'Missing BIOS '<biosArchive>' : place\
\ it next to the game or in the RetroBat bios folder.'"
source_ref: "emulatorLauncher/Generators/ArcadeDuck.Generator.cs:52, 102-122, 219,\
\ emulatorLauncher/Generators/ArcadeDuck.Database.cs:62, 221-222"
source_ref: "emulatorLauncher/Generators/ArcadeDuck.Generator.cs:42, 144-170, 273,\
\ emulatorLauncher/Generators/ArcadeDuck.Database.cs:64, 303-304"
- emulator: arcadeduck
build: standalone
kind: names_searched
@@ -3681,13 +3687,13 @@ launchers:
- konamigv.zip
slot: konami_gv
case_insensitive: false
search_dir: <rom directory>, then bios
search_dir: <rom directory>, then the folder above it for a CHD-only set, then bios
passes_to: "settings.ini [BIOS] SearchDirectory = <folder found>"
fails_when_missing: "ApplicationException 'Missing BIOS '<biosArchive>' : place\
\ it next to the game or in the RetroBat bios folder.'"
depends_on_option: resources/arcadedb.yaml names no archive for konami_gv
source_ref: "emulatorLauncher/Generators/ArcadeDuck.Generator.cs:52, 102-122, 219,\
\ emulatorLauncher/Generators/ArcadeDuck.Database.cs:62, 221-222"
source_ref: "emulatorLauncher/Generators/ArcadeDuck.Generator.cs:42, 144-170, 273,\
\ emulatorLauncher/Generators/ArcadeDuck.Database.cs:64, 303-304"
- emulator: arcadeduck
build: standalone
kind: passes_path
@@ -3696,8 +3702,8 @@ launchers:
passes_to: "settings.ini [BIOS] SearchDirectory = bios"
fails_when_missing: false
depends_on_option: no bios archive known for the game's system
source_ref: "emulatorLauncher/Generators/ArcadeDuck.Generator.cs:52, 102-122, 219,\
\ emulatorLauncher/Generators/ArcadeDuck.Database.cs:62, 221-222"
source_ref: "emulatorLauncher/Generators/ArcadeDuck.Generator.cs:42, 144-170, 273,\
\ emulatorLauncher/Generators/ArcadeDuck.Database.cs:64, 303-304"
- emulator: ares
build: standalone
kind: names_searched
@@ -3709,7 +3715,7 @@ launchers:
search_dir: bios/laseractive
passes_to: "settings.bml LaserActiveSEGAPAC/Firmware/BIOS.Japan (first found)"
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/Ares.Generator.cs:518-529"
source_ref: "emulatorLauncher/Generators/Ares.Generator.cs:531-542"
- emulator: ares
build: standalone
kind: names_searched
@@ -3720,7 +3726,7 @@ launchers:
search_dir: bios/laseractive
passes_to: "settings.bml LaserActiveSEGAPAC/Firmware/BIOS.US (first found)"
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/Ares.Generator.cs:524-531"
source_ref: "emulatorLauncher/Generators/Ares.Generator.cs:537-544"
- emulator: bizhawk
build: standalone
kind: fixed_name
@@ -3796,7 +3802,7 @@ launchers:
search_dir: bios
passes_to: blastem.cfg system.scd_bios_us, only if the file exists
fails_when_missing: info log, scd_bios_us left as it is
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:258, 262, 272-279"
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:251, 255, 265-272"
- emulator: blastem
build: standalone
kind: fixed_name
@@ -3806,7 +3812,7 @@ launchers:
search_dir: bios
passes_to: blastem.cfg system.scd_bios_eu, only if the file exists
fails_when_missing: info log, scd_bios_eu left as it is
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:258, 263, 272-279"
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:251, 256, 265-272"
- emulator: blastem
build: standalone
kind: fixed_name
@@ -3816,7 +3822,7 @@ launchers:
search_dir: bios
passes_to: blastem.cfg system.scd_bios_jp, only if the file exists
fails_when_missing: info log, scd_bios_jp left as it is
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:258, 264, 272-279"
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:251, 257, 265-272"
- emulator: blastem
build: standalone
kind: fixed_name
@@ -3826,7 +3832,7 @@ launchers:
search_dir: bios
passes_to: blastem.cfg system.coleco_bios_path, only if the file exists
fails_when_missing: info log, coleco_bios_path left as it is
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:258, 265, 272-279"
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:251, 258, 265-272"
- emulator: blastem
build: standalone
kind: fixed_name
@@ -3836,7 +3842,7 @@ launchers:
search_dir: bios
passes_to: blastem.cfg system.s32x_main_bios, only if the file exists
fails_when_missing: info log, s32x_main_bios left as it is
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:258, 267, 272-279"
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:251, 260, 265-272"
- emulator: blastem
build: standalone
kind: fixed_name
@@ -3846,7 +3852,7 @@ launchers:
search_dir: bios
passes_to: blastem.cfg system.s32x_sub_bios, only if the file exists
fails_when_missing: info log, s32x_sub_bios left as it is
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:258, 268, 272-279"
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:251, 261, 265-272"
- emulator: blastem
build: standalone
kind: fixed_name
@@ -3856,7 +3862,7 @@ launchers:
search_dir: bios
passes_to: blastem.cfg system.s32x_68k_bios, only if the file exists
fails_when_missing: info log, s32x_68k_bios left as it is
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:258, 269, 272-279"
source_ref: "emulatorLauncher/Generators/Blastem.Generator.cs:251, 262, 265-272"
- emulator: bsyndrome
build: standalone
kind: passes_path
@@ -3865,9 +3871,9 @@ launchers:
passes_to: command line --musicpath=bios/bsyndrome/MUSIC
fails_when_missing: false
depends_on_option: _emulator == "bsyndrome"
source_ref: "emulatorLauncher/Generators/PortsLauncher.Configuration.cs:133-134,\
\ 153, 157-158"
- emulator: amiberry, hatari, hatarib, puae
source_ref: "emulatorLauncher/Generators/PortsLauncher.Configuration.cs:253-254,\
\ 273, 277-278"
- emulator: amiberry, hatari, hatari2014, hatarib, puae
build: libretro
kind: copies
names:
@@ -3877,7 +3883,7 @@ launchers:
passes_to: copied to <retroarch>/<name>, only when the target does not exist
fails_when_missing: false
depends_on_option: core in capsimgCore, rom extension ".ipf"
source_ref: "emulatorLauncher/Generators/LibRetro.Generator.cs:1008-1017, 2659"
source_ref: "emulatorLauncher/Generators/LibRetro.Generator.cs:1018-1027, 2750"
- emulator: demul
build: standalone
kind: passes_path
@@ -3906,7 +3912,7 @@ launchers:
\ file exists"
fails_when_missing: UseExtBIOS left at 0
depends_on_option: desmume_UseExtBIOS on
source_ref: "emulatorLauncher/Generators/Desmume.Generator.cs:97-105"
source_ref: "emulatorLauncher/Generators/Desmume.Generator.cs:92-100"
- emulator: desmume
build: standalone
kind: fixed_name
@@ -3918,7 +3924,7 @@ launchers:
fails_when_missing: UseExtFirmware left at 0
depends_on_option: desmume_UseExtFirmware on, desmume_firmwareFile unset or not
an existing file
source_ref: "emulatorLauncher/Generators/Desmume.Generator.cs:111-123"
source_ref: "emulatorLauncher/Generators/Desmume.Generator.cs:106-118"
- emulator: dolphin
build: standalone
kind: fixed_name
@@ -3955,7 +3961,7 @@ launchers:
search_dir: bios/scummvm/extra
passes_to: copied to <emulator>/system/<name>, only when the target does not exist
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/DosBoxPure.Generator.cs:132, 137-155"
source_ref: "emulatorLauncher/Generators/DosBoxPure.Generator.cs:125, 130-148"
- emulator: dosbox-staging
build: standalone
kind: copies
@@ -3967,7 +3973,7 @@ launchers:
passes_to: copied to <emulator>/mt32-roms/<name>, only when the target does not
exist
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/DosBoxStaging.Generator.cs:328, 333-341"
source_ref: "emulatorLauncher/Generators/DosBoxStaging.Generator.cs:321, 326-334"
- emulator: dosbox-staging
build: standalone
kind: copies
@@ -3979,7 +3985,7 @@ launchers:
passes_to: copied to <emulator>/soundfonts/<name>, only when the target does not
exist
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/DosBoxStaging.Generator.cs:325, 343-351"
source_ref: "emulatorLauncher/Generators/DosBoxStaging.Generator.cs:318, 336-344"
- emulator: duckstation
build: standalone
kind: passes_path
@@ -3988,7 +3994,7 @@ launchers:
passes_to: "settings.ini [BIOS] SearchDirectory = bios"
fails_when_missing: false
depends_on_option: duck_bios unset
source_ref: "emulatorLauncher/Generators/Duckstation.Generator.cs:202, 211-215"
source_ref: "emulatorLauncher/Generators/Duckstation.Generator.cs:195, 204-208"
- emulator: duckstation
build: standalone
kind: core_option
@@ -4004,7 +4010,7 @@ launchers:
passes_to: "settings.ini [BIOS] PathNTSCJ = PathNTSCU = PathPAL = <value>"
fails_when_missing: not checked by the launcher
depends_on_option: duck_bios
source_ref: "emulatorLauncher/Generators/Duckstation.Generator.cs:204-209, .emulationstation/es_features.cfg:11638-11646"
source_ref: "emulatorLauncher/Generators/Duckstation.Generator.cs:197-202, .emulationstation/es_features.cfg:12489-12497"
- emulator: eka2l1
build: standalone
kind: passes_path
@@ -4021,7 +4027,7 @@ launchers:
passes_to: "config/fbneo64.ini szAppRomPaths[1] = bios"
fails_when_missing: false
depends_on_option: "File.Exists(iniFile)"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:111"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:125"
- emulator: fbneo
build: standalone
kind: passes_path
@@ -4030,7 +4036,7 @@ launchers:
passes_to: "config/fbneo64.ini szAppRomPaths[2] = bios/fbneo"
fails_when_missing: false
depends_on_option: "File.Exists(iniFile)"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:113, 116"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:127, 130"
- emulator: fbneo
build: standalone
kind: passes_path
@@ -4039,7 +4045,7 @@ launchers:
passes_to: config/fbneo64.ini szAppCheatsPath = bios/fbneo/cheats
fails_when_missing: false
depends_on_option: "File.Exists(iniFile)"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:113, 118, 121"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:127, 132, 135"
- emulator: fbneo
build: standalone
kind: passes_path
@@ -4048,19 +4054,21 @@ launchers:
passes_to: config/fbneo64.ini szAppSamplesPath = bios/fbneo/samples
fails_when_missing: false
depends_on_option: "File.Exists(iniFile)"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:123, 126"
source_ref: "emulatorLauncher/Generators/Fbneo.Generator.cs:137, 140"
- emulator: gsplus
build: standalone
kind: fixed_name
kind: names_searched
names:
- ROM
- ROM.01
- ROM.03
- APPLE2GS.ROM
case_insensitive: true
search_dir: bios
passes_to: config.txt g_cfg_rom_path, written without an existence check
fails_when_missing: path written without an existence check
depends_on_option: "!string.IsNullOrEmpty(AppConfig[\"bios\"]) && Directory.Exists(AppConfig[\"\
bios\"])"
source_ref: "emulatorLauncher/Generators/GsPlus.Generator.cs:66-67"
passes_to: config.txt g_cfg_rom_path = <first found>
fails_when_missing: false
depends_on_option: "!string.IsNullOrEmpty(bios) && Directory.Exists(bios)"
source_ref: "emulatorLauncher/Generators/GsPlus.Generator.cs:23, 164, 167-172"
- emulator: jgenesis
build: standalone
kind: fixed_name
@@ -4324,9 +4332,10 @@ launchers:
case_insensitive: true
search_dir: bios
passes_to: "hatari.cfg [ROM] szTosImageFileName=<bios>/tos.img"
fails_when_missing: ApplicationException 'Missing TOS file <tosName> in 'bios' folder.'
depends_on_option: hatari_tos unset
source_ref: "emulatorLauncher/Generators/Hatari.Generator.cs:144-154"
fails_when_missing: bios/hatari/tos/emutos.img instead, else ApplicationException
'Missing TOS file <tosName> in 'bios' folder.'
depends_on_option: hatari_tos unset, no hard disk image
source_ref: "emulatorLauncher/Generators/Hatari.Generator.cs:410-412, 425-426, 454"
- emulator: hatari
build: standalone
kind: core_option
@@ -4341,8 +4350,33 @@ launchers:
passes_to: "hatari.cfg [ROM] szTosImageFileName=<bios>/hatari/tos/<value>"
fails_when_missing: ApplicationException 'Missing TOS file <tosName> in 'bios' folder.'
depends_on_option: hatari_tos
source_ref: "emulatorLauncher/Generators/Hatari.Generator.cs:146-154, .emulationstation/es_features.cfg:12791-12797"
source_ref: "emulatorLauncher/Generators/Hatari.Generator.cs:410-415, 454, .emulationstation/es_features.cfg:13768-13774"
- emulator: hatari
build: standalone
kind: fixed_name
names:
- emutos.img
case_insensitive: true
search_dir: bios/hatari/tos
passes_to: "hatari.cfg [ROM] szTosImageFileName=<bios>/hatari/tos/emutos.img"
fails_when_missing: tos.img is used, as without a hard disk image
depends_on_option: hatari_tos unset, a hard disk image mounted or no tos.img
source_ref: "emulatorLauncher/Generators/Hatari.Generator.cs:410-412, 416-426, 454"
- emulator: hatari
build: standalone
kind: names_searched
names:
- tos104.img
- tos206.img
- emutos.img
case_insensitive: true
search_dir: bios/hatari/tos
passes_to: "hatari.cfg [ROM] szTosImageFileName=<first found>"
fails_when_missing: the TOS older than 1.04 is kept
depends_on_option: hatari_tos unset, autostart or GEMDOS folder, TOS older than
1.04
source_ref: "emulatorLauncher/Generators/Hatari.Generator.cs:410-412, 436-438, 454"
- emulator: hatari2014
build: libretro
kind: core_option
names:
@@ -4352,11 +4386,11 @@ launchers:
- tos104.img
- tos102.img
- emutos.img
search_dir: bios
passes_to: hatari_tosimage = <value> | default
fails_when_missing: not checked by the launcher
depends_on_option: hatari_tos
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3148-3151, .emulationstation/es_features.cfg:6610-6617"
search_dir: bios/hatari/tos
passes_to: hatari_tosimage = <value>, if the file is there | default
fails_when_missing: hatari_tosimage = default
depends_on_option: hatari2014_tos
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3409-3417, .emulationstation/es_features.cfg:7095-7102"
- emulator: hatarib
build: libretro
kind: fixed_name
@@ -4366,12 +4400,15 @@ launchers:
search_dir: bios
passes_to: hatarib_tos = <tos.img>
fails_when_missing: falls back to hatarib_tos = <etos1024k>
depends_on_option: hatarib_tos unset
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3191-3195"
depends_on_option: hatarib_tos unset or tosimg; <etos1024k> instead for a hard disk
image under a TOS other than EmuTOS, or for autostart or GEMDOS under TOS older
than 1.04
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3434-3435, 3447-3450,\
\ 3481-3496"
- emulator: hatarib
build: libretro
kind: core_option
names:
names: &id001
- tos206.img
- tos106.img
- tos104.img
@@ -4379,9 +4416,20 @@ launchers:
case_insensitive: true
search_dir: bios/hatarib
passes_to: hatarib_tos = hatarib/<value>
fails_when_missing: option not written when the file is absent
fails_when_missing: hatarib_tos = <etos1024k>, or <tos.img> when bios holds it
depends_on_option: hatarib_tos
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3184-3187, .emulationstation/es_features.cfg:6667-6676"
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3434-3435, 3457-3474,\
\ .emulationstation/es_features.cfg:7125-7134"
- emulator: hatarib
build: libretro
kind: copies
names: *id001
case_insensitive: true
search_dir: bios/hatari/tos
passes_to: copied to bios/hatarib/<value>, only when the target does not exist
fails_when_missing: false
depends_on_option: hatarib_tos
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3434-3435, 3457-3460"
- emulator: jzintv
build: standalone
kind: fixed_name
@@ -4416,7 +4464,7 @@ launchers:
depends_on_option: "messMode == null || messMode.Name == \"mame\" || messMode.Name\
\ == \"hbmame\", !string.IsNullOrEmpty(AppConfig[\"bios\"]) && Directory.Exists(AppConfig[\"\
bios\"])"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:90-93"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:93-96"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4426,7 +4474,7 @@ launchers:
fails_when_missing: false
depends_on_option: "messMode == null || messMode.Name == \"mame\" || messMode.Name\
\ == \"hbmame\", !string.IsNullOrEmpty(samplePath) && Directory.Exists(samplePath)"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:98, 103-104"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:101, 106-107"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4437,7 +4485,7 @@ launchers:
depends_on_option: "messMode == null || messMode.Name == \"mame\" || messMode.Name\
\ == \"hbmame\", !string.IsNullOrEmpty(artPath) && Directory.Exists(artPath),\
\ disable_artwork on"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:108, 115-117"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:111, 118-120"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4450,7 +4498,7 @@ launchers:
depends_on_option: "messMode == null || messMode.Name == \"mame\" || messMode.Name\
\ == \"hbmame\", !string.IsNullOrEmpty(artPath) && Directory.Exists(artPath),\
\ not (disable_artwork on)"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:108-109, 115, 118-119"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:111-112, 118, 121-122"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4462,7 +4510,7 @@ launchers:
fails_when_missing: false
depends_on_option: "messMode == null || messMode.Name == \"mame\" || messMode.Name\
\ == \"hbmame\", !string.IsNullOrEmpty(iniPath) && Directory.Exists(iniPath)"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:71-73, 164-165"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:74-76, 167-168"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4472,7 +4520,7 @@ launchers:
fails_when_missing: false
depends_on_option: "messMode == null || messMode.Name == \"mame\" || messMode.Name\
\ == \"hbmame\", !string.IsNullOrEmpty(hashPath) && Directory.Exists(hashPath)"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:169, 174-175"
source_ref: "emulatorLauncher/Generators/Mame64.Generator.cs:172, 177-178"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4482,7 +4530,7 @@ launchers:
fails_when_missing: false
depends_on_option: "!string.IsNullOrEmpty(AppConfig[\"bios\"]) && Directory.Exists(AppConfig.GetFullPath(\"\
bios\")), Directory.Exists(Path.Combine(bios, \"mess\"))"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:612, 660, 663-664"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:613, 661, 664-665"
- emulator: mame
build: libretro
kind: passes_path
@@ -4492,7 +4540,7 @@ launchers:
fails_when_missing: false
depends_on_option: "!string.IsNullOrEmpty(AppConfig[\"bios\"]) && Directory.Exists(AppConfig.GetFullPath(\"\
bios\")), Directory.Exists(Path.Combine(bios, \"mess\"))"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:612, 660, 663-664"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:613, 661, 664-665"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4502,7 +4550,7 @@ launchers:
fails_when_missing: false
depends_on_option: "!string.IsNullOrEmpty(AppConfig[\"bios\"]) && Directory.Exists(AppConfig.GetFullPath(\"\
bios\")), !Directory.Exists(Path.Combine(bios, \"mess\"))"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:612, 660, 665-666"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:613, 661, 666-667"
- emulator: mame
build: libretro
kind: passes_path
@@ -4512,7 +4560,7 @@ launchers:
fails_when_missing: false
depends_on_option: "!string.IsNullOrEmpty(AppConfig[\"bios\"]) && Directory.Exists(AppConfig.GetFullPath(\"\
bios\")), !Directory.Exists(Path.Combine(bios, \"mess\"))"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:612, 660, 665-666"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:613, 661, 666-667"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4520,7 +4568,7 @@ launchers:
search_dir: bios/mame/ini
passes_to: command line -inipath bios/mame/ini
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/MessSystem.cs:612, 702-703"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:613, 703-704"
- emulator: mame64
build: standalone
kind: passes_path
@@ -4528,7 +4576,7 @@ launchers:
search_dir: bios/mame/hash
passes_to: command line -hash bios/mame/hash
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/MessSystem.cs:612, 705-706"
source_ref: "emulatorLauncher/Generators/MessSystem.cs:613, 706-707"
- emulator: melonds
build: standalone
kind: fixed_name
@@ -4564,7 +4612,7 @@ launchers:
fails_when_missing: falls back to dsi_nand.bin
depends_on_option: melonds_console == "dsi", melonds_nandregion set, rom extension
not ".bin"
source_ref: "emulatorLauncher/Generators/MelonDS.Generator.cs:193-202, .emulationstation/es_features.cfg:15797-15804"
source_ref: "emulatorLauncher/Generators/MelonDS.Generator.cs:193-202, .emulationstation/es_features.cfg:16816-16823"
- emulator: mesen
build: standalone
kind: copies
@@ -4751,7 +4799,7 @@ launchers:
passes_to: "kronos.ini [1.0] General\\Bios = <bios>/<value>, only if the file exists"
fails_when_missing: General\Bios not written
depends_on_option: kronos_force_bios
source_ref: "emulatorLauncher/Generators/Kronos.Generator.cs:162-170, .emulationstation/es_features.cfg:13529-13534"
source_ref: "emulatorLauncher/Generators/Kronos.Generator.cs:162-170, .emulationstation/es_features.cfg:14519-14524"
- emulator: ssf
build: standalone
kind: core_option
@@ -4764,7 +4812,7 @@ launchers:
passes_to: "SSF.ini [Peripheral] SaturnBIOS = <bios>/<value>, only if the file exists"
fails_when_missing: SaturnBIOS not written
depends_on_option: use_external_bios
source_ref: "emulatorLauncher/Generators/SSF.Generator.cs:76-83, .emulationstation/es_features.cfg:19240-19245"
source_ref: "emulatorLauncher/Generators/SSF.Generator.cs:76-83, .emulationstation/es_features.cfg:20762-20767"
- emulator: yabasanshiro
build: standalone
kind: fixed_name
@@ -4789,7 +4837,7 @@ launchers:
\ exists"
fails_when_missing: General\Bios not written
depends_on_option: yabasanshiro_force_bios
source_ref: "emulatorLauncher/Generators/Yabasanshiro.Generator.cs:123-131, .emulationstation/es_features.cfg:21111-21116"
source_ref: "emulatorLauncher/Generators/Yabasanshiro.Generator.cs:123-131, .emulationstation/es_features.cfg:22724-22729"
- emulator: ymir
build: standalone
kind: fixed_name
@@ -4814,7 +4862,7 @@ launchers:
\ check"
fails_when_missing: path written without an existence check
depends_on_option: ymir_force_bios
source_ref: "emulatorLauncher/Generators/Ymir.Generator.cs:120-125, .emulationstation/es_features.cfg:21170-21174"
source_ref: "emulatorLauncher/Generators/Ymir.Generator.cs:120-125, .emulationstation/es_features.cfg:22784-22788"
- emulator: ymir
build: standalone
kind: passes_path
@@ -4892,7 +4940,7 @@ launchers:
fails_when_missing: ApplicationException 'BIOS file <pcsx2Bios> does not exist in
'<ps2BiosFolder>'.'
depends_on_option: lrps2_bios
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3340-3349, .emulationstation/es_features.cfg:5459-5465"
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3695-3704, .emulationstation/es_features.cfg:5875-5881"
- emulator: pcsx2
build: libretro
kind: scans_dir
@@ -4904,7 +4952,7 @@ launchers:
passes_to: pcsx2_bios = <chosen name>
fails_when_missing: ApplicationException 'No valid PS2 BIOS file found in '<ps2BiosFolder>'.'
depends_on_option: lrps2_bios unset
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3307-3328, 3353-3358"
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3662-3683, 3708-3713"
- emulator: bizhawk
build: standalone
kind: names_searched
@@ -4916,7 +4964,7 @@ launchers:
passes_to: PSX+U, PSX+J, PSX+E
fails_when_missing: false
depends_on_option: bizhawk_psx_original_bios off
source_ref: "emulatorLauncher/Generators/Bizhawk.Generator.cs:623-664"
source_ref: "emulatorLauncher/Generators/Bizhawk.Generator.cs:612-653"
- emulator: bizhawk
build: standalone
kind: fixed_name
@@ -4928,7 +4976,7 @@ launchers:
search_dir: bios
passes_to: PSX+U, PSX+J, PSX+E
fails_when_missing: false
source_ref: "emulatorLauncher/Generators/Bizhawk.Generator.cs:623-664"
source_ref: "emulatorLauncher/Generators/Bizhawk.Generator.cs:612-653"
- emulator: mednafen
build: standalone
kind: names_searched
@@ -4940,7 +4988,7 @@ launchers:
passes_to: psx.bios_eu, psx.bios_jp, psx.bios_na
fails_when_missing: false
depends_on_option: mednafen_psx_original_bios off
source_ref: "emulatorLauncher/Generators/Mednafen.Generator.cs:414-441"
source_ref: "emulatorLauncher/Generators/Mednafen.Generator.cs:443-470"
- emulator: mednafen
build: standalone
kind: fixed_name
@@ -4952,7 +5000,7 @@ launchers:
search_dir: bios
passes_to: psx.bios_eu, psx.bios_jp, psx.bios_na
fails_when_missing: names written without an existence check
source_ref: "emulatorLauncher/Generators/Mednafen.Generator.cs:414-441"
source_ref: "emulatorLauncher/Generators/Mednafen.Generator.cs:443-470"
- emulator: mednafen_psx_hw
build: libretro
kind: names_searched
@@ -4964,7 +5012,7 @@ launchers:
passes_to: beetle_psx_hw_override_bios
fails_when_missing: false
depends_on_option: beetle_psx_original_bios off
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:4034-4045"
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:4389-4400"
- emulator: swanstation
build: libretro
kind: names_searched
@@ -4976,7 +5024,7 @@ launchers:
passes_to: swanstation_BIOS_PathNTSCJ, swanstation_BIOS_PathNTSCU, swanstation_BIOS_PathPAL
fails_when_missing: false
depends_on_option: swanstation_original_bios off
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:5982-6009"
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:6310-6337"
- emulator: swanstation
build: libretro
kind: fixed_name
@@ -4988,7 +5036,7 @@ launchers:
search_dir: bios
passes_to: swanstation_BIOS_PathNTSCJ, swanstation_BIOS_PathNTSCU, swanstation_BIOS_PathPAL
fails_when_missing: names written without an existence check
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:5982-6009"
source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:6310-6337"
- emulator: psxmame
build: standalone
kind: passes_path
@@ -5005,7 +5053,7 @@ launchers:
passes_to: "config/raine32_sdl.cfg [Directories] rom_dir_1 = bios"
fails_when_missing: false
depends_on_option: "!string.IsNullOrEmpty(biosPath)"
source_ref: "emulatorLauncher/Generators/Raine.Generator.cs:87, 92"
source_ref: "emulatorLauncher/Generators/Raine.Generator.cs:93, 98"
- emulator: raine
build: standalone
kind: fixed_name
@@ -5017,7 +5065,7 @@ launchers:
\ check"
fails_when_missing: path written without an existence check
depends_on_option: "!string.IsNullOrEmpty(biosPath)"
source_ref: "emulatorLauncher/Generators/Raine.Generator.cs:87, 93"
source_ref: "emulatorLauncher/Generators/Raine.Generator.cs:93, 99"
- emulator: rpcs3
build: standalone
kind: fixed_name
@@ -5068,7 +5116,7 @@ launchers:
passes_to: "<exe>.ini [scummvm] themepath = bios/scummvm/theme"
fails_when_missing: false
depends_on_option: "Directory.Exists(themePath)"
source_ref: "emulatorLauncher/Generators/ScummVm.Generator.cs:265-266, 271"
source_ref: "emulatorLauncher/Generators/ScummVm.Generator.cs:267-268, 273"
- emulator: scummvm
build: standalone
kind: passes_path
@@ -5077,7 +5125,7 @@ launchers:
passes_to: "<exe>.ini [scummvm] extrapath = bios/scummvm/extra"
fails_when_missing: false
depends_on_option: "Directory.Exists(extraPath)"
source_ref: "emulatorLauncher/Generators/ScummVm.Generator.cs:265-267, 275"
source_ref: "emulatorLauncher/Generators/ScummVm.Generator.cs:267-269, 277"
- emulator: winuae
build: standalone
kind: names_searched
@@ -5247,7 +5295,7 @@ launchers:
passes_to: "xemu.toml [sys.files] flashrom_path=<bios>/<value>, default Complex_4627.bin"
fails_when_missing: path written without an existence check
depends_on_option: xemu_flashrom
source_ref: "emulatorLauncher/Generators/Xemu.Generator.cs:286-289, .emulationstation/es_features.cfg:20472-20476"
source_ref: "emulatorLauncher/Generators/Xemu.Generator.cs:286-289, .emulationstation/es_features.cfg:22081-22085"
- emulator: xemu
build: standalone
kind: names_searched
+14 -4
View File
@@ -2,7 +2,7 @@ inherits: retroarch
platform: RetroPie
version: 4.8.12
homepage: "https://retropie.org.uk"
source: "https://codeload.github.com/RetroPie/RetroPie-Setup/tar.gz/46128cd252cdecae852a4d0bafa2aaf9d03ab563"
source: "https://codeload.github.com/RetroPie/RetroPie-Setup/tar.gz/427e76216633591861791cfb28807ac1039c5ea8"
base_destination: BIOS
cores:
- "81"
@@ -50,6 +50,7 @@ cores:
- dxx-rebirth
- eduke32
- ep128emu
- fake08
- fbalpha2012
- fbneo
- fbzx
@@ -997,7 +998,7 @@ launchers:
source_ref: "scriptmodules/emulators/rpix86.sh:12, 46"
- emulator: scummvm-sdl1
package: scummvm-sdl1
repo: "git https://github.com/scummvm/scummvm.git v2026.3.0"
repo: "git https://github.com/scummvm/scummvm.git v2026.4.0"
systems:
- scummvm
build: standalone
@@ -1006,7 +1007,7 @@ launchers:
source_ref: "scriptmodules/emulators/scummvm-sdl1.sh:12, 16, scriptmodules/emulators/scummvm.sh:98"
- emulator: scummvm
package: scummvm
repo: "git https://github.com/scummvm/scummvm.git v2026.3.0"
repo: "git https://github.com/scummvm/scummvm.git v2026.4.0"
systems:
- scummvm
build: standalone
@@ -1522,6 +1523,15 @@ launchers:
kind: package
names: []
source_ref: "scriptmodules/libretrocores/lr-ep128emu.sh:12, 16, 38"
- emulator: lr-fake08
package: lr-fake08
repo: "git https://github.com/jtothebell/fake-08.git master"
systems:
- pico8
build: libretro
kind: package
names: []
source_ref: "scriptmodules/libretrocores/lr-fake08.sh:12, 16, 42"
- emulator: lr-fbalpha2012
package: lr-fbalpha2012
repo: "git https://github.com/libretro/fbalpha2012.git master"
@@ -1591,7 +1601,7 @@ launchers:
source_ref: "scriptmodules/libretrocores/lr-flycast-dev.sh:12, 16, 63"
- emulator: lr-flycast
package: lr-flycast
repo: "git https://github.com/libretro/flycast.git master"
repo: "git https://github.com/libretro/flycast.git master 2ff1030"
systems:
- dreamcast
- arcade
+12 -33
View File
@@ -1,14 +1,12 @@
platform: ROCKNIX
version: "20261001"
version: "20261101"
homepage: "https://rocknix.org"
source: "https://raw.githubusercontent.com/ROCKNIX/distribution/20261001/projects/ROCKNIX/packages/rocknix/sources/scripts/rocknix-systems"
source: "https://raw.githubusercontent.com/ROCKNIX/distribution/20261101/projects/ROCKNIX/packages/rocknix/sources/scripts/rocknix-systems"
base_destination: bios
hash_type: md5
verification_mode: md5
cores:
- retroarch
- aethersx2
- aethersx2-sa
- amiberry
- ares
- ares-sa
@@ -71,8 +69,6 @@ cores:
- yabasanshiro
- yabasanshiro-sa
standalone_cores:
- aethersx2
- aethersx2-sa
- amiberry
- ares
- ares-sa
@@ -423,7 +419,7 @@ systems:
native_system: ps2
native_name: PS2
- name: ps2-0230a-20080220.bin
destination: aethersx2/bios/ps2-0230a-20080220.bin
destination: armsx2/ps2-0230a-20080220.bin
required: true
md5: 21038400dc633070a78ad53090c53017
native_system: ps2
@@ -505,8 +501,8 @@ launchers:
passes_to: "Atari-ST-default.cfg [ROM] szTosImageFileName (--configfile)"
fails_when_missing: false
source_ref: "projects/ROCKNIX/packages/emulators/standalone/hatarisa/config/conf/Atari-ST-default.cfg:200,\
\ projects/ROCKNIX/packages/emulators/standalone/hatarisa/scripts/start_hatari.sh:34,\
\ 64"
\ projects/ROCKNIX/packages/emulators/standalone/hatarisa/scripts/start_hatarisa.sh:35,\
\ 65"
- emulator: melonds
build: standalone
kind: fixed_name
@@ -535,9 +531,9 @@ launchers:
DSiFirmwarePath, DSiNANDPath
fails_when_missing: false
depends_on_option: direct_boot = 0 sets ExternalBIOSEnable=1, otherwise 0
device: RK3399, RK3566, RK3576, RK3588, S922X, SM4450, SM6115, SM8250, SM8550, SM8650,
SM8750
source_ref: "projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/InputPlumber/melonDS.ini:91-97,\
device: RK3399, RK3566, RK3576, RK3588, S922X, SDM845, SM4450, SM6115, SM8250, SM8550,
SM8650, SM8750
source_ref: "projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/InputPlumber/melonDS.ini:94-100,\
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3399/melonDS.ini:93-99,\
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3566/melonDS.ini:93-99,\
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3588/melonDS.ini:93-99,\
@@ -564,11 +560,10 @@ launchers:
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/InputPlumber/dsperate.ini:11-17,\
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/RK3326/dsperate.ini:11-17,\
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/RK3399/dsperate.ini:11-17,\
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/RK3566/dsperate.ini:11-17,\
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/RK3588/dsperate.ini:13-19,\
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/S922X/dsperate.ini:13-19,\
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/package.mk:21-22,\
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/scripts/start_dsperate.sh:163"
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/scripts/start_dsperate.sh:190"
- emulator: nanoboyadvance
build: standalone
kind: fixed_name
@@ -711,8 +706,8 @@ launchers:
passes_to: yabasanshiro -b <first path found>
fails_when_missing: false
depends_on_option: "use_hlebios = 1 (game, then platform)"
source_ref: "projects/ROCKNIX/packages/emulators/standalone/yabasanshiro-sa/scripts/start_yabasanshiro.sh:74,\
\ 80-90"
source_ref: "projects/ROCKNIX/packages/emulators/standalone/yabasanshiro-sa/scripts/start_yabasanshiro.sh:76,\
\ 82-92"
- emulator: duckstation
build: standalone
kind: scans_dir
@@ -726,26 +721,10 @@ launchers:
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/InputPlumber/settings.ini:29-32,\
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/RK3326/settings.ini:29-32,\
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/RK3399/settings.ini:29-32,\
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/RK3566/settings.ini:29-32,\
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/RK3588/settings.ini:29-32,\
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/S922X/settings.ini:136-139,\
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/SM4450/settings.ini:29-32,\
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/package.mk:33"
- emulator: aethersx2
build: standalone
kind: scans_dir
names: []
search_dir: /storage/roms/bios/aethersx2/bios
passes_to: "PCSX2.ini [Folders] Bios = /storage/roms/bios/aethersx2/bios, [Filenames]\
\ BIOS unset"
fails_when_missing: false
source_ref: "projects/ROCKNIX/packages/emulators/standalone/aethersx2-sa/config/InputPlumber/aethersx2/inis/PCSX2.ini:273,\
\ 302, projects/ROCKNIX/packages/emulators/standalone/aethersx2-sa/config/RK3399/aethersx2/inis/PCSX2.ini:273,\
\ 302, projects/ROCKNIX/packages/emulators/standalone/aethersx2-sa/config/RK3566/aethersx2/inis/PCSX2.ini:273,\
\ 302, projects/ROCKNIX/packages/emulators/standalone/aethersx2-sa/config/RK3588/aethersx2/inis/PCSX2.ini:273,\
\ 302, projects/ROCKNIX/packages/emulators/standalone/aethersx2-sa/config/S922X/aethersx2/inis/PCSX2.ini:273,\
\ 302, projects/ROCKNIX/packages/emulators/standalone/aethersx2-sa/config/SM4450/aethersx2/inis/PCSX2.ini:273,\
\ 302, projects/ROCKNIX/packages/emulators/standalone/aethersx2-sa/package.mk:31"
- emulator: armsx2
build: standalone
kind: scans_dir
@@ -816,7 +795,7 @@ launchers:
search_dir: /storage/roms/bios/dc
passes_to: symlink /storage/roms/dreamcast/data -> /storage/roms/bios/dc
fails_when_missing: false
source_ref: "projects/ROCKNIX/packages/emulators/standalone/flycast-sa/scripts/start_flycast.sh:35"
source_ref: "projects/ROCKNIX/packages/emulators/standalone/flycast-sa/scripts/start_flycast.sh:40"
- emulator: cemu
build: standalone
kind: links
+2 -2
View File
@@ -1,8 +1,8 @@
inherits: emulatorjs
platform: RomM
version: 5.4.0
version: 5.4.1
homepage: "https://romm.app"
source: "https://raw.githubusercontent.com/rommapp/romm/5.4.0/backend/models/fixtures/known_bios_files.json"
source: "https://raw.githubusercontent.com/rommapp/romm/5.4.1/backend/models/fixtures/known_bios_files.json"
base_destination: bios
hash_type: sha1
verification_mode: md5
+21 -1
View File
@@ -1,6 +1,6 @@
platform: emudeck
source: https://github.com/dragoonDorise/EmuDeck/tree/dddb30229adbbd54d5ff7283cfd70e11c4322c26
scraped_at: '2026-11-06T13:46:57Z'
scraped_at: '2026-11-09T06:02:29Z'
targets:
steamos:
architecture: x86_64
@@ -66,6 +66,7 @@ targets:
- easyrpg
- ecwolf
- eden
- eduke32
- emuscv
- ep128emu_core
- fbalpha
@@ -108,11 +109,14 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- hypseushw
- irogb
- jaxe
- jollycv
- jumpnbump
- kronos
- linuxloader
- lowresnx
- lutro
- m2000
@@ -152,6 +156,7 @@ targets:
- mrboom
- mu
- mupen64plus_next
- n64emu
- native32emu
- nekop2
- neocd
@@ -165,10 +170,13 @@ targets:
- nxengine
- o2em
- oberon
- odin
- omicron
- openlara
- openmsx
- opera
- panda3ds
- parallel_dc
- parallel_n64
- pcee2
- pcem
@@ -176,6 +184,7 @@ targets:
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -232,6 +241,7 @@ targets:
- tic80
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -331,6 +341,7 @@ targets:
- easyrpg
- ecwolf
- eden
- eduke32
- emuscv
- ep128emu_core
- fbalpha
@@ -372,11 +383,14 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- hypseushw
- irogb
- jaxe
- jollycv
- jumpnbump
- kronos
- linuxloader
- lowresnx
- lutro
- m2000
@@ -416,6 +430,7 @@ targets:
- mrboom
- mu
- mupen64plus_next
- n64emu
- native32emu
- nekop2
- neocd
@@ -429,9 +444,12 @@ targets:
- nxengine
- o2em
- oberon
- odin
- openlara
- openmsx
- opera
- panda3ds
- parallel_dc
- parallel_n64
- pcee2
- pcem
@@ -439,6 +457,7 @@ targets:
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -494,6 +513,7 @@ targets:
- tic80
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
+83 -1
View File
@@ -1,6 +1,6 @@
platform: retroarch
source: https://buildbot.libretro.com/nightly/
scraped_at: '2026-10-20T00:25:51Z'
scraped_at: '2026-11-09T04:38:04Z'
targets:
linux-x86_64:
architecture: x86_64
@@ -60,6 +60,7 @@ targets:
- doukutsu_rs
- easyrpg
- ecwolf
- eduke32
- emuscv
- ep128emu_core
- fbalpha
@@ -102,11 +103,14 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- hypseushw
- irogb
- jaxe
- jollycv
- jumpnbump
- kronos
- linuxloader
- lowresnx
- lutro
- m2000
@@ -145,6 +149,7 @@ targets:
- mrboom
- mu
- mupen64plus_next
- n64emu
- native32emu
- nekop2
- neocd
@@ -158,10 +163,13 @@ targets:
- nxengine
- o2em
- oberon
- odin
- omicron
- openlara
- openmsx
- opera
- panda3ds
- parallel_dc
- parallel_n64
- pcee2
- pcem
@@ -169,6 +177,7 @@ targets:
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -221,6 +230,7 @@ targets:
- tic80
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -345,6 +355,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- jaxe
- jollycv
- jumpnbump
@@ -386,6 +397,7 @@ targets:
- mrboom
- mu
- mupen64plus_next
- n64emu
- native32emu
- nekop2
- neocd
@@ -401,11 +413,13 @@ targets:
- omicron
- openlara
- opera
- parallel_dc
- parallel_n64
- pcem
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -535,6 +549,7 @@ targets:
- dosbox_svn
- easyrpg
- ecwolf
- eduke32
- emuscv
- ep128emu_core
- fbalpha2012
@@ -576,13 +591,16 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- irogb
- jaxe
- jollycv
- jumpnbump
- kronos
- linuxloader
- lowresnx
- lutro
- m2000
- mame
- mame2000
- mame2003
@@ -616,6 +634,7 @@ targets:
- mojozork
- mrboom
- mu
- mupen64plus_next
- native32emu
- nekop2
- neocd
@@ -628,15 +647,19 @@ targets:
- nxengine
- o2em
- oberon
- odin
- omicron
- openlara
- openmsx
- opera
- parallel_dc
- parallel_n64
- pcee2
- pcsx2
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -686,6 +709,7 @@ targets:
- tic80
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -979,6 +1003,7 @@ targets:
- doukutsu_rs
- easyrpg
- ecwolf
- eduke32
- emuscv
- ep128emu_core
- fbalpha
@@ -1020,11 +1045,14 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- hypseushw
- irogb
- jaxe
- jollycv
- jumpnbump
- kronos
- linuxloader
- lowresnx
- lutro
- m2000
@@ -1063,6 +1091,7 @@ targets:
- mrboom
- mu
- mupen64plus_next
- n64emu
- native32emu
- nekop2
- neocd
@@ -1076,9 +1105,12 @@ targets:
- nxengine
- o2em
- oberon
- odin
- openlara
- openmsx
- opera
- panda3ds
- parallel_dc
- parallel_n64
- pcee2
- pcem
@@ -1086,6 +1118,7 @@ targets:
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -1138,6 +1171,7 @@ targets:
- tic80
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -1261,6 +1295,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- jaxe
- jollycv
- jumpnbump
@@ -1300,6 +1335,7 @@ targets:
- mrboom
- mu
- mupen64plus_next
- n64emu
- native32emu
- nekop2
- neocd
@@ -1312,11 +1348,13 @@ targets:
- o2em
- oberon
- opera
- parallel_dc
- parallel_n64
- pcem
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -1452,6 +1490,7 @@ targets:
- doukutsu_rs
- easyrpg
- ecwolf
- eduke32
- emuscv
- ep128emu_core
- fbalpha
@@ -1494,6 +1533,8 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- hypseushw
- irogb
- jaxe
- jollycv
@@ -1551,14 +1592,17 @@ targets:
- o2em
- oberon
- openlara
- openmsx
- opera
- panda3ds
- parallel_dc
- parallel_n64
- pcee2
- pcsx2
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -1611,6 +1655,7 @@ targets:
- tic80
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -1736,6 +1781,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- jaxe
- jollycv
- jumpnbump
@@ -1792,10 +1838,12 @@ targets:
- oberon
- openlara
- opera
- parallel_dc
- parallel_n64
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -1973,6 +2021,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- jaxe
- jollycv
- jumpnbump
@@ -2031,12 +2080,14 @@ targets:
- oberon
- openlara
- opera
- parallel_dc
- parallel_n64
- pcee2
- pcsx2
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -2194,6 +2245,7 @@ targets:
- galaksija
- gam4980
- gambatte
- gametank
- gearboy
- gearcoleco
- geargrafx
@@ -2213,6 +2265,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- jaxe
- jollycv
- jumpnbump
@@ -2268,10 +2321,12 @@ targets:
- oberon
- openlara
- opera
- parallel_dc
- parallel_n64
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -2446,6 +2501,7 @@ targets:
- hbmame
- higan_sfc
- holani
- hyperscanemu
- irogb
- ishiiruka
- jaxe
@@ -2500,14 +2556,17 @@ targets:
- o2em
- oberon
- openlara
- openmsx
- opera
- panda3ds
- parallel_dc
- parallel_n64
- pcee2
- pcsx2
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -2646,6 +2705,7 @@ targets:
- doukutsu_rs
- easyrpg
- ecwolf
- eduke32
- emuscv
- ep128emu_core
- fbalpha2012
@@ -2686,6 +2746,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- irogb
- jaxe
- jollycv
@@ -2739,14 +2800,17 @@ targets:
- nxengine
- o2em
- oberon
- openmsx
- opera
- panda3ds
- parallel_dc
- parallel_n64
- pcee2
- pcsx2
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -2799,6 +2863,7 @@ targets:
- tic80
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -2920,6 +2985,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- irogb
- jaxe
- jollycv
@@ -2973,12 +3039,14 @@ targets:
- o2em
- oberon
- opera
- parallel_dc
- parallel_n64
- pcee2
- pcsx2
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -3025,6 +3093,7 @@ targets:
- tia
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -3105,6 +3174,7 @@ targets:
- doukutsu_rs
- easyrpg
- ecwolf
- eduke32
- emuscv
- ep128emu_core
- fbalpha2012
@@ -3145,6 +3215,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- irogb
- jaxe
- jollycv
@@ -3198,11 +3269,13 @@ targets:
- o2em
- oberon
- opera
- parallel_dc
- pcee2
- pcsx2
- pcsx_rearmed
- pd777
- picodrive
- piece
- play
- playdiaemu
- pocketcdg
@@ -3248,6 +3321,7 @@ targets:
- tia
- tyrquake
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -3337,6 +3411,7 @@ targets:
- gpsp
- gw
- handy
- hatari
- hatarib
- jaxe
- jumpnbump
@@ -3373,6 +3448,7 @@ targets:
- nxengine
- o2em
- opera
- parallel_dc
- pcsx_rearmed
- pd777
- picodrive
@@ -4490,6 +4566,7 @@ targets:
- dosbox_pure
- dosbox_svn
- ecwolf
- eduke32
- emuscv
- ep128emu_core
- fbalpha2012
@@ -4529,6 +4606,7 @@ targets:
- hatarib
- hbmame
- holani
- hyperscanemu
- jaxe
- jollycv
- jumpnbump
@@ -4578,6 +4656,7 @@ targets:
- oberon
- openlara
- opera
- parallel_dc
- parallel_n64
- pcsx_rearmed
- pd777
@@ -4628,6 +4707,7 @@ targets:
- tyrquake
- uae4arm
- uw8
- uzdoom
- uzem
- vaporspec
- vba_next
@@ -4659,10 +4739,12 @@ targets:
- blastem
- cemu
- dolphin
- eduke32
- emuscv
- pcee2
- pcsx2
- rustynes
- uzdoom
playstation-vita:
architecture: armv7
cores:
+39
View File
@@ -17,6 +17,7 @@
"scanned",
"version",
"board",
"unknown_core",
"choices",
"set_aside",
"file",
@@ -63,6 +64,9 @@
{
"$ref": "#/$defs/board"
},
{
"$ref": "#/$defs/unknown_core"
},
{
"$ref": "#/$defs/choices"
},
@@ -324,6 +328,41 @@
}
}
},
"unknown_core": {
"type": "object",
"additionalProperties": false,
"required": [
"event",
"platform",
"core",
"info",
"dests",
"message"
],
"properties": {
"event": {
"const": "unknown_core"
},
"platform": {
"type": "string"
},
"core": {
"type": "string"
},
"info": {
"type": "boolean"
},
"dests": {
"type": "array",
"items": {
"type": "string"
}
},
"message": {
"type": "string"
}
}
},
"choices": {
"type": "object",
"additionalProperties": false,
+1 -1
View File
@@ -119,7 +119,7 @@
"description": "Number of entries in omitted_files."
},
"core_names": {
"description": "Each core a file names, with the other names it goes by upstream (the buildbot's mednafen_psx for beetle_psx).",
"description": "Each core the platform runs or a file names, with the other names it goes by upstream (the buildbot's mednafen_psx for beetle_psx), empty when it has none.",
"type": "object",
"additionalProperties": {
"type": "array",
+4
View File
@@ -518,6 +518,10 @@
"type": "string",
"description": "Display name the platform gives its own system"
},
"group": {
"type": "string",
"description": "RetroBat: files sharing a group are alternatives. One held is enough and the others are reported OPTIONAL"
},
"md5_list": {
"type": "boolean",
"description": "Batocera: the platform writes md5 as a list of strings, any of which matches. md5 holds the items comma-joined, in order"
+2 -2
View File
@@ -37,7 +37,7 @@ KEY_TYPES: dict[str, dict] = {
**dict.fromkeys((
"installer", "os", "os_name", "stage", "reason", "platform", "message",
"folder", "dest", "system", "name", "bios_dir", "path", "member",
"list_version", "installed_version", "board",
"list_version", "installed_version", "board", "core",
), _TEXT),
"mode": {"enum": ["install", "check", "dry-run", "list"]},
"state": {"enum": ["present", "wrong_hash", "missing"]},
@@ -47,7 +47,7 @@ KEY_TYPES: dict[str, dict] = {
"bytes_needed", "data_missing", "not_installable", "installed", "up_to_date",
"pending", "code", "games", "recognised", "not_games",
), _COUNT),
**dict.fromkeys(("truncated", "ok", "interrupted", "required_only", "applied"), _FLAG),
**dict.fromkeys(("truncated", "ok", "interrupted", "required_only", "applied", "info"), _FLAG),
**dict.fromkeys(("systems", "other_drives", "dests", "written"), _NAMES),
**dict.fromkeys(("platforms", "failed", "skipped", "left_out", "kept", "found",
"fallback"), _RECORDS),
+8 -6
View File
@@ -5299,14 +5299,15 @@ def _manifest_core_index(
A target list, or the cores found installed, names cores the way the
buildbot does, and a file names the profile that reads it: `core_names`
gives each profile the other names it goes by. `system_cores` gives each
platform system the cores whose presence keeps it, as
gives each profile the other names it goes by, and names every core the
platform runs, one that reads no file included: a core found installed
that the list does not name is one it has no profile for. `system_cores`
gives each platform system the cores whose presence keeps it, as
`filter_systems_by_target` decides. A system absent from it is kept
whatever is available.
"""
reach = system_core_reach(
config.get("systems", {}), profiles, _platform_cores(config, profiles)
)
runs = _platform_cores(config, profiles)
reach = system_core_reach(config.get("systems", {}), profiles, runs)
system_cores = {
sys_id: sorted(cores) for sys_id, cores in sorted(reach.items())
if cores is not None
@@ -5317,7 +5318,8 @@ def _manifest_core_index(
for c in copy.get("cores") or []
}
named |= {c for cores in system_cores.values() for c in cores}
aliases: dict[str, set[str]] = {}
named |= set(runs)
aliases: dict[str, set[str]] = {profile: set() for profile in named & set(runs)}
for name, claimants in upstream_profile_index(profiles, include_aliases=True).items():
for profile in claimants & named:
if name != profile:
+14
View File
@@ -782,6 +782,14 @@ def verify_pack_against_platform(
baseline_groups.setdefault(expected, []).append(fe)
baseline_checked = len(baseline_groups)
# RetroBat's group: one packed file of it is enough, as verify counts it.
packed_groups = {
(system_of[id(fe)], fe["group"])
for expected, declarations in baseline_groups.items()
if expected in zip_set or expected.lower() in zip_lower
for fe in declarations
if fe.get("group")
}
exclusion_index = build_zip_contents_index(db) if db is not None else {}
categories = EntryCategories(config, emu_profiles, data_registry)
for expected, declarations in baseline_groups.items():
@@ -803,6 +811,12 @@ def verify_pack_against_platform(
):
baseline_excluded += 1
continue
elif all(
fe.get("group") and (system_of[id(fe)], fe["group"]) in packed_groups
for fe in declarations
):
baseline_absent += 1
continue
elif db is not None and all(
categories.category(fe, fe.get("destination", fe.get("name", "")),
system_of[id(fe)]) != BIOS
+211 -65
View File
@@ -147,12 +147,14 @@ class Source:
return max(holding)
def header(self, block: tuple[int, int]) -> str:
"""The statement that owns a block's opening brace, comments removed."""
"""The statement that owns a block's opening brace, comments and
preprocessor lines (#region, #if) removed."""
if self._ends is None:
self._ends = [o for o, c in _code_chars(self.text) if c in ";{}"]
previous = bisect.bisect_left(self._ends, block[0]) - 1
start = self._ends[previous] + 1 if previous >= 0 else 0
text = re.sub(r"//[^\n]*|/\*.*?\*/", "", self.text[start : block[0]], flags=re.S)
text = re.sub(r"//[^\n]*|/\*.*?\*/|^[ \t]*#[^\n]*", "", self.text[start : block[0]],
flags=re.S | re.M)
return " ".join(text.split())
def statement_span(self, block: tuple[int, int]) -> tuple[int, int]:
@@ -381,34 +383,65 @@ def ares(sources: dict[str, Source]) -> list[Record]:
def hatari(sources: dict[str, Source]) -> list[Record]:
"""tos.img in bios, a TOS chosen in bios/hatari/tos, and EmuTOS from there
for a hard disk image, for a missing tos.img, or after a TOS too old for
autostart or GEMDOS."""
src = sources[f"{GENERATORS}/Hatari.Generator.cs"]
features = sources[FEATURES]
default = src.find(rf'string (\w+) = Path\.Combine\({BIOS}, "([^"]+)"\);', "default TOS path")
folder = src.find(
rf'string (\w+) = Path\.Combine\({BIOS}, ((?:"[^"]+"(?:, )?)+)\);', "TOS folder"
)
tos_dir, folders = folder.group(1), _strings(folder.group(2))
default = src.find(
rf'string (\w+) = Path\.Combine\({BIOS}, "([^"]+)"\);', "default TOS path", folder.end()
)
var, name = default.group(1), default.group(2)
emutos = src.find(
rf'string (\w+) = Path\.Combine\({tos_dir}, "([^"]+)"\);', "EmuTOS path", default.end()
)
override = src.find(
rf'isOptSet\("(\w+)"\)[^\n]*\n\s*{var} = Path\.Combine\({BIOS}, ((?:"[^"]+", )+)SystemConfig\["\1"\]\);',
rf'isOptSet\("(\w+)"\)[^\n]*\n\s*{var} = Path\.Combine\({tos_dir}, SystemConfig\["\1"\]\);',
"TOS option override",
default.end(),
emutos.end(),
)
option = override.group(1)
disk = src.find(
rf"else if \(media\.HasHardDiskImage && File\.Exists\({emutos.group(1)}\)\)",
"EmuTOS for a hard disk image",
override.end(),
)
absent = src.find(
rf"if \(!File\.Exists\({var}\) && File\.Exists\({emutos.group(1)}\)\)\s*{var} = {emutos.group(1)};",
"EmuTOS without tos.img",
disk.end(),
)
newer = src.find(
r"new string\[\] \{ ((?:\"[^\"]+\"(?:, )?)+) \}\s*"
rf"\.Select\(t => Path\.Combine\({tos_dir}, t\)\)\s*\.FirstOrDefault\(t => File\.Exists\(t\)\);",
"TOS for autostart and GEMDOS",
absent.end(),
)
option, folders = override.group(1), _strings(override.group(2))
write = src.find(
rf'ini\.WriteValue\("(\w+)", "(\w+)", {var}\);', "TOS ini write", override.end()
rf'ini\.WriteValue\("(\w+)", "(\w+)", {var}\);', "TOS ini write", newer.end()
)
message, _ = _throw_message(src, override.end(), write.start())
message, _ = _throw_message(src, newer.end(), write.start())
passes = f"hatari.cfg [{write.group(1)}] {write.group(2)}"
tos_folder = "/".join(["bios", *folders])
choices, choice_lines = feature_choices(features, "hatari", option)
head = src.lines(folder.start(), emutos.end())
tail = src.lines(write.start(), write.end())
return [
_record(
"hatari",
"standalone",
"fixed_name",
[name],
source_ref((src.path, [src.lines(default.start(), write.end())])),
source_ref((src.path, [head, src.lines(absent.start(), absent.end()), tail])),
case_insensitive=True,
search_dir="bios",
passes_to=f"{passes}=<bios>/{name}",
fails_when_missing=message,
depends_on_option=f"{option} unset",
fails_when_missing=f"{tos_folder}/{emutos.group(2)} instead, else {message}",
depends_on_option=f"{option} unset, no hard disk image",
),
_record(
"hatari",
@@ -416,15 +449,39 @@ def hatari(sources: dict[str, Source]) -> list[Record]:
"core_option",
choices,
source_ref(
(src.path, [src.lines(override.start(), write.end())]),
(src.path, [head, src.lines(override.start(), override.end()), tail]),
(features.path, [choice_lines]),
),
case_insensitive=True,
search_dir="/".join(["bios", *folders]),
search_dir=tos_folder,
passes_to=f"{passes}=<bios>/{'/'.join(folders)}/<value>",
fails_when_missing=message,
depends_on_option=option,
),
_record(
"hatari",
"standalone",
"fixed_name",
[emutos.group(2)],
source_ref((src.path, [head, src.lines(disk.start(), absent.end()), tail])),
case_insensitive=True,
search_dir=tos_folder,
passes_to=f"{passes}=<bios>/{'/'.join(folders)}/{emutos.group(2)}",
fails_when_missing=f"{name} is used, as without a hard disk image",
depends_on_option=f"{option} unset, a hard disk image mounted or no {name}",
),
_record(
"hatari",
"standalone",
"names_searched",
_strings(newer.group(1)),
source_ref((src.path, [head, src.lines(newer.start(), newer.end()), tail])),
case_insensitive=True,
search_dir=tos_folder,
passes_to=f"{passes}=<first found>",
fails_when_missing="the TOS older than 1.04 is kept",
depends_on_option=f"{option} unset, autostart or GEMDOS folder, TOS older than 1.04",
),
]
@@ -434,70 +491,100 @@ def hatari_libretro(sources: dict[str, Source]) -> list[Record]:
records = []
tosimage = src.find(
r'if \(SystemConfig\.isOptSet\("(\w+)"\)[^\n]*\n\s*coreSettings\["(hatari_tosimage)"\] = SystemConfig\["\1"\];'
r'\s*else\s*coreSettings\["\2"\] = "(\w+)";',
r'string (\w+) = SystemConfig\["(\w+)"\];\s*'
rf'if \(!string\.IsNullOrEmpty\(\1\) && \1 != "(\w+)" && File\.Exists\(Path\.Combine\({BIOS}, '
r'((?:"[^"]+", )+)\1\)\)\)\s*coreSettings\["(hatari_tosimage)"\] = \1;'
r'\s*else\s*coreSettings\["\5"\] = "\3";',
"hatari_tosimage",
)
choices, choice_lines = feature_choices(features, "libretro", tosimage.group(1), core="hatari")
guard = src.find(r'if \(core != "(hatari2014)"\)', "hatari2014 guard")
folders = _strings(tosimage.group(4).rstrip(", "))
choices, choice_lines = feature_choices(
features, "libretro", tosimage.group(2), core=guard.group(1)
)
records.append(
_record(
"hatari",
guard.group(1),
"libretro",
"core_option",
choices,
source_ref(
(src.path, [src.lines(tosimage.start(), tosimage.end())]),
(src.path, [src.lines(guard.start(), tosimage.end())]),
(features.path, [choice_lines]),
),
search_dir="bios",
passes_to=f"{tosimage.group(2)} = <value> | {tosimage.group(3)}",
fails_when_missing="not checked by the launcher",
depends_on_option=tosimage.group(1),
search_dir="/".join(["bios", *folders]),
passes_to=f"{tosimage.group(5)} = <value>, if the file is there | {tosimage.group(3)}",
fails_when_missing=f"{tosimage.group(5)} = {tosimage.group(3)}",
depends_on_option=tosimage.group(2),
)
)
guard = src.find(r'if \(core != "hatarib"\)', "hatarib guard")
method = src.enclosing(guard.start())
found = src.find(
rf'else if \(File\.Exists\(Path\.Combine\({BIOS}, "([^"]+)"\)\)\)\s*'
r'coreSettings\["(hatarib_tos)"\] = "([^"]+)";\s*else\s*coreSettings\["hatarib_tos"\] = "([^"]+)";',
"hatarib tos.img fallback",
method[0],
tos_img = src.find(
rf'string (\w+) = Path\.Combine\((\w+), "([^"]+)"\);', "hatarib tos.img path",
method[0], method[1],
)
own = src.find(
rf'string (\w+) = Path\.Combine\({tos_img.group(2)}, "([^"]+)"\);', "hatarib folder",
tos_img.end(), method[1],
)
option = src.find(
r'string (\w+) = SystemConfig\["(hatarib_tos)"\];', "hatarib option", own.end(), method[1]
)
tos_var, key = option.group(1), option.group(2)
named = src.find(
rf'if \({tos_var} == "(\w+)"\)\s*\{{\s*if \(File\.Exists\({tos_img.group(1)}\)\)\s*'
r'(\w+) = "([^"]+)";',
"tos.img choice", option.end(), method[1],
)
builtin = src.find(
rf'else if \({tos_var}\.StartsWith\("(\w+)"\)\)', "EmuTOS choices", named.end(), method[1]
)
shared = src.find(
rf'string (\w+) = Path\.Combine\({own.group(1)}, {tos_var}\);\s*'
rf'string (\w+) = Path\.Combine\({tos_img.group(2)}, ((?:"[^"]+", )+){tos_var}\);',
"shared TOS folder", builtin.end(), method[1],
)
copy = src.find(
rf"if \(!File\.Exists\({shared.group(1)}\) && File\.Exists\({shared.group(2)}\)\)",
"copy from the shared folder", shared.end(), method[1],
)
chosen = src.find(
rf'if \(File\.Exists\({shared.group(1)}\)\)\s*{named.group(2)} = "([^"/]+)/" \+ {tos_var};',
"chosen TOS write", copy.end(), method[1],
)
fallback = src.find(
rf'if \({named.group(2)} == null\)\s*\{{\s*{named.group(2)} = "([^"]+)";\s*'
rf'if \(File\.Exists\({tos_img.group(1)}\)\)\s*\{{\s*{named.group(2)} = "([^"]+)";',
"default TOS", chosen.end(), method[1],
)
emutos = src.find(
rf'{named.group(2)} = "{re.escape(fallback.group(1))}";', "EmuTOS for a disk", fallback.end(),
method[1],
)
folders = _strings(shared.group(3).rstrip(", "))
choices, choice_lines = feature_choices(features, "libretro", key, core="hatarib")
files = [c for c in choices if c != named.group(1) and not c.startswith(builtin.group(1))]
head = src.lines(tos_img.start(), own.end())
records.append(
_record(
"hatarib",
"libretro",
"fixed_name",
[found.group(1)],
source_ref((src.path, [src.lines(found.start(), found.end())])),
[tos_img.group(3)],
source_ref((src.path, [head, src.lines(named.start(), named.end()),
src.lines(fallback.start(), emutos.end())])),
case_insensitive=True,
search_dir="bios",
passes_to=f"{found.group(2)} = {found.group(3)}",
fails_when_missing=f"falls back to {found.group(2)} = {found.group(4)}",
depends_on_option=f"{found.group(2)} unset",
passes_to=f"{key} = {fallback.group(2)}",
fails_when_missing=f"falls back to {key} = {fallback.group(1)}",
depends_on_option=(
f"{key} unset or {named.group(1)}; {fallback.group(1)} instead for a hard disk image "
"under a TOS other than EmuTOS, or for autostart or GEMDOS under TOS older than 1.04"
),
)
)
picked = src.find(
rf'string (\w+) = Path\.Combine\({BIOS}, "([^"]+)", SystemConfig\["(hatarib_tos)"\]\);',
"hatarib option path",
method[0],
method[1],
)
write = src.find(
r'coreSettings\["hatarib_tos"\] = (\w+);', "hatarib option write", picked.end()
)
skipped = re.findall(
r'SystemConfig\["hatarib_tos"\] == "(\w+)"', src.text[method[0] : picked.start()]
)
prefixes = re.findall(
r'SystemConfig\["hatarib_tos"\]\.StartsWith\("(\w+)"\)',
src.text[method[0] : picked.start()],
)
choices, choice_lines = feature_choices(features, "libretro", picked.group(3), core="hatarib")
files = [c for c in choices if c not in skipped and not c.startswith(tuple(prefixes))]
records.append(
_record(
"hatarib",
@@ -505,14 +592,28 @@ def hatari_libretro(sources: dict[str, Source]) -> list[Record]:
"core_option",
files,
source_ref(
(src.path, [src.lines(picked.start(), write.end())]),
(src.path, [head, src.lines(shared.start(), chosen.end())]),
(features.path, [choice_lines]),
),
case_insensitive=True,
search_dir=f"bios/{picked.group(2)}",
passes_to=f"hatarib_tos = {picked.group(2)}/<value>",
fails_when_missing="option not written when the file is absent",
depends_on_option=picked.group(3),
search_dir=f"bios/{own.group(2)}",
passes_to=f"{key} = {chosen.group(1)}/<value>",
fails_when_missing=f"{key} = {fallback.group(1)}, or {fallback.group(2)} when bios holds it",
depends_on_option=key,
)
)
records.append(
_record(
"hatarib",
"libretro",
"copies",
files,
source_ref((src.path, [head, src.lines(shared.start(), copy.end())])),
case_insensitive=True,
search_dir="/".join(["bios", *folders]),
passes_to=f"copied to bios/{own.group(2)}/<value>, only when the target does not exist",
fails_when_missing=False,
depends_on_option=key,
)
)
return records
@@ -2397,11 +2498,46 @@ def raine(sources: dict[str, Source]) -> list[Record]:
def gsplus(sources: dict[str, Source]) -> list[Record]:
"""The first of the names GSplus accepts that the bios folder holds, written
as its ROM path. Without one the key is left alone and GSplus searches
beside its executable."""
src = sources[f"{GENERATORS}/GsPlus.Generator.cs"]
records = _value_writes(src, "gsplus", "standalone")
if not records:
raise LauncherPatternMissing(src.path, "ROM path write")
return _covered(src, records)
listed = src.find(
r"static readonly string\[\] (\w+) = new string\[\] \{ ((?:\"[^\"]+\"(?:, )?)+) \};",
"ROM names",
)
root = src.find(r"string (\w+) = AppConfig\.GetFullPath\(\"bios\"\);", "bios folder")
first = src.find(
rf"string (\w+) = {listed.group(1)}\s*\.Select\(n => Path\.Combine\({root.group(1)}, n\)\)"
r"\s*\.FirstOrDefault\(File\.Exists\);",
"first name present",
)
write = src.find(
rf'(\w+)\.WriteValue\(null, "(\w+)", {first.group(1)}\);', "ROM path write"
)
conditions, returns = _when(src, write.start())
# The test on the name found is the selection itself, not a condition.
conditions = [c for c in conditions if first.group(1) not in c]
target = f"{_config_label(src, write.start(), write.group(1))} {write.group(2)}"
record = _record(
"gsplus",
"standalone",
"names_searched",
_strings(listed.group(2)),
_path_parts(
src,
*returns,
src.lines(listed.start(), listed.end()),
src.lines(root.start(), root.end()),
src.lines(first.start(), write.end()),
),
case_insensitive=True,
search_dir="bios",
passes_to=f"{target} = <first found>",
fails_when_missing=False,
depends_on_option=", ".join(conditions) or None,
)
return _covered(src, [record])
def _copies_if_absent(
@@ -2994,15 +3130,25 @@ def arcadeduck(sources: dict[str, Source]) -> list[Record]:
lookup_body[0],
lookup_body[1],
)
method = src.find(r"private string GetBiosPath\(string rom, string biosRoot\)", "GetBiosPath")
method = src.find(
r"private string GetBiosPath\(string rom, string biosRoot, bool isChd\)", "GetBiosPath"
)
body = src.block_at(method.end())
src.find(
r"var candidates = new List<string> \{ Path\.GetDirectoryName\(Path\.GetFullPath\(rom\)\) \};",
r"string romDir = Path\.GetDirectoryName\(Path\.GetFullPath\(rom\)\);\s*"
r"var candidates = new List<string> \{ romDir \};",
"game folder first",
body[0],
body[1],
)
src.find(r"candidates\.Add\(biosRoot\);", "bios folder second", body[0], body[1])
src.find(
r"if \(isChd && Directory\.GetParent\(romDir\) != null\)\s*"
r"candidates\.Add\(Directory\.GetParent\(romDir\)\.FullName\);",
"folder above a CHD-only set second",
body[0],
body[1],
)
src.find(r"candidates\.Add\(biosRoot\);", "bios folder last", body[0], body[1])
message, _ = _throw_message(src, body[0], body[1])
root = src.find(rf"string biosPath = {_BIOS_ROOT};", "bios root")
write = src.find(r'ini\.WriteValue\("(\w+)", "(\w+)", biosPath\);', "SearchDirectory write")
@@ -3031,7 +3177,7 @@ def arcadeduck(sources: dict[str, Source]) -> list[Record]:
[f"<bios archive of the game's system in {database_file}>"],
ref,
case_insensitive=False,
search_dir="<rom directory>, then bios",
search_dir="<rom directory>, then the folder above it for a CHD-only set, then bios",
passes_to=f"{target} = <folder found>",
fails_when_missing=message,
),
@@ -3043,7 +3189,7 @@ def arcadeduck(sources: dict[str, Source]) -> list[Record]:
ref,
slot=fixed.group(1),
case_insensitive=False,
search_dir="<rom directory>, then bios",
search_dir="<rom directory>, then the folder above it for a CHD-only set, then bios",
passes_to=f"{target} = <folder found>",
fails_when_missing=message,
depends_on_option=f"{database_file} names no archive for {fixed.group(1)}",
+4 -1
View File
@@ -217,6 +217,9 @@ class Scraper(BaseScraper):
sys_name = sys_data.get("name", "") if isinstance(sys_data, dict) else ""
if sys_name:
native["native_name"] = sys_name
# One held file of a group is enough (Program.cs): verify reads it.
if bios.get("group"):
native["group"] = str(bios["group"])
requirements.append(
BiosRequirement(
@@ -224,7 +227,7 @@ class Scraper(BaseScraper):
system=SYSTEM_SLUG_MAP.get(sys_key, sys_key),
md5=md5 or None,
destination=file_path,
required=True,
required=not bios.get("optional", False),
native_id=sys_key,
native_path=declared_path,
native=native,
+8 -14
View File
@@ -327,9 +327,15 @@ def link_record(emulator: str, script: Script, link: Link, **fields: object) ->
def hatari(tree: RepoTree) -> list[Launcher]:
package = f"{STANDALONE}/hatarisa"
script = Script(
f"{package}/scripts/start_hatari.sh", tree.read(f"{package}/scripts/start_hatari.sh")
# The script is named after the package's binary: start_hatari.sh became
# start_hatarisa.sh (2e7041d273), so it is found, not spelled.
starts = sorted(
name for name in tree.listdir(f"{package}/scripts")
if name.startswith("start_") and name.endswith(".sh")
)
if len(starts) != 1:
raise LauncherPatternMissing(f"{package}/scripts", "one start script")
script = Script(f"{package}/scripts/{starts[0]}", tree.read(f"{package}/scripts/{starts[0]}"))
copy_line, copy = script.find(r"cp \S+/([\w-]+\.cfg) ", "default config copy")
run_line, _ = script.find(r"--configfile", "--configfile", copy_line)
path = f"{package}/config/conf/{copy.group(1)}"
@@ -557,17 +563,6 @@ def duckstation(tree: RepoTree) -> list[Launcher]:
)
def aethersx2(tree: RepoTree) -> list[Launcher]:
return directory_records(
tree,
"aethersx2",
f"{STANDALONE}/aethersx2-sa",
"aethersx2/inis/PCSX2.ini",
("Folders", "Bios"),
(("Filenames", "BIOS"),),
)
def armsx2(tree: RepoTree) -> list[Launcher]:
return directory_records(
tree,
@@ -683,7 +678,6 @@ EXTRACTORS: tuple[Callable[[RepoTree], list[Launcher]], ...] = (
mednafen,
yabasanshiro,
duckstation,
aethersx2,
armsx2,
patched_directories,
links,
+1
View File
@@ -1021,6 +1021,7 @@ SYSTEM_NAMES: dict[str, str] = {
"m68k": "Motorola 68000",
"magnetic-scrolls": "Magnetic Scrolls",
"marty": "Fujitsu FM Towns Marty",
"mattel-hyperscan": "Mattel HyperScan",
"mega-cd-32x": "Sega Mega-CD 32X",
"mega-duck": "Welback Mega Duck",
"mega-ld": "Sega Mega LD",
+19
View File
@@ -1429,6 +1429,25 @@ def verify_platform(
):
file_severity[dest] = sev
# RetroBat's group: one file of it held is enough, and the others are
# reported OPTIONAL (batocera-systems/Program.cs). None held, each stays
# required.
members: dict[tuple[str, str], list[str]] = {}
for sys_id, system in config.get("systems", {}).items():
for file_entry in system.get("files", []):
if file_entry.get("group"):
dest = _dest_key(file_entry, sys_id)
if dest in file_status:
members.setdefault((sys_id, file_entry["group"]), []).append(dest)
for dests in members.values():
if any(file_status[d] == Status.OK for d in dests):
for dest in dests:
if file_status[dest] == Status.MISSING:
file_required[dest] = False
file_severity[dest] = compute_severity(Status.MISSING, False, mode)
for result in results_at.get(dest, []):
result["required"] = False
shipped, occupied = _builder_placement(
packed_order, bool(config.get("case_insensitive_fs", False))
)
+34
View File
@@ -915,6 +915,40 @@ class TestE2E(unittest.TestCase):
c = result["severity_counts"]
self.assertGreater(c[Severity.WARNING], 0)
def test_24b_a_held_group_member_makes_the_others_optional(self):
"""RetroBat's group: one file held is enough (batocera-systems/Program.cs)."""
from common import _platform_config_cache
with open(os.path.join(self.platforms_dir, "test_md5.yml")) as fh:
config = yaml.safe_load(fh)
held_md5 = next(
f["md5"] for f in config["systems"]["sys-renamed"]["files"]
)
config["systems"] = {
"sys-group": {"files": [
{"name": "correct_hash.bin", "destination": "g/held.bin",
"md5": held_md5, "required": True, "group": "one"},
{"name": "absent_alt.bin", "destination": "g/absent_alt.bin",
"md5": "0" * 32, "required": True, "group": "one"},
{"name": "absent_a.bin", "destination": "g/absent_a.bin",
"md5": "1" * 32, "required": True, "group": "none"},
{"name": "absent_b.bin", "destination": "g/absent_b.bin",
"md5": "2" * 32, "required": True, "group": "none"},
]},
}
with open(os.path.join(self.platforms_dir, "grouped_md5.yml"), "w") as fh:
yaml.dump(config, fh)
_platform_config_cache.clear()
result = verify_platform(
load_platform_config("grouped_md5", self.platforms_dir), self.db, self.emulators_dir
)
by_name = {d["name"]: d for d in result["details"]}
self.assertEqual(by_name["correct_hash.bin"]["status"], Status.OK)
self.assertIs(by_name["absent_alt.bin"]["required"], False)
self.assertIs(by_name["absent_a.bin"]["required"], True)
self.assertIs(by_name["absent_b.bin"]["required"], True)
self.assertEqual(result["severity_counts"][Severity.CRITICAL], 2)
def test_25_verify_sha1_platform(self):
config = load_platform_config("test_sha1", self.platforms_dir)
result = verify_platform(config, self.db, self.emulators_dir)
+63
View File
@@ -113,6 +113,51 @@ class NarrowToCores(unittest.TestCase):
)
class ACoreTheListDoesNotKnow(unittest.TestCase):
"""A core newer than the list (parallel_dc, issue 87) loses nothing its .info declares."""
def setUp(self):
self.tmp = Path(tempfile.mkdtemp(dir=REPO_ROOT / "tmp"))
self.addCleanup(shutil.rmtree, self.tmp, True)
def test_only_names_no_profile_answers_for(self):
self.assertEqual(
install.unknown_cores(MANIFEST, ["mednafen_psx", "pcsx_rearmed", "mgba",
"parallel_dc"]),
["parallel_dc"],
)
def test_the_info_paths_retroarch_reads(self):
(self.tmp / "parallel_dc_libretro.info").write_text(
'firmware_count = 3\n'
'firmware0_desc = "dc/dc_boot.bin (Dreamcast BIOS)"\n'
'firmware0_path = "dc/dc_boot.bin"\n'
'firmware1_path = dc\\naomi.zip\n'
'firmware2 = "ignored.bin"\n'
)
self.assertEqual(
install.info_firmware([self.tmp / "missing", self.tmp], "parallel_dc"),
["dc/dc_boot.bin", "dc/naomi.zip"],
)
self.assertIsNone(install.info_firmware([self.tmp], "odin"))
def test_the_config_names_the_info_folder(self):
(self.tmp / "retroarch.cfg").write_text('libretro_info_path = "default"\n')
self.assertEqual(
install.info_dirs("retroarch", self.tmp / "system", [self.tmp / "cores"]),
[self.tmp / "info", self.tmp / "cores"],
)
def test_its_declared_files_survive_the_narrowing(self):
files, _ = install.narrow_to_cores(
MANIFEST, ["mednafen_psx"], declared_by_info=["GBA_BIOS.bin", "mgba/extra.bin"])
self.assertEqual(
[f["dest"] for f in files],
["scph5501.bin", "gba_bios.bin", "unlisted.bin", "psx/extra.bin",
"mgba/extra.bin"],
)
class TheBuildersOrder(unittest.TestCase):
"""RetroPie reads megaplay.zip as advancemame (copy A), mame (copy B),
then mame2003 (copy A). Without advancemame the builder ships mame's
@@ -490,6 +535,24 @@ class TheOneLinerReadsInstalledCores(unittest.TestCase):
repo.installed(), ["pcsx/extra.bin", "scph5500.bin", "scph5501.bin"]
)
def test_a_core_the_list_does_not_know_keeps_its_info_files(self):
with _CoreRepository() as repo:
repo.install_core("pcsx_rearmed_neon")
repo.install_core("newgba")
(repo.root / "cores" / "newgba_libretro.info").write_text(
'firmware0_path = "gba_bios.bin"\n')
repo.install_core("noinfo")
proc = repo.run("--installed-cores")
self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr)
self.assertIn("newgba: a core this list does not know, 1 file its .info "
"declares kept", proc.stdout)
self.assertIn("noinfo: a core this list does not know, with no .info",
proc.stdout)
self.assertEqual(
repo.installed(),
["gba_bios.bin", "pcsx/extra.bin", "scph5500.bin", "scph5501.bin"],
)
def test_no_core_found_is_an_error_not_everything(self):
with _CoreRepository() as repo:
proc = repo.run("--installed-cores")
+30 -8
View File
@@ -182,10 +182,28 @@ FEATURES = """
"""
HATARI = """
string tosDir = Path.Combine(AppConfig.GetFullPath("bios"), "hatari", "tos");
string tosfile = Path.Combine(AppConfig.GetFullPath("bios"), "tos.img");
string emutos = Path.Combine(tosDir, "emutos.img");
if (SystemConfig.isOptSet("hatari_tos") && !string.IsNullOrEmpty(SystemConfig["hatari_tos"]))
tosfile = Path.Combine(AppConfig.GetFullPath("bios"), "hatari", "tos", SystemConfig["hatari_tos"]);
if (SystemConfig.isOptSet("hatari_tos") && SystemConfig["hatari_tos"] != "default")
tosfile = Path.Combine(tosDir, SystemConfig["hatari_tos"]);
else if (media.HasHardDiskImage && File.Exists(emutos))
{
tosfile = emutos;
}
else
{
if (!File.Exists(tosfile) && File.Exists(emutos))
tosfile = emutos;
if (old)
{
string newTos = new string[] { "tos104.img", "tos206.img", "emutos.img" }
.Select(t => Path.Combine(tosDir, t))
.FirstOrDefault(t => File.Exists(t));
}
}
if (!File.Exists(tosfile))
throw new ApplicationException("Missing TOS file " + tosName + " in 'bios' folder.");
@@ -391,17 +409,21 @@ class NamesInLauncherOrder(unittest.TestCase):
)
def test_hatari_default_and_option(self):
fixed, option = rl.hatari(
fixed, option, emutos, newer = rl.hatari(
_sources(**{f"{G}/Hatari.Generator.cs": HATARI, rl.FEATURES: HATARI_FEATURES})
)
message = "ApplicationException 'Missing TOS file <tosName> in 'bios' folder.'"
self.assertEqual(fixed["names"], ["tos.img"])
self.assertEqual(
fixed["fails_when_missing"],
"ApplicationException 'Missing TOS file <tosName> in 'bios' folder.'",
)
self.assertEqual(fixed["source_ref"], f"{G}/Hatari.Generator.cs:1-9")
self.assertEqual(fixed["search_dir"], "bios")
self.assertEqual(fixed["fails_when_missing"], f"bios/hatari/tos/emutos.img instead, else {message}")
self.assertEqual(fixed["source_ref"], f"{G}/Hatari.Generator.cs:1-3, 13-14, 27")
self.assertEqual(option["names"], ["tos206.img", "tos102.img"])
self.assertEqual(option["search_dir"], "bios/hatari/tos")
self.assertEqual(option["fails_when_missing"], message)
self.assertEqual(emutos["names"], ["emutos.img"])
self.assertEqual(emutos["search_dir"], "bios/hatari/tos")
self.assertEqual(newer["kind"], "names_searched")
self.assertEqual(newer["names"], ["tos104.img", "tos206.img", "emutos.img"])
def _one(text: str, emulator: str, path: str = f"{G}/X.Generator.cs") -> list[dict]:
+1
View File
@@ -64,6 +64,7 @@ STEM_NAMED = {
"ioquake3": "the project writes ioquake3",
"izapple2": "README title izapple2",
"jgenesis": "README title jgenesis",
"n64emu": "README title n64emu",
"np2pi": "repository and binary np2pi, no title in the source",
"rpix86": "the author writes rpix86",
"simple64": "window title simple64",
+54 -1
View File
@@ -45,6 +45,11 @@
"src/common/scm_rev.cpp.in",
"src/frontend_common/update_checker.cpp"
],
"git.libretro.com/libretro/HyperScanEmu@44509de141c7b9adf947b3130500e552cfa98f56": [
"Cargo.toml",
"crates/hyperscanemu-core/src/firmware.rs",
"crates/hyperscanemu-libretro/src/lib.rs"
],
"git.libretro.com/libretro/Libretro-Supermodel@84bc106b45b279bf868a53b9232897c8dc10ca17": [
"Config/Games.xml",
"Docs/README.md",
@@ -93,11 +98,34 @@
"src/main.cpp",
"src/resource/CafeDefaultFont.cpp"
],
"git.libretro.com/libretro/hypseushw@cb4de9f9b3e8264e71b25b5552dfa1e26121c636": [
"core/src/io/homedir.cpp",
"core/src/io/homedir.h",
"core/src/io/input.cpp",
"core/src/video/video.cpp",
"libretro/CMakeLists.txt",
"libretro/hypseushw_libretro.info",
"libretro/lr_core.cpp"
],
"git.libretro.com/libretro/libretro-radio@5d7d786ad1d8703a52184ff2ee39712c46ed67c9": [
".gitlab-ci.yml",
"Makefile",
"libretro-radio.c"
],
"git.libretro.com/libretro/n64emu@c9da0acadaebe9bbfa4cf2b5662f2af7252988a3": [
"src/device/pif.c",
"src/libretro.c",
"src/main/main.c"
],
"git.libretro.com/libretro/odin-libretro@7cc427e4cc048e86753275f664bf0e59bbd002bf": [
"odin-games.json",
"src/odin/host/app/games.cpp",
"src/odin/host/app/rom_files.cpp",
"src/odin/libretro/games_json.S",
"src/odin/libretro/libretro_odin.cpp",
"src/odin/machine/boards/hikaru/hikaru.cpp",
"src/odin/machine/boards/hikaru/mie_board.cpp"
],
"git.libretro.com/libretro/rust-dos@152d9bca7820f0d9a5d1ca820a2d20855698a211": [
"Cargo.toml",
"crates/gus/build.rs",
@@ -381,6 +409,11 @@
"crates/dingooemu-libretro/src/diagnostics.rs",
"crates/dingooemu/src/main.rs"
],
"github.com/AloysHF/HyperScanEmu@44509de141c7b9adf947b3130500e552cfa98f56": [
"Cargo.toml",
"crates/hyperscanemu-core/src/firmware.rs",
"crates/hyperscanemu-libretro/src/lib.rs"
],
"github.com/AloysHF/Native32Emu@059fa33c658caa4dbbad140ebf2af1197f9dd778": [
"Cargo.toml",
"crates/native32emu-core/src/archive_loader.rs",
@@ -1891,6 +1924,13 @@
"Machines/Utility/ROMLibrary.cpp",
"OSBindings/SDL/main.cpp"
],
"github.com/Tovarichtch/Odin@6ebf2b40ccbca9534d1a0e58b7602db11e4485d9": [
"odin-games.json",
"src/odin/host/app/games.cpp",
"src/odin/host/app/rom_files.cpp",
"src/odin/machine/boards/hikaru/hikaru.cpp",
"src/odin/machine/boards/hikaru/mie_board.cpp"
],
"github.com/Tovarichtch/xemu@98fbd75dd0f3088a4988abc1698feb37b844a41a": [
"config_spec.yml",
"hw/xbox/chihiro/chihiro-netboard.c",
@@ -6424,6 +6464,18 @@
"core/nullDC.cpp",
"core/reios/reios.cpp"
],
"github.com/libretro/parallel-dc@6f315dd55a66cb2299dd2282b24d2fd84fe7f390": [
"core/archive/archive.c",
"core/hw/flashrom/flashrom.h",
"core/hw/holly/sb_mem.cpp",
"core/hw/naomi/naomi_cart.cpp",
"core/hw/naomi/naomi_roms.h",
"core/libretro/libretro.cpp",
"core/libretro/libretro_core_options.h",
"core/nullDC.cpp",
"core/reios/reios.cpp",
"core/stdclass.cpp"
],
"github.com/libretro/parallel-n64@f87550d9ad70cb320870e2b5fd960235287abb89": [
"libretro/libretro.c",
"mupen64plus-core/src/device/pif/bootrom_hle.c"
@@ -6683,7 +6735,8 @@
"src/launcher.cpp",
"src/main.cpp",
"src/parsing/textfile.cpp",
"src/platforms/engineutils.cpp"
"src/platforms/engineutils.cpp",
"tools/errorgen"
],
"github.com/linappleii/linapple@7f4b60898d91bfecd6f4d8683a374f38b0564962": [
"CMakeLists.txt",