From 19cfd8132b11866c4b07f0f40e2bc10dc534bcf3 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 06:52:44 +0100 Subject: [PATCH 1/6] feat: profile five new buildbot cores parallel_dc (libretro/flycast renamed), hyperscanemu, hypseushw, n64emu and odin reached the RetroArch buildbot after the last targets scrape and resolved to no profile. Targets rescraped, each core profiled from its source. --- emulators/hyperscanemu.yml | 57 ++++++ emulators/hypseushw.yml | 56 ++++++ emulators/n64emu.yml | 46 +++++ emulators/odin.yml | 215 ++++++++++++++++++++ emulators/parallel_dc.yml | 302 +++++++++++++++++++++++++++++ install/targets/retroarch.json | 160 ++++++++++++++- platforms/targets/retroarch.yml | 84 +++++++- scripts/siterender.py | 1 + tests/test_profile_names.py | 1 + website/src/data/source-paths.json | 55 +++++- 10 files changed, 974 insertions(+), 3 deletions(-) create mode 100644 emulators/hyperscanemu.yml create mode 100644 emulators/hypseushw.yml create mode 100644 emulators/n64emu.yml create mode 100644 emulators/odin.yml create mode 100644 emulators/parallel_dc.yml diff --git a/emulators/hyperscanemu.yml b/emulators/hyperscanemu.yml new file mode 100644 index 000000000..240861672 --- /dev/null +++ b/emulators/hyperscanemu.yml @@ -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 /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" diff --git a/emulators/hypseushw.yml b/emulators/hypseushw.yml new file mode 100644 index 000000000..d23d01bbb --- /dev/null +++ b/emulators/hypseushw.yml @@ -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/.zip, framefile/.txt, vldp/, + or a RocketLauncher .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 + /daphne/ as the asset folder when /daphne/pics exists, + otherwise it writes the embedded copies to /daphne/assets/ and uses + those (libretro/lr_core.cpp:555-573, 1472-1487). Pictures and samples + resolve through find_file(): /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 /daphne/.commands file adds engine arguments, + read after roms/.commands and /.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. diff --git a/emulators/n64emu.yml b/emulators/n64emu.yml new file mode 100644 index 000000000..1159e0333 --- /dev/null +++ b/emulators/n64emu.yml @@ -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" diff --git a/emulators/odin.yml b/emulators/odin.yml new file mode 100644 index 000000000..a0b46e398 --- /dev/null +++ b/emulators/odin.yml @@ -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 + /odin/odin-games.json whenever the file there differs, then read back. + The mesh program lists under /odin/shaders/ are written the same way, + and /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 .zip or .7z), then for the set the list + names (and for the parent set) as .zip, .7z and a / folder, + first in /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" diff --git a/emulators/parallel_dc.yml b/emulators/parallel_dc.yml new file mode 100644 index 000000000..43caf7a86 --- /dev/null +++ b/emulators/parallel_dc.yml @@ -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 /dc/. The core creates /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 + /dc/, 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" diff --git a/install/targets/retroarch.json b/install/targets/retroarch.json index 4afd1f9d5..e0e9a1571 100644 --- a/install/targets/retroarch.json +++ b/install/targets/retroarch.json @@ -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", diff --git a/platforms/targets/retroarch.yml b/platforms/targets/retroarch.yml index 9310aa6ac..7758f20f9 100644 --- a/platforms/targets/retroarch.yml +++ b/platforms/targets/retroarch.yml @@ -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: diff --git a/scripts/siterender.py b/scripts/siterender.py index c71d2db10..efdcb15cd 100644 --- a/scripts/siterender.py +++ b/scripts/siterender.py @@ -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", diff --git a/tests/test_profile_names.py b/tests/test_profile_names.py index da172b185..57ae2a535 100644 --- a/tests/test_profile_names.py +++ b/tests/test_profile_names.py @@ -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", diff --git a/website/src/data/source-paths.json b/website/src/data/source-paths.json index b5e05212f..c724bb8f8 100644 --- a/website/src/data/source-paths.json +++ b/website/src/data/source-paths.json @@ -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", From 0179de844c15e9d15c94861c98b767345bbe9b4f Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 06:52:44 +0100 Subject: [PATCH 2/6] feat: keep firmware of cores the list lacks --installed-cores treated a core with no profile as one that reads no file, and dropped dc/dc_boot.bin for parallel_dc without a word (issue 87). Such a core is now named, and the firmware its RetroArch .info declares is kept. core_names lists every core a platform runs, so a profile with no file is not reported unknown. --- README.md | 24 +- install.ps1 | 2 +- install.py | 112 ++++- install.sh | 2 +- install/amberelec.json | 157 +++++- install/batocera.json | 270 +++++++++- install/emudeck.json | 534 +++++++++++++++++++- install/emuelec.json | 178 ++++++- install/knulli.json | 463 +++++++++++++---- install/lakka.json | 505 +++++++++++++++++-- install/launchers/index.json | 16 +- install/minui.json | 34 +- install/myminui.json | 56 ++- install/nextui.json | 53 +- install/recalbox.json | 249 ++++++++- install/retroarch.json | 699 +++++++++++++++++++++----- install/retrobat.json | 301 ++++++++++- install/retrodeck.json | 491 +++++++++++++++++- install/retropie.json | 579 +++++++++++++++++++-- install/rocknix.json | 721 ++++++++++++++++++++++----- install/romm.json | 112 ++++- schemas/install-events.schema.json | 39 ++ schemas/install-manifest.schema.json | 2 +- scripts/generate_event_schema.py | 4 +- scripts/generate_pack.py | 14 +- tests/test_install_cores.py | 63 +++ wiki/installer.md | 21 +- wiki/reading-reports.md | 4 +- 28 files changed, 5133 insertions(+), 572 deletions(-) diff --git a/README.md b/README.md index 28d15b69a..26ab1f7c8 100644 --- a/README.md +++ b/README.md @@ -83,17 +83,17 @@ These are the files an emulator loads from disk instead of carrying inside itsel Each file is checked the way your platform checks it. Most compare a checksum, the fingerprint of a file's contents, which catches a corrupt or unexpected copy. RetroArch, Lakka and RetroPie check that the file is present under its name without reading its contents (`path_is_valid` in RetroArch's `core_info.c`), and MinUI, NextUI and MyMinUI hand each core its folder without opening a file in it: the Coverage table says which applies to you. Independently of that, the collection records five fingerprints per file, and wherever an emulator's code states an expected size or hash, that value is read from its source and rechecked here. -- **1,087 files** the platforms' emulators load are still to be found, and 138 more the collection does not hold and does not serve by name (retail data, per-user keys, user-filled slots), each with its reason. Both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/) +- **1,091 files** the platforms' emulators load are still to be found, and 138 more the collection does not hold and does not serve by name (retail data, per-user keys, user-filled slots), each with its reason. Both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/) - **18 platforms** supported with platform-specific verification -- **623 emulators** profiled from source (RetroArch cores + standalone) -- **532 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...) +- **628 emulators** profiled from source (RetroArch cores + standalone) +- **533 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...) - **19,947 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,744 system files, 2,975 arcade ROM sets, 11,228 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table - **566 of 5,744 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC). Arcade sets and engine data fall outside what those catalogs index - **15.8 GB** for the whole collection ## Supported systems -NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 498+ more. +NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 499+ more. Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)** @@ -104,20 +104,20 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/ | AmberELEC | 414/434 | 4,754/4,937 | MD5 | | Batocera | 353/353 | 14,172/15,292 | MD5 | | BizHawk | 118/118 | - | SHA-1 | -| EmuDeck | 168/168 | 8,427/8,529 | MD5 | +| EmuDeck | 168/168 | 8,435/8,543 | MD5 | | EmuELEC | 543/572 | 4,788/10,217 | MD5 | | KNULLI | 290/290 | 9,127/15,351 | MD5 | -| Lakka | 532/532 | 7,910/7,995 | name only | +| Lakka | 532/532 | 7,917/8,008 | name only | | MiSTer FPGA | 81/81 | - | MD5 | | MinUI | 0/0 | 78/79 | name only | | MyMinUI | 0/0 | 356/367 | name only | | NextUI | 0/0 | 343/350 | name only | -| ROCKNIX | 38/38 | 7,428/9,140 | MD5 | +| ROCKNIX | 38/38 | 7,436/9,154 | MD5 | | Recalbox | 351/351 | 3,125/3,344 | MD5 | -| RetroArch | 526/526 | 7,919/7,986 | name only | +| RetroArch | 526/526 | 7,926/7,999 | name only | | RetroBat | 348/348 | 5,135/9,659 | MD5 | -| RetroDECK | 2,007/2,008 | 6,706/6,993 | MD5 | -| RetroPie | 532/532 | 8,118/12,772 | name only | +| RetroDECK | 2,007/2,008 | 6,706/6,999 | MD5 | +| RetroPie | 532/532 | 8,125/12,785 | name only | | RomM | 383/383 | 83/875 | size, then any hash | Each fraction is what the pack has over what is needed, counting required and optional files alike since both ship. The first column is the BIOS list the platform publishes. The second counts files its emulators load that this list never mentions, found by reading their source code, and it is routinely several times larger. A short fraction means files are still missing, and they are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/). @@ -169,7 +169,7 @@ The [documentation site](https://abdess.github.io/retrobios/) provides: - **Per-emulator profiles** with source code references for every file - **Per-system pages** showing which emulators and platforms cover each console - **Gap analysis** identifying missing files and undeclared core requirements -- **Cross-reference** mapping files across 18 platforms and 623 emulators +- **Cross-reference** mapping files across 18 platforms and 628 emulators - **Versioned data access** through JSON, CSV and SQLite exports with published SHA-256 checksums ## How it works @@ -208,4 +208,4 @@ The scripts and tooling are released under the [MIT License](LICENSE). The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed. The reasoning, and where it is weakest, is in [the project's legal position](https://abdess.github.io/retrobios/wiki/legal/). -*Auto-generated on 2026-11-06T19:12:52Z* +*Auto-generated on 2026-11-09T05:51:44Z* diff --git a/install.ps1 b/install.ps1 index 20f205cca..cd4262b03 100644 --- a/install.ps1 +++ b/install.ps1 @@ -16,7 +16,7 @@ # and Invoke-WebRequest throws on a cut transfer before the hash is read: # the site's build rewrites this line there (scripts/sitebootstrap.py). $mismatchAdvice = "The download was most likely cut short: try again. Within minutes of an update of this project the two files can come from caches of different ages. Waiting five minutes settles that." - $defaultInstallSha256 = "e5d6473efdd2c4f05cc8db178b6b00ec2b9637f7abfa3a2d81e23265f13c7132" + $defaultInstallSha256 = "d581db16348505a1cf691cfd46be96117fcdd4cf9a2e325c4e63f228c8c79010" $maximumInstallerBytes = 2MB $installerExit = 0 $installer = if ($PSScriptRoot) { Join-Path $PSScriptRoot "install.py" } else { $null } diff --git a/install.py b/install.py index 33fc6ce77..224e7fc00 100644 --- a/install.py +++ b/install.py @@ -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 @@ -3071,6 +3076,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_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") @@ -4449,6 +4515,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. @@ -4458,9 +4525,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])) @@ -4470,6 +4540,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: @@ -14042,6 +14115,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. @@ -15390,12 +15494,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. " @@ -15530,8 +15636,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") diff --git a/install.sh b/install.sh index eb12119ff..16a4815d0 100755 --- a/install.sh +++ b/install.sh @@ -23,7 +23,7 @@ DEFAULT_INSTALL_URL="https://raw.githubusercontent.com/Abdess/retrobios/main/ins # curl or wget stop on a cut transfer before the hash is read: the site's # build rewrites this line there (scripts/sitebootstrap.py). MISMATCH_ADVICE="The download was most likely cut short: try again. Within minutes of an update of this project the two files can come from caches of different ages. Waiting five minutes settles that." -DEFAULT_INSTALL_SHA256="e5d6473efdd2c4f05cc8db178b6b00ec2b9637f7abfa3a2d81e23265f13c7132" +DEFAULT_INSTALL_SHA256="d581db16348505a1cf691cfd46be96117fcdd4cf9a2e325c4e63f228c8c79010" MAX_INSTALLER_BYTES=2097152 cleanup() { diff --git a/install/amberelec.json b/install/amberelec.json index ea9555055..9136ca197 100644 --- a/install/amberelec.json +++ b/install/amberelec.json @@ -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" diff --git a/install/batocera.json b/install/batocera.json index bc8f45064..270489cfc 100644 --- a/install/batocera.json +++ b/install/batocera.json @@ -4936,12 +4936,21 @@ } ], "core_names": { + "81": [], + "a5200": [], + "abuse": [], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], "aethersx2": [ "aethersx2-sa" ], "amiberry": [ "AMIBERRY" ], + "applewin": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -4949,11 +4958,14 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], "basiliskii": [ - "basilisk" + "basilisk", + "basilisk2" ], "beetle_gba": [ "mednafen_gba" @@ -4962,6 +4974,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -4981,9 +4997,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" ], @@ -5001,6 +5034,12 @@ "bsnes_mercury_balanced", "bsnes_mercury_performance" ], + "bstone": [], + "cannonball": [], + "cap32": [ + "caprice32" + ], + "catacombgl": [], "cdogs": [ "cdogs-sdl" ], @@ -5013,27 +5052,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" @@ -5042,17 +5096,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" ], @@ -5060,14 +5127,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" ], @@ -5077,20 +5150,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", @@ -5105,42 +5186,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" @@ -5205,13 +5312,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" ], @@ -5241,6 +5361,7 @@ "nekop2": [ "meowpc98" ], + "neocd": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -5249,6 +5370,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -5261,18 +5383,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" ], @@ -5287,18 +5428,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" @@ -5316,19 +5465,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", @@ -5337,17 +5507,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" @@ -5368,34 +5550,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", @@ -5420,30 +5634,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" ], @@ -5456,11 +5693,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": [ @@ -5761,6 +6008,7 @@ "mame2016", "mame4droid", "mame4droid-2024", + "odin", "teknoparrot", "ume2015" ], @@ -5838,6 +6086,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -6012,6 +6261,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" diff --git a/install/emudeck.json b/install/emudeck.json index bf431183d..68a4d7572 100644 --- a/install/emudeck.json +++ b/install/emudeck.json @@ -305,12 +305,22 @@ } } ], - "total_files": 8396, - "total_size": 7816272260, - "pack_files": 14576, - "pack_size": 7944194336, - "total_omitted": 37, + "total_files": 8400, + "total_size": 7821526606, + "pack_files": 14580, + "pack_size": 7949448682, + "total_omitted": 43, "omitted_files": [ + { + "dest": "18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "doomu.wad", "name": "doomu.wad", @@ -333,6 +343,26 @@ ], "category": "game_data" }, + { + "dest": "hyperscanemu/hyperscan.bin", + "name": "hyperscan.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, + { + "dest": "hyperscanemu/spg290.bin", + "name": "spg290.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, { "dest": "jazz2/Source/Anims.j2a", "name": "Anims.j2a", @@ -431,6 +461,26 @@ "px68k" ] }, + { + "dest": "odin/18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "roms/apollo-630.rom", "name": "apollo-630.rom", @@ -671,6 +721,16 @@ "fbneo" ] }, + { + "dest": "srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "svgpcb.zip", "name": "svgpcb.zip", @@ -693,15 +753,30 @@ } ], "core_names": { + "3dengine": [], "3dsen": [ "3dsen-windows" ], + "81": [], + "a5200": [], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], + "advanced_tests": [], "aethersx2": [ "aethersx2-sa" ], + "amiarcadia": [ + "winarcadia" + ], "amiberry": [ "AMIBERRY" ], + "anarch": [], + "applewin": [], + "ardens": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -709,12 +784,16 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], "azahar-sdl": [ "azahar" ], + "b2": [], + "bbkemu": [], "beetle_gba": [ "mednafen_gba" ], @@ -722,6 +801,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -741,9 +824,28 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bennugd": [], "bigpemu": [ "bigpemu-sa" ], + "bk": [], + "blastem": [], + "bluemsx": [], + "bnes": [], + "boom3": [ + "boom3_xp" + ], + "boytacean": [], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -752,6 +854,7 @@ "bsnes2014_balanced", "bsnes2014_performance" ], + "bsnes_cplusplus98": [], "bsnes_hd_beta": [ "bsnes_hd", "bsneshd" @@ -761,12 +864,28 @@ "bsnes_mercury_balanced", "bsnes_mercury_performance" ], + "cannonball": [], + "cap32": [ + "caprice32" + ], + "cdi2015": [], "cemu": [ "cemu-sa" ], + "chailove": [], "chihiro-ds": [ "chihiro-gun" ], + "chimerasnes": [], + "citra": [], + "citra2018": [], + "citra_canary": [], + "citron": [], + "clownmdemu": [], + "coolbaremu": [], + "craft": [], + "crocods": [], + "cruzes": [], "cxbx-reloaded": [ "cxbx" ], @@ -776,15 +895,38 @@ "daedalusx64": [ "daedalusx64-sa" ], + "daphne": [ + "km_daphne_xtreme" + ], + "desmume": [], "desmume2015": [ "desmume_2015" ], + "dice": [], + "dingooemu": [], + "dinothawr": [], + "directxbox": [], + "dirksimple": [], "dolphin": [ "dolphin-gui", - "dolphin-sa" + "dolphin-qt-gc", + "dolphin-qt-wii", + "dolphin-sa", + "dolphin-sa-gc", + "dolphin-sa-wii" ], + "dosbox": [], + "dosbox_core": [], + "dosbox_pure": [], + "dosbox_svn": [], + "dosbox_svn_ce": [], + "doublecherrygb": [ + "DoubleCherryGB" + ], + "doukutsu_rs": [], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "dsperate": [ "dsperate-sa" @@ -793,22 +935,55 @@ "Duckstation", "duckstation-sa" ], + "easyrpg": [], + "ecwolf": [ + "ECWolf" + ], + "eden": [], + "eka2l1": [], + "emucv": [], + "emuscv": [], + "emux_chip8": [], + "emux_gb": [], + "emux_nes": [], + "emux_sms": [], "ep128emu_core": [ "ep128emu", "ep128emu-core" ], + "eternal": [], + "fake08": [ + "fake_08" + ], "fbalpha2012": [ "fbalpha" ], + "fbalpha2012_cps1": [], + "fbalpha2012_cps2": [], + "fbalpha2012_cps3": [], + "fbalpha2012_neogeo": [], + "fbalpha2019": [], "fbneo": [ - "FBNEOSA" + "FBNEOSA", + "fbneo_32b", + "fbneo_plus", + "km_fbneo_xtreme_amped" ], + "fbneo_cps12": [], + "fbneo_neogeo": [], + "fceumm": [], + "fceumm_mod": [], + "ffmpeg": [], + "fixgb": [], + "fixnes": [], "flycast": [ "flycast-dev", "flycast-next", "flycast-sa", + "flycast32_rumble", "flycast_32b", "flycast_dev", + "flycast_rumble", "flycastsa", "flycastvl" ], @@ -818,16 +993,32 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], + "frodo": [], + "fsuae": [], "fuse": [ "fuse_libretro" ], + "galaksija": [], + "gam4980": [], + "gambatte": [], + "gametank": [], + "gearboy": [], + "gearcoleco": [], + "geargrafx": [], + "gearlynx": [], + "gearsystem": [], + "geartowns": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -842,31 +1033,61 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "geolith": [], + "gme": [], "gopher64": [ "gopher64-sa" ], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], + "gw": [ + "gw_libretro" + ], + "handy": [], "hatari": [ "HATARISA", + "hatari-fast", "hatarisa" ], + "hatari2014": [], + "hatarib": [], + "hbmame": [], + "higan_sfc": [], "higan_sfc_balanced": [ "nside_sfc_balanced" ], + "holani": [], + "hyperscanemu": [], + "hypseushw": [], + "imageviewer": [], + "irogb": [], + "ishiiruka": [], + "jaxe": [], "jazz2-native": [ "jazz2" ], + "jollycv": [], + "jumpnbump": [], "kenji-nx": [ "KENJI-NX", "kenjinx" ], + "kronos": [], "lime3ds": [ "lime-qt", "lime3ds-gui" ], + "lowresnx": [ + "lowres_nx" + ], "lrps2": [ "pcsx2", "ps2" ], + "lutro": [], + "m2000": [], "m64plus-fz": [ "M64PLUS-FZ", "org.mupen64plusae.v3.fzurita", @@ -879,13 +1100,17 @@ "mame2000": [ "imame4all" ], + "mame2003": [], + "mame2003_midway": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" ], + "mame2009": [], "mame2010": [ "mame0139" ], + "mame2015": [], "mame2016": [ "mess2016" ], @@ -894,9 +1119,12 @@ "MAME4DROID-CURRENT", "com.seleuco.mame4d2024" ], + "mamearcade": [], + "mamemess": [], "mandarine": [ "mandarine-qt" ], + "mcsoftserve": [], "md-emu": [ "MD-EMU", "MD.emu" @@ -906,6 +1134,16 @@ "beetle_pce_fast", "pce_fast" ], + "mednafen_snes": [ + "beetle-bsnes", + "beetle_bsnes", + "beetle_snes" + ], + "mednafen_stv": [], + "mednafen_supafaust": [ + "beetle_supafaust", + "supafaust" + ], "mednafen_supergrafx": [ "beetle-supergrafx", "beetle_supergrafx" @@ -928,17 +1166,35 @@ "mess2015": [ "mess" ], + "meteor": [], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "mgba_splitscreen": [], + "minivmac": [], "mkxp_z": [ "mkxp-z" ], + "model2": [ + "m2emulator", + "model2emu" + ], + "mojozork": [], + "moonlight": [ + "lr_moonlight" + ], + "mpv": [], + "mrboom": [], "msx-emu": [ "MSX-EMU", "MSX.emu" ], + "mu": [], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -957,9 +1213,13 @@ "mupen64plus_next_gles3", "mupen64plus_nx" ], + "n64emu": [], + "native32emu": [], "nekop2": [ "meowpc98" ], + "neocd": [], + "nes": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -968,6 +1228,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -980,35 +1241,65 @@ "NETHERSX2-TURNIP-CLASSIC", "NetherSX2-Turnip-Classic" ], + "nicaiemu": [], + "noods": [], + "np2kai": [], + "nuance": [], + "numero": [], "nxengine": [ "nx" ], "o2em": [ "o2em_libretro" ], + "oberon": [], + "odin": [], + "omicron": [], + "onscripter": [], + "onsyuri": [], + "openlara": [], + "openmsx": [ + "openmsx-ld" + ], "opentyrian": [ "tyrian" ], + "opera": [], + "panda3ds": [], "parallel-launcher": [ "ca.parallel_launcher.ParallelLauncher" ], + "parallel_dc": [], "parallel_n64": [ "parallel-n64", "parallel_n64_32b", "parallel_n64_debug" ], + "pascal_pong": [], + "pcee2": [], + "pcem": [], + "pcsx1": [], + "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": [], + "piece": [], "pizza-boy-sc": [ "PIZZA-BOY-SC", "Pizza Boy SC", @@ -1018,36 +1309,74 @@ "play": [ "play!" ], + "playdiaemu": [], + "pocketcdg": [], + "pokemini": [], "pokketstation": [ "pokket" ], + "potator": [], "ppsspp": [ "PPSSPPSDL", "ppsspp-sa" ], + "prboom": [], + "primehack": [], + "prosystem": [], "puae": [ "uae" ], + "puae2021": [], + "puzzlescript": [ + "pzretro" + ], + "px68k": [], + "qemu": [], + "quasi88": [], + "quicknes": [], + "race": [], + "rb5000": [], "real3doplayer": [ "REAL3DOPLAYER", "Real3DOPlayer" ], + "redbook": [], + "redream": [], + "reminiscence": [], + "remotejoy": [], + "retro8": [ + "picante8" + ], + "retrodream": [], + "romcleaner": [], "rosalies-mupen-gui": [ "RMG", "com.github.Rosalie241.RMG", "mupen64" ], + "rp6502": [], "rpcs3": [ "rpcs3-sa" ], + "rust_dos": [], + "rustation": [], + "rustynes": [], + "rvvm": [], + "ryujinx": [], + "same_cdi": [], + "sameboy": [], + "sameduck": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], + "sdlpal": [], "shadps4": [ "shadps4-gui" ], + "simcp": [], "simple64": [ "io.github.simple64.simple64", "simple64-gui" @@ -1066,22 +1395,68 @@ "pocketsnes", "snes9x_next" ], + "snes9x2002": [], + "snes9x2005": [], + "snes9x2005_plus": [], + "snes9x2010": [], + "spmp8000emu": [], + "squirreljme": [], "stella": [ "STELLASA" ], + "stella2014": [], + "stella2023": [], + "stonesoup": [], + "superbroswar": [ + "km_superbroswar" + ], + "supermodel": [], + "supersnes9x": [], + "suyu": [], + "swanstation": [], + "syobonaction": [], + "tamalibretro": [], + "tempgba": [], + "test_netplay": [], + "testaudio_callback": [], + "testaudio_no_callback": [], + "testaudio_playback_wav": [], + "testgl_compute_shaders": [], + "testgl_ff": [], + "testinput_buttontest": [], + "testretroluxury": [], + "testsw": [], + "testsw_vram": [], + "testvulkan_async_compute": [], + "tgbdual": [ + "TGB Dual" + ], + "theodore": [], + "thepowdertoy": [], + "tia": [], + "tic80": [], + "trident": [], "triforce": [ "dolphin-triforce", "dolphin_triforce" ], + "tyrquake": [], "uae4arm": [ "uae4arm_32b" ], + "ume2015": [], + "uw8": [], + "uxn": [], + "uzem": [], + "vaporspec": [], "vba_next": [ "vba-next" ], "vbam": [ "vba-m" ], + "vecx": [], + "vemulator": [], "vice": [ "vice_x128", "vice_x64", @@ -1106,32 +1481,73 @@ "vice_x64sc": [ "x64sx" ], + "vice_xcbm2": [ + "xcbm2" + ], + "vice_xcbm5x0": [ + "xcbm5x0" + ], + "vice_xpet": [ + "xpet" + ], + "vice_xplus4": [ + "xplus4" + ], "vice_xscpu64": [ "xscpu64" ], "vice_xvic": [ "xvic" ], + "vircon32": [], + "virtualjaguar": [], + "virtualxt": [], "vita3k": [ "vita3k-sa" ], + "vitaquake2": [ + "vitaquake2-rogue", + "vitaquake2-xatrix", + "vitaquake2-zaero" + ], + "vitaquake3": [], + "vitavoyager": [], + "wasm4": [], + "wqxemu": [], "x1": [ "xmil" ], "x1-box": [ "x1box" ], + "x64sdl": [], "xemu": [ "xemu-sa" ], + "xenia": [ + "xenia-canary", + "xenia-manager", + "xenianative" + ], "xenia-edge": [ "xenia_edge" ], + "xrick": [], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "yabause": [], + "yaps2": [], + "ymir": [], + "yuzu": [ + "yuzu-sa" + ], + "zc210": [], + "zc255": [] }, "system_cores": { "coleco-colecovision": [ @@ -1175,6 +1591,7 @@ "mupen64plus-ae", "mupen64plus-libretro", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -1261,6 +1678,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" @@ -1640,7 +2058,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_bios.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -1674,7 +2093,8 @@ "repo_path": "bios/Arcade/Arcade/naomi.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -72233,7 +72653,8 @@ "repo_path": "bios/Arcade/Arcade/f355bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -72244,7 +72665,8 @@ "repo_path": "bios/Arcade/Arcade/f355dlx.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -72255,7 +72677,8 @@ "repo_path": "bios/Arcade/MAME/hod2bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -72265,7 +72688,8 @@ "size": 7038226, "repo_path": "bios/Arcade/Arcade/naomi2.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] }, { @@ -72276,7 +72700,8 @@ "repo_path": "bios/Arcade/Arcade/awbios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -72286,7 +72711,8 @@ "size": 1281424, "repo_path": "bios/Arcade/Arcade/segasp.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] }, { @@ -72379,7 +72805,8 @@ "size": 519984, "repo_path": "bios/Sega/Dreamcast/font.bin", "cores": [ - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -73580,6 +74007,7 @@ "size": 1049493, "repo_path": "bios/Sega/Hikaru/hikaru.zip", "cores": [ + "odin", "mame", "mame2009", "mame2010", @@ -82679,12 +83107,23 @@ }, { "dest": "jvs13551.zip", - "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", - "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", - "size": 15088, - "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", "cores": [ - "mame" + "odin" + ], + "alternatives": [ + { + "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", + "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", + "size": 15088, + "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "cores": [ + "mame" + ] + } ] }, { @@ -83460,6 +83899,7 @@ "size": 725, "repo_path": "bios/Arcade/Arcade/mie.zip", "cores": [ + "odin", "mame" ] }, @@ -89541,6 +89981,16 @@ "nintendo-64" ] }, + { + "dest": "IPL.n64", + "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", + "sha256": "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b", + "size": 4194304, + "repo_path": "bios/Nintendo/Nintendo 64DD/64DD_IPL.bin", + "cores": [ + "n64emu" + ] + }, { "dest": "np2/bios.rom", "sha1": "76a7360502fa0296ea93b4c537174610a834d367", @@ -90053,6 +90503,36 @@ ], "category": "game_data" }, + { + "dest": "odin/hikaru.zip", + "sha1": "8ce366388c9e09c5d218d639f19d1d816b59395d", + "sha256": "806a236b5665bbcc4f204e8e877e8c9416d150353a34d469849244bbaa138dbf", + "size": 1049493, + "repo_path": "bios/Sega/Hikaru/hikaru.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/mie.zip", + "sha1": "00f43f5bf58dd79135565d52c4eea7e314ebc810", + "sha256": "98ec06b938a17f65fa4b0ad0439b410ed5e0f11b823320d3ce46b7268932fb8e", + "size": 725, + "repo_path": "bios/Arcade/Arcade/mie.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", + "cores": [ + "odin" + ] + }, { "dest": "omicron/omicron.jar", "sha1": "f64654e8a5275fdd35a18c576167715143ca3316", diff --git a/install/emuelec.json b/install/emuelec.json index a1697c473..129d7a8f6 100644 --- a/install/emuelec.json +++ b/install/emuelec.json @@ -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" diff --git a/install/knulli.json b/install/knulli.json index d2acf136a..07ad34e16 100644 --- a/install/knulli.json +++ b/install/knulli.json @@ -32,7 +32,7 @@ "total_files": 9574, "total_size": 9693434698, "pack_files": 13218, - "pack_size": 9796992041, + "pack_size": 9797100426, "total_omitted": 425, "omitted_files": [ { @@ -4683,12 +4683,21 @@ } ], "core_names": { + "81": [], + "a5200": [], + "abuse": [], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], "aethersx2": [ "aethersx2-sa" ], "amiberry": [ "AMIBERRY" ], + "applewin": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -4696,11 +4705,13 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar-sdl": [ "azahar" ], "basiliskii": [ - "basilisk" + "basilisk", + "basilisk2" ], "beetle_gba": [ "mednafen_gba" @@ -4709,6 +4720,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -4728,9 +4743,25 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bennugd": [], "bigpemu": [ "bigpemu-sa" ], + "blastem": [], + "bluemsx": [], + "boom3": [ + "boom3_xp" + ], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -4748,6 +4779,15 @@ "bsnes_mercury_balanced", "bsnes_mercury_performance" ], + "bstone": [], + "cannonball": [], + "cap32": [ + "caprice32" + ], + "catacombgl": [], + "cdogs": [ + "cdogs-sdl" + ], "cemu": [ "cemu-sa" ], @@ -4757,27 +4797,43 @@ "chihiro-ds": [ "chihiro-gun" ], + "citra": [], + "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" @@ -4786,13 +4842,26 @@ "Duckstation", "duckstation-sa" ], + "duckstation-legacy": [], "dxx-rebirth": [ "d1x-rebirth", "d2x-rebirth" ], + "easyrpg": [], + "ecwolf": [ + "ECWolf" + ], + "eduke32": [], + "eka2l1": [], + "emuscv": [], + "etlegacy": [], + "fake08": [ + "fake_08" + ], "fallout1-ce": [ "fallout-ce" ], + "fallout2-ce": [], "fba2x": [ "pifba" ], @@ -4800,14 +4869,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" ], @@ -4817,10 +4892,15 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], + "fsuae": [], "fury": [ "ionfury" ], @@ -4833,10 +4913,12 @@ "future-pinball-fploader": [ "bam" ], + "gambatte": [], "gba-emu": [ "GBA-EMU", "GBA.emu" ], + "gearsystem": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -4851,42 +4933,70 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "geolith": [], + "gong": [], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], + "gsplus": [], "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" @@ -4951,13 +5061,27 @@ "mesen2" ], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "minivmac": [], + "model2": [ + "m2emulator", + "model2emu" + ], + "moonlight": [ + "lr_moonlight" + ], + "mpv": [], + "mrboom": [], "msx-emu": [ "MSX-EMU", "MSX.emu" ], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -4987,6 +5111,7 @@ "nekop2": [ "meowpc98" ], + "neocd": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -4995,6 +5120,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -5007,18 +5133,38 @@ "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": [], + "openlara": [], + "openmohaa": [], + "openmsx": [ + "openmsx-ld" + ], "opentyrian": [ "tyrian" ], + "opera": [], "parallel-launcher": [ "ca.parallel_launcher.ParallelLauncher" ], @@ -5033,18 +5179,25 @@ "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" ], + "picodrive": [], "pizza-boy-gba": [ "PIZZA-BOY-GBA", "Pizza Boy GBA" @@ -5062,23 +5215,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", @@ -5087,15 +5257,26 @@ "rpcs3": [ "rpcs3-sa" ], + "ruffle": [], + "ryujinx": [], + "samcoupe": [ + "simcoupe" + ], + "same_cdi": [], + "sameduck": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], "scummvm-standalone": [ "SCUMMVMSA", "scummvm-sa" ], + "sdlpop": [ + "prince" + ], "shadps4": [ "shadps4-gui" ], @@ -5115,34 +5296,67 @@ "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": [], + "suyu": [], + "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", @@ -5167,30 +5381,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" ], @@ -5203,11 +5440,20 @@ "XM6TYPEG", "XM6TYPEG-WINDOWS" ], + "xrick": [], + "xroar": [ + "xroar-cocous", + "xroar-dragon32" + ], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "ymir": [], + "zc210": [] }, "system_cores": { "3do": [ @@ -5469,6 +5715,7 @@ "mame2016", "mame4droid", "mame4droid-2024", + "odin", "teknoparrot", "ume2015" ], @@ -5543,6 +5790,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -5683,6 +5931,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" @@ -158207,8 +158456,8 @@ ], "files": { "adhoc-servers.json": { - "sha1": "a77c56a3516a32138d1197a73cacd68473b4ec87", - "size": 8601 + "sha1": "5558662d3f9a9d23d3b7dbd5ed162d395d1a60d5", + "size": 8662 }, "langregion.ini": { "sha1": "7c5ef48a557dc06fa79c83eb178835cc47b302ad", @@ -158227,8 +158476,8 @@ "size": 32420 }, "compat.ini": { - "sha1": "93a96a00f3b97bcd2a0816e70eaf0a67417ed751", - "size": 55418 + "sha1": "10f5fa01eefc68710606ea251f958deb2b531106", + "size": 55591 }, "sfx_select.wav": { "sha1": "0bd3eabc432b6119507e4fc43354113b68bdbf66", @@ -158479,192 +158728,192 @@ "size": 27664 }, "lang/hu_HU.ini": { - "sha1": "62bc464115cb6f7c7f16ccbc0a3e268f1313f892", - "size": 95289 + "sha1": "de278e87250e8b2c3a06756964dfa51b7cbb84f4", + "size": 97245 }, "lang/cz_CZ.ini": { - "sha1": "075b139746162c7f0b95d1c1bd5bf1caa6075aa2", - "size": 103111 + "sha1": "334d5e4c10a935f54800c633b86e735f8e68565d", + "size": 105532 }, "lang/pl_PL.ini": { - "sha1": "81af60cb8e415001bfbba7da7b2bac7f5563fff7", - "size": 90593 + "sha1": "4aedd2d7df3df1fb39cfa209b97310a8a8f1742b", + "size": 92694 }, "lang/pt_PT.ini": { - "sha1": "4e7f24647541d964eec0ffe3fd94921a3c61ea27", - "size": 93363 + "sha1": "f4d5a7889978fd26ec56718ed7d992a736baa858", + "size": 95555 }, "lang/bg_BG.ini": { - "sha1": "c92465c9028e224521b45a5fcb3355e6da091661", - "size": 137180 + "sha1": "7618153390daca2a3a74fc67d90203549a79662f", + "size": 140520 }, "lang/nl_NL.ini": { - "sha1": "489c29c689a24e874f0c444f748d9d83c5a3c78b", - "size": 99128 + "sha1": "c3ade196aecb760b80727a7ada1ae478bed67ce0", + "size": 101733 }, "lang/lo_LA.ini": { - "sha1": "e45a149a19c180a1d6fcf5ad391e9f7597018fe4", - "size": 99892 + "sha1": "30d8f415ddef2d6148d7042855c5c485bd6f06df", + "size": 97653 }, "lang/jv_ID.ini": { - "sha1": "a9d1919a690bd786646f0c2e69f5857a02a77f13", - "size": 77186 + "sha1": "68e3bde3dae96528c8995d2d7d3aede4814c0a87", + "size": 78604 }, "lang/pt_BR.ini": { - "sha1": "f599e419c30306a32654775cb84837383ec5f142", - "size": 92406 + "sha1": "ea7054c7788989363af7ce2e19a867013e7debf6", + "size": 94624 }, "lang/es_ES.ini": { - "sha1": "0aa4b7f34e60ae79faa75756341d90e3e081a1bc", - "size": 91327 + "sha1": "f4d2af0baa3cd437c5db04e750ec9487093bd775", + "size": 93874 }, "lang/es_LA.ini": { - "sha1": "723d89947af2b6b7afaf1609379f254a185d1ef6", - "size": 92790 + "sha1": "24567fffb9d3029e2dbbeec207dcf6b3dd98cbea", + "size": 95739 }, "lang/lt-LT.ini": { - "sha1": "ad9d1f354774a9dd60183772c6234cf4164f3591", - "size": 108767 + "sha1": "fbe30addf48ed576d2ef0547549dd124574f6024", + "size": 111520 }, "lang/ms_MY.ini": { - "sha1": "e01787788f6cf2fbe4bcfbbf8e34c32c52e355dc", - "size": 86676 + "sha1": "ab399bdf9505a14534b00c4ca6f5a6635405d76e", + "size": 88956 }, "lang/sv_SE.ini": { - "sha1": "515fed64ba7990fee811eb78fcd75e9e211fe6ec", - "size": 86080 + "sha1": "b0ad76fa19a1a0c63466de6b6d7f134512fc30b8", + "size": 87901 }, "lang/th_TH.ini": { - "sha1": "0bff1bb57a2d328e886dc4f7cad3b7a1b00f1050", - "size": 160447 + "sha1": "a91e93c9b55b21c3d3e3b8bf58adb2d50509a820", + "size": 163986 }, "lang/README.md": { "sha1": "5105feaabb525902ecc92eb6cb4bc969943926d5", "size": 1060 }, "lang/be_BY.ini": { - "sha1": "daaaf31d9894c0d394655a191ab3204ac8e9e744", - "size": 131605 + "sha1": "18f590e15845b1b554ad4bb260a019e990cf1207", + "size": 134854 }, "lang/fr_FR.ini": { - "sha1": "546b3f273fdec54490bf728e639d0a773bc99fc2", - "size": 96608 + "sha1": "c13b20dc0f086bf820f0176582010c2fe045289e", + "size": 98779 }, "lang/ja_JP.ini": { - "sha1": "3b38de8657c4248a8eb13c2a1ea51613ff879592", - "size": 106883 + "sha1": "65ea9260430651536dedcda5502887e550e04e93", + "size": 109178 }, "lang/tg_PH.ini": { - "sha1": "f4e86168f5fb3a4f5f4b6c73e31b579ad3db2db7", - "size": 98338 + "sha1": "93e980984c0b9127ea9d5ed4cdb72d2a404a9a3c", + "size": 100172 }, "lang/da_DK.ini": { - "sha1": "1e1679774291a20c81566c4acd6b8b5ce2c0f510", - "size": 99181 + "sha1": "b7583e0bd34dedfc192ed7ea135bf3ab28d15a32", + "size": 101642 }, "lang/ko_KR.ini": { - "sha1": "a476a990efc0d6b5c644803110431dcacf8dcbd2", - "size": 92219 + "sha1": "e1b23267d05416a0a35337e76a14857f4b38cb35", + "size": 94613 }, "lang/he_IL.ini": { - "sha1": "41d24b8e5ca0d2da94669b797159b74753ac547d", - "size": 117842 + "sha1": "9d20de9a8f9f8b4fac2bc9a9c274a3942bae8abf", + "size": 120629 }, "lang/zh_CN.ini": { - "sha1": "45b36bf675a47e35573e7cdd1db1e91d3565dde0", - "size": 80158 + "sha1": "316db031e93e12199c30d8ea6b6405d38b85ee96", + "size": 81965 }, "lang/zh_TW.ini": { - "sha1": "b5c3a2dd4e56d868cc754f1342f76e8b43a7b74c", - "size": 80027 + "sha1": "9bc0cc0963d18214d7b6edb841003148641820e6", + "size": 82871 }, "lang/tr_TR.ini": { - "sha1": "ea447a56ead24e638f133dfb6b0bc92bdcfe025c", - "size": 88198 + "sha1": "fdd4440864699e84f5bc3fef529bb68987a77c00", + "size": 90427 }, "lang/it_IT.ini": { - "sha1": "50071e54348e5b158cec9b15f720383345c4f746", - "size": 90788 + "sha1": "f2528a82f6018154ceb18891a75631de58dfdcff", + "size": 92993 }, "lang/en_US.ini": { - "sha1": "44f70c40289fc9ccc1fcb62abea9ad93b602c043", - "size": 76193 + "sha1": "cf42fb5d206aeb82502af676153cb4c3a2c312ea", + "size": 77458 }, "lang/fi_FI.ini": { - "sha1": "4e979c0f07655b03f49d3382b705e2134fc6ede1", - "size": 95320 + "sha1": "e99b235dcd394fcc097e9e0c23901eaf33b334b1", + "size": 97516 }, "lang/id_ID.ini": { - "sha1": "05e27a2b9d1065656dd5846da42dc25da24344c7", - "size": 86812 + "sha1": "85a2918aff481202ee6ced2718e34a0da25ff287", + "size": 89377 }, "lang/dr_ID.ini": { - "sha1": "114bf46d89c31b8119c29d11df47edae2c59cbd3", - "size": 76337 + "sha1": "f3baa3ec031b11c883cbfd3b642745b831c79a29", + "size": 77653 }, "lang/no_NO.ini": { - "sha1": "b08963c505ef61052bff42c3c2729e5835cc0e6c", - "size": 86524 + "sha1": "c7bdf6783c5bcef23e43e7fde831a1265af7f312", + "size": 88521 }, "lang/nn_NO.ini": { - "sha1": "f530ada278c6d34ed3d685ea32f79a765630e674", - "size": 85688 + "sha1": "8cf53f68593d35bcd3d30cde32d511ef255c3c21", + "size": 87266 }, "lang/fa_IR.ini": { - "sha1": "8adf23b9da03b4a4a776fbe81b5e95200c2880b1", - "size": 123617 + "sha1": "52e6559c1c3ee2d5c5c6fb73bba28c3b144d3518", + "size": 126654 }, "lang/km_KH.ini": { - "sha1": "686e819031b30f7b9a84e44eec9914f426fe91b6", - "size": 133479 + "sha1": "e602d44e971cd64a3df8c0c7f9ef9390dc898bf8", + "size": 134413 }, "lang/ru_RU.ini": { - "sha1": "eba5d6a73085898f618aa4431ae5d586d8e05fc5", - "size": 120323 + "sha1": "16c4f3accb92b23d7ae457b794dbde89cb678f1f", + "size": 122897 }, "lang/gl_ES.ini": { - "sha1": "a2702c2d700e0bdd5afc36d570ad411247b98c7c", - "size": 104430 + "sha1": "b5d9fbd461a39ad885654227ec408601fd703705", + "size": 107723 }, "lang/az_AZ.ini": { - "sha1": "8cd66c0fb0fa15ef5eb72934dea41584a4c1c04d", - "size": 90580 + "sha1": "de76d658cd5246c4179a6d7bd4e27653446e1a0b", + "size": 92982 }, "lang/ar_AE.ini": { - "sha1": "ce1a1ce3ac023e98d71367419c03d658ddef0295", - "size": 118966 + "sha1": "1afa4df95fb907ada51316f5193f23d70c90ded6", + "size": 121633 }, "lang/ca_ES.ini": { - "sha1": "cc8f48bce5a0f36264d4e736112a900f44d75ac2", - "size": 103450 + "sha1": "8069d0d089e33c91c2c7f0c354af1f4337367fd3", + "size": 106395 }, "lang/uk_UA.ini": { - "sha1": "f99dfc697f1421dbdaf3e63f90b7445616b6eeb4", - "size": 121974 + "sha1": "372602e7ac8932b996d5e45efd933407d4c71142", + "size": 125365 }, "lang/hr_HR.ini": { - "sha1": "2a1683617b15fc87d5c65ee10643678cc7a6942b", - "size": 97390 + "sha1": "d3087379bdd667114e9274249bc1aee28130149c", + "size": 101780 }, "lang/gr_EL.ini": { - "sha1": "3e3af34b6e0f4bdc5fd0104eca2fd8ece34cff81", - "size": 141184 + "sha1": "1a4f5228ed8e3e8fdf9439a19e8bfda60778bb72", + "size": 145351 }, "lang/ro_RO.ini": { - "sha1": "2008bd5d76358254241e8068166d451576afa146", - "size": 105331 + "sha1": "2a4766c10247e2d70ff788e4bd8dc68299fffb84", + "size": 108277 }, "lang/vi_VN.ini": { - "sha1": "50eac6e6d13ca73e66d360f48c04f82a354f57a9", - "size": 107309 + "sha1": "e541f118ca8d2892684295362ea612f31d5a05a1", + "size": 110950 }, "lang/ku_SO.ini": { - "sha1": "3441400f9fce479f08461e067eeb6cb115b5fbdf", - "size": 82657 + "sha1": "6a8e59a115b90afbc84d1f186d465d5affeada71", + "size": 83141 }, "lang/de_DE.ini": { - "sha1": "9503d714683d9136308969ffc214a4055ef39db6", - "size": 89702 + "sha1": "70257269898a93d531862ef99958758a6d3a0ac5", + "size": 91888 }, "shaders/naturalA.vsh": { "sha1": "f758f44549d685db9e9fb386b2f8bb14c3cee9c6", @@ -158884,7 +159133,7 @@ } }, "strip_components": 1, - "archive_size": 9844388, + "archive_size": 9863645, "cores": [ "ppsspp" ] diff --git a/install/lakka.json b/install/lakka.json index 6126a09cd..d4465e9c0 100644 --- a/install/lakka.json +++ b/install/lakka.json @@ -20,12 +20,22 @@ } ], "standalone_copies": [], - "total_files": 8331, - "total_size": 7012353677, - "pack_files": 12472, - "pack_size": 7127472497, - "total_omitted": 37, + "total_files": 8335, + "total_size": 7017608023, + "pack_files": 12476, + "pack_size": 7132726843, + "total_omitted": 43, "omitted_files": [ + { + "dest": "18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "doomu.wad", "name": "doomu.wad", @@ -48,6 +58,26 @@ ], "category": "game_data" }, + { + "dest": "hyperscanemu/hyperscan.bin", + "name": "hyperscan.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, + { + "dest": "hyperscanemu/spg290.bin", + "name": "spg290.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, { "dest": "jazz2/Source/Anims.j2a", "name": "Anims.j2a", @@ -146,6 +176,26 @@ "px68k" ] }, + { + "dest": "odin/18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "roms/apollo-630.rom", "name": "apollo-630.rom", @@ -386,6 +436,16 @@ "fbneo" ] }, + { + "dest": "srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "svgpcb.zip", "name": "svgpcb.zip", @@ -408,12 +468,20 @@ } ], "core_names": { + "3dengine": [], "3dsen": [ "3dsen-windows" ], + "81": [], + "a5200": [], "ace-dl": [ "acedl" ], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], + "advanced_tests": [], "advancemame": [ "AdvanceMame", "advmame" @@ -421,9 +489,16 @@ "aethersx2": [ "aethersx2-sa" ], + "amiarcadia": [ + "winarcadia" + ], "amiberry": [ "AMIBERRY" ], + "anarch": [], + "applewin": [], + "ardens": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -431,12 +506,17 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], + "b2": [], "basiliskii": [ - "basilisk" + "basilisk", + "basilisk2" ], + "bbkemu": [], "beetle_gba": [ "mednafen_gba" ], @@ -444,6 +524,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -463,6 +547,25 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bennugd": [], + "bk": [], + "blastem": [], + "bluemsx": [], + "bnes": [], + "boom3": [ + "boom3_xp" + ], + "boytacean": [], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -471,6 +574,7 @@ "bsnes2014_balanced", "bsnes2014_performance" ], + "bsnes_cplusplus98": [], "bsnes_hd_beta": [ "bsnes_hd", "bsneshd" @@ -484,22 +588,48 @@ "C64-EMU", "C64.emu" ], + "cannonball": [], "cap32": [ "caprice32" ], + "cdi2015": [], "cemu": [ "cemu-sa" ], + "chailove": [], + "chimerasnes": [], "chocolate-doom": [ "Chocolate-Doom" ], + "citra": [], + "citra2018": [], + "citra_canary": [], + "clownmdemu": [], + "coolbaremu": [], + "craft": [], + "crocods": [], + "cruzes": [], + "daphne": [ + "km_daphne_xtreme" + ], + "desmume": [], "desmume2015": [ "desmume_2015" ], + "dice": [], + "dingooemu": [], + "dinothawr": [], + "directxbox": [], + "dirksimple": [], "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" @@ -513,11 +643,17 @@ "dosbox-x": [ "dosboxx" ], + "dosbox_core": [], + "dosbox_pure": [], + "dosbox_svn": [], + "dosbox_svn_ce": [], "doublecherrygb": [ "DoubleCherryGB" ], + "doukutsu_rs": [], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "droidarcadia": [ "com.amigan.droidarcadia" @@ -529,28 +665,57 @@ "Duckstation", "duckstation-sa" ], + "easyrpg": [], "ecwolf": [ "ECWolf" ], + "eka2l1": [], + "emucv": [], + "emuscv": [], + "emux_chip8": [], + "emux_gb": [], + "emux_nes": [], + "emux_sms": [], "ep128emu_core": [ "ep128emu", "ep128emu-core" ], + "eternal": [], + "fake08": [ + "fake_08" + ], "fba2x": [ "pifba" ], "fbalpha2012": [ "fbalpha" ], + "fbalpha2012_cps1": [], + "fbalpha2012_cps2": [], + "fbalpha2012_cps3": [], + "fbalpha2012_neogeo": [], + "fbalpha2019": [], "fbneo": [ - "FBNEOSA" + "FBNEOSA", + "fbneo_32b", + "fbneo_plus", + "km_fbneo_xtreme_amped" ], + "fbneo_cps12": [], + "fbneo_neogeo": [], + "fceumm": [], + "fceumm_mod": [], + "ffmpeg": [], + "fixgb": [], + "fixnes": [], "flycast": [ "flycast-dev", "flycast-next", "flycast-sa", + "flycast32_rumble", "flycast_32b", "flycast_dev", + "flycast_rumble", "flycastsa", "flycastvl" ], @@ -560,16 +725,26 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], + "frodo": [], + "fsuae": [], "fuse": [ "fuse_libretro" ], + "galaksija": [], + "gam4980": [], + "gambatte": [], + "gametank": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -578,6 +753,12 @@ "GBC-EMU", "GBC.emu" ], + "gearboy": [], + "gearcoleco": [], + "geargrafx": [], + "gearlynx": [], + "gearsystem": [], + "geartowns": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -592,41 +773,70 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "geolith": [], + "gme": [], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], + "gw": [ + "gw_libretro" + ], "gzdoom": [ "GZDoom", "gzdoom-sa" ], + "handy": [], "hatari": [ "HATARISA", + "hatari-fast", "hatarisa" ], + "hatari2014": [], + "hatarib": [], + "hbmame": [], + "higan_sfc": [], "higan_sfc_balanced": [ "nside_sfc_balanced" ], + "holani": [], + "hyperscanemu": [], + "hypseushw": [], "idtech4a++": [ "diii4a", "idtech4amm" ], + "imageviewer": [], + "irogb": [], + "ishiiruka": [], "j2me-loader": [ "J2ME-LOADER" ], + "jaxe": [], "jazz2-native": [ "jazz2" ], "jl-mod": [ "JL-MOD" ], + "jollycv": [], + "jumpnbump": [], "kemulator": [ "KEMULATOR" ], + "kronos": [], "linkboy": [ "LINKBOY", "Linkboy" ], + "lowresnx": [ + "lowres_nx" + ], "lrps2": [ "pcsx2", "ps2" ], + "lutro": [], "lynx-emu": [ "LYNX-EMU", "Lynx.emu" @@ -634,6 +844,7 @@ "lzdoom": [ "LZDoom" ], + "m2000": [], "m64plus-fz": [ "M64PLUS-FZ", "org.mupen64plusae.v3.fzurita", @@ -646,13 +857,17 @@ "mame2000": [ "imame4all" ], + "mame2003": [], + "mame2003_midway": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" ], + "mame2009": [], "mame2010": [ "mame0139" ], + "mame2015": [], "mame2016": [ "mess2016" ], @@ -665,10 +880,13 @@ "MAME4DROID-CURRENT", "com.seleuco.mame4d2024" ], + "mamearcade": [], + "mamemess": [], "mastergear": [ "MASTERGEAR", "com.fms.mg" ], + "mcsoftserve": [], "md-emu": [ "MD-EMU", "MD.emu" @@ -683,6 +901,7 @@ "beetle_bsnes", "beetle_snes" ], + "mednafen_stv": [], "mednafen_supafaust": [ "beetle_supafaust", "supafaust" @@ -709,17 +928,31 @@ "mess2015": [ "mess" ], + "meteor": [], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "mgba_splitscreen": [], + "minivmac": [], "mkxp_z": [ "mkxp-z" ], + "mojozork": [], + "moonlight": [ + "lr_moonlight" + ], + "mpv": [], + "mrboom": [], "msx-emu": [ "MSX-EMU", "MSX.emu" ], + "mu": [], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -743,12 +976,16 @@ "MY-OLDBOY", "My OldBoy!" ], + "n64emu": [], "nanoboyadvance": [ "nanoboyadvance-sa" ], + "native32emu": [], "nekop2": [ "meowpc98" ], + "neocd": [], + "nes": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -757,6 +994,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -769,41 +1007,71 @@ "NETHERSX2-TURNIP-CLASSIC", "NetherSX2-Turnip-Classic" ], + "nicaiemu": [], + "noods": [], + "np2kai": [], + "nuance": [], + "numero": [], "nxengine": [ "nx" ], "o2em": [ "o2em_libretro" ], + "oberon": [], + "odin": [], + "omicron": [], + "onscripter": [], + "onsyuri": [], + "openlara": [], + "openmsx": [ + "openmsx-ld" + ], "opentyrian": [ "tyrian" ], + "opera": [], + "panda3ds": [], "parallel-launcher": [ "ca.parallel_launcher.ParallelLauncher" ], + "parallel_dc": [], "parallel_n64": [ "parallel-n64", "parallel_n64_32b", "parallel_n64_debug" ], + "pascal_pong": [], "pce-emu": [ "PCE-EMU", "PCE.emu", "com.PceEmu", "pceemu" ], + "pcee2": [], + "pcem": [], + "pcsx1": [], + "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": [], + "piece": [], "pizza-boy-gba": [ "PIZZA-BOY-GBA", "Pizza Boy GBA" @@ -821,40 +1089,76 @@ "play": [ "play!" ], + "playdiaemu": [], + "pocketcdg": [], + "pokemini": [], "pokketstation": [ "pokket" ], + "potator": [], "ppsspp": [ "PPSSPPSDL", "ppsspp-sa" ], + "prboom": [], + "prosystem": [], "puae": [ "uae" ], + "puae2021": [], + "puzzlescript": [ + "pzretro" + ], + "px68k": [], "px68k-sdl": [ "px68k" ], + "qemu": [], + "quasi88": [], "quasi88kai": [ "quasi88" ], + "quicknes": [], + "race": [], + "rb5000": [], "real3doplayer": [ "REAL3DOPLAYER", "Real3DOPlayer" ], + "redbook": [], + "redream": [], + "reminiscence": [], + "remotejoy": [], + "retro8": [ + "picante8" + ], + "retrodream": [], + "romcleaner": [], "rosalies-mupen-gui": [ "RMG", "com.github.Rosalie241.RMG", "mupen64" ], + "rp6502": [], + "rust_dos": [], + "rustation": [], + "rustynes": [], + "rvvm": [], + "same_cdi": [], + "sameboy": [], + "sameduck": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], "scummvm-standalone": [ "SCUMMVMSA", "scummvm-sa" ], + "sdlpal": [], + "simcp": [], "skyemu": [ "skyemu-sa" ], @@ -871,36 +1175,78 @@ "Snes9x EX+", "Snes9xEXPlus" ], + "snes9x2002": [], + "snes9x2005": [], + "snes9x2005_plus": [], + "snes9x2010": [], "speccy": [ "SPECCY", "com.fms.speccy", "com.fms.speccy.deluxe" ], + "spmp8000emu": [], + "squirreljme": [], "stella": [ "STELLASA" ], + "stella2014": [], + "stella2023": [], + "stonesoup": [], + "superbroswar": [ + "km_superbroswar" + ], + "supermodel": [], + "supersnes9x": [], "superzsnes": [ "SUPERZSNES" ], + "swanstation": [], + "syobonaction": [], + "tamalibretro": [], + "tempgba": [], + "test_netplay": [], + "testaudio_callback": [], + "testaudio_no_callback": [], + "testaudio_playback_wav": [], + "testgl_compute_shaders": [], + "testgl_ff": [], + "testinput_buttontest": [], + "testretroluxury": [], + "testsw": [], + "testsw_vram": [], + "testvulkan_async_compute": [], "tgbdual": [ "TGB Dual" ], + "theodore": [], + "thepowdertoy": [], + "tia": [], + "tic80": [], + "trident": [], "triforce": [ "dolphin-triforce", "dolphin_triforce" ], + "tyrquake": [], "uae4all-rpi": [ "uae4all" ], "uae4arm": [ "uae4arm_32b" ], + "ume2015": [], + "uw8": [], + "uxn": [], + "uzem": [], + "vaporspec": [], "vba_next": [ "vba-next" ], "vbam": [ "vba-m" ], + "vecx": [], + "vemulator": [], "vice": [ "vice_x128", "vice_x64", @@ -928,15 +1274,40 @@ "vice_x64sc": [ "x64sx" ], + "vice_xcbm2": [ + "xcbm2" + ], + "vice_xcbm5x0": [ + "xcbm5x0" + ], + "vice_xpet": [ + "xpet" + ], + "vice_xplus4": [ + "xplus4" + ], "vice_xscpu64": [ "xscpu64" ], "vice_xvic": [ "xvic" ], + "vircon32": [], + "virtualjaguar": [], + "virtualxt": [], + "vitaquake2": [ + "vitaquake2-rogue", + "vitaquake2-xatrix", + "vitaquake2-zaero" + ], + "vitaquake3": [], + "vitavoyager": [], + "wasm4": [], + "wqxemu": [], "x1": [ "xmil" ], + "x64sdl": [], "xemu": [ "xemu-sa" ], @@ -952,11 +1323,19 @@ "XM6TYPEG", "XM6TYPEG-WINDOWS" ], + "xrick": [], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "yabause": [], + "yaps2": [], + "ymir": [], + "zc210": [], + "zc255": [] }, "system_cores": { "3do": [ @@ -1205,6 +1584,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -1464,6 +1844,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" @@ -9164,7 +9545,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_bios.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -9253,7 +9635,8 @@ "repo_path": "bios/Arcade/Arcade/awbios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -9276,7 +9659,8 @@ "repo_path": "bios/Arcade/Arcade/f355bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -9299,7 +9683,8 @@ "repo_path": "bios/Arcade/Arcade/f355dlx.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -9322,7 +9707,8 @@ "repo_path": "bios/Arcade/MAME/hod2bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -9345,7 +9731,8 @@ "repo_path": "bios/Arcade/Arcade/naomi.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -9367,7 +9754,8 @@ "size": 7038226, "repo_path": "bios/Arcade/Arcade/naomi2.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] } ] @@ -9389,7 +9777,8 @@ "size": 1281424, "repo_path": "bios/Arcade/Arcade/segasp.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] } ] @@ -87662,7 +88051,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_nvmem.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -87675,7 +88065,8 @@ "size": 519984, "repo_path": "bios/Sega/Dreamcast/font.bin", "cores": [ - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -88411,6 +88802,7 @@ "size": 1049493, "repo_path": "bios/Sega/Hikaru/hikaru.zip", "cores": [ + "odin", "mame", "mame2009", "mame2010", @@ -99350,12 +99742,23 @@ }, { "dest": "jvs13551.zip", - "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", - "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", - "size": 15088, - "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", "cores": [ - "mame" + "odin" + ], + "alternatives": [ + { + "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", + "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", + "size": 15088, + "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "cores": [ + "mame" + ] + } ] }, { @@ -100351,6 +100754,7 @@ "size": 725, "repo_path": "bios/Arcade/Arcade/mie.zip", "cores": [ + "odin", "mame" ] }, @@ -108082,6 +108486,36 @@ ], "category": "game_data" }, + { + "dest": "odin/hikaru.zip", + "sha1": "8ce366388c9e09c5d218d639f19d1d816b59395d", + "sha256": "806a236b5665bbcc4f204e8e877e8c9416d150353a34d469849244bbaa138dbf", + "size": 1049493, + "repo_path": "bios/Sega/Hikaru/hikaru.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/mie.zip", + "sha1": "00f43f5bf58dd79135565d52c4eea7e314ebc810", + "sha256": "98ec06b938a17f65fa4b0ad0439b410ed5e0f11b823320d3ce46b7268932fb8e", + "size": 725, + "repo_path": "bios/Arcade/Arcade/mie.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", + "cores": [ + "odin" + ] + }, { "dest": "omicron/omicron.jar", "sha1": "f64654e8a5275fdd35a18c576167715143ca3316", @@ -113622,6 +114056,19 @@ ], "category": "game_data" }, + { + "dest": "IPL.n64", + "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", + "sha256": "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b", + "size": 4194304, + "repo_path": "bios/Nintendo/Nintendo 64DD/64DD_IPL.bin", + "cores": [ + "n64emu" + ], + "systems": [ + "nintendo-64dd" + ] + }, { "dest": "np2/bios.rom", "sha1": "76a7360502fa0296ea93b4c537174610a834d367", diff --git a/install/launchers/index.json b/install/launchers/index.json index cb4e73f00..7925900b9 100644 --- a/install/launchers/index.json +++ b/install/launchers/index.json @@ -27,8 +27,8 @@ { "dest": "roms/ports/retrobios/install.py", "repo_path": "install.py", - "size": 1116557, - "sha256": "e5d6473efdd2c4f05cc8db178b6b00ec2b9637f7abfa3a2d81e23265f13c7132", + "size": 1121482, + "sha256": "d581db16348505a1cf691cfd46be96117fcdd4cf9a2e325c4e63f228c8c79010", "executable": false }, { @@ -71,8 +71,8 @@ "muos": { "archive": { "dest": "ARCHIVE/RetroBIOS.muxapp", - "size": 1170184, - "sha256": "bf4d73f0cb82edc2b299821e3b1b950ca3b05d32d156cedca4e6a94712e7de34" + "size": 1175109, + "sha256": "1988a93ba7439c699272904b19e7e80d5088fad605ac3d590a7b2fa6784156ed" }, "members": [ { @@ -92,8 +92,8 @@ { "name": "RetroBIOS/install.py", "repo_path": "install.py", - "size": 1116557, - "sha256": "e5d6473efdd2c4f05cc8db178b6b00ec2b9637f7abfa3a2d81e23265f13c7132", + "size": 1121482, + "sha256": "d581db16348505a1cf691cfd46be96117fcdd4cf9a2e325c4e63f228c8c79010", "executable": false }, { @@ -166,8 +166,8 @@ { "dest": ".config/modules/retrobios/install.py", "repo_path": "install.py", - "size": 1116557, - "sha256": "e5d6473efdd2c4f05cc8db178b6b00ec2b9637f7abfa3a2d81e23265f13c7132", + "size": 1121482, + "sha256": "d581db16348505a1cf691cfd46be96117fcdd4cf9a2e325c4e63f228c8c79010", "executable": false }, { diff --git a/install/minui.json b/install/minui.json index c38414f3b..091776fac 100644 --- a/install/minui.json +++ b/install/minui.json @@ -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": {}, diff --git a/install/myminui.json b/install/myminui.json index 1ce0f0c13..3ca9bb8cd 100644 --- a/install/myminui.json +++ b/install/myminui.json @@ -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": {}, diff --git a/install/nextui.json b/install/nextui.json index a348f9b8b..2bcae7ebb 100644 --- a/install/nextui.json +++ b/install/nextui.json @@ -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" ] diff --git a/install/recalbox.json b/install/recalbox.json index e5c2410b5..dd61373ea 100644 --- a/install/recalbox.json +++ b/install/recalbox.json @@ -918,6 +918,13 @@ } ], "core_names": { + "2048": [], + "81": [], + "a5200": [], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], "advancemame": [ "AdvanceMame", "advmame" @@ -928,6 +935,8 @@ "amiberry": [ "AMIBERRY" ], + "applewin": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -935,6 +944,9 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], + "b2": [], + "beebem": [], "beetle_gba": [ "mednafen_gba" ], @@ -942,6 +954,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -961,6 +977,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" ], @@ -982,30 +1013,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" @@ -1014,22 +1067,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" ], @@ -1039,13 +1108,18 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "frotz": [], "fuse": [ "fuse_libretro" ], + "gambatte": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -1054,6 +1128,9 @@ "GBC-EMU", "GBC.emu" ], + "gearcoleco": [], + "geargrafx": [], + "gearsystem": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -1068,36 +1145,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", @@ -1107,9 +1207,12 @@ "mame": [ "mame64" ], + "mame0258": [], + "mame0278": [], "mame2000": [ "imame4all" ], + "mame2003": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" @@ -1117,6 +1220,7 @@ "mame2010": [ "mame0139" ], + "mame2015": [], "mame2016": [ "mess2016" ], @@ -1142,6 +1246,11 @@ "beetle_pce_fast", "pce_fast" ], + "mednafen_stv": [], + "mednafen_supafaust": [ + "beetle_supafaust", + "supafaust" + ], "mednafen_supergrafx": [ "beetle-supergrafx", "beetle_supergrafx" @@ -1161,14 +1270,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" ], @@ -1198,6 +1319,7 @@ "nekop2": [ "meowpc98" ], + "neocd": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -1206,6 +1328,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -1218,12 +1341,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" ], @@ -1238,18 +1379,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" @@ -1267,33 +1417,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" ], @@ -1310,6 +1490,12 @@ "Snes9x EX+", "Snes9xEXPlus" ], + "snes9x2002": [], + "snes9x2005": [], + "snes9x2010": [], + "solarus": [ + "Solarus" + ], "speccy": [ "SPECCY", "com.fms.speccy", @@ -1318,25 +1504,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", @@ -1361,18 +1560,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" ], @@ -1394,11 +1615,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": [ @@ -1423,6 +1653,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -1586,6 +1817,7 @@ "mame4droid", "mame4droid-2024", "mamearcade", + "parallel_dc", "teknoparrot", "ume2015" ], @@ -1791,6 +2023,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" diff --git a/install/retroarch.json b/install/retroarch.json index 9d4a736ad..c1e3fa5d6 100644 --- a/install/retroarch.json +++ b/install/retroarch.json @@ -643,12 +643,22 @@ } } ], - "total_files": 8339, - "total_size": 7105536529, - "pack_files": 14922, - "pack_size": 7247569893, - "total_omitted": 37, + "total_files": 8343, + "total_size": 7110790875, + "pack_files": 14926, + "pack_size": 7252932624, + "total_omitted": 43, "omitted_files": [ + { + "dest": "18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "doomu.wad", "name": "doomu.wad", @@ -671,6 +681,26 @@ ], "category": "game_data" }, + { + "dest": "hyperscanemu/hyperscan.bin", + "name": "hyperscan.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, + { + "dest": "hyperscanemu/spg290.bin", + "name": "spg290.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, { "dest": "jazz2/Source/Anims.j2a", "name": "Anims.j2a", @@ -769,6 +799,26 @@ "px68k" ] }, + { + "dest": "odin/18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "roms/apollo-630.rom", "name": "apollo-630.rom", @@ -1009,6 +1059,16 @@ "fbneo" ] }, + { + "dest": "srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "svgpcb.zip", "name": "svgpcb.zip", @@ -1031,12 +1091,20 @@ } ], "core_names": { + "3dengine": [], "3dsen": [ "3dsen-windows" ], + "81": [], + "a5200": [], "ace-dl": [ "acedl" ], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], + "advanced_tests": [], "advancemame": [ "AdvanceMame", "advmame" @@ -1044,9 +1112,16 @@ "aethersx2": [ "aethersx2-sa" ], + "amiarcadia": [ + "winarcadia" + ], "amiberry": [ "AMIBERRY" ], + "anarch": [], + "applewin": [], + "ardens": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -1054,12 +1129,17 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], + "b2": [], "basiliskii": [ - "basilisk" + "basilisk", + "basilisk2" ], + "bbkemu": [], "beetle_gba": [ "mednafen_gba" ], @@ -1067,6 +1147,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -1086,6 +1170,25 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bennugd": [], + "bk": [], + "blastem": [], + "bluemsx": [], + "bnes": [], + "boom3": [ + "boom3_xp" + ], + "boytacean": [], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -1094,6 +1197,7 @@ "bsnes2014_balanced", "bsnes2014_performance" ], + "bsnes_cplusplus98": [], "bsnes_hd_beta": [ "bsnes_hd", "bsneshd" @@ -1107,22 +1211,48 @@ "C64-EMU", "C64.emu" ], + "cannonball": [], "cap32": [ "caprice32" ], + "cdi2015": [], "cemu": [ "cemu-sa" ], + "chailove": [], + "chimerasnes": [], "chocolate-doom": [ "Chocolate-Doom" ], + "citra": [], + "citra2018": [], + "citra_canary": [], + "clownmdemu": [], + "coolbaremu": [], + "craft": [], + "crocods": [], + "cruzes": [], + "daphne": [ + "km_daphne_xtreme" + ], + "desmume": [], "desmume2015": [ "desmume_2015" ], + "dice": [], + "dingooemu": [], + "dinothawr": [], + "directxbox": [], + "dirksimple": [], "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" @@ -1136,11 +1266,17 @@ "dosbox-x": [ "dosboxx" ], + "dosbox_core": [], + "dosbox_pure": [], + "dosbox_svn": [], + "dosbox_svn_ce": [], "doublecherrygb": [ "DoubleCherryGB" ], + "doukutsu_rs": [], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "droidarcadia": [ "com.amigan.droidarcadia" @@ -1152,28 +1288,57 @@ "Duckstation", "duckstation-sa" ], + "easyrpg": [], "ecwolf": [ "ECWolf" ], + "eka2l1": [], + "emucv": [], + "emuscv": [], + "emux_chip8": [], + "emux_gb": [], + "emux_nes": [], + "emux_sms": [], "ep128emu_core": [ "ep128emu", "ep128emu-core" ], + "eternal": [], + "fake08": [ + "fake_08" + ], "fba2x": [ "pifba" ], "fbalpha2012": [ "fbalpha" ], + "fbalpha2012_cps1": [], + "fbalpha2012_cps2": [], + "fbalpha2012_cps3": [], + "fbalpha2012_neogeo": [], + "fbalpha2019": [], "fbneo": [ - "FBNEOSA" + "FBNEOSA", + "fbneo_32b", + "fbneo_plus", + "km_fbneo_xtreme_amped" ], + "fbneo_cps12": [], + "fbneo_neogeo": [], + "fceumm": [], + "fceumm_mod": [], + "ffmpeg": [], + "fixgb": [], + "fixnes": [], "flycast": [ "flycast-dev", "flycast-next", "flycast-sa", + "flycast32_rumble", "flycast_32b", "flycast_dev", + "flycast_rumble", "flycastsa", "flycastvl" ], @@ -1183,16 +1348,26 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], + "frodo": [], + "fsuae": [], "fuse": [ "fuse_libretro" ], + "galaksija": [], + "gam4980": [], + "gambatte": [], + "gametank": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -1201,6 +1376,12 @@ "GBC-EMU", "GBC.emu" ], + "gearboy": [], + "gearcoleco": [], + "geargrafx": [], + "gearlynx": [], + "gearsystem": [], + "geartowns": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -1215,41 +1396,70 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "geolith": [], + "gme": [], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], + "gw": [ + "gw_libretro" + ], "gzdoom": [ "GZDoom", "gzdoom-sa" ], + "handy": [], "hatari": [ "HATARISA", + "hatari-fast", "hatarisa" ], + "hatari2014": [], + "hatarib": [], + "hbmame": [], + "higan_sfc": [], "higan_sfc_balanced": [ "nside_sfc_balanced" ], + "holani": [], + "hyperscanemu": [], + "hypseushw": [], "idtech4a++": [ "diii4a", "idtech4amm" ], + "imageviewer": [], + "irogb": [], + "ishiiruka": [], "j2me-loader": [ "J2ME-LOADER" ], + "jaxe": [], "jazz2-native": [ "jazz2" ], "jl-mod": [ "JL-MOD" ], + "jollycv": [], + "jumpnbump": [], "kemulator": [ "KEMULATOR" ], + "kronos": [], "linkboy": [ "LINKBOY", "Linkboy" ], + "lowresnx": [ + "lowres_nx" + ], "lrps2": [ "pcsx2", "ps2" ], + "lutro": [], "lynx-emu": [ "LYNX-EMU", "Lynx.emu" @@ -1257,6 +1467,7 @@ "lzdoom": [ "LZDoom" ], + "m2000": [], "m64plus-fz": [ "M64PLUS-FZ", "org.mupen64plusae.v3.fzurita", @@ -1269,13 +1480,17 @@ "mame2000": [ "imame4all" ], + "mame2003": [], + "mame2003_midway": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" ], + "mame2009": [], "mame2010": [ "mame0139" ], + "mame2015": [], "mame2016": [ "mess2016" ], @@ -1288,10 +1503,13 @@ "MAME4DROID-CURRENT", "com.seleuco.mame4d2024" ], + "mamearcade": [], + "mamemess": [], "mastergear": [ "MASTERGEAR", "com.fms.mg" ], + "mcsoftserve": [], "md-emu": [ "MD-EMU", "MD.emu" @@ -1306,6 +1524,7 @@ "beetle_bsnes", "beetle_snes" ], + "mednafen_stv": [], "mednafen_supafaust": [ "beetle_supafaust", "supafaust" @@ -1332,17 +1551,31 @@ "mess2015": [ "mess" ], + "meteor": [], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "mgba_splitscreen": [], + "minivmac": [], "mkxp_z": [ "mkxp-z" ], + "mojozork": [], + "moonlight": [ + "lr_moonlight" + ], + "mpv": [], + "mrboom": [], "msx-emu": [ "MSX-EMU", "MSX.emu" ], + "mu": [], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -1366,12 +1599,16 @@ "MY-OLDBOY", "My OldBoy!" ], + "n64emu": [], "nanoboyadvance": [ "nanoboyadvance-sa" ], + "native32emu": [], "nekop2": [ "meowpc98" ], + "neocd": [], + "nes": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -1380,6 +1617,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -1392,41 +1630,71 @@ "NETHERSX2-TURNIP-CLASSIC", "NetherSX2-Turnip-Classic" ], + "nicaiemu": [], + "noods": [], + "np2kai": [], + "nuance": [], + "numero": [], "nxengine": [ "nx" ], "o2em": [ "o2em_libretro" ], + "oberon": [], + "odin": [], + "omicron": [], + "onscripter": [], + "onsyuri": [], + "openlara": [], + "openmsx": [ + "openmsx-ld" + ], "opentyrian": [ "tyrian" ], + "opera": [], + "panda3ds": [], "parallel-launcher": [ "ca.parallel_launcher.ParallelLauncher" ], + "parallel_dc": [], "parallel_n64": [ "parallel-n64", "parallel_n64_32b", "parallel_n64_debug" ], + "pascal_pong": [], "pce-emu": [ "PCE-EMU", "PCE.emu", "com.PceEmu", "pceemu" ], + "pcee2": [], + "pcem": [], + "pcsx1": [], + "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": [], + "piece": [], "pizza-boy-gba": [ "PIZZA-BOY-GBA", "Pizza Boy GBA" @@ -1444,40 +1712,76 @@ "play": [ "play!" ], + "playdiaemu": [], + "pocketcdg": [], + "pokemini": [], "pokketstation": [ "pokket" ], + "potator": [], "ppsspp": [ "PPSSPPSDL", "ppsspp-sa" ], + "prboom": [], + "prosystem": [], "puae": [ "uae" ], + "puae2021": [], + "puzzlescript": [ + "pzretro" + ], + "px68k": [], "px68k-sdl": [ "px68k" ], + "qemu": [], + "quasi88": [], "quasi88kai": [ "quasi88" ], + "quicknes": [], + "race": [], + "rb5000": [], "real3doplayer": [ "REAL3DOPLAYER", "Real3DOPlayer" ], + "redbook": [], + "redream": [], + "reminiscence": [], + "remotejoy": [], + "retro8": [ + "picante8" + ], + "retrodream": [], + "romcleaner": [], "rosalies-mupen-gui": [ "RMG", "com.github.Rosalie241.RMG", "mupen64" ], + "rp6502": [], + "rust_dos": [], + "rustation": [], + "rustynes": [], + "rvvm": [], + "same_cdi": [], + "sameboy": [], + "sameduck": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], "scummvm-standalone": [ "SCUMMVMSA", "scummvm-sa" ], + "sdlpal": [], + "simcp": [], "skyemu": [ "skyemu-sa" ], @@ -1494,36 +1798,78 @@ "Snes9x EX+", "Snes9xEXPlus" ], + "snes9x2002": [], + "snes9x2005": [], + "snes9x2005_plus": [], + "snes9x2010": [], "speccy": [ "SPECCY", "com.fms.speccy", "com.fms.speccy.deluxe" ], + "spmp8000emu": [], + "squirreljme": [], "stella": [ "STELLASA" ], + "stella2014": [], + "stella2023": [], + "stonesoup": [], + "superbroswar": [ + "km_superbroswar" + ], + "supermodel": [], + "supersnes9x": [], "superzsnes": [ "SUPERZSNES" ], + "swanstation": [], + "syobonaction": [], + "tamalibretro": [], + "tempgba": [], + "test_netplay": [], + "testaudio_callback": [], + "testaudio_no_callback": [], + "testaudio_playback_wav": [], + "testgl_compute_shaders": [], + "testgl_ff": [], + "testinput_buttontest": [], + "testretroluxury": [], + "testsw": [], + "testsw_vram": [], + "testvulkan_async_compute": [], "tgbdual": [ "TGB Dual" ], + "theodore": [], + "thepowdertoy": [], + "tia": [], + "tic80": [], + "trident": [], "triforce": [ "dolphin-triforce", "dolphin_triforce" ], + "tyrquake": [], "uae4all-rpi": [ "uae4all" ], "uae4arm": [ "uae4arm_32b" ], + "ume2015": [], + "uw8": [], + "uxn": [], + "uzem": [], + "vaporspec": [], "vba_next": [ "vba-next" ], "vbam": [ "vba-m" ], + "vecx": [], + "vemulator": [], "vice": [ "vice_x128", "vice_x64", @@ -1551,15 +1897,40 @@ "vice_x64sc": [ "x64sx" ], + "vice_xcbm2": [ + "xcbm2" + ], + "vice_xcbm5x0": [ + "xcbm5x0" + ], + "vice_xpet": [ + "xpet" + ], + "vice_xplus4": [ + "xplus4" + ], "vice_xscpu64": [ "xscpu64" ], "vice_xvic": [ "xvic" ], + "vircon32": [], + "virtualjaguar": [], + "virtualxt": [], + "vitaquake2": [ + "vitaquake2-rogue", + "vitaquake2-xatrix", + "vitaquake2-zaero" + ], + "vitaquake3": [], + "vitavoyager": [], + "wasm4": [], + "wqxemu": [], "x1": [ "xmil" ], + "x64sdl": [], "xemu": [ "xemu-sa" ], @@ -1575,11 +1946,19 @@ "XM6TYPEG", "XM6TYPEG-WINDOWS" ], + "xrick": [], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "yabause": [], + "yaps2": [], + "ymir": [], + "zc210": [], + "zc255": [] }, "system_cores": { "3do": [ @@ -1828,6 +2207,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -2087,6 +2467,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" @@ -10038,7 +10419,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_bios.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -10127,7 +10509,8 @@ "repo_path": "bios/Arcade/Arcade/awbios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -10150,7 +10533,8 @@ "repo_path": "bios/Arcade/Arcade/f355bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -10173,7 +10557,8 @@ "repo_path": "bios/Arcade/Arcade/f355dlx.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -10196,7 +10581,8 @@ "repo_path": "bios/Arcade/MAME/hod2bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -10219,7 +10605,8 @@ "repo_path": "bios/Arcade/Arcade/naomi.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -10241,7 +10628,8 @@ "size": 7038226, "repo_path": "bios/Arcade/Arcade/naomi2.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] } ] @@ -10263,7 +10651,8 @@ "size": 1281424, "repo_path": "bios/Arcade/Arcade/segasp.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] } ] @@ -88604,7 +88993,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_nvmem.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -88617,7 +89007,8 @@ "size": 519984, "repo_path": "bios/Sega/Dreamcast/font.bin", "cores": [ - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -89353,6 +89744,7 @@ "size": 1049493, "repo_path": "bios/Sega/Hikaru/hikaru.zip", "cores": [ + "odin", "mame", "mame2009", "mame2010", @@ -100292,12 +100684,23 @@ }, { "dest": "jvs13551.zip", - "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", - "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", - "size": 15088, - "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", "cores": [ - "mame" + "odin" + ], + "alternatives": [ + { + "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", + "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", + "size": 15088, + "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "cores": [ + "mame" + ] + } ] }, { @@ -101293,6 +101696,7 @@ "size": 725, "repo_path": "bios/Arcade/Arcade/mie.zip", "cores": [ + "odin", "mame" ] }, @@ -109141,6 +109545,36 @@ ], "category": "game_data" }, + { + "dest": "odin/hikaru.zip", + "sha1": "8ce366388c9e09c5d218d639f19d1d816b59395d", + "sha256": "806a236b5665bbcc4f204e8e877e8c9416d150353a34d469849244bbaa138dbf", + "size": 1049493, + "repo_path": "bios/Sega/Hikaru/hikaru.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/mie.zip", + "sha1": "00f43f5bf58dd79135565d52c4eea7e314ebc810", + "sha256": "98ec06b938a17f65fa4b0ad0439b410ed5e0f11b823320d3ce46b7268932fb8e", + "size": 725, + "repo_path": "bios/Arcade/Arcade/mie.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", + "cores": [ + "odin" + ] + }, { "dest": "omicron/omicron.jar", "sha1": "f64654e8a5275fdd35a18c576167715143ca3316", @@ -114691,6 +115125,19 @@ ], "category": "game_data" }, + { + "dest": "IPL.n64", + "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", + "sha256": "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b", + "size": 4194304, + "repo_path": "bios/Nintendo/Nintendo 64DD/64DD_IPL.bin", + "cores": [ + "n64emu" + ], + "systems": [ + "nintendo-64dd" + ] + }, { "dest": "np2/bios.rom", "sha1": "76a7360502fa0296ea93b4c537174610a834d367", @@ -141426,8 +141873,8 @@ ], "files": { "adhoc-servers.json": { - "sha1": "a77c56a3516a32138d1197a73cacd68473b4ec87", - "size": 8601 + "sha1": "5558662d3f9a9d23d3b7dbd5ed162d395d1a60d5", + "size": 8662 }, "langregion.ini": { "sha1": "7c5ef48a557dc06fa79c83eb178835cc47b302ad", @@ -141446,8 +141893,8 @@ "size": 32420 }, "compat.ini": { - "sha1": "93a96a00f3b97bcd2a0816e70eaf0a67417ed751", - "size": 55418 + "sha1": "10f5fa01eefc68710606ea251f958deb2b531106", + "size": 55591 }, "sfx_select.wav": { "sha1": "0bd3eabc432b6119507e4fc43354113b68bdbf66", @@ -141698,192 +142145,192 @@ "size": 27664 }, "lang/hu_HU.ini": { - "sha1": "62bc464115cb6f7c7f16ccbc0a3e268f1313f892", - "size": 95289 + "sha1": "de278e87250e8b2c3a06756964dfa51b7cbb84f4", + "size": 97245 }, "lang/cz_CZ.ini": { - "sha1": "075b139746162c7f0b95d1c1bd5bf1caa6075aa2", - "size": 103111 + "sha1": "334d5e4c10a935f54800c633b86e735f8e68565d", + "size": 105532 }, "lang/pl_PL.ini": { - "sha1": "81af60cb8e415001bfbba7da7b2bac7f5563fff7", - "size": 90593 + "sha1": "4aedd2d7df3df1fb39cfa209b97310a8a8f1742b", + "size": 92694 }, "lang/pt_PT.ini": { - "sha1": "4e7f24647541d964eec0ffe3fd94921a3c61ea27", - "size": 93363 + "sha1": "f4d5a7889978fd26ec56718ed7d992a736baa858", + "size": 95555 }, "lang/bg_BG.ini": { - "sha1": "c92465c9028e224521b45a5fcb3355e6da091661", - "size": 137180 + "sha1": "7618153390daca2a3a74fc67d90203549a79662f", + "size": 140520 }, "lang/nl_NL.ini": { - "sha1": "489c29c689a24e874f0c444f748d9d83c5a3c78b", - "size": 99128 + "sha1": "c3ade196aecb760b80727a7ada1ae478bed67ce0", + "size": 101733 }, "lang/lo_LA.ini": { - "sha1": "e45a149a19c180a1d6fcf5ad391e9f7597018fe4", - "size": 99892 + "sha1": "30d8f415ddef2d6148d7042855c5c485bd6f06df", + "size": 97653 }, "lang/jv_ID.ini": { - "sha1": "a9d1919a690bd786646f0c2e69f5857a02a77f13", - "size": 77186 + "sha1": "68e3bde3dae96528c8995d2d7d3aede4814c0a87", + "size": 78604 }, "lang/pt_BR.ini": { - "sha1": "f599e419c30306a32654775cb84837383ec5f142", - "size": 92406 + "sha1": "ea7054c7788989363af7ce2e19a867013e7debf6", + "size": 94624 }, "lang/es_ES.ini": { - "sha1": "0aa4b7f34e60ae79faa75756341d90e3e081a1bc", - "size": 91327 + "sha1": "f4d2af0baa3cd437c5db04e750ec9487093bd775", + "size": 93874 }, "lang/es_LA.ini": { - "sha1": "723d89947af2b6b7afaf1609379f254a185d1ef6", - "size": 92790 + "sha1": "24567fffb9d3029e2dbbeec207dcf6b3dd98cbea", + "size": 95739 }, "lang/lt-LT.ini": { - "sha1": "ad9d1f354774a9dd60183772c6234cf4164f3591", - "size": 108767 + "sha1": "fbe30addf48ed576d2ef0547549dd124574f6024", + "size": 111520 }, "lang/ms_MY.ini": { - "sha1": "e01787788f6cf2fbe4bcfbbf8e34c32c52e355dc", - "size": 86676 + "sha1": "ab399bdf9505a14534b00c4ca6f5a6635405d76e", + "size": 88956 }, "lang/sv_SE.ini": { - "sha1": "515fed64ba7990fee811eb78fcd75e9e211fe6ec", - "size": 86080 + "sha1": "b0ad76fa19a1a0c63466de6b6d7f134512fc30b8", + "size": 87901 }, "lang/th_TH.ini": { - "sha1": "0bff1bb57a2d328e886dc4f7cad3b7a1b00f1050", - "size": 160447 + "sha1": "a91e93c9b55b21c3d3e3b8bf58adb2d50509a820", + "size": 163986 }, "lang/README.md": { "sha1": "5105feaabb525902ecc92eb6cb4bc969943926d5", "size": 1060 }, "lang/be_BY.ini": { - "sha1": "daaaf31d9894c0d394655a191ab3204ac8e9e744", - "size": 131605 + "sha1": "18f590e15845b1b554ad4bb260a019e990cf1207", + "size": 134854 }, "lang/fr_FR.ini": { - "sha1": "546b3f273fdec54490bf728e639d0a773bc99fc2", - "size": 96608 + "sha1": "c13b20dc0f086bf820f0176582010c2fe045289e", + "size": 98779 }, "lang/ja_JP.ini": { - "sha1": "3b38de8657c4248a8eb13c2a1ea51613ff879592", - "size": 106883 + "sha1": "65ea9260430651536dedcda5502887e550e04e93", + "size": 109178 }, "lang/tg_PH.ini": { - "sha1": "f4e86168f5fb3a4f5f4b6c73e31b579ad3db2db7", - "size": 98338 + "sha1": "93e980984c0b9127ea9d5ed4cdb72d2a404a9a3c", + "size": 100172 }, "lang/da_DK.ini": { - "sha1": "1e1679774291a20c81566c4acd6b8b5ce2c0f510", - "size": 99181 + "sha1": "b7583e0bd34dedfc192ed7ea135bf3ab28d15a32", + "size": 101642 }, "lang/ko_KR.ini": { - "sha1": "a476a990efc0d6b5c644803110431dcacf8dcbd2", - "size": 92219 + "sha1": "e1b23267d05416a0a35337e76a14857f4b38cb35", + "size": 94613 }, "lang/he_IL.ini": { - "sha1": "41d24b8e5ca0d2da94669b797159b74753ac547d", - "size": 117842 + "sha1": "9d20de9a8f9f8b4fac2bc9a9c274a3942bae8abf", + "size": 120629 }, "lang/zh_CN.ini": { - "sha1": "45b36bf675a47e35573e7cdd1db1e91d3565dde0", - "size": 80158 + "sha1": "316db031e93e12199c30d8ea6b6405d38b85ee96", + "size": 81965 }, "lang/zh_TW.ini": { - "sha1": "b5c3a2dd4e56d868cc754f1342f76e8b43a7b74c", - "size": 80027 + "sha1": "9bc0cc0963d18214d7b6edb841003148641820e6", + "size": 82871 }, "lang/tr_TR.ini": { - "sha1": "ea447a56ead24e638f133dfb6b0bc92bdcfe025c", - "size": 88198 + "sha1": "fdd4440864699e84f5bc3fef529bb68987a77c00", + "size": 90427 }, "lang/it_IT.ini": { - "sha1": "50071e54348e5b158cec9b15f720383345c4f746", - "size": 90788 + "sha1": "f2528a82f6018154ceb18891a75631de58dfdcff", + "size": 92993 }, "lang/en_US.ini": { - "sha1": "44f70c40289fc9ccc1fcb62abea9ad93b602c043", - "size": 76193 + "sha1": "cf42fb5d206aeb82502af676153cb4c3a2c312ea", + "size": 77458 }, "lang/fi_FI.ini": { - "sha1": "4e979c0f07655b03f49d3382b705e2134fc6ede1", - "size": 95320 + "sha1": "e99b235dcd394fcc097e9e0c23901eaf33b334b1", + "size": 97516 }, "lang/id_ID.ini": { - "sha1": "05e27a2b9d1065656dd5846da42dc25da24344c7", - "size": 86812 + "sha1": "85a2918aff481202ee6ced2718e34a0da25ff287", + "size": 89377 }, "lang/dr_ID.ini": { - "sha1": "114bf46d89c31b8119c29d11df47edae2c59cbd3", - "size": 76337 + "sha1": "f3baa3ec031b11c883cbfd3b642745b831c79a29", + "size": 77653 }, "lang/no_NO.ini": { - "sha1": "b08963c505ef61052bff42c3c2729e5835cc0e6c", - "size": 86524 + "sha1": "c7bdf6783c5bcef23e43e7fde831a1265af7f312", + "size": 88521 }, "lang/nn_NO.ini": { - "sha1": "f530ada278c6d34ed3d685ea32f79a765630e674", - "size": 85688 + "sha1": "8cf53f68593d35bcd3d30cde32d511ef255c3c21", + "size": 87266 }, "lang/fa_IR.ini": { - "sha1": "8adf23b9da03b4a4a776fbe81b5e95200c2880b1", - "size": 123617 + "sha1": "52e6559c1c3ee2d5c5c6fb73bba28c3b144d3518", + "size": 126654 }, "lang/km_KH.ini": { - "sha1": "686e819031b30f7b9a84e44eec9914f426fe91b6", - "size": 133479 + "sha1": "e602d44e971cd64a3df8c0c7f9ef9390dc898bf8", + "size": 134413 }, "lang/ru_RU.ini": { - "sha1": "eba5d6a73085898f618aa4431ae5d586d8e05fc5", - "size": 120323 + "sha1": "16c4f3accb92b23d7ae457b794dbde89cb678f1f", + "size": 122897 }, "lang/gl_ES.ini": { - "sha1": "a2702c2d700e0bdd5afc36d570ad411247b98c7c", - "size": 104430 + "sha1": "b5d9fbd461a39ad885654227ec408601fd703705", + "size": 107723 }, "lang/az_AZ.ini": { - "sha1": "8cd66c0fb0fa15ef5eb72934dea41584a4c1c04d", - "size": 90580 + "sha1": "de76d658cd5246c4179a6d7bd4e27653446e1a0b", + "size": 92982 }, "lang/ar_AE.ini": { - "sha1": "ce1a1ce3ac023e98d71367419c03d658ddef0295", - "size": 118966 + "sha1": "1afa4df95fb907ada51316f5193f23d70c90ded6", + "size": 121633 }, "lang/ca_ES.ini": { - "sha1": "cc8f48bce5a0f36264d4e736112a900f44d75ac2", - "size": 103450 + "sha1": "8069d0d089e33c91c2c7f0c354af1f4337367fd3", + "size": 106395 }, "lang/uk_UA.ini": { - "sha1": "f99dfc697f1421dbdaf3e63f90b7445616b6eeb4", - "size": 121974 + "sha1": "372602e7ac8932b996d5e45efd933407d4c71142", + "size": 125365 }, "lang/hr_HR.ini": { - "sha1": "2a1683617b15fc87d5c65ee10643678cc7a6942b", - "size": 97390 + "sha1": "d3087379bdd667114e9274249bc1aee28130149c", + "size": 101780 }, "lang/gr_EL.ini": { - "sha1": "3e3af34b6e0f4bdc5fd0104eca2fd8ece34cff81", - "size": 141184 + "sha1": "1a4f5228ed8e3e8fdf9439a19e8bfda60778bb72", + "size": 145351 }, "lang/ro_RO.ini": { - "sha1": "2008bd5d76358254241e8068166d451576afa146", - "size": 105331 + "sha1": "2a4766c10247e2d70ff788e4bd8dc68299fffb84", + "size": 108277 }, "lang/vi_VN.ini": { - "sha1": "50eac6e6d13ca73e66d360f48c04f82a354f57a9", - "size": 107309 + "sha1": "e541f118ca8d2892684295362ea612f31d5a05a1", + "size": 110950 }, "lang/ku_SO.ini": { - "sha1": "3441400f9fce479f08461e067eeb6cb115b5fbdf", - "size": 82657 + "sha1": "6a8e59a115b90afbc84d1f186d465d5affeada71", + "size": 83141 }, "lang/de_DE.ini": { - "sha1": "9503d714683d9136308969ffc214a4055ef39db6", - "size": 89702 + "sha1": "70257269898a93d531862ef99958758a6d3a0ac5", + "size": 91888 }, "shaders/naturalA.vsh": { "sha1": "f758f44549d685db9e9fb386b2f8bb14c3cee9c6", @@ -142103,7 +142550,7 @@ } }, "strip_components": 1, - "archive_size": 9844388 + "archive_size": 9863645 }, { "ref": "yaps2-resources", diff --git a/install/retrobat.json b/install/retrobat.json index b3a4c47e3..da9eec172 100644 --- a/install/retrobat.json +++ b/install/retrobat.json @@ -2462,6 +2462,13 @@ } ], "core_names": { + "2ship": [], + "81": [], + "a5200": [], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], "advancemame": [ "AdvanceMame", "advmame" @@ -2469,12 +2476,18 @@ "aethersx2": [ "aethersx2-sa" ], + "altirra": [], "amiarcadia": [ "winarcadia" ], "amiberry": [ "AMIBERRY" ], + "applewin": [], + "arcadeduck": [], + "arcadeflashweb": [], + "ardens": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -2482,9 +2495,12 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], + "b2": [], "beetle_gba": [ "mednafen_gba" ], @@ -2515,9 +2531,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" ], @@ -2535,6 +2569,16 @@ "bsnes_mercury_balanced", "bsnes_mercury_performance" ], + "bstone": [], + "bsyndrome": [], + "cannonball": [], + "cap32": [ + "caprice32" + ], + "capriceforever": [], + "cdogs": [ + "cdogs-sdl" + ], "cemu": [ "cemu-sa" ], @@ -2544,19 +2588,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" @@ -2567,11 +2629,14 @@ "dosbox-x": [ "dosboxx" ], + "dosbox_pure": [], "doublecherrygb": [ "DoubleCherryGB" ], + "doukutsu_rs": [], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "droidarcadia": [ "com.amigan.droidarcadia" @@ -2583,25 +2648,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" ], @@ -2615,15 +2699,20 @@ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], + "frodo": [], "fuse": [ "fuse_libretro" ], "future-pinball": [ "fpinball" ], + "gambatte": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -2632,6 +2721,10 @@ "GBC-EMU", "GBC.emu" ], + "gearcoleco": [], + "geargrafx": [], + "gearsystem": [], + "gemrb": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -2646,20 +2739,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", @@ -2669,45 +2780,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" @@ -2715,6 +2846,7 @@ "mame2010": [ "mame0139" ], + "mame2014": [], "mame2016": [ "mess2016" ], @@ -2738,11 +2870,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" @@ -2763,13 +2901,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" ], @@ -2799,6 +2945,7 @@ "nekop2": [ "meowpc98" ], + "neocd": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -2807,6 +2954,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -2823,15 +2971,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" ], @@ -2846,6 +3015,9 @@ "com.PceEmu", "pceemu" ], + "pcsx2": [ + "pcsx2-sa" + ], "pcsx2-legacy": [ "PCSX2-LEGACY", "pcsx2-16" @@ -2854,13 +3026,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" @@ -2878,15 +3057,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" @@ -2894,6 +3089,11 @@ "realrtcw": [ "rtcw" ], + "redream": [], + "reminiscence": [], + "retro8": [ + "picante8" + ], "rosalies-mupen-gui": [ "RMG", "com.github.Rosalie241.RMG", @@ -2902,11 +3102,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" @@ -2914,6 +3123,11 @@ "shadps4": [ "shadps4-gui" ], + "simple64": [ + "io.github.simple64.simple64", + "simple64-gui" + ], + "singe2": [], "skyemu": [ "skyemu-sa" ], @@ -2930,37 +3144,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" ], @@ -2970,15 +3215,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" ], @@ -2991,6 +3253,12 @@ "xemu": [ "xemu-sa" ], + "xemu-chihiro": [], + "xenia": [ + "xenia-canary", + "xenia-manager", + "xenianative" + ], "xenia-edge": [ "xenia_edge" ], @@ -3003,11 +3271,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": [ @@ -3301,6 +3583,7 @@ "mame2016", "mame4droid", "mame4droid-2024", + "odin", "teknoparrot", "ume2015" ], @@ -3440,6 +3723,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -3629,6 +3913,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" diff --git a/install/retrodeck.json b/install/retrodeck.json index ff33b80e0..f4c3c3f78 100644 --- a/install/retrodeck.json +++ b/install/retrodeck.json @@ -292,11 +292,11 @@ "source": "bios/dc/dc_nvmem.bin" } ], - "total_files": 8870, - "total_size": 8948288224, - "pack_files": 12783, - "pack_size": 9064975510, - "total_omitted": 66, + "total_files": 8874, + "total_size": 8953547834, + "pack_files": 12787, + "pack_size": 9070235120, + "total_omitted": 72, "omitted_files": [ { "dest": "Ishiiruka/User/Wii/clientca.pem", @@ -398,6 +398,16 @@ "trident" ] }, + { + "dest": "bios/18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "bios/doom2bfg.wad", "name": "doom2bfg.wad", @@ -541,6 +551,26 @@ ], "category": "game_data" }, + { + "dest": "bios/hyperscanemu/hyperscan.bin", + "name": "hyperscan.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, + { + "dest": "bios/hyperscanemu/spg290.bin", + "name": "spg290.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, { "dest": "bios/id24res.wad", "name": "id24res.wad", @@ -672,6 +702,26 @@ ], "category": "game_data" }, + { + "dest": "bios/odin/18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, + { + "dest": "bios/odin/srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "bios/plutoniakex.wad", "name": "plutoniakex.wad", @@ -956,6 +1006,16 @@ ], "category": "game_data" }, + { + "dest": "bios/srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "bios/sve.wad", "name": "sve.wad", @@ -1011,12 +1071,20 @@ } ], "core_names": { + "3dengine": [], "3dsen": [ "3dsen-windows" ], + "81": [], + "a5200": [], "ace-dl": [ "acedl" ], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], + "advanced_tests": [], "advancemame": [ "AdvanceMame", "advmame" @@ -1024,9 +1092,16 @@ "aethersx2": [ "aethersx2-sa" ], + "amiarcadia": [ + "winarcadia" + ], "amiberry": [ "AMIBERRY" ], + "anarch": [], + "applewin": [], + "ardens": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -1034,15 +1109,20 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], "azahar-sdl": [ "azahar" ], + "b2": [], "basiliskii": [ - "basilisk" + "basilisk", + "basilisk2" ], + "bbkemu": [], "beetle_gba": [ "mednafen_gba" ], @@ -1073,9 +1153,28 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bennugd": [], "bigpemu": [ "bigpemu-sa" ], + "bk": [], + "blastem": [], + "bluemsx": [], + "bnes": [], + "boom3": [ + "boom3_xp" + ], + "boytacean": [], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -1084,6 +1183,7 @@ "bsnes2014_balanced", "bsnes2014_performance" ], + "bsnes_cplusplus98": [], "bsnes_hd_beta": [ "bsnes_hd", "bsneshd" @@ -1097,39 +1197,71 @@ "C64-EMU", "C64.emu" ], + "cannonball": [], "cap32": [ "caprice32" ], + "cdi2015": [], "cemu": [ "cemu-sa" ], + "chailove": [], "chihiro-ds": [ "chihiro-gun" ], + "chimerasnes": [], "chocolate-doom": [ "Chocolate-Doom" ], + "citra": [], + "citra2018": [], + "citra_canary": [], + "clownmdemu": [], + "coolbaremu": [], + "craft": [], + "crocods": [], + "cruzes": [], "cxbx-reloaded": [ "cxbx" ], "cxbx-reloaded-2023": [ "chihiro" ], + "daphne": [ + "km_daphne_xtreme" + ], + "desmume": [], "desmume2015": [ "desmume_2015" ], + "dice": [], + "dingooemu": [], + "dinothawr": [], + "directxbox": [], + "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_core": [], + "dosbox_pure": [], + "dosbox_svn": [], + "dosbox_svn_ce": [], "doublecherrygb": [ "DoubleCherryGB" ], + "doukutsu_rs": [], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "droidarcadia": [ "com.amigan.droidarcadia" @@ -1141,13 +1273,22 @@ "Duckstation", "duckstation-sa" ], + "easyrpg": [], "ecwolf": [ "ECWolf" ], + "eka2l1": [], + "emucv": [], + "emuscv": [], + "emux_chip8": [], + "emux_gb": [], + "emux_nes": [], + "emux_sms": [], "ep128emu_core": [ "ep128emu", "ep128emu-core" ], + "eternal": [], "fake08": [ "fake_08" ], @@ -1157,15 +1298,32 @@ "fbalpha2012": [ "fbalpha" ], + "fbalpha2012_cps1": [], + "fbalpha2012_cps2": [], + "fbalpha2012_cps3": [], + "fbalpha2012_neogeo": [], + "fbalpha2019": [], "fbneo": [ - "FBNEOSA" + "FBNEOSA", + "fbneo_32b", + "fbneo_plus", + "km_fbneo_xtreme_amped" ], + "fbneo_cps12": [], + "fbneo_neogeo": [], + "fceumm": [], + "fceumm_mod": [], + "ffmpeg": [], + "fixgb": [], + "fixnes": [], "flycast": [ "flycast-dev", "flycast-next", "flycast-sa", + "flycast32_rumble", "flycast_32b", "flycast_dev", + "flycast_rumble", "flycastsa", "flycastvl" ], @@ -1175,16 +1333,26 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], + "frodo": [], + "fsuae": [], "fuse": [ "fuse_libretro" ], + "galaksija": [], + "gam4980": [], + "gambatte": [], + "gametank": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -1193,6 +1361,12 @@ "GBC-EMU", "GBC.emu" ], + "gearboy": [], + "gearcoleco": [], + "geargrafx": [], + "gearlynx": [], + "gearsystem": [], + "geartowns": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -1207,40 +1381,67 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "geolith": [], + "gme": [], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], "gsplus-legacy": [ "gsplus" ], + "gw": [ + "gw_libretro" + ], "gzdoom": [ "GZDoom", "gzdoom-sa" ], + "handy": [], "hatari": [ "HATARISA", + "hatari-fast", "hatarisa" ], + "hatari2014": [], + "hatarib": [], + "hbmame": [], + "higan_sfc": [], "higan_sfc_balanced": [ "nside_sfc_balanced" ], + "holani": [], + "hyperscanemu": [], + "hypseushw": [], "idtech4a++": [ "diii4a", "idtech4amm" ], + "imageviewer": [], + "irogb": [], + "ishiiruka": [], "j2me-loader": [ "J2ME-LOADER" ], + "jaxe": [], "jazz2-native": [ "jazz2" ], "jl-mod": [ "JL-MOD" ], + "jollycv": [], + "jumpnbump": [], "kemulator": [ "KEMULATOR" ], + "kronos": [], "lexaloffle": [ "Pico-8", + "float-scaled", "pico-8", "pico8", + "pico_standalone", "vox_official" ], "lime3ds": [ @@ -1251,10 +1452,14 @@ "LINKBOY", "Linkboy" ], + "lowresnx": [ + "lowres_nx" + ], "lrps2": [ "pcsx2", "ps2" ], + "lutro": [], "lynx-emu": [ "LYNX-EMU", "Lynx.emu" @@ -1262,6 +1467,7 @@ "lzdoom": [ "LZDoom" ], + "m2000": [], "m64plus-fz": [ "M64PLUS-FZ", "org.mupen64plusae.v3.fzurita", @@ -1274,13 +1480,17 @@ "mame2000": [ "imame4all" ], + "mame2003": [], + "mame2003_midway": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" ], + "mame2009": [], "mame2010": [ "mame0139" ], + "mame2015": [], "mame2016": [ "mess2016" ], @@ -1293,6 +1503,8 @@ "MAME4DROID-CURRENT", "com.seleuco.mame4d2024" ], + "mamearcade": [], + "mamemess": [], "mandarine": [ "mandarine-qt" ], @@ -1300,6 +1512,7 @@ "MASTERGEAR", "com.fms.mg" ], + "mcsoftserve": [], "md-emu": [ "MD-EMU", "MD.emu" @@ -1314,6 +1527,7 @@ "beetle_bsnes", "beetle_snes" ], + "mednafen_stv": [], "mednafen_supafaust": [ "beetle_supafaust", "supafaust" @@ -1340,17 +1554,31 @@ "mess2015": [ "mess" ], + "meteor": [], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "mgba_splitscreen": [], + "minivmac": [], "mkxp_z": [ "mkxp-z" ], + "mojozork": [], + "moonlight": [ + "lr_moonlight" + ], + "mpv": [], + "mrboom": [], "msx-emu": [ "MSX-EMU", "MSX.emu" ], + "mu": [], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -1374,12 +1602,16 @@ "MY-OLDBOY", "My OldBoy!" ], + "n64emu": [], "nanoboyadvance": [ "nanoboyadvance-sa" ], + "native32emu": [], "nekop2": [ "meowpc98" ], + "neocd": [], + "nes": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -1388,6 +1620,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -1404,41 +1637,82 @@ "NGP-EMU", "NGP.emu" ], + "nicaiemu": [], + "noods": [], + "np2kai": [], + "nuance": [], + "numero": [], "nxengine": [ "nx" ], "o2em": [ "o2em_libretro" ], + "oberon": [], + "odin": [], + "omicron": [], + "onscripter": [], + "onsyuri": [], + "openbor": [ + "OPENBOR", + "openbor v7530 - standalone", + "openbor4432", + "openbor6330", + "openbor6412", + "openbor6510", + "openbor7142", + "openbor7530", + "openbor_standalone_plus" + ], + "openlara": [], + "openmsx": [ + "openmsx-ld" + ], "opentyrian": [ "tyrian" ], + "opera": [], + "panda3ds": [], "parallel-launcher": [ "ca.parallel_launcher.ParallelLauncher" ], + "parallel_dc": [], "parallel_n64": [ "parallel-n64", "parallel_n64_32b", "parallel_n64_debug" ], + "pascal_pong": [], "pce-emu": [ "PCE-EMU", "PCE.emu", "com.PceEmu", "pceemu" ], + "pcee2": [], + "pcem": [], + "pcsx1": [], + "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": [], + "piece": [], "pizza-boy-gba": [ "PIZZA-BOY-GBA", "Pizza Boy GBA" @@ -1456,43 +1730,81 @@ "play": [ "play!" ], + "playdiaemu": [], + "pocketcdg": [], + "pokemini": [], "pokketstation": [ "pokket" ], + "potator": [], "ppsspp": [ "PPSSPPSDL", "ppsspp-sa" ], + "prboom": [], + "primehack": [], + "prosystem": [], "puae": [ "uae" ], + "puae2021": [], + "puzzlescript": [ + "pzretro" + ], + "px68k": [], "px68k-sdl": [ "px68k" ], + "qemu": [], + "quasi88": [], "quasi88kai": [ "quasi88" ], + "quicknes": [], + "race": [], + "rb5000": [], "real3doplayer": [ "REAL3DOPLAYER", "Real3DOPlayer" ], + "redbook": [], + "redream": [], + "reminiscence": [], + "remotejoy": [], + "retro8": [ + "picante8" + ], + "retrodream": [], + "romcleaner": [], "rosalies-mupen-gui": [ "RMG", "com.github.Rosalie241.RMG", "mupen64" ], + "rp6502": [], "rpcs3": [ "rpcs3-sa" ], + "ruffle": [], + "rust_dos": [], + "rustation": [], + "rustynes": [], + "rvvm": [], + "same_cdi": [], + "sameboy": [], + "sameduck": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], "scummvm-standalone": [ "SCUMMVMSA", "scummvm-sa" ], + "sdlpal": [], + "simcp": [], "skyemu": [ "skyemu-sa" ], @@ -1509,6 +1821,10 @@ "Snes9x EX+", "Snes9xEXPlus" ], + "snes9x2002": [], + "snes9x2005": [], + "snes9x2005_plus": [], + "snes9x2010": [], "solarus": [ "Solarus" ], @@ -1517,31 +1833,69 @@ "com.fms.speccy", "com.fms.speccy.deluxe" ], + "spmp8000emu": [], + "squirreljme": [], "stella": [ "STELLASA" ], + "stella2014": [], + "stella2023": [], + "stonesoup": [], + "superbroswar": [ + "km_superbroswar" + ], + "supermodel": [], + "supersnes9x": [], "superzsnes": [ "SUPERZSNES" ], + "swanstation": [], + "syobonaction": [], + "tamalibretro": [], + "tempgba": [], + "test_netplay": [], + "testaudio_callback": [], + "testaudio_no_callback": [], + "testaudio_playback_wav": [], + "testgl_compute_shaders": [], + "testgl_ff": [], + "testinput_buttontest": [], + "testretroluxury": [], + "testsw": [], + "testsw_vram": [], + "testvulkan_async_compute": [], "tgbdual": [ "TGB Dual" ], + "theodore": [], + "thepowdertoy": [], + "tia": [], + "tic80": [], + "trident": [], "triforce": [ "dolphin-triforce", "dolphin_triforce" ], + "tyrquake": [], "uae4all-rpi": [ "uae4all" ], "uae4arm": [ "uae4arm_32b" ], + "ume2015": [], + "uw8": [], + "uxn": [], + "uzem": [], + "vaporspec": [], "vba_next": [ "vba-next" ], "vbam": [ "vba-m" ], + "vecx": [], + "vemulator": [], "vice": [ "vice_x128", "vice_x64", @@ -1569,21 +1923,46 @@ "vice_x64sc": [ "x64sx" ], + "vice_xcbm2": [ + "xcbm2" + ], + "vice_xcbm5x0": [ + "xcbm5x0" + ], + "vice_xpet": [ + "xpet" + ], + "vice_xplus4": [ + "xplus4" + ], "vice_xscpu64": [ "xscpu64" ], "vice_xvic": [ "xvic" ], + "vircon32": [], + "virtualjaguar": [], + "virtualxt": [], "vita3k": [ "vita3k-sa" ], + "vitaquake2": [ + "vitaquake2-rogue", + "vitaquake2-xatrix", + "vitaquake2-zaero" + ], + "vitaquake3": [], + "vitavoyager": [], + "wasm4": [], + "wqxemu": [], "x1": [ "xmil" ], "x1-box": [ "x1box" ], + "x64sdl": [], "xemu": [ "xemu-sa" ], @@ -1599,11 +1978,23 @@ "XM6TYPEG", "XM6TYPEG-WINDOWS" ], + "xrick": [], + "xroar": [ + "xroar-cocous", + "xroar-dragon32" + ], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "yabause": [], + "yaps2": [], + "ymir": [], + "zc210": [], + "zc255": [] }, "system_cores": { "3do": [ @@ -1915,6 +2306,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -2093,6 +2485,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" @@ -40469,7 +40862,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_bios.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -40492,7 +40886,8 @@ "repo_path": "bios/Arcade/Arcade/naomi.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -40514,7 +40909,8 @@ "size": 7038226, "repo_path": "bios/Arcade/Arcade/naomi2.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] } ] @@ -40548,7 +40944,8 @@ "repo_path": "bios/Arcade/MAME/hod2bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -40571,7 +40968,8 @@ "repo_path": "bios/Arcade/Arcade/f355dlx.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -40594,7 +40992,8 @@ "repo_path": "bios/Arcade/Arcade/f355bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -40639,7 +41038,8 @@ "repo_path": "bios/Arcade/Arcade/awbios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -123955,7 +124355,8 @@ "size": 519984, "repo_path": "bios/Sega/Dreamcast/font.bin", "cores": [ - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -134808,7 +135209,8 @@ "size": 1281424, "repo_path": "bios/Arcade/Arcade/segasp.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] }, { @@ -134862,6 +135264,19 @@ ], "category": "game_data" }, + { + "dest": "bios/IPL.n64", + "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", + "sha256": "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b", + "size": 4194304, + "repo_path": "bios/Nintendo/Nintendo 64DD/64DD_IPL.bin", + "cores": [ + "n64emu" + ], + "systems": [ + "nintendo-64dd" + ] + }, { "dest": "bios/np2/bios.rom", "sha1": "76a7360502fa0296ea93b4c537174610a834d367", @@ -135187,6 +135602,36 @@ "nec-pc-98" ] }, + { + "dest": "bios/odin/hikaru.zip", + "sha1": "8ce366388c9e09c5d218d639f19d1d816b59395d", + "sha256": "806a236b5665bbcc4f204e8e877e8c9416d150353a34d469849244bbaa138dbf", + "size": 1049493, + "repo_path": "bios/Sega/Hikaru/hikaru.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "bios/odin/mie.zip", + "sha1": "00f43f5bf58dd79135565d52c4eea7e314ebc810", + "sha256": "98ec06b938a17f65fa4b0ad0439b410ed5e0f11b823320d3ce46b7268932fb8e", + "size": 725, + "repo_path": "bios/Arcade/Arcade/mie.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "bios/odin/jvs13551.zip", + "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", + "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", + "size": 15088, + "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "cores": [ + "odin" + ] + }, { "dest": "bios/keropi/iplrom.dat", "sha1": "0ed038ed2133b9f78c6e37256807424e0d927560", diff --git a/install/retropie.json b/install/retropie.json index 1eaa3801f..d9a129246 100644 --- a/install/retropie.json +++ b/install/retropie.json @@ -16,12 +16,22 @@ } ], "standalone_copies": [], - "total_files": 8684, - "total_size": 8721213852, - "pack_files": 14760, - "pack_size": 8839596934, - "total_omitted": 347, + "total_files": 8688, + "total_size": 8726468198, + "pack_files": 14764, + "pack_size": 8844851280, + "total_omitted": 353, "omitted_files": [ + { + "dest": "18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "Azahar/Azahar/nand/private/movable.sed", "root": "save", @@ -3157,6 +3167,26 @@ "amiberry" ] }, + { + "dest": "hyperscanemu/hyperscan.bin", + "name": "hyperscan.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, + { + "dest": "hyperscanemu/spg290.bin", + "name": "spg290.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, { "dest": "ice.pig", "name": "ice.pig", @@ -3406,6 +3436,26 @@ ], "category": "game_data" }, + { + "dest": "odin/18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "other-h.mvl", "name": "other-h.mvl", @@ -3575,6 +3625,16 @@ ], "category": "game_data" }, + { + "dest": "srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "sve.wad", "name": "sve.wad", @@ -3861,22 +3921,41 @@ } ], "core_names": { + "3dengine": [], "3dsen": [ "3dsen-windows" ], + "81": [], + "a5200": [], "ace-dl": [ "acedl" ], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], + "advanced_tests": [], "advancemame": [ "AdvanceMame", "advmame" ], + "advmame-0.94": [], + "advmame-1.4": [], "aethersx2": [ "aethersx2-sa" ], + "ags": [], + "alephone": [], + "amiarcadia": [ + "winarcadia" + ], "amiberry": [ "AMIBERRY" ], + "anarch": [], + "applewin": [], + "ardens": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -3884,12 +3963,17 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], + "b2": [], "basiliskii": [ - "basilisk" + "basilisk", + "basilisk2" ], + "bbkemu": [], "beetle_gba": [ "mednafen_gba" ], @@ -3897,6 +3981,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -3916,6 +4004,25 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bennugd": [], + "bk": [], + "blastem": [], + "bluemsx": [], + "bnes": [], + "boom3": [ + "boom3_xp" + ], + "boytacean": [], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -3924,6 +4031,7 @@ "bsnes2014_balanced", "bsnes2014_performance" ], + "bsnes_cplusplus98": [], "bsnes_hd_beta": [ "bsnes_hd", "bsneshd" @@ -3937,25 +4045,60 @@ "C64-EMU", "C64.emu" ], + "cannonball": [], "cap32": [ "caprice32" ], + "capricerpi": [], + "cdi2015": [], + "cdogs": [ + "cdogs-sdl" + ], "cemu": [ "cemu-sa" ], "cgenius": [ "CGeniusExe" ], + "chailove": [], + "chimerasnes": [], "chocolate-doom": [ "Chocolate-Doom" ], + "citra": [], + "citra2018": [], + "citra_canary": [], + "clownmdemu": [], + "coolbaremu": [], + "coolcv": [], + "craft": [], + "crocods": [], + "cruzes": [], + "daphne": [ + "km_daphne_xtreme" + ], + "darkplaces": [ + "darkplaces-quake" + ], + "desmume": [], "desmume2015": [ "desmume_2015" ], + "dgen": [], + "dice": [], + "dingooemu": [], + "dinothawr": [], + "directxbox": [], + "dirksimple": [], "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" @@ -3969,15 +4112,22 @@ "dosbox-x": [ "dosboxx" ], + "dosbox_core": [], + "dosbox_pure": [], + "dosbox_svn": [], + "dosbox_svn_ce": [], "doublecherrygb": [ "DoubleCherryGB" ], + "doukutsu_rs": [], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "droidarcadia": [ "com.amigan.droidarcadia" ], + "dsda-doom": [], "dsperate": [ "dsperate-sa" ], @@ -3989,28 +4139,59 @@ "d1x-rebirth", "d2x-rebirth" ], + "easyrpg": [], "ecwolf": [ "ECWolf" ], + "eduke32": [], + "eka2l1": [], + "emucv": [], + "emuscv": [], + "emux_chip8": [], + "emux_gb": [], + "emux_nes": [], + "emux_sms": [], "ep128emu_core": [ "ep128emu", "ep128emu-core" ], + "eternal": [], + "fake08": [ + "fake_08" + ], "fba2x": [ "pifba" ], "fbalpha2012": [ "fbalpha" ], + "fbalpha2012_cps1": [], + "fbalpha2012_cps2": [], + "fbalpha2012_cps3": [], + "fbalpha2012_neogeo": [], + "fbalpha2019": [], "fbneo": [ - "FBNEOSA" + "FBNEOSA", + "fbneo_32b", + "fbneo_plus", + "km_fbneo_xtreme_amped" ], + "fbneo_cps12": [], + "fbneo_neogeo": [], + "fbzx": [], + "fceumm": [], + "fceumm_mod": [], + "ffmpeg": [], + "fixgb": [], + "fixnes": [], "flycast": [ "flycast-dev", "flycast-next", "flycast-sa", + "flycast32_rumble", "flycast_32b", "flycast_dev", + "flycast_rumble", "flycastsa", "flycastvl" ], @@ -4020,19 +4201,31 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], + "frodo": [], + "frotz": [], + "fs-uae": [], + "fsuae": [], "fury": [ "ionfury" ], "fuse": [ "fuse_libretro" ], + "galaksija": [], + "gam4980": [], + "gambatte": [], + "gametank": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -4041,6 +4234,13 @@ "GBC-EMU", "GBC.emu" ], + "gearboy": [], + "gearcoleco": [], + "geargrafx": [], + "gearlynx": [], + "gearsystem": [], + "geartowns": [], + "gemrb": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -4055,46 +4255,81 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "geolith": [], + "gme": [], + "gngeopi": [], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], + "gw": [ + "gw_libretro" + ], "gzdoom": [ "GZDoom", "gzdoom-sa" ], + "handy": [], "hatari": [ "HATARISA", + "hatari-fast", "hatarisa" ], + "hatari2014": [], + "hatarib": [], + "hbmame": [], + "higan_sfc": [], "higan_sfc_balanced": [ "nside_sfc_balanced" ], + "holani": [], + "hyperscanemu": [], "hypseus-singe": [ "HYPSEUS", "hypseus", "hypseus_singe" ], + "hypseushw": [], "idtech4a++": [ "diii4a", "idtech4amm" ], + "imageviewer": [], + "ioquake3": [], + "irogb": [], + "ishiiruka": [], "j2me-loader": [ "J2ME-LOADER" ], + "jaxe": [], "jazz2-native": [ "jazz2" ], "jl-mod": [ "JL-MOD" ], + "jollycv": [], + "jumpnbump": [], + "jzintv": [], "kemulator": [ "KEMULATOR" ], + "kronos": [], + "linapple": [], "linkboy": [ "LINKBOY", "Linkboy" ], + "love": [], + "love-0.10.2": [], + "lowresnx": [ + "lowres_nx" + ], "lrps2": [ "pcsx2", "ps2" ], + "lutro": [], "lynx-emu": [ "LYNX-EMU", "Lynx.emu" @@ -4102,6 +4337,7 @@ "lzdoom": [ "LZDoom" ], + "m2000": [], "m64plus-fz": [ "M64PLUS-FZ", "org.mupen64plusae.v3.fzurita", @@ -4114,16 +4350,21 @@ "mame2000": [ "imame4all" ], + "mame2003": [], + "mame2003_midway": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" ], + "mame2009": [], "mame2010": [ "mame0139" ], + "mame2015": [], "mame2016": [ "mess2016" ], + "mame4all": [], "mame4droid": [ "MAME4DROID", "com.seleuco.mame4droid" @@ -4133,10 +4374,13 @@ "MAME4DROID-CURRENT", "com.seleuco.mame4d2024" ], + "mamearcade": [], + "mamemess": [], "mastergear": [ "MASTERGEAR", "com.fms.mg" ], + "mcsoftserve": [], "md-emu": [ "MD-EMU", "MD.emu" @@ -4151,6 +4395,7 @@ "beetle_bsnes", "beetle_snes" ], + "mednafen_stv": [], "mednafen_supafaust": [ "beetle_supafaust", "supafaust" @@ -4177,20 +4422,34 @@ "mess2015": [ "mess" ], + "meteor": [], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "mgba_splitscreen": [], + "minivmac": [], "minivmac37": [ "minivmac" ], "mkxp_z": [ "mkxp-z" ], + "mojozork": [], + "moonlight": [ + "lr_moonlight" + ], + "mpv": [], + "mrboom": [], "msx-emu": [ "MSX-EMU", "MSX.emu" ], + "mu": [], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -4214,12 +4473,16 @@ "MY-OLDBOY", "My OldBoy!" ], + "n64emu": [], "nanoboyadvance": [ "nanoboyadvance-sa" ], + "native32emu": [], "nekop2": [ "meowpc98" ], + "neocd": [], + "nes": [], "nes-emu": [ "NES-EMU", "NES.emu" @@ -4228,6 +4491,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -4240,41 +4504,87 @@ "NETHERSX2-TURNIP-CLASSIC", "NetherSX2-Turnip-Classic" ], + "nicaiemu": [], + "noods": [], + "np2kai": [], + "np2pi": [], + "nuance": [], + "numero": [], "nxengine": [ "nx" ], "o2em": [ "o2em_libretro" ], + "oberon": [], + "odin": [], + "omicron": [], + "onscripter": [], + "onsyuri": [], + "openbor": [ + "OPENBOR", + "openbor v7530 - standalone", + "openbor4432", + "openbor6330", + "openbor6412", + "openbor6510", + "openbor7142", + "openbor7530", + "openbor_standalone_plus" + ], + "openlara": [], + "openmsx": [ + "openmsx-ld" + ], + "openttd": [], "opentyrian": [ "tyrian" ], + "opera": [], + "oricutron": [], + "osmose": [], + "panda3ds": [], "parallel-launcher": [ "ca.parallel_launcher.ParallelLauncher" ], + "parallel_dc": [], "parallel_n64": [ "parallel-n64", "parallel_n64_32b", "parallel_n64_debug" ], + "pascal_pong": [], "pce-emu": [ "PCE-EMU", "PCE.emu", "com.PceEmu", "pceemu" ], + "pcee2": [], + "pcem": [], + "pcsx1": [], + "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": [], + "piece": [], + "pisnes": [], "pizza-boy-gba": [ "PIZZA-BOY-GBA", "Pizza Boy GBA" @@ -4292,43 +4602,91 @@ "play": [ "play!" ], + "playdiaemu": [], + "pocketcdg": [], + "pokemini": [], "pokketstation": [ "pokket" ], + "potator": [], "ppsspp": [ "PPSSPPSDL", "ppsspp-sa" ], + "ppsspp-1.5.4": [], + "prboom": [], + "prosystem": [], "puae": [ "uae" ], + "puae2021": [], + "puzzlescript": [ + "pzretro" + ], + "px68k": [], "px68k-sdl": [ "px68k" ], + "qemu": [], + "quake3": [], + "quasi88": [], "quasi88kai": [ "quasi88" ], + "quicknes": [], + "race": [], + "rb5000": [], "real3doplayer": [ "REAL3DOPLAYER", "Real3DOPlayer" ], + "redbook": [], + "redream": [], + "reicast": [], + "reminiscence": [], + "remotejoy": [], + "retro8": [ + "picante8" + ], + "retrodream": [], + "romcleaner": [], "rosalies-mupen-gui": [ "RMG", "com.github.Rosalie241.RMG", "mupen64" ], + "rp6502": [], + "rpix86": [], + "rust_dos": [], + "rustation": [], + "rustynes": [], + "rvvm": [], + "samcoupe": [ + "simcoupe" + ], + "same_cdi": [], + "sameboy": [], + "sameduck": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], + "scummvm-sdl1": [], "scummvm-standalone": [ "SCUMMVMSA", "scummvm-sa" ], "sdl2trs": [ - "sdltrs" + "sdltrs", + "sdltrs-model1" ], + "sdlpal": [], + "sdlpop": [ + "prince" + ], + "simcp": [], "skyemu": [ "skyemu-sa" ], @@ -4345,45 +4703,97 @@ "Snes9x EX+", "Snes9xEXPlus" ], + "snes9x2002": [], + "snes9x2005": [], + "snes9x2005_plus": [], + "snes9x2010": [], + "solarus": [ + "Solarus" + ], "speccy": [ "SPECCY", "com.fms.speccy", "com.fms.speccy.deluxe" ], + "splitwolf": [], + "spmp8000emu": [], + "squirreljme": [], + "srb2": [], "stella": [ "STELLASA" ], + "stella2014": [], + "stella2023": [], + "stonesoup": [], + "stratagus": [], + "superbroswar": [ + "km_superbroswar" + ], "supermariowar": [ "smw" ], + "supermodel": [], "supermodel3": [ "supermodel-sa" ], + "supersnes9x": [], "supertux": [ "supertux2" ], "superzsnes": [ "SUPERZSNES" ], + "swanstation": [], + "syobonaction": [], + "tamalibretro": [], + "tempgba": [], + "test_netplay": [], + "testaudio_callback": [], + "testaudio_no_callback": [], + "testaudio_playback_wav": [], + "testgl_compute_shaders": [], + "testgl_ff": [], + "testinput_buttontest": [], + "testretroluxury": [], + "testsw": [], + "testsw_vram": [], + "testvulkan_async_compute": [], "tgbdual": [ "TGB Dual" ], + "theodore": [], + "thepowdertoy": [], + "ti99sim": [], + "ti99sim-sdl1": [], + "tia": [], + "tic80": [], + "trident": [], "triforce": [ "dolphin-triforce", "dolphin_triforce" ], + "tyrquake": [], + "uae4all": [], "uae4all-rpi": [ "uae4all" ], "uae4arm": [ "uae4arm_32b" ], + "ume2015": [], + "uqm": [], + "uw8": [], + "uxn": [], + "uzem": [], + "vaporspec": [], "vba_next": [ "vba-next" ], "vbam": [ "vba-m" ], + "vecx": [], + "vemulator": [], "vice": [ "vice_x128", "vice_x64", @@ -4411,18 +4821,44 @@ "vice_x64sc": [ "x64sx" ], + "vice_xcbm2": [ + "xcbm2" + ], + "vice_xcbm5x0": [ + "xcbm5x0" + ], + "vice_xpet": [ + "xpet" + ], + "vice_xplus4": [ + "xplus4" + ], "vice_xscpu64": [ "xscpu64" ], "vice_xvic": [ "xvic" ], + "vircon32": [], + "virtualjaguar": [], + "virtualxt": [], + "vitaquake2": [ + "vitaquake2-rogue", + "vitaquake2-xatrix", + "vitaquake2-zaero" + ], + "vitaquake3": [], + "vitavoyager": [], "vvvvvv": [ "VVVVVV" ], + "wasm4": [], + "wolf4sdl": [], + "wqxemu": [], "x1": [ "xmil" ], + "x64sdl": [], "xemu": [ "xemu-sa" ], @@ -4438,11 +4874,26 @@ "XM6TYPEG", "XM6TYPEG-WINDOWS" ], + "xm7": [], + "xrick": [], + "xroar": [ + "xroar-cocous", + "xroar-dragon32" + ], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "yabause": [], + "yaps2": [], + "ymir": [], + "yquake2": [], + "zc210": [], + "zc255": [], + "zesarux": [] }, "system_cores": { "3do": [ @@ -4691,6 +5142,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", @@ -4950,6 +5402,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" @@ -12664,7 +13117,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_bios.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -12753,7 +13207,8 @@ "repo_path": "bios/Arcade/Arcade/awbios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -12776,7 +13231,8 @@ "repo_path": "bios/Arcade/Arcade/f355bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -12799,7 +13255,8 @@ "repo_path": "bios/Arcade/Arcade/f355dlx.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -12822,7 +13279,8 @@ "repo_path": "bios/Arcade/MAME/hod2bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -12845,7 +13303,8 @@ "repo_path": "bios/Arcade/Arcade/naomi.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -12867,7 +13326,8 @@ "size": 7038226, "repo_path": "bios/Arcade/Arcade/naomi2.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] } ] @@ -12889,7 +13349,8 @@ "size": 1281424, "repo_path": "bios/Arcade/Arcade/segasp.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] } ] @@ -93127,7 +93588,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_nvmem.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -93140,7 +93602,8 @@ "size": 519984, "repo_path": "bios/Sega/Dreamcast/font.bin", "cores": [ - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -94736,6 +95199,7 @@ "size": 1049493, "repo_path": "bios/Sega/Hikaru/hikaru.zip", "cores": [ + "odin", "mame", "mame2009", "mame2010", @@ -105249,12 +105713,23 @@ }, { "dest": "jvs13551.zip", - "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", - "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", - "size": 15088, - "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", "cores": [ - "mame" + "odin" + ], + "alternatives": [ + { + "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", + "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", + "size": 15088, + "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "cores": [ + "mame" + ] + } ] }, { @@ -106250,6 +106725,7 @@ "size": 725, "repo_path": "bios/Arcade/Arcade/mie.zip", "cores": [ + "odin", "mame" ] }, @@ -113955,6 +114431,36 @@ ], "category": "game_data" }, + { + "dest": "odin/hikaru.zip", + "sha1": "8ce366388c9e09c5d218d639f19d1d816b59395d", + "sha256": "806a236b5665bbcc4f204e8e877e8c9416d150353a34d469849244bbaa138dbf", + "size": 1049493, + "repo_path": "bios/Sega/Hikaru/hikaru.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/mie.zip", + "sha1": "00f43f5bf58dd79135565d52c4eea7e314ebc810", + "sha256": "98ec06b938a17f65fa4b0ad0439b410ed5e0f11b823320d3ce46b7268932fb8e", + "size": 725, + "repo_path": "bios/Arcade/Arcade/mie.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", + "cores": [ + "odin" + ] + }, { "dest": "omicron/omicron.jar", "sha1": "f64654e8a5275fdd35a18c576167715143ca3316", @@ -119870,6 +120376,19 @@ ], "category": "game_data" }, + { + "dest": "IPL.n64", + "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", + "sha256": "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b", + "size": 4194304, + "repo_path": "bios/Nintendo/Nintendo 64DD/64DD_IPL.bin", + "cores": [ + "n64emu" + ], + "systems": [ + "nintendo-64dd" + ] + }, { "dest": "np2/bios.rom", "sha1": "76a7360502fa0296ea93b4c537174610a834d367", diff --git a/install/rocknix.json b/install/rocknix.json index 715a44c25..bea9137c2 100644 --- a/install/rocknix.json +++ b/install/rocknix.json @@ -21,12 +21,22 @@ } ], "standalone_copies": [], - "total_files": 7328, - "total_size": 8216898220, - "pack_files": 13677, - "pack_size": 8360738317, - "total_omitted": 115, + "total_files": 7332, + "total_size": 8222152566, + "pack_files": 13681, + "pack_size": 8366101048, + "total_omitted": 121, "omitted_files": [ + { + "dest": "18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "Citra/Citra/sysdata/aes_keys.txt", "root": "save", @@ -901,6 +911,26 @@ "amiberry" ] }, + { + "dest": "hyperscanemu/hyperscan.bin", + "name": "hyperscan.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, + { + "dest": "hyperscanemu/spg290.bin", + "name": "spg290.bin", + "system": "mattel-hyperscan", + "required": true, + "reason": "not_found", + "cores": [ + "hyperscanemu" + ] + }, { "dest": "id24res.wad", "name": "id24res.wad", @@ -1072,6 +1102,26 @@ ], "category": "game_data" }, + { + "dest": "odin/18wheelr.zip", + "name": "18wheelr.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "plutoniakex.wad", "name": "plutoniakex.wad", @@ -1146,6 +1196,16 @@ ], "category": "game_data" }, + { + "dest": "srally2.zip", + "name": "srally2.zip", + "system": "sega-hikaru", + "required": false, + "reason": "not_found", + "cores": [ + "odin" + ] + }, { "dest": "sve.wad", "name": "sve.wad", @@ -1301,12 +1361,27 @@ } ], "core_names": { + "3dengine": [], + "81": [], + "a5200": [], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], + "advanced_tests": [], "aethersx2": [ "aethersx2-sa" ], + "amiarcadia": [ + "winarcadia" + ], "amiberry": [ "AMIBERRY" ], + "anarch": [], + "applewin": [], + "ardens": [], + "arduous": [], "ares": [ "ares-sa" ], @@ -1314,9 +1389,13 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], + "b2": [], + "bbkemu": [], "beetle_gba": [ "mednafen_gba" ], @@ -1324,6 +1403,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -1343,9 +1426,28 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bennugd": [], "bigpemu": [ "bigpemu-sa" ], + "bk": [], + "blastem": [], + "bluemsx": [], + "bnes": [], + "boom3": [ + "boom3_xp" + ], + "boytacean": [], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -1354,6 +1456,7 @@ "bsnes2014_balanced", "bsnes2014_performance" ], + "bsnes_cplusplus98": [], "bsnes_hd_beta": [ "bsnes_hd", "bsneshd" @@ -1363,30 +1466,68 @@ "bsnes_mercury_balanced", "bsnes_mercury_performance" ], + "cannonball": [], + "cap32": [ + "caprice32" + ], + "cdi2015": [], "cemu": [ "cemu-sa" ], + "chailove": [], "chihiro-ds": [ "chihiro-gun" ], + "chimerasnes": [], + "citra": [], + "citra2018": [], + "citra_canary": [], + "clownmdemu": [], + "coolbaremu": [], + "craft": [], + "crocods": [], + "cruzes": [], "cxbx-reloaded": [ "cxbx" ], "cxbx-reloaded-2023": [ "chihiro" ], + "daedalusx64": [ + "daedalusx64-sa" + ], + "daphne": [ + "km_daphne_xtreme" + ], + "desmume": [], "desmume2015": [ "desmume_2015" ], + "dice": [], + "dingooemu": [], + "dinothawr": [], + "directxbox": [], + "dirksimple": [], "dolphin": [ "dolphin-gui", - "dolphin-sa" + "dolphin-qt-gc", + "dolphin-qt-wii", + "dolphin-sa", + "dolphin-sa-gc", + "dolphin-sa-wii" ], + "dosbox": [], + "dosbox_core": [], + "dosbox_pure": [], + "dosbox_svn": [], + "dosbox_svn_ce": [], "doublecherrygb": [ "DoubleCherryGB" ], + "doukutsu_rs": [], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "dsperate": [ "dsperate-sa" @@ -1395,22 +1536,54 @@ "Duckstation", "duckstation-sa" ], + "easyrpg": [], + "ecwolf": [ + "ECWolf" + ], + "eka2l1": [], + "emucv": [], + "emuscv": [], + "emux_chip8": [], + "emux_gb": [], + "emux_nes": [], + "emux_sms": [], "ep128emu_core": [ "ep128emu", "ep128emu-core" ], + "eternal": [], + "fake08": [ + "fake_08" + ], "fbalpha2012": [ "fbalpha" ], + "fbalpha2012_cps1": [], + "fbalpha2012_cps2": [], + "fbalpha2012_cps3": [], + "fbalpha2012_neogeo": [], + "fbalpha2019": [], "fbneo": [ - "FBNEOSA" + "FBNEOSA", + "fbneo_32b", + "fbneo_plus", + "km_fbneo_xtreme_amped" ], + "fbneo_cps12": [], + "fbneo_neogeo": [], + "fceumm": [], + "fceumm_mod": [], + "ffmpeg": [], + "fixgb": [], + "fixnes": [], "flycast": [ "flycast-dev", "flycast-next", "flycast-sa", + "flycast32_rumble", "flycast_32b", "flycast_dev", + "flycast_rumble", "flycastsa", "flycastvl" ], @@ -1420,16 +1593,26 @@ "flycast2021": [ "flycast-xtreme" ], + "fmsx": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freechaf": [], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], + "frodo": [], + "fsuae": [], "fuse": [ "fuse_libretro" ], + "galaksija": [], + "gam4980": [], + "gambatte": [], + "gametank": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -1438,6 +1621,12 @@ "GBC-EMU", "GBC.emu" ], + "gearboy": [], + "gearcoleco": [], + "geargrafx": [], + "gearlynx": [], + "gearsystem": [], + "geartowns": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -1452,68 +1641,121 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "geolith": [], + "gme": [], + "gopher64": [ + "gopher64-sa" + ], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], + "gw": [ + "gw_libretro" + ], "gzdoom": [ "GZDoom", "gzdoom-sa" ], + "handy": [], "hatari": [ "HATARISA", + "hatari-fast", "hatarisa" ], + "hatari2014": [], + "hatarib": [], + "hbmame": [], + "higan_sfc": [], "higan_sfc_balanced": [ "nside_sfc_balanced" ], + "holani": [], + "hyperscanemu": [], "hypseus-singe": [ "HYPSEUS", "hypseus", "hypseus_singe" ], + "hypseushw": [], + "imageviewer": [], + "irogb": [], + "ishiiruka": [], + "jaxe": [], "jazz2-native": [ "jazz2" ], + "jollycv": [], + "jumpnbump": [], + "kronos": [], "lexaloffle": [ "Pico-8", + "float-scaled", "pico-8", "pico8", + "pico_standalone", "vox_official" ], "linkboy": [ "LINKBOY", "Linkboy" ], + "lowresnx": [ + "lowres_nx" + ], "lrps2": [ "pcsx2", "ps2" ], + "lutro": [], + "m2000": [], "mame": [ "mame64" ], "mame2000": [ "imame4all" ], + "mame2003": [], + "mame2003_midway": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" ], + "mame2009": [], "mame2010": [ "mame0139" ], + "mame2015": [], "mame2016": [ "mess2016" ], + "mamearcade": [], + "mamemess": [], "mastergear": [ "MASTERGEAR", "com.fms.mg" ], + "mcsoftserve": [], "md-emu": [ "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_stv": [], + "mednafen_supafaust": [ + "beetle_supafaust", + "supafaust" + ], "mednafen_supergrafx": [ "beetle-supergrafx", "beetle_supergrafx" @@ -1536,13 +1778,27 @@ "mess2015": [ "mess" ], + "meteor": [], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "mgba_splitscreen": [], + "minivmac": [], "mkxp_z": [ "mkxp-z" ], + "mojozork": [], + "moonlight": [ + "lr_moonlight" + ], + "mpv": [], + "mrboom": [], + "mu": [], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -1562,12 +1818,17 @@ "MY-OLDBOY", "My OldBoy!" ], + "n64emu": [], "nanoboyadvance": [ "nanoboyadvance-sa" ], + "native32emu": [], "nekop2": [ "meowpc98" ], + "neocd": [], + "nes": [], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -1580,32 +1841,70 @@ "NETHERSX2-TURNIP-CLASSIC", "NetherSX2-Turnip-Classic" ], + "nicaiemu": [], + "noods": [], + "np2kai": [], + "nuance": [], + "numero": [], "nxengine": [ "nx" ], "o2em": [ "o2em_libretro" ], + "oberon": [], + "odin": [], + "omicron": [], + "onscripter": [], + "onsyuri": [], + "openbor": [ + "OPENBOR", + "openbor v7530 - standalone", + "openbor4432", + "openbor6330", + "openbor6412", + "openbor6510", + "openbor7142", + "openbor7530", + "openbor_standalone_plus" + ], + "openlara": [], "opentyrian": [ "tyrian" ], + "opera": [], + "panda3ds": [], + "parallel_dc": [], "parallel_n64": [ "parallel-n64", "parallel_n64_32b", "parallel_n64_debug" ], + "pascal_pong": [], + "pcee2": [], + "pcem": [], + "pcsx1": [], + "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": [], + "piece": [], "pizza-boy-gba": [ "PIZZA-BOY-GBA", "Pizza Boy GBA" @@ -1623,28 +1922,64 @@ "play": [ "play!" ], + "playdiaemu": [], + "pocketcdg": [], + "pokemini": [], "pokketstation": [ "pokket" ], + "potator": [], "ppsspp": [ "PPSSPPSDL", "ppsspp-sa" ], + "prboom": [], + "prosystem": [], "puae": [ "uae" ], + "puae2021": [], + "puzzlescript": [ + "pzretro" + ], + "px68k": [], + "qemu": [], + "quasi88": [], + "quicknes": [], + "race": [], + "rb5000": [], + "redbook": [], + "redream": [], + "reminiscence": [], + "remotejoy": [], + "retro8": [ + "picante8" + ], + "retrodream": [], + "romcleaner": [], + "rp6502": [], "rpcs3": [ "rpcs3-sa" ], + "rust_dos": [], + "rustation": [], + "rustynes": [], + "rvvm": [], + "same_cdi": [], + "sameboy": [], + "sameduck": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], "scummvm-standalone": [ "SCUMMVMSA", "scummvm-sa" ], + "sdlpal": [], + "simcp": [], "skyemu": [ "skyemu-sa" ], @@ -1656,31 +1991,73 @@ "pocketsnes", "snes9x_next" ], + "snes9x2002": [], + "snes9x2005": [], + "snes9x2005_plus": [], + "snes9x2010": [], + "spmp8000emu": [], + "squirreljme": [], "stella": [ "STELLASA" ], + "stella2014": [], + "stella2023": [], + "stonesoup": [], + "superbroswar": [ + "km_superbroswar" + ], + "supermodel": [], "supermodel3": [ "supermodel-sa" ], + "supersnes9x": [], + "swanstation": [], + "syobonaction": [], + "tamalibretro": [], + "tempgba": [], + "test_netplay": [], + "testaudio_callback": [], + "testaudio_no_callback": [], + "testaudio_playback_wav": [], + "testgl_compute_shaders": [], + "testgl_ff": [], + "testinput_buttontest": [], + "testretroluxury": [], + "testsw": [], + "testsw_vram": [], + "testvulkan_async_compute": [], "tgbdual": [ "TGB Dual" ], + "theodore": [], + "thepowdertoy": [], + "tia": [], + "tic80": [], "touchhle": [ "touchhle-sa" ], + "trident": [], "triforce": [ "dolphin-triforce", "dolphin_triforce" ], + "tyrquake": [], "uae4arm": [ "uae4arm_32b" ], + "ume2015": [], + "uw8": [], + "uxn": [], + "uzem": [], + "vaporspec": [], "vba_next": [ "vba-next" ], "vbam": [ "vba-m" ], + "vecx": [], + "vemulator": [], "vice": [ "vice_x128", "vice_x64", @@ -1708,32 +2085,65 @@ "vice_x64sc": [ "x64sx" ], + "vice_xcbm2": [ + "xcbm2" + ], + "vice_xcbm5x0": [ + "xcbm5x0" + ], + "vice_xpet": [ + "xpet" + ], + "vice_xplus4": [ + "xplus4" + ], "vice_xscpu64": [ "xscpu64" ], "vice_xvic": [ "xvic" ], + "vircon32": [], + "virtualjaguar": [], + "virtualxt": [], "vita3k": [ "vita3k-sa" ], + "vitaquake2": [ + "vitaquake2-rogue", + "vitaquake2-xatrix", + "vitaquake2-zaero" + ], + "vitaquake3": [], + "vitavoyager": [], + "wasm4": [], + "wqxemu": [], "x1": [ "xmil" ], "x1-box": [ "x1box" ], + "x64sdl": [], "xemu": [ "xemu-sa" ], "xenia-edge": [ "xenia_edge" ], + "xrick": [], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "yabause": [], + "yaps2": [], + "ymir": [], + "zc210": [], + "zc255": [] }, "system_cores": { "microsoft-xbox": [ @@ -1844,6 +2254,7 @@ "flycast-dojo", "flycast2021", "flycast2021le", + "parallel_dc", "redream", "reicast", "retrodream" @@ -2422,7 +2833,8 @@ "repo_path": "bios/Sega/Dreamcast/dc_bios.bin", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] } ] @@ -58196,7 +58608,8 @@ "repo_path": "bios/Arcade/Arcade/naomi.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -58217,7 +58630,8 @@ "repo_path": "bios/Arcade/Arcade/f355bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -58228,7 +58642,8 @@ "repo_path": "bios/Arcade/Arcade/f355dlx.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -58239,7 +58654,8 @@ "repo_path": "bios/Arcade/MAME/hod2bios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -58249,7 +58665,8 @@ "size": 7038226, "repo_path": "bios/Arcade/Arcade/naomi2.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] }, { @@ -58260,7 +58677,8 @@ "repo_path": "bios/Arcade/Arcade/awbios.zip", "cores": [ "flycast", - "flycast2021" + "flycast2021", + "parallel_dc" ] }, { @@ -58270,7 +58688,8 @@ "size": 1281424, "repo_path": "bios/Arcade/Arcade/segasp.zip", "cores": [ - "flycast" + "flycast", + "parallel_dc" ] }, { @@ -58280,7 +58699,8 @@ "size": 519984, "repo_path": "bios/Sega/Dreamcast/font.bin", "cores": [ - "flycast2021" + "flycast2021", + "parallel_dc" ], "systems": [ "sega-dreamcast" @@ -60381,6 +60801,7 @@ "size": 1049493, "repo_path": "bios/Sega/Hikaru/hikaru.zip", "cores": [ + "odin", "mame", "mame2009", "mame2010", @@ -69369,12 +69790,23 @@ }, { "dest": "jvs13551.zip", - "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", - "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", - "size": 15088, - "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", "cores": [ - "mame" + "odin" + ], + "alternatives": [ + { + "sha1": "2c79934afdbcfc15684de9b75a520ac196ca75d5", + "sha256": "ecaa2e254c5200ec1a136d06dec3e3d18314f6dc7d26918ebc62296a59051d1e", + "size": 15088, + "repo_path": "bios/Sega/Hikaru/jvs13551.zip", + "cores": [ + "mame" + ] + } ] }, { @@ -70144,6 +70576,7 @@ "size": 725, "repo_path": "bios/Arcade/Arcade/mie.zip", "cores": [ + "odin", "mame" ] }, @@ -76136,6 +76569,16 @@ "mupen64plus_next" ] }, + { + "dest": "IPL.n64", + "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", + "sha256": "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b", + "size": 4194304, + "repo_path": "bios/Nintendo/Nintendo 64DD/64DD_IPL.bin", + "cores": [ + "n64emu" + ] + }, { "dest": "np2/bios.rom", "sha1": "76a7360502fa0296ea93b4c537174610a834d367", @@ -76672,6 +77115,36 @@ ], "category": "game_data" }, + { + "dest": "odin/hikaru.zip", + "sha1": "8ce366388c9e09c5d218d639f19d1d816b59395d", + "sha256": "806a236b5665bbcc4f204e8e877e8c9416d150353a34d469849244bbaa138dbf", + "size": 1049493, + "repo_path": "bios/Sega/Hikaru/hikaru.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/mie.zip", + "sha1": "00f43f5bf58dd79135565d52c4eea7e314ebc810", + "sha256": "98ec06b938a17f65fa4b0ad0439b410ed5e0f11b823320d3ce46b7268932fb8e", + "size": 725, + "repo_path": "bios/Arcade/Arcade/mie.zip", + "cores": [ + "odin" + ] + }, + { + "dest": "odin/jvs13551.zip", + "sha1": "05723a49f8f79507742cb4461743d531f580f677", + "sha256": "0fdcf0b50617cd5efa51b542805b2f119678e399f24416e8698e46d8d63e9ea3", + "size": 12456, + "repo_path": "bios/Arcade/Arcade/jvs13551.zip", + "cores": [ + "odin" + ] + }, { "dest": "omicron/omicron.jar", "sha1": "f64654e8a5275fdd35a18c576167715143ca3316", @@ -110117,8 +110590,8 @@ ], "files": { "adhoc-servers.json": { - "sha1": "a77c56a3516a32138d1197a73cacd68473b4ec87", - "size": 8601 + "sha1": "5558662d3f9a9d23d3b7dbd5ed162d395d1a60d5", + "size": 8662 }, "langregion.ini": { "sha1": "7c5ef48a557dc06fa79c83eb178835cc47b302ad", @@ -110137,8 +110610,8 @@ "size": 32420 }, "compat.ini": { - "sha1": "93a96a00f3b97bcd2a0816e70eaf0a67417ed751", - "size": 55418 + "sha1": "10f5fa01eefc68710606ea251f958deb2b531106", + "size": 55591 }, "sfx_select.wav": { "sha1": "0bd3eabc432b6119507e4fc43354113b68bdbf66", @@ -110389,192 +110862,192 @@ "size": 27664 }, "lang/hu_HU.ini": { - "sha1": "62bc464115cb6f7c7f16ccbc0a3e268f1313f892", - "size": 95289 + "sha1": "de278e87250e8b2c3a06756964dfa51b7cbb84f4", + "size": 97245 }, "lang/cz_CZ.ini": { - "sha1": "075b139746162c7f0b95d1c1bd5bf1caa6075aa2", - "size": 103111 + "sha1": "334d5e4c10a935f54800c633b86e735f8e68565d", + "size": 105532 }, "lang/pl_PL.ini": { - "sha1": "81af60cb8e415001bfbba7da7b2bac7f5563fff7", - "size": 90593 + "sha1": "4aedd2d7df3df1fb39cfa209b97310a8a8f1742b", + "size": 92694 }, "lang/pt_PT.ini": { - "sha1": "4e7f24647541d964eec0ffe3fd94921a3c61ea27", - "size": 93363 + "sha1": "f4d5a7889978fd26ec56718ed7d992a736baa858", + "size": 95555 }, "lang/bg_BG.ini": { - "sha1": "c92465c9028e224521b45a5fcb3355e6da091661", - "size": 137180 + "sha1": "7618153390daca2a3a74fc67d90203549a79662f", + "size": 140520 }, "lang/nl_NL.ini": { - "sha1": "489c29c689a24e874f0c444f748d9d83c5a3c78b", - "size": 99128 + "sha1": "c3ade196aecb760b80727a7ada1ae478bed67ce0", + "size": 101733 }, "lang/lo_LA.ini": { - "sha1": "e45a149a19c180a1d6fcf5ad391e9f7597018fe4", - "size": 99892 + "sha1": "30d8f415ddef2d6148d7042855c5c485bd6f06df", + "size": 97653 }, "lang/jv_ID.ini": { - "sha1": "a9d1919a690bd786646f0c2e69f5857a02a77f13", - "size": 77186 + "sha1": "68e3bde3dae96528c8995d2d7d3aede4814c0a87", + "size": 78604 }, "lang/pt_BR.ini": { - "sha1": "f599e419c30306a32654775cb84837383ec5f142", - "size": 92406 + "sha1": "ea7054c7788989363af7ce2e19a867013e7debf6", + "size": 94624 }, "lang/es_ES.ini": { - "sha1": "0aa4b7f34e60ae79faa75756341d90e3e081a1bc", - "size": 91327 + "sha1": "f4d2af0baa3cd437c5db04e750ec9487093bd775", + "size": 93874 }, "lang/es_LA.ini": { - "sha1": "723d89947af2b6b7afaf1609379f254a185d1ef6", - "size": 92790 + "sha1": "24567fffb9d3029e2dbbeec207dcf6b3dd98cbea", + "size": 95739 }, "lang/lt-LT.ini": { - "sha1": "ad9d1f354774a9dd60183772c6234cf4164f3591", - "size": 108767 + "sha1": "fbe30addf48ed576d2ef0547549dd124574f6024", + "size": 111520 }, "lang/ms_MY.ini": { - "sha1": "e01787788f6cf2fbe4bcfbbf8e34c32c52e355dc", - "size": 86676 + "sha1": "ab399bdf9505a14534b00c4ca6f5a6635405d76e", + "size": 88956 }, "lang/sv_SE.ini": { - "sha1": "515fed64ba7990fee811eb78fcd75e9e211fe6ec", - "size": 86080 + "sha1": "b0ad76fa19a1a0c63466de6b6d7f134512fc30b8", + "size": 87901 }, "lang/th_TH.ini": { - "sha1": "0bff1bb57a2d328e886dc4f7cad3b7a1b00f1050", - "size": 160447 + "sha1": "a91e93c9b55b21c3d3e3b8bf58adb2d50509a820", + "size": 163986 }, "lang/README.md": { "sha1": "5105feaabb525902ecc92eb6cb4bc969943926d5", "size": 1060 }, "lang/be_BY.ini": { - "sha1": "daaaf31d9894c0d394655a191ab3204ac8e9e744", - "size": 131605 + "sha1": "18f590e15845b1b554ad4bb260a019e990cf1207", + "size": 134854 }, "lang/fr_FR.ini": { - "sha1": "546b3f273fdec54490bf728e639d0a773bc99fc2", - "size": 96608 + "sha1": "c13b20dc0f086bf820f0176582010c2fe045289e", + "size": 98779 }, "lang/ja_JP.ini": { - "sha1": "3b38de8657c4248a8eb13c2a1ea51613ff879592", - "size": 106883 + "sha1": "65ea9260430651536dedcda5502887e550e04e93", + "size": 109178 }, "lang/tg_PH.ini": { - "sha1": "f4e86168f5fb3a4f5f4b6c73e31b579ad3db2db7", - "size": 98338 + "sha1": "93e980984c0b9127ea9d5ed4cdb72d2a404a9a3c", + "size": 100172 }, "lang/da_DK.ini": { - "sha1": "1e1679774291a20c81566c4acd6b8b5ce2c0f510", - "size": 99181 + "sha1": "b7583e0bd34dedfc192ed7ea135bf3ab28d15a32", + "size": 101642 }, "lang/ko_KR.ini": { - "sha1": "a476a990efc0d6b5c644803110431dcacf8dcbd2", - "size": 92219 + "sha1": "e1b23267d05416a0a35337e76a14857f4b38cb35", + "size": 94613 }, "lang/he_IL.ini": { - "sha1": "41d24b8e5ca0d2da94669b797159b74753ac547d", - "size": 117842 + "sha1": "9d20de9a8f9f8b4fac2bc9a9c274a3942bae8abf", + "size": 120629 }, "lang/zh_CN.ini": { - "sha1": "45b36bf675a47e35573e7cdd1db1e91d3565dde0", - "size": 80158 + "sha1": "316db031e93e12199c30d8ea6b6405d38b85ee96", + "size": 81965 }, "lang/zh_TW.ini": { - "sha1": "b5c3a2dd4e56d868cc754f1342f76e8b43a7b74c", - "size": 80027 + "sha1": "9bc0cc0963d18214d7b6edb841003148641820e6", + "size": 82871 }, "lang/tr_TR.ini": { - "sha1": "ea447a56ead24e638f133dfb6b0bc92bdcfe025c", - "size": 88198 + "sha1": "fdd4440864699e84f5bc3fef529bb68987a77c00", + "size": 90427 }, "lang/it_IT.ini": { - "sha1": "50071e54348e5b158cec9b15f720383345c4f746", - "size": 90788 + "sha1": "f2528a82f6018154ceb18891a75631de58dfdcff", + "size": 92993 }, "lang/en_US.ini": { - "sha1": "44f70c40289fc9ccc1fcb62abea9ad93b602c043", - "size": 76193 + "sha1": "cf42fb5d206aeb82502af676153cb4c3a2c312ea", + "size": 77458 }, "lang/fi_FI.ini": { - "sha1": "4e979c0f07655b03f49d3382b705e2134fc6ede1", - "size": 95320 + "sha1": "e99b235dcd394fcc097e9e0c23901eaf33b334b1", + "size": 97516 }, "lang/id_ID.ini": { - "sha1": "05e27a2b9d1065656dd5846da42dc25da24344c7", - "size": 86812 + "sha1": "85a2918aff481202ee6ced2718e34a0da25ff287", + "size": 89377 }, "lang/dr_ID.ini": { - "sha1": "114bf46d89c31b8119c29d11df47edae2c59cbd3", - "size": 76337 + "sha1": "f3baa3ec031b11c883cbfd3b642745b831c79a29", + "size": 77653 }, "lang/no_NO.ini": { - "sha1": "b08963c505ef61052bff42c3c2729e5835cc0e6c", - "size": 86524 + "sha1": "c7bdf6783c5bcef23e43e7fde831a1265af7f312", + "size": 88521 }, "lang/nn_NO.ini": { - "sha1": "f530ada278c6d34ed3d685ea32f79a765630e674", - "size": 85688 + "sha1": "8cf53f68593d35bcd3d30cde32d511ef255c3c21", + "size": 87266 }, "lang/fa_IR.ini": { - "sha1": "8adf23b9da03b4a4a776fbe81b5e95200c2880b1", - "size": 123617 + "sha1": "52e6559c1c3ee2d5c5c6fb73bba28c3b144d3518", + "size": 126654 }, "lang/km_KH.ini": { - "sha1": "686e819031b30f7b9a84e44eec9914f426fe91b6", - "size": 133479 + "sha1": "e602d44e971cd64a3df8c0c7f9ef9390dc898bf8", + "size": 134413 }, "lang/ru_RU.ini": { - "sha1": "eba5d6a73085898f618aa4431ae5d586d8e05fc5", - "size": 120323 + "sha1": "16c4f3accb92b23d7ae457b794dbde89cb678f1f", + "size": 122897 }, "lang/gl_ES.ini": { - "sha1": "a2702c2d700e0bdd5afc36d570ad411247b98c7c", - "size": 104430 + "sha1": "b5d9fbd461a39ad885654227ec408601fd703705", + "size": 107723 }, "lang/az_AZ.ini": { - "sha1": "8cd66c0fb0fa15ef5eb72934dea41584a4c1c04d", - "size": 90580 + "sha1": "de76d658cd5246c4179a6d7bd4e27653446e1a0b", + "size": 92982 }, "lang/ar_AE.ini": { - "sha1": "ce1a1ce3ac023e98d71367419c03d658ddef0295", - "size": 118966 + "sha1": "1afa4df95fb907ada51316f5193f23d70c90ded6", + "size": 121633 }, "lang/ca_ES.ini": { - "sha1": "cc8f48bce5a0f36264d4e736112a900f44d75ac2", - "size": 103450 + "sha1": "8069d0d089e33c91c2c7f0c354af1f4337367fd3", + "size": 106395 }, "lang/uk_UA.ini": { - "sha1": "f99dfc697f1421dbdaf3e63f90b7445616b6eeb4", - "size": 121974 + "sha1": "372602e7ac8932b996d5e45efd933407d4c71142", + "size": 125365 }, "lang/hr_HR.ini": { - "sha1": "2a1683617b15fc87d5c65ee10643678cc7a6942b", - "size": 97390 + "sha1": "d3087379bdd667114e9274249bc1aee28130149c", + "size": 101780 }, "lang/gr_EL.ini": { - "sha1": "3e3af34b6e0f4bdc5fd0104eca2fd8ece34cff81", - "size": 141184 + "sha1": "1a4f5228ed8e3e8fdf9439a19e8bfda60778bb72", + "size": 145351 }, "lang/ro_RO.ini": { - "sha1": "2008bd5d76358254241e8068166d451576afa146", - "size": 105331 + "sha1": "2a4766c10247e2d70ff788e4bd8dc68299fffb84", + "size": 108277 }, "lang/vi_VN.ini": { - "sha1": "50eac6e6d13ca73e66d360f48c04f82a354f57a9", - "size": 107309 + "sha1": "e541f118ca8d2892684295362ea612f31d5a05a1", + "size": 110950 }, "lang/ku_SO.ini": { - "sha1": "3441400f9fce479f08461e067eeb6cb115b5fbdf", - "size": 82657 + "sha1": "6a8e59a115b90afbc84d1f186d465d5affeada71", + "size": 83141 }, "lang/de_DE.ini": { - "sha1": "9503d714683d9136308969ffc214a4055ef39db6", - "size": 89702 + "sha1": "70257269898a93d531862ef99958758a6d3a0ac5", + "size": 91888 }, "shaders/naturalA.vsh": { "sha1": "f758f44549d685db9e9fb386b2f8bb14c3cee9c6", @@ -110794,7 +111267,7 @@ } }, "strip_components": 1, - "archive_size": 9844388, + "archive_size": 9863645, "cores": [ "ppsspp" ] diff --git a/install/romm.json b/install/romm.json index a9b713659..2ced5bce4 100644 --- a/install/romm.json +++ b/install/romm.json @@ -6,7 +6,7 @@ "platform": "romm", "display_name": "RomM", "version": "5.4.0", - "generated": "2026-11-05T18:33:47Z", + "generated": "2026-11-06T07:21:27Z", "base_destination": "bios", "detect": [ { @@ -8207,9 +8207,14 @@ "3dsen": [ "3dsen-windows" ], + "a5200": [], "ace-dl": [ "acedl" ], + "advanced_drastic": [ + "DraStic-original", + "drastic - standalone" + ], "advancemame": [ "AdvanceMame", "advmame" @@ -8227,11 +8232,14 @@ "armsx2-sa", "armsx2_libretro" ], + "atari800": [], "azahar": [ + "azahar - standalone", "azahar-sa" ], "basiliskii": [ - "basilisk" + "basilisk", + "basilisk2" ], "beetle_gba": [ "mednafen_gba" @@ -8240,6 +8248,10 @@ "beetle-lynx", "mednafen_lynx" ], + "beetle_ngp": [ + "beetle-ngp", + "mednafen_ngp" + ], "beetle_pce": [ "beetle-pce", "mednafen_pce", @@ -8259,6 +8271,16 @@ "beetle-saturn", "mednafen_saturn" ], + "beetle_vb": [ + "beetle-vb", + "mednafen_vb", + "vb" + ], + "beetle_wswan": [ + "beetle-wswan", + "mednafen_wswan" + ], + "bsnes": [], "bsnes-jg": [ "bsnes_jg" ], @@ -8285,27 +8307,38 @@ "chocolate-doom": [ "Chocolate-Doom" ], + "clk": [], + "crocods": [], "cxbx-reloaded": [ "cxbx" ], "cxbx-reloaded-2023": [ "chihiro" ], + "desmume": [], "desmume2015": [ "desmume_2015" ], + "directxbox": [], "dolphin": [ "dolphin-gui", - "dolphin-sa" + "dolphin-qt-gc", + "dolphin-qt-wii", + "dolphin-sa", + "dolphin-sa-gc", + "dolphin-sa-wii" ], + "dolphin_launcher": [], "dosbox-x": [ "dosboxx" ], + "dosbox_pure": [], "doublecherrygb": [ "DoubleCherryGB" ], "drastic": [ - "drastic-sa" + "drastic-sa", + "drastic_standalone" ], "droidarcadia": [ "com.amigan.droidarcadia" @@ -8330,19 +8363,28 @@ "fbalpha2012": [ "fbalpha" ], + "fbalpha2012_cps1": [], + "fbalpha2012_cps2": [], "fbneo": [ - "FBNEOSA" + "FBNEOSA", + "fbneo_32b", + "fbneo_plus", + "km_fbneo_xtreme_amped" ], + "fceumm": [], "fpse-ng": [ "fpse64", "fpseng" ], + "freeintv": [], + "freej2me": [], "freej2me_plus": [ "freej2me-plus" ], "fuse": [ "fuse_libretro" ], + "gambatte": [], "gba-emu": [ "GBA-EMU", "GBA.emu" @@ -8351,6 +8393,7 @@ "GBC-EMU", "GBC.emu" ], + "gearcoleco": [], "genesis_plus_gx": [ "genesis-plus-gx", "genesis_plus_gx_cart_special", @@ -8365,12 +8408,18 @@ "genesisplusgx-wide", "genesisplusgxwide" ], + "gpsp": [ + "gpsp_ezode_mod", + "gpsp_plus" + ], "gzdoom": [ "GZDoom", "gzdoom-sa" ], + "handy": [], "hatari": [ "HATARISA", + "hatari-fast", "hatarisa" ], "higan_sfc_balanced": [ @@ -8380,6 +8429,7 @@ "diii4a", "idtech4amm" ], + "ishiiruka": [], "j2me-loader": [ "J2ME-LOADER" ], @@ -8416,6 +8466,7 @@ "mame2000": [ "imame4all" ], + "mame2003": [], "mame2003_plus": [ "mame078plus", "mame2003-plus" @@ -8477,13 +8528,18 @@ "mesen2" ], "mgba": [ - "mgba_fork" + "mgba_fork", + "mgba_rumble", + "msgb" ], + "minivmac": [], "msx-emu": [ "MSX-EMU", "MSX.emu" ], "mupen64plus": [ + "mupen64plus - standalone - glidemk2 - full", + "mupen64plus-auto", "mupen64plus-sa", "mupen64plussa" ], @@ -8525,6 +8581,7 @@ "NESOID", "Nesoid" ], + "nestopia": [], "nethersx2": [ "NETHERSX2", "NetherSX2" @@ -8537,9 +8594,14 @@ "NETHERSX2-TURNIP-CLASSIC", "NetherSX2-Turnip-Classic" ], + "np2kai": [], "o2em": [ "o2em_libretro" ], + "openmsx": [ + "openmsx-ld" + ], + "opera": [], "parallel-launcher": [ "ca.parallel_launcher.ParallelLauncher" ], @@ -8554,18 +8616,25 @@ "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" ], + "picodrive": [], "pizza-boy-gba": [ "PIZZA-BOY-GBA", "Pizza Boy GBA" @@ -8583,13 +8652,18 @@ "play": [ "play!" ], + "pokemini": [], "ppsspp": [ "PPSSPPSDL", "ppsspp-sa" ], + "prboom": [], + "primehack": [], + "prosystem": [], "puae": [ "uae" ], + "px68k": [], "px68k-sdl": [ "px68k" ], @@ -8602,11 +8676,13 @@ "com.github.Rosalie241.RMG", "mupen64" ], + "same_cdi": [], "saturn-emu": [ "SATURN-EMU", "Saturn.emu", "saturnemu" ], + "scummvm": [], "scummvm-standalone": [ "SCUMMVMSA", "scummvm-sa" @@ -8632,6 +8708,8 @@ "com.fms.speccy", "com.fms.speccy.deluxe" ], + "squirreljme": [], + "stella2014": [], "superzsnes": [ "SUPERZSNES" ], @@ -8660,9 +8738,19 @@ "vice_x64": [ "x64" ], + "vice_x64sc": [ + "x64sx" + ], + "vice_xpet": [ + "xpet" + ], + "vice_xplus4": [ + "xplus4" + ], "vice_xvic": [ "xvic" ], + "virtualjaguar": [], "x1": [ "xmil" ], @@ -8686,9 +8774,12 @@ ], "yabasanshiro": [ "yabasanshiro-2", + "yabasanshiro-libretro", "yabasanshiro-sa", - "yabasanshiroSA" - ] + "yabasanshiroSA", + "yabasanshiroSA1_5" + ], + "yabause": [] }, "system_cores": { "3do": [ @@ -8904,6 +8995,7 @@ "mupen64plus", "mupen64plus-ae", "mupen64plus_next", + "n64emu", "parallel-launcher", "parallel_n64", "project64", diff --git a/schemas/install-events.schema.json b/schemas/install-events.schema.json index 8fb69ecd2..a252c8fce 100644 --- a/schemas/install-events.schema.json +++ b/schemas/install-events.schema.json @@ -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, diff --git a/schemas/install-manifest.schema.json b/schemas/install-manifest.schema.json index 0dbcecd40..d60fb84b0 100644 --- a/schemas/install-manifest.schema.json +++ b/schemas/install-manifest.schema.json @@ -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", diff --git a/scripts/generate_event_schema.py b/scripts/generate_event_schema.py index ba8c9ce49..8b9eab202 100644 --- a/scripts/generate_event_schema.py +++ b/scripts/generate_event_schema.py @@ -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), diff --git a/scripts/generate_pack.py b/scripts/generate_pack.py index a425cbf06..588ca96b5 100644 --- a/scripts/generate_pack.py +++ b/scripts/generate_pack.py @@ -5128,14 +5128,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 @@ -5146,7 +5147,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: diff --git a/tests/test_install_cores.py b/tests/test_install_cores.py index 7594890fe..a4e3c88ab 100644 --- a/tests/test_install_cores.py +++ b/tests/test_install_cores.py @@ -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") diff --git a/wiki/installer.md b/wiki/installer.md index dd8ed51b2..a9225961c 100644 --- a/wiki/installer.md +++ b/wiki/installer.md @@ -410,13 +410,13 @@ A RetroArch dry run into an empty folder, with the list of 2026-11-06, printed t ``` Fetching file index for retroarch... 106 files read from RetroArch's save directory go to a folder per core under /home/me/.config/retroarch/saves - 14930 files (6.7 GB) - 3260 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.5 MB). + 14934 files (6.8 GB) + 3264 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.6 MB). Game data: files a game or a game engine reads, of no use to the other cores. Data files: the files an emulator reads from a data folder of its own, such as Dolphin's Sys and PPSSPP's assets. - Not installable: 37 files are not in the collection, 2 of them required. + Not installable: 43 files are not in the collection, 4 of them required. Checking existing files... - 0 in place, 14930 missing, 0 wrong copies + 0 in place, 14934 missing, 0 wrong copies ``` @@ -760,11 +760,11 @@ by `scripts/generate_installer_doc.py`): ``` -RetroArch: 14930 files, 6.7 GB. - 3260 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.5 MB). +RetroArch: 14934 files, 6.8 GB. + 3264 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.6 MB). Game data: files a game or a game engine reads, of no use to the other cores. Data files: the files an emulator reads from a data folder of its own, such as Dolphin's Sys and PPSSPP's assets. BIOS folder: /home/me/.config/retroarch/system - Not available here, and needed to start its emulator: sfiii2a.zip (Capcom Cps3). Your own copy goes in the BIOS folder. + Not available here, and needed to start their emulators: hyperscanemu/hyperscan.bin (Mattel Hyperscan), hyperscanemu/spg290.bin (Mattel Hyperscan), sfiii2a.zip (Capcom Cps3). Your own copy goes in the BIOS folder. Not available here: jazz2/Source/Anims.j2a (Jazz Jackrabbit 2), game data its game reads. Copy it from your own copy of the game into /home/me/.config/retroarch/system/jazz2/Source/. Enter) install everything c) choose systems, cores and regions @@ -775,11 +775,11 @@ RetroArch: 14930 files, 6.7 GB. Counted again for your choices. Nothing is written before Enter. -RetroArch: 9841 files, 4.2 GB. - 3260 BIOS files (4.1 GB) and 6581 data files (135.5 MB). 5089 game data files left out. +RetroArch: 9845 files, 4.2 GB. + 3264 BIOS files (4.1 GB) and 6581 data files (135.6 MB). 5089 game data files left out. Game data: files a game or a game engine reads, of no use to the other cores. Data files: the files an emulator reads from a data folder of its own, such as Dolphin's Sys and PPSSPP's assets. BIOS folder: /home/me/.config/retroarch/system - Not available here, and needed to start its emulator: sfiii2a.zip (Capcom Cps3). Your own copy goes in the BIOS folder. + Not available here, and needed to start their emulators: hyperscanemu/hyperscan.bin (Mattel Hyperscan), hyperscanemu/spg290.bin (Mattel Hyperscan), sfiii2a.zip (Capcom Cps3). Your own copy goes in the BIOS folder. Same choice without questions: python3 install.py --platform retroarch --dest /home/me/.config/retroarch/system --no-game-data Enter) install everything c) choose systems, cores and regions @@ -1808,6 +1808,7 @@ other schemas under `api/v1/schemas/`. | `scanned` | `folder`, `files`, `truncated`, `other_drives` | Each folder named with `--from`, once read and before `detect`. `files` counts the files found, `truncated` is true when the search stopped at 200,000 of them, and `other_drives` lists the folders below it on another drive, which were not entered | | `version` | `platform`, `list_version`, `installed_version`, `message` | Before `choices`, when the system here runs another version than the one the list was built for: `list_version` is the list's, `installed_version` the one the system's version file states, and `message` says it and what it means. Not written when either version is unknown. The run goes on | | `board` | `platform`, `board`, `applied`, `message` | Before `choices`, with no `--target` and no `--every-board`, when the system names its board or a Batocera or KNULLI card mounted here does (`boot/batocera.board` or `boot/knulli.board` on its boot partition, `board` then being the board its image maps to): `applied` is true when the run keeps that board's files only, false for a board the platform's list does not name, which keeps every board's files. `message` says it | +| `unknown_core` | `platform`, `core`, `info`, `dests`, `message` | With `--installed-cores`, before `choices`, once for each installed core the list has no profile for. `info` is true when its RetroArch `.info` was found, and `dests` are the `firmware_path` values it declares, kept whatever the narrowing drops. A core without a `.info` keeps nothing it alone reads, and `message` says so | | `choices` | `platform`, `systems` | Before `checking`: the systems the run's list lets one choose among, sorted by id, `other` last for the files no system names. The run's other options apply (`--core`, `--region`, `--no-game-data`, the files left out for an unknown save directory), `--system` does not: these are the systems a screen lists to choose from, and the count a `--system` is out of | | `set_aside` | `platform`, `dests` | Right after `choices`: the files of the list the run sets aside before any choice, in list order, those read from a save directory whose place is not known among them. A screen chooses its cores among the rest, the cores `--core` accepts | | `file` | `platform`, `dest`, `systems`, `size`, `state` | Each file of the list after the check. `state` is `present` (hash verified), `wrong_hash` or `missing` | diff --git a/wiki/reading-reports.md b/wiki/reading-reports.md index 844d03a78..b6722f695 100644 --- a/wiki/reading-reports.md +++ b/wiki/reading-reports.md @@ -107,13 +107,13 @@ RetroDECK: 2007/2008 OK, 1 untested [md5] UNTESTED (required): nintendo-ds/dsifirmware.bin: declared hash contradicted by the local file DISCREPANCY: nintendo-snes/sgb2.boot.rom: RetroDECK says OK but supersnes9x says size mismatch: got 524288, accepted [256] supersnes9x [size] - Core files: 1764 in pack, 1 required missing, 26 optional missing (--verbose lists them) + Core files: 1768 in pack, 3 required missing, 30 optional missing (--verbose lists them) Core files held but not packed: 154 (142 installed with its emulator, 8 read below a save folder per system and no system runs the core there, 4 a packed file occupies its directory) MISSING (required): FinalBurn Neo needs sfiii2a.zip (1 file) Bundled with their emulator, not collected: 20 (--verbose lists them) Game data: 5099 in pack, 30 missing (--verbose lists them) Game data held but not packed: 30 (installed with its emulator) - No external files: 78 cores (--verbose lists them) + No external files: 79 cores (--verbose lists them) Ground truth: 97/2008 files have emulator validation (5%) 439 platform-only (no emulator profile) ``` From 30e85b153c778f63aaf9fd7997ff240ac2c41dc3 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:16:19 +0100 Subject: [PATCH 3/6] chore: rescrape six platforms MiSTer gains FM-7, Sharp X1 and VideoBrain boot ROMs, RetroArch three CD-i files, RetroPie fake08, RomM 5.4.1. RetroBat follows emulatorLauncher ca486005 (FM Towns reduced to the four ROMs Geartowns reads), ROCKNIX 20261101 (AetherSX2 dropped upstream, its PS2 BIOS now under armsx2/). EmuDeck targets gain the new buildbot cores. --- platforms/misterfpga.yml | 60 +++++- platforms/retroarch.yml | 26 ++- platforms/retrobat.yml | 374 +++++++++++++++++++--------------- platforms/retropie.yml | 18 +- platforms/rocknix.yml | 45 ++-- platforms/romm.yml | 4 +- platforms/targets/emudeck.yml | 22 +- 7 files changed, 335 insertions(+), 214 deletions(-) diff --git a/platforms/misterfpga.yml b/platforms/misterfpga.yml index 0b3cc3abd..99f902fe8 100644 --- a/platforms/misterfpga.yml +++ b/platforms/misterfpga.yml @@ -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: diff --git a/platforms/retroarch.yml b/platforms/retroarch.yml index 7bdc93997..27d6e206b 100644 --- a/platforms/retroarch.yml +++ b/platforms/retroarch.yml @@ -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 diff --git a/platforms/retrobat.yml b/platforms/retrobat.yml index b4dbadaf0..eed5e187e 100644 --- a/platforms/retrobat.yml +++ b/platforms/retrobat.yml @@ -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 @@ -2639,6 +2577,65 @@ systems: native_system: ps2 native_path: bios/pcsx2/bios/ps2-0230a-20080220.bin 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + native_name: PS2 name: PS2 sony-playstation: files: @@ -2736,7 +2733,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 +2903,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 +3529,7 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3543,7 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3557,7 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3571,7 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3585,8 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3599,8 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3614,7 @@ launchers: passes_to: copied to /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 +3627,8 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3641,8 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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 +3656,20 @@ launchers: search_dir: bios, bios/amiga, bios/Amiga passes_to: copied to /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: - case_insensitive: false - search_dir: , then bios + search_dir: , then the folder above it for a CHD-only set, then bios passes_to: "settings.ini [BIOS] SearchDirectory = " fails_when_missing: "ApplicationException 'Missing BIOS '' : 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 +3677,13 @@ launchers: - konamigv.zip slot: konami_gv case_insensitive: false - search_dir: , then bios + search_dir: , then the folder above it for a CHD-only set, then bios passes_to: "settings.ini [BIOS] SearchDirectory = " fails_when_missing: "ApplicationException 'Missing BIOS '' : 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 +3692,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 +3705,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 +3716,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 +3792,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 +3802,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 +3812,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 +3822,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 +3832,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 +3842,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 +3852,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 +3861,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 +3873,7 @@ launchers: passes_to: copied to /, 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 +3902,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 +3914,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 +3951,7 @@ launchers: search_dir: bios/scummvm/extra passes_to: copied to /system/, 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 +3963,7 @@ launchers: passes_to: copied to /mt32-roms/, 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 +3975,7 @@ launchers: passes_to: copied to /soundfonts/, 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 +3984,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 +4000,7 @@ launchers: passes_to: "settings.ini [BIOS] PathNTSCJ = PathNTSCU = PathPAL = " 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 +4017,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 +4026,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 +4035,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 +4044,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 = + 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 +4322,10 @@ launchers: case_insensitive: true search_dir: bios passes_to: "hatari.cfg [ROM] szTosImageFileName=/tos.img" - fails_when_missing: ApplicationException 'Missing TOS file 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 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 +4340,33 @@ launchers: passes_to: "hatari.cfg [ROM] szTosImageFileName=/hatari/tos/" fails_when_missing: ApplicationException 'Missing TOS file 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=/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=" + 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 +4376,11 @@ launchers: - tos104.img - tos102.img - emutos.img - search_dir: bios - passes_to: hatari_tosimage = | 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 = , 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 +4390,15 @@ launchers: search_dir: bios passes_to: hatarib_tos = fails_when_missing: falls back to hatarib_tos = - depends_on_option: hatarib_tos unset - source_ref: "emulatorLauncher/Generators/LibRetro.CoreOptions.cs:3191-3195" + depends_on_option: hatarib_tos unset or tosimg; 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 +4406,20 @@ launchers: case_insensitive: true search_dir: bios/hatarib passes_to: hatarib_tos = hatarib/ - fails_when_missing: option not written when the file is absent + fails_when_missing: hatarib_tos = , or 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/, 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 +4454,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 +4464,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 +4475,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 +4488,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 +4500,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 +4510,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 +4520,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 +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: mame64 build: standalone kind: passes_path @@ -4502,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, 665-666" + source_ref: "emulatorLauncher/Generators/MessSystem.cs:613, 661, 666-667" - emulator: mame build: libretro kind: passes_path @@ -4512,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: mame64 build: standalone kind: passes_path @@ -4520,7 +4558,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 +4566,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 +4602,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 +4789,7 @@ launchers: passes_to: "kronos.ini [1.0] General\\Bios = /, 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 +4802,7 @@ launchers: passes_to: "SSF.ini [Peripheral] SaturnBIOS = /, 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 +4827,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 +4852,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 +4930,7 @@ launchers: fails_when_missing: ApplicationException 'BIOS file does not exist in ''.' 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 +4942,7 @@ launchers: passes_to: pcsx2_bios = fails_when_missing: ApplicationException 'No valid PS2 BIOS file found in ''.' 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 +4954,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 +4966,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 +4978,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 +4990,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 +5002,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 +5014,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 +5026,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 +5043,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 +5055,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 +5106,7 @@ launchers: passes_to: ".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 +5115,7 @@ launchers: passes_to: ".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 +5285,7 @@ launchers: passes_to: "xemu.toml [sys.files] flashrom_path=/, 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 diff --git a/platforms/retropie.yml b/platforms/retropie.yml index 079aa6f48..2402aa0dc 100644 --- a/platforms/retropie.yml +++ b/platforms/retropie.yml @@ -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 diff --git a/platforms/rocknix.yml b/platforms/rocknix.yml index 7156ead17..c399951a7 100644 --- a/platforms/rocknix.yml +++ b/platforms/rocknix.yml @@ -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 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 diff --git a/platforms/romm.yml b/platforms/romm.yml index 1d2013572..bcd67e332 100644 --- a/platforms/romm.yml +++ b/platforms/romm.yml @@ -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 diff --git a/platforms/targets/emudeck.yml b/platforms/targets/emudeck.yml index e20859dc3..f1d308507 100644 --- a/platforms/targets/emudeck.yml +++ b/platforms/targets/emudeck.yml @@ -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 From abf0f06fa9949ea435434a249729445b0bcc75cd Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:16:25 +0100 Subject: [PATCH 4/6] fix: read the launchers emulatorLauncher has now ArcadeDuck searches the folder above a CHD-only set, GSplus writes the first of four ROM names it finds, Hatari falls back on EmuTOS, hatariB copies a TOS from bios/hatari/tos, and #region lines precede method headers. ROCKNIX renamed start_hatari.sh and dropped aethersx2-sa. --- scripts/scraper/retrobat_launchers.py | 276 ++++++++++++++++++++------ scripts/scraper/rocknix_launchers.py | 22 +- tests/test_launchers_retrobat.py | 38 +++- 3 files changed, 249 insertions(+), 87 deletions(-) diff --git a/scripts/scraper/retrobat_launchers.py b/scripts/scraper/retrobat_launchers.py index e0f17f647..6ef1898a5 100644 --- a/scripts/scraper/retrobat_launchers.py +++ b/scripts/scraper/retrobat_launchers.py @@ -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}=/{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}=/{'/'.join(folders)}/", 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}=/{'/'.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}=", + 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)} = | {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)} = , 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)}/", - 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)}/", + 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)}/, 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} = ", + 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 \{ Path\.GetDirectoryName\(Path\.GetFullPath\(rom\)\) \};", + r"string romDir = Path\.GetDirectoryName\(Path\.GetFullPath\(rom\)\);\s*" + r"var candidates = new List \{ 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""], ref, case_insensitive=False, - search_dir=", then bios", + search_dir=", then the folder above it for a CHD-only set, then bios", passes_to=f"{target} = ", 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=", then bios", + search_dir=", then the folder above it for a CHD-only set, then bios", passes_to=f"{target} = ", fails_when_missing=message, depends_on_option=f"{database_file} names no archive for {fixed.group(1)}", diff --git a/scripts/scraper/rocknix_launchers.py b/scripts/scraper/rocknix_launchers.py index 8aed25540..f6eae2840 100644 --- a/scripts/scraper/rocknix_launchers.py +++ b/scripts/scraper/rocknix_launchers.py @@ -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, diff --git a/tests/test_launchers_retrobat.py b/tests/test_launchers_retrobat.py index 4d1591452..3f33dd13b 100644 --- a/tests/test_launchers_retrobat.py +++ b/tests/test_launchers_retrobat.py @@ -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 in 'bios' folder.'" self.assertEqual(fixed["names"], ["tos.img"]) - self.assertEqual( - fixed["fails_when_missing"], - "ApplicationException 'Missing TOS file 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]: From 14e85924b0984db02456b0f5a3137cef8eabe3de Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:16:25 +0100 Subject: [PATCH 5/6] chore: refresh fbneo recipes and redump games --- games/catalogs/redump/sega-saturn.json | 4 +- games/catalogs/redump/sony-playstation-2.json | 2 +- games/catalogs/redump/sony-playstation.json | 13 +- recipes/fbneo.json | 500 +++++++++++++++++- 4 files changed, 495 insertions(+), 24 deletions(-) diff --git a/games/catalogs/redump/sega-saturn.json b/games/catalogs/redump/sega-saturn.json index d07fc9288..8e0e7ebd5 100644 --- a/games/catalogs/redump/sega-saturn.json +++ b/games/catalogs/redump/sega-saturn.json @@ -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"]], diff --git a/games/catalogs/redump/sony-playstation-2.json b/games/catalogs/redump/sony-playstation-2.json index fef2827c1..fe2ff3705 100644 --- a/games/catalogs/redump/sony-playstation-2.json +++ b/games/catalogs/redump/sony-playstation-2.json @@ -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"]], diff --git a/games/catalogs/redump/sony-playstation.json b/games/catalogs/redump/sony-playstation.json index 2064d51ee..9a3f2b196 100644 --- a/games/catalogs/redump/sony-playstation.json +++ b/games/catalogs/redump/sony-playstation.json @@ -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"]], diff --git a/recipes/fbneo.json b/recipes/fbneo.json index 47e3492e9..63e832e3f 100644 --- a/recipes/fbneo.json +++ b/recipes/fbneo.json @@ -1,6 +1,6 @@ { "source": "fbneo", - "imported_at": "2026-10-21", + "imported_at": "2026-11-09", "dats": { "FinalBurn Neo - Arcade Games": "1.0.0.03", "FinalBurn Neo - Astrocade Home Computer Games": "1.0.0.03", @@ -1024,6 +1024,131 @@ "FinalBurn Neo - Arcade Games" ] }, + { + "dat": "FinalBurn Neo - Arcade Games", + "name": "dotron.zip", + "set": "dotron", + "description": "Discs of Tron (Upright, 10/4/83)", + "members": [ + { + "name": "82s123.12d", + "size": 32, + "crc32": "e1281ee9", + "sha1": "" + }, + { + "name": "disc_tron_uprt_pg0_10-4-83.1c", + "size": 16384, + "crc32": "40d00195", + "sha1": "" + }, + { + "name": "disc_tron_uprt_pg1_10-4-83.2c", + "size": 16384, + "crc32": "5a7d1300", + "sha1": "" + }, + { + "name": "disc_tron_uprt_pg2_10-4-83.3c", + "size": 16384, + "crc32": "cb89c9be", + "sha1": "" + }, + { + "name": "disc_tron_uprt_pg3_10-4-83.4c", + "size": 8192, + "crc32": "5098faf4", + "sha1": "" + }, + { + "name": "disc_tron_uprt_snd0_10-4-83.a7", + "size": 4096, + "crc32": "7fb54293", + "sha1": "" + }, + { + "name": "disc_tron_uprt_snd1_10-4-83.a8", + "size": 4096, + "crc32": "edef7326", + "sha1": "" + }, + { + "name": "disc_tron_uprt_snd2_9-22-83.a9", + "size": 4096, + "crc32": "e8ef6519", + "sha1": "" + }, + { + "name": "disc_tron_uprt_snd3_9-22-83.a10", + "size": 4096, + "crc32": "6b5aeb02", + "sha1": "" + }, + { + "name": "loc-a.cp0", + "size": 8192, + "crc32": "b35f5374", + "sha1": "" + }, + { + "name": "loc-b.cp9", + "size": 8192, + "crc32": "565a5c48", + "sha1": "" + }, + { + "name": "loc-bg1.5f", + "size": 8192, + "crc32": "bb2d7a5d", + "sha1": "" + }, + { + "name": "loc-bg2.6f", + "size": 8192, + "crc32": "40167124", + "sha1": "" + }, + { + "name": "loc-c.cp8", + "size": 8192, + "crc32": "ef45d146", + "sha1": "" + }, + { + "name": "loc-d.cp7", + "size": 8192, + "crc32": "5e8a3ef3", + "sha1": "" + }, + { + "name": "loc-e.cp6", + "size": 8192, + "crc32": "ce957f1a", + "sha1": "" + }, + { + "name": "loc-f.cp5", + "size": 8192, + "crc32": "d26053ce", + "sha1": "" + }, + { + "name": "loc-g.cp4", + "size": 8192, + "crc32": "57a2b1ff", + "sha1": "" + }, + { + "name": "loc-h.cp3", + "size": 8192, + "crc32": "3bb4d475", + "sha1": "" + } + ], + "dats": [ + "FinalBurn Neo - Arcade Games" + ] + }, { "dat": "FinalBurn Neo - Arcade Games", "name": "fireshrk.zip", @@ -4416,6 +4541,215 @@ "FinalBurn Neo - Arcade Games" ] }, + { + "dat": "FinalBurn Neo - Arcade Games", + "name": "sfiii2a.zip", + "set": "sfiii2a", + "description": "Street Fighter III 2nd Impact: Giant Attack (Asia 970930)", + "members": [ + { + "name": "sfiii2-simm1.0", + "size": 2097152, + "crc32": "2d666f0b", + "sha1": "" + }, + { + "name": "sfiii2-simm1.1", + "size": 2097152, + "crc32": "2a3a8ef6", + "sha1": "" + }, + { + "name": "sfiii2-simm1.2", + "size": 2097152, + "crc32": "161d2206", + "sha1": "" + }, + { + "name": "sfiii2-simm1.3", + "size": 2097152, + "crc32": "87ded8a3", + "sha1": "" + }, + { + "name": "sfiii2-simm2.0", + "size": 2097152, + "crc32": "94a4ce0f", + "sha1": "" + }, + { + "name": "sfiii2-simm2.1", + "size": 2097152, + "crc32": "67585033", + "sha1": "" + }, + { + "name": "sfiii2-simm2.2", + "size": 2097152, + "crc32": "fabffcd5", + "sha1": "" + }, + { + "name": "sfiii2-simm2.3", + "size": 2097152, + "crc32": "623c09ca", + "sha1": "" + }, + { + "name": "sfiii2-simm3.0", + "size": 2097152, + "crc32": "dab2d766", + "sha1": "" + }, + { + "name": "sfiii2-simm3.1", + "size": 2097152, + "crc32": "1f2aa34b", + "sha1": "" + }, + { + "name": "sfiii2-simm3.2", + "size": 2097152, + "crc32": "6f1a04eb", + "sha1": "" + }, + { + "name": "sfiii2-simm3.3", + "size": 2097152, + "crc32": "e05ef205", + "sha1": "" + }, + { + "name": "sfiii2-simm3.4", + "size": 2097152, + "crc32": "affb074f", + "sha1": "" + }, + { + "name": "sfiii2-simm3.5", + "size": 2097152, + "crc32": "6962872e", + "sha1": "" + }, + { + "name": "sfiii2-simm3.6", + "size": 2097152, + "crc32": "6eed87de", + "sha1": "" + }, + { + "name": "sfiii2-simm3.7", + "size": 2097152, + "crc32": "e18f479e", + "sha1": "" + }, + { + "name": "sfiii2-simm4.0", + "size": 2097152, + "crc32": "764c2503", + "sha1": "" + }, + { + "name": "sfiii2-simm4.1", + "size": 2097152, + "crc32": "3e16af6e", + "sha1": "" + }, + { + "name": "sfiii2-simm4.2", + "size": 2097152, + "crc32": "215705e6", + "sha1": "" + }, + { + "name": "sfiii2-simm4.3", + "size": 2097152, + "crc32": "e30cbd9c", + "sha1": "" + }, + { + "name": "sfiii2-simm4.4", + "size": 2097152, + "crc32": "4185ded9", + "sha1": "" + }, + { + "name": "sfiii2-simm4.5", + "size": 2097152, + "crc32": "4e8db013", + "sha1": "" + }, + { + "name": "sfiii2-simm4.6", + "size": 2097152, + "crc32": "08df48ce", + "sha1": "" + }, + { + "name": "sfiii2-simm4.7", + "size": 2097152, + "crc32": "bb8f80a5", + "sha1": "" + }, + { + "name": "sfiii2-simm5.0", + "size": 2097152, + "crc32": "ebdc4787", + "sha1": "" + }, + { + "name": "sfiii2-simm5.1", + "size": 2097152, + "crc32": "6b7c550e", + "sha1": "" + }, + { + "name": "sfiii2-simm5.2", + "size": 2097152, + "crc32": "56ff8c50", + "sha1": "" + }, + { + "name": "sfiii2-simm5.3", + "size": 2097152, + "crc32": "3f2ac3e9", + "sha1": "" + }, + { + "name": "sfiii2-simm5.4", + "size": 2097152, + "crc32": "48cda50e", + "sha1": "" + }, + { + "name": "sfiii2-simm5.5", + "size": 2097152, + "crc32": "520c0af6", + "sha1": "" + }, + { + "name": "sfiii2-simm5.6", + "size": 2097152, + "crc32": "2edc5986", + "sha1": "" + }, + { + "name": "sfiii2-simm5.7", + "size": 2097152, + "crc32": "93ffa199", + "sha1": "" + }, + { + "name": "sfiii2_asia.29f400.u2", + "size": 524288, + "crc32": "4518d589", + "sha1": "" + } + ], + "dats": [ + "FinalBurn Neo - Arcade Games" + ] + }, { "dat": "FinalBurn Neo - Arcade Games", "name": "sfiii2h.zip", @@ -7161,6 +7495,113 @@ "FinalBurn Neo - Arcade Games" ] }, + { + "dat": "FinalBurn Neo - Arcade Games", + "name": "svgpcb.zip", + "set": "svgpcb", + "description": "S.V.G. - Spectral vs Generation / Sheng Mo Shiji (M68k label V100JP) (ARM label V100JP, ROM 05/12/05 S.V.G V100) (Japan, JAMMA PCB)", + "members": [ + { + "name": "igs_a05601w064.u44", + "size": 8388608, + "crc32": "ea6453e4", + "sha1": "" + }, + { + "name": "igs_a05602w064.u45", + "size": 8388608, + "crc32": "6d00621b", + "sha1": "" + }, + { + "name": "igs_a05603w064.u46", + "size": 8388608, + "crc32": "7b71c64f", + "sha1": "" + }, + { + "name": "igs_a05604w032.u47", + "size": 4194304, + "crc32": "9452a567", + "sha1": "" + }, + { + "name": "igs_b05601w064.u61", + "size": 8388608, + "crc32": "35c0a489", + "sha1": "" + }, + { + "name": "igs_b05602w064.u62", + "size": 8388608, + "crc32": "8aad3f85", + "sha1": "" + }, + { + "name": "igs_t05601w016.u70", + "size": 2097152, + "crc32": "03e110dc", + "sha1": "" + }, + { + "name": "igs_w05601b064.u30", + "size": 8388608, + "crc32": "bfe61a71", + "sha1": "" + }, + { + "name": "igs_w05602b032.u31", + "size": 4194304, + "crc32": "0685166d", + "sha1": "" + }, + { + "name": "pgm_m01s.rom", + "size": 2097152, + "crc32": "45ae7159", + "sha1": "" + }, + { + "name": "pgm_t01s.rom", + "size": 2097152, + "crc32": "1a7123a0", + "sha1": "" + }, + { + "name": "svg_bios.u49", + "size": 131072, + "crc32": "3346401f", + "sha1": "" + }, + { + "name": "svg_v100jp_u50.u50", + "size": 524288, + "crc32": "8d0405e4", + "sha1": "" + }, + { + "name": "svg_v100jp_u64.u64", + "size": 4194304, + "crc32": "399d4a8b", + "sha1": "" + }, + { + "name": "svg_v100jp_u65.u65", + "size": 4194304, + "crc32": "6e1c33b1", + "sha1": "" + }, + { + "name": "svgcpb_igs027a_v100_japan.bin", + "size": 15992, + "crc32": "7a59da5d", + "sha1": "" + } + ], + "dats": [ + "FinalBurn Neo - Arcade Games" + ] + }, { "dat": "FinalBurn Neo - Arcade Games", "name": "tekipaki.zip", @@ -8690,6 +9131,35 @@ "FinalBurn Neo - ZX Spectrum Games" ] }, + { + "dat": "FinalBurn Neo - ZX Spectrum Games", + "name": "badlands.zip", + "set": "badlands", + "description": "Badlands (48K-128K)", + "members": [ + { + "name": "Badlands 48K-128K (1990)(Domark).tap", + "size": 33672, + "crc32": "5df53959", + "sha1": "" + }, + { + "name": "zx128_0.rom", + "size": 16384, + "crc32": "e76799d2", + "sha1": "" + }, + { + "name": "zx128_1.rom", + "size": 16384, + "crc32": "b96a36be", + "sha1": "" + } + ], + "dats": [ + "FinalBurn Neo - ZX Spectrum Games" + ] + }, { "dat": "FinalBurn Neo - ZX Spectrum Games", "name": "cobra.zip", @@ -8883,25 +9353,25 @@ ], "upstream": { "blobs": { - "FinalBurn Neo (ClrMame Pro XML, Arcade only).dat": "06fd53978335037cbf2fc1c25f97348cb0dab319", + "FinalBurn Neo (ClrMame Pro XML, Arcade only).dat": "07033a52f64f51532675f2d3845654b2b05e93cd", "FinalBurn Neo (ClrMame Pro XML, Bally Astrocade Games only).dat": "7acfd6d42e70c751c858ef069a62c77c4048a0ec", "FinalBurn Neo (ClrMame Pro XML, ColecoVision only).dat": "414430a8569c650e5f2ea8e726bce3050aa8ef25", - "FinalBurn Neo (ClrMame Pro XML, FDS Games only).dat": "f42114f934da56c64627980e5188d3146534ad04", + "FinalBurn Neo (ClrMame Pro XML, FDS Games only).dat": "3876d4e8edceb12afc31ea8ed15d4d2034a7e7d9", "FinalBurn Neo (ClrMame Pro XML, Fairchild Channel F Games only).dat": "90ce8903a387ff2086fc1163abd9ced97c2c76d0", - "FinalBurn Neo (ClrMame Pro XML, GBA Games only).dat": "69d6cd81bbd38a822886954cc782c9a5a4e924fe", - "FinalBurn Neo (ClrMame Pro XML, Game Gear only).dat": "86072046457f04b335a82e64ff2762bfc86ce084", - "FinalBurn Neo (ClrMame Pro XML, MSX 1 Games only).dat": "63e44dfe07180a1cb946ac86dd0c3b7a3349d7a9", - "FinalBurn Neo (ClrMame Pro XML, Master System only).dat": "fafc4d832c45de94809d36b828bd15e6f9986a06", - "FinalBurn Neo (ClrMame Pro XML, Megadrive only).dat": "329ac56591d8b4a2cad15a51a9863b7c7141d8e2", - "FinalBurn Neo (ClrMame Pro XML, NES Games only).dat": "bb5feb4d4610f527c1761bce25a729b2413f16d5", - "FinalBurn Neo (ClrMame Pro XML, NeoGeo Pocket Games only).dat": "f6a8a097b8d1c073223767532044223cb78c2ed0", - "FinalBurn Neo (ClrMame Pro XML, Neogeo only).dat": "421716a0ea7d9c74d33a568a538dda63d44eb1b5", - "FinalBurn Neo (ClrMame Pro XML, PC-Engine only).dat": "ee7a919b06c06505026cf99e93a34cc4a6df6766", - "FinalBurn Neo (ClrMame Pro XML, SNES Games only).dat": "21aadc7ce57083518f3b4019b254e9d1733f6cfc", - "FinalBurn Neo (ClrMame Pro XML, Sega SG-1000 only).dat": "9da354dfcf066623e12d582ed3631177981e500b", + "FinalBurn Neo (ClrMame Pro XML, GBA Games only).dat": "0195b7e05f85e5232682278b49eb546740e75827", + "FinalBurn Neo (ClrMame Pro XML, Game Gear only).dat": "5a6731571154d2f0f2cb2b0cd27fe40cb7875043", + "FinalBurn Neo (ClrMame Pro XML, MSX 1 Games only).dat": "ad53c313f23f2da392228421b181803629ddcbff", + "FinalBurn Neo (ClrMame Pro XML, Master System only).dat": "3f9881c9bf7c62fd4a1b58eaa324b40b0ef9cbd9", + "FinalBurn Neo (ClrMame Pro XML, Megadrive only).dat": "400edc165ecbae49ca6aabc5e4c89adf2e65ae62", + "FinalBurn Neo (ClrMame Pro XML, NES Games only).dat": "6bed4f118cc7d049f85c18590599e636370eec6a", + "FinalBurn Neo (ClrMame Pro XML, NeoGeo Pocket Games only).dat": "d69197d2f9a5d69b122759e9a8c04c4102ba32e1", + "FinalBurn Neo (ClrMame Pro XML, Neogeo only).dat": "88c6e65f9feff46edf7e079cac8dac9f16eea155", + "FinalBurn Neo (ClrMame Pro XML, PC-Engine only).dat": "70f0bad3677bd4883f97e439ba8b0b67fd70f4c7", + "FinalBurn Neo (ClrMame Pro XML, SNES Games only).dat": "6e344243d179655291e4795e8c5d32867ec952f3", + "FinalBurn Neo (ClrMame Pro XML, Sega SG-1000 only).dat": "0ce025fee6d578668329f1c35142889c061da2bf", "FinalBurn Neo (ClrMame Pro XML, SuprGrafx only).dat": "bbdb2e89a5a278133ed8ea71b2c29ae92a27db85", "FinalBurn Neo (ClrMame Pro XML, TurboGrafx16 only).dat": "01be51eaf3ee6cb4c0cfe4b499c4086f3400000a", - "FinalBurn Neo (ClrMame Pro XML, ZX Spectrum Games only).dat": "140833ab63c42c44c79740af2c8ad7a67f6dd5b7" + "FinalBurn Neo (ClrMame Pro XML, ZX Spectrum Games only).dat": "8e7dfbdf294e66f0cf2610b371c63d87107dc99f" } } } From 77a8f171ba4de429b10032ca24424a49bba674ba Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:22:06 +0100 Subject: [PATCH 6/6] feat: read retrobat bios groups emulatorLauncher 228731e0 lists ten PS2 BIOS in one group: one held file is enough and Program.cs reports the others OPTIONAL. The scraper keeps group and optional, verify and the pack check apply the same rule. --- platforms/retrobat.yml | 10 +++++++++ schemas/platform.schema.json | 4 ++++ scripts/packverify.py | 14 ++++++++++++ scripts/scraper/retrobat_scraper.py | 5 ++++- scripts/verify.py | 19 ++++++++++++++++ tests/test_e2e.py | 34 +++++++++++++++++++++++++++++ 6 files changed, 85 insertions(+), 1 deletion(-) diff --git a/platforms/retrobat.yml b/platforms/retrobat.yml index eed5e187e..7cbb89ea0 100644 --- a/platforms/retrobat.yml +++ b/platforms/retrobat.yml @@ -2576,6 +2576,7 @@ 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 @@ -2583,6 +2584,7 @@ systems: 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 @@ -2590,6 +2592,7 @@ systems: 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 @@ -2597,6 +2600,7 @@ systems: 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 @@ -2604,6 +2608,7 @@ systems: 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 @@ -2611,30 +2616,35 @@ systems: 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: diff --git a/schemas/platform.schema.json b/schemas/platform.schema.json index 73d7206d6..28786b8ca 100644 --- a/schemas/platform.schema.json +++ b/schemas/platform.schema.json @@ -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" diff --git a/scripts/packverify.py b/scripts/packverify.py index 60486be1a..99efcfcd2 100644 --- a/scripts/packverify.py +++ b/scripts/packverify.py @@ -774,6 +774,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(): @@ -795,6 +803,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 diff --git a/scripts/scraper/retrobat_scraper.py b/scripts/scraper/retrobat_scraper.py index 720ec6189..7ae5a605a 100644 --- a/scripts/scraper/retrobat_scraper.py +++ b/scripts/scraper/retrobat_scraper.py @@ -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, diff --git a/scripts/verify.py b/scripts/verify.py index dcd9eb37a..93d905229 100644 --- a/scripts/verify.py +++ b/scripts/verify.py @@ -1424,6 +1424,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)) ) diff --git a/tests/test_e2e.py b/tests/test_e2e.py index d876b56d4..b63076f1b 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -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)