chore: merge core-info reviews

This commit is contained in:
Abdessamad Derraz committed 2026-11-09 07:57:57 +01:00
commit 7a5d5e5bf5
10 files changed
+585 -149

No files matched your search

+68 -9
View File
@@ -1,19 +1,30 @@
emulator: EDuke32
type: standalone
type: standalone + libretro
core_classification: game_engine
source: "https://voidpoint.io/terminx/eduke32"
source:
standalone: "https://voidpoint.io/terminx/eduke32"
libretro: "https://git.libretro.com/libretro/eduke32-libretro"
upstream: "https://voidpoint.io/terminx/eduke32"
version_source:
url: "https://dukeworld.com/eduke32/synthesis/latest/"
pattern: 'eduke32_src_(\d{8}-\d+-[0-9a-f]+)\.tar'
profiled_date: "2026-10-04"
source_commit: "ec5824db81817866f70da326d3811bb0f52b3517"
core_version: "20260807-10669-ec5824db8"
profiled_date: "2026-11-09"
source_commit:
standalone: "ec5824db81817866f70da326d3811bb0f52b3517"
libretro: "b5918d5cf3fc698700c86693fce3ce5200c28b96"
core_version:
standalone: "20260807-10669-ec5824db8"
libretro: "1.0.0"
version_basis:
kind: package
url: "https://dukeworld.com/eduke32/synthesis/20260807-10669-ec5824db8/eduke32_src_20260807-10669-ec5824db8.tar.xz"
pattern: 'eduke32_src_(\d{8}-\d+-[0-9a-f]+)\.tar'
artifact: "eduke32_src_20260807-10669-ec5824db8.tar.xz"
standalone:
kind: package
url: "https://dukeworld.com/eduke32/synthesis/20260807-10669-ec5824db8/eduke32_src_20260807-10669-ec5824db8.tar.xz"
pattern: 'eduke32_src_(\d{8}-\d+-[0-9a-f]+)\.tar'
artifact: "eduke32_src_20260807-10669-ec5824db8.tar.xz"
libretro:
kind: file
path: "platform/Libretro/core.cpp"
pattern: 'info->library_version\s*=\s*"([^"]+)"'
display_name: "EDuke32"
cores: [eduke32]
systems: [duke3d, nam, napalm, ww2gi]
@@ -43,6 +54,20 @@ notes: |
An addon whose dependency is not found is removed from the list
(source/duke3d/src/grpscan.cpp:503-517).
The libretro build is the same tree at ec5824db with platform/Libretro/
added and the file access routed through the frontend VFS. The content
is a GRP, ZIP, PK3 or PK4 opened by full path
(platform/Libretro/core.cpp:615-623). It is mounted as the first group,
and the folder that holds it is the search path the core adds
(platform/Libretro/core.cpp:652-670). G_AddSearchPaths is never called.
The scan then runs over that folder and keeps the GRP named DUKE3D.GRP, else the first one it
recognises, which sets the game type and its CON, DEF and RTS names
(source/duke3d/src/common.cpp:339-358, 420-443). Every file below is
therefore read beside the content, never from the system directory.
Relative paths, the config and the GRP cache among them, resolve below
the save directory (platform/Libretro/core.cpp:486-489,
platform/Libretro/vfs_libretro.cpp:31-40).
files:
# ================================================================
# Duke Nukem 3D (base game, GAMEFLAG_DUKE)
@@ -50,6 +75,8 @@ files:
- name: "DUKE3D.GRP"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
installed_on: [retropie]
@@ -69,6 +96,8 @@ files:
- name: "EDUKE.CON"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_DUKE)"
@@ -76,6 +105,8 @@ files:
- name: "DUKE.RTS"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
installed_on: [retropie]
@@ -86,12 +117,16 @@ files:
- name: "DUKEDC.GRP"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
source_ref: "source/duke3d/src/grpscan.cpp:56-59 (Duke it out in D.C., GAMEFLAG_ADDON)"
- name: "VACATION.GRP"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
source_ref: "source/duke3d/src/grpscan.cpp:60-64 (Duke Caribbean: Life's a Beach, GAMEFLAG_ADDON)"
@@ -99,6 +134,8 @@ files:
- name: "NWINTER.GRP"
description: "Duke: Nuclear Winter"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
size: 16169365
@@ -109,6 +146,8 @@ files:
- name: "NWINTER.GRP"
description: "Duke: Nuclear Winter Demo"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
size: 10965909
@@ -119,6 +158,8 @@ files:
- name: "DZ2.GRP"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
source_ref: "source/duke3d/src/grpscan.cpp:67-69 (Duke!ZONE II, GAMEFLAG_ADDON)"
@@ -126,6 +167,8 @@ files:
- name: "penthous.zip"
description: "Duke Nukem's Penthouse Paradise"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
size: 2112419
@@ -137,6 +180,8 @@ files:
- name: "PENTP.GRP"
description: "Duke Nukem's Penthouse Paradise"
category: game_data
load_from:
libretro: content_dir
system: duke3d
required: false
size: 4247491
@@ -150,6 +195,8 @@ files:
- name: "NAM.GRP"
category: game_data
load_from:
libretro: content_dir
system: nam
size: 43448927
required: false
@@ -157,6 +204,8 @@ files:
- name: "NAM.CON"
category: game_data
load_from:
libretro: content_dir
system: nam
required: false
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_NAM)"
@@ -167,6 +216,8 @@ files:
- name: "NAPALM.GRP"
category: game_data
load_from:
libretro: content_dir
system: napalm
size: 44365728
required: false
@@ -174,6 +225,8 @@ files:
- name: "NAPALM.CON"
category: game_data
load_from:
libretro: content_dir
system: napalm
required: false
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_NAPALM)"
@@ -184,6 +237,8 @@ files:
- name: "WW2GI.GRP"
category: game_data
load_from:
libretro: content_dir
system: ww2gi
size: 77939508
required: false
@@ -191,12 +246,16 @@ files:
- name: "WW2GI.CON"
category: game_data
load_from:
libretro: content_dir
system: ww2gi
required: false
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_WW2GI)"
- name: "PLATOONL.GRP"
category: game_data
load_from:
libretro: content_dir
system: ww2gi
size: 37852572
required: false
+20 -19
View File
@@ -1,17 +1,17 @@
emulator: EmuSCV
type: libretro
core_classification: community_fork
source: "https://github.com/wzcwzc/emuscv"
source: "https://git.libretro.com/libretro/libretro-emuscv"
upstream: "http://takeda-toshiya.my.coocan.jp/"
profiled_date: "2026-03-23"
source_commit: "6d6e4594d79862dd5c2ff7f725c109e4266f0b03"
core_version: "0.12.20220726135800"
profiled_date: "2026-11-09"
source_commit: "33900ce24f45c429b533fdae7844e04d64a9a1b9"
core_version: "0.15.20260921084155"
version_basis:
kind: file
path: "Makefile.libretro"
pattern: '^EMUSCV_VERSION_MAJOR := (\d+)\s*\nEMUSCV_VERSION_MINOR := (\d+)\s*\n(?:#.*\n)*EMUSCV_VERSION_DATETIME := \u0027?(\d+)'
path: "src/emuscv.h"
pattern: 'EMUSCV_VERSION_MAJOR\s+"(\d+)"\n#define EMUSCV_VERSION_MINOR\s+"(\d+)"\n#define EMUSCV_VERSION_DATETIME\s+"(\d+)"'
format: "{1}.{2}.{3}"
display_name: "EPOCH/YENO Super Cassette Vision"
display_name: "EPOCH/YENO Super Cassette Vision (EmuSCV)"
cores:
- emuscv
systems:
@@ -20,9 +20,11 @@ systems:
notes: |
Libretro port of eSCV by Takeda Toshiya (Common Source Code Project),
ported to libretro by MARCONATO Maxime. Upstream source mirrored at
https://github.com/tautologico/common-src-project (src/vm/scv/).
https://github.com/tautologico/common-src-project (src/vm/scv/). The
buildbot builds libretro's copy on git.libretro.com, which carries the
history of the former GitHub repository and continues it.
BIOS loading in src/vm/scv/memory.cpp:initialize() (lines 74-243).
BIOS loading in src/vm/scv/memory.cpp:initialize() (lines 84-250).
Tries filenames in order: upd7801g.s01, upd7801g.bin, upd7801g.bios,
bios.rom, bios.bin. First successful open wins. Upstream eSCV uses
only BIOS.ROM (uppercase), and the libretro port renamed and added
@@ -31,13 +33,12 @@ notes: |
The BIOS is read as 0x1000 (4096) bytes into the bios[] array, mapped
read-only at CPU address 0x0000-0x0FFF (UPD7801 internal ROM area).
When CHECKBIOS core option is YES, the core computes MD5 of the loaded
data and compares against 635a978fd40db9a18ee44eff449fc126. If the
hash does not match, the BIOS is rejected (filled with 0xFF,
bios_present=false). When CHECKBIOS is AUTO (default) or NO, any file
content is accepted. With AUTO the log says "automatic (yes)", and the
MD5 comparison runs only when the option equals YES_VAL
(src/vm/scv/memory.cpp:80), so AUTO accepts any content.
upd7801g.s01 is checked against MD5 635a978fd40db9a18ee44eff449fc126
unless the CHECKBIOS core option is NO, so with the default AUTO a
file of other content under that name is rejected (filled with 0xFF,
bios_loaded=false) and the next name is tried. The four other names are
checked only when CHECKBIOS is YES, and AUTO accepts any content under
them (src/vm/scv/memory.cpp:84-112, 115-148, src/emuscv.cpp:3459-3472).
The font/character data is embedded within the BIOS at offset 0x200
(memory.h get_font() returns bios + 0x200). No separate font ROM file.
@@ -55,8 +56,8 @@ files:
size: 4096
md5: 635a978fd40db9a18ee44eff449fc126
validation: [md5]
note: "UPD7801G internal ROM (BIOS). Mapped at 0x0000-0x0FFF. Contains character font at offset 0x200."
source_ref: "src/vm/scv/memory.cpp:74-243"
note: "UPD7801G internal ROM (BIOS). The MD5 is checked by default under this name only. Mapped at 0x0000-0x0FFF. Contains character font at offset 0x200."
source_ref: "src/vm/scv/memory.cpp:84-250"
aliases:
- "upd7801g.bin"
- "upd7801g.bios"
@@ -69,7 +70,7 @@ platform_details:
upd7801g:
target: "0x0000-0x0FFF (CPU internal ROM, 4 KB)"
format: "raw binary"
source_ref: "src/vm/scv/memory.cpp:249-254"
source_ref: "src/vm/scv/memory.cpp:259-264"
notes: |
Memory map from memory.cpp:initialize():
0x0000-0x0FFF BIOS ROM (read-only)
+39 -8
View File
@@ -3,19 +3,20 @@ type: libretro
core_classification: official_port
source: "https://github.com/drhelius/Gearboy"
upstream: "https://github.com/drhelius/Gearboy"
profiled_date: "2026-03-23"
source_commit: "b0a5fcaf68009c288d6b8016164a21af452d81b5"
core_version: "3.8.19-10-gb0a5fca"
profiled_date: "2026-11-09"
source_commit: "c2beeea6e202a41f796c4026fa0caaee1b904662"
core_version: "3.8.20-11-gc2beeea"
version_basis:
kind: tag
tag: "3.8.19"
distance: 10
display_name: "Nintendo - Game Boy / Color (Gearboy)"
tag: "3.8.20"
distance: 11
display_name: "Nintendo - Game Boy / Color / Super Game Boy (Gearboy)"
cores:
- gearboy
systems:
- nintendo-gb
- nintendo-gbc
- nintendo-sgb
notes: |
Gearboy is a Game Boy / Game Boy Color emulator by drhelius (Ignacio Sanchez).
@@ -25,6 +26,14 @@ notes: |
Bootrom loading is gated behind core options (disabled by default).
Without bootroms, the core HLE-skips the boot animation.
Super Game Boy mode (core option gearboy_sgb, enabled by default, one
instance only) reads the SNES cartridge ROM of the Super Game Boy,
SGB1.sfc then SGB2.sfc in the system directory. Only its default border
and palettes are taken from it, and SGB games run without it on the
built-in defaults. The ROM is identified by CRC32 and size against four
known dumps, whichever of the two names it carries, and an unknown dump
is refused (src/SGB.cpp:38-44, 200-223, 1096-1105).
files:
- name: dmg_boot.bin
description: Game Boy DMG bootrom
@@ -32,7 +41,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "platforms/libretro/libretro.cpp:1043, platforms/libretro/libretro.cpp:474, platforms/libretro/libretro.cpp:474"
source_ref: "platforms/libretro/libretro.cpp:1036-1045, platforms/libretro/libretro.cpp:474-479"
- name: cgb_boot.bin
description: Game Boy Color bootrom
@@ -40,4 +49,26 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "platforms/libretro/libretro.cpp:1044, platforms/libretro/libretro.cpp:475, platforms/libretro/libretro.cpp:475"
source_ref: "platforms/libretro/libretro.cpp:1047-1056, platforms/libretro/libretro.cpp:475-480"
- name: "SGB1.sfc"
system: nintendo-sgb
description: "Super Game Boy SNES cartridge ROM"
size: 262144
crc32: ["2e35edbb", "27a03c98", "8a4a174f"]
validation: [size, crc32]
required: false
hle_fallback: true
note: "Tried first. Any of the four known dumps loads under this name, the 512 KiB SGB2 one included. Read only with Super Game Boy mode on and a single instance."
source_ref: "platforms/libretro/libretro.cpp:447-467, platforms/libretro/libretro.cpp:879-885, src/SGB.cpp:38-44, src/SGB.cpp:200-223"
- name: "SGB2.sfc"
system: nintendo-sgb
description: "Super Game Boy 2 SNES cartridge ROM"
size: 524288
crc32: "cb176e45"
validation: [size, crc32]
required: false
hle_fallback: true
note: "Tried when SGB1.sfc is absent or refused. Any of the four known dumps loads under this name."
source_ref: "platforms/libretro/libretro.cpp:447-467, src/SGB.cpp:38-44, src/SGB.cpp:200-223"
+74 -21
View File
@@ -1,15 +1,26 @@
emulator: jgenesis
type: standalone
type: standalone + libretro
core_classification: other
source: "https://github.com/jsgroth/jgenesis"
source:
standalone: "https://github.com/jsgroth/jgenesis"
libretro: "https://github.com/RobLoach/libretro-jgenesis"
upstream: "https://github.com/jsgroth/jgenesis"
profiled_date: "2026-08-08"
source_commit: "0a00c47ba7a16bd6e77ef7e0b6c8fab2fc603cba"
core_version: "0.14.1"
profiled_date: "2026-11-09"
source_commit:
standalone: "0a00c47ba7a16bd6e77ef7e0b6c8fab2fc603cba"
libretro: "c92ff9269594b44e2f9ecfca5ff943e5bea49fb7"
core_version:
standalone: "0.14.1"
libretro: "0.14.1"
version_basis:
kind: file
path: "Cargo.toml"
pattern: 'version\s+=\s+"([^"]+)'
standalone:
kind: file
path: "Cargo.toml"
pattern: 'version\s+=\s+"([^"]+)'
libretro:
kind: file
path: "Cargo.toml"
pattern: 'version\s+=\s+"([^"]+)'
display_name: "Multi-System (jgenesis)"
cores:
- jgenesis
@@ -27,7 +38,6 @@ systems:
- nintendo-gba
- nec-pc-engine
- nec-pc-engine-cd
mode: standalone
notes: |
Multi-system emulator written in Rust by James Groth. One binary covers
@@ -81,6 +91,20 @@ notes: |
tested for existence only, to keep the settings beside the executable
(frontend/jgenesis-native-config/src/paths.rs:57-64).
The libretro build is a separate frontend, libretro-jgenesis, that
builds the jgenesis backend crates at the same revision 0a00c47, the
rev its Cargo.toml pins for each of them. It opens fixed names in the
system directory, or beside the content when the frontend gives none:
bios_CD_U.bin, bios_CD_E.bin or bios_CD_J.bin by region, gba_bios.bin,
syscard3.pce and the seven SNES coprocessor ROMs. The Sega CD region is
the core option, else the disc header, else Americas. A missing BIOS
fails the load, except for a Mode 1 cartridge loaded alone, which
runs without the Sega CD. It never passes a Master System, Game Gear or Game Boy boot
ROM to the backend, and reads no palette file.
ref: src/load.rs:30-34, src/load.rs:48-56, src/load.rs:140-144,
src/load.rs:329-336, src/load.rs:386-400, src/load.rs:413,
src/load.rs:445
files:
# -------------------------------------------------------
# Sega CD
@@ -92,7 +116,9 @@ files:
required: true
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:43-53 (read), frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (bios_path_for_region), backend/segacd-core/src/api.rs:77-79 (BIOS_LEN check)"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:43-53 (read), frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (bios_path_for_region), backend/segacd-core/src/api.rs:77-79 (BIOS_LEN check)"
libretro: "src/load.rs:30, src/load.rs:48-56, src/load.rs:329-349"
note: "Selected when the disc region is Americas, and for every region when per_region_bios is off."
- name: "bios_CD_E.bin"
@@ -102,7 +128,9 @@ files:
required: true
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (eu_bios_path), backend/segacd-core/src/api.rs:77-79"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (eu_bios_path), backend/segacd-core/src/api.rs:77-79"
libretro: "src/load.rs:31, src/load.rs:48-56, src/load.rs:329-349"
note: "Selected when the header area at 0x1F0 holds E and not U or J, as Australian discs do (backend/genesis-components/src/cartridge.rs:362-377, backend/segacd-core/src/api.rs:339-369)."
- name: "bios_CD_J.bin"
@@ -112,7 +140,9 @@ files:
required: true
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (jp_bios_path), backend/segacd-core/src/api.rs:77-79"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (jp_bios_path), backend/segacd-core/src/api.rs:77-79"
libretro: "src/load.rs:32, src/load.rs:48-56, src/load.rs:329-349"
# -------------------------------------------------------
# Game Boy Advance
@@ -123,7 +153,9 @@ files:
required: true
size: 16384
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gba.rs:32-36 (GbaNoBios), backend/gba-core/src/memory.rs:10, 102-107 (BIOS_ROM_LEN check)"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/gba.rs:32-36 (GbaNoBios), backend/gba-core/src/memory.rs:10, 102-107 (BIOS_ROM_LEN check)"
libretro: "src/load.rs:33, src/load.rs:48-56, src/load.rs:450"
note: "Every GBA load fails without it. skip_bios_animation only skips the intro, the BIOS is still mapped and read for SWI calls."
# -------------------------------------------------------
@@ -135,7 +167,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-1"
required: true
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:336-353 (MissingDsp1Rom), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38,382-390"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:336-353 (MissingDsp1Rom), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38,382-390"
libretro: "src/load.rs:477-491"
note: "0x1800 program plus 0x800 data. Also used by DSP-1B titles, which have no separate slot. Layout is sliced at a fixed offset, size is not checked."
- name: "dsp2.rom"
@@ -144,7 +178,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-2"
required: true
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:340-342 (MissingDsp2Rom), :929 (Dungeon Master CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:340-342 (MissingDsp2Rom), :929 (Dungeon Master CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
libretro: "src/load.rs:477-491"
- name: "dsp3.rom"
aliases: ["SNES_dsp3.rom"]
@@ -152,7 +188,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-3"
required: true
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:343-345 (MissingDsp3Rom), :931 (SD Gundam GX CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:343-345 (MissingDsp3Rom), :931 (SD Gundam GX CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
libretro: "src/load.rs:477-491"
- name: "dsp4.rom"
aliases: ["SNES_dsp4.rom"]
@@ -160,7 +198,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-4"
required: true
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:346-348 (MissingDsp4Rom), :933 (Top Gear 3000 CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:346-348 (MissingDsp4Rom), :933 (Top Gear 3000 CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
libretro: "src/load.rs:477-491"
- name: "st010.rom"
aliases: ["SNES_st010.rom"]
@@ -168,7 +208,9 @@ files:
description: "NEC uPD96050 firmware for ST010"
required: true
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:294-305 (MissingSt010Rom), :938-943 (variant detection), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:294-305 (MissingSt010Rom), :938-943 (variant detection), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38"
libretro: "src/load.rs:477-491"
note: "0xC000 program plus 0x1000 data. Used by F1 ROC II."
- name: "st011.rom"
@@ -177,7 +219,9 @@ files:
description: "NEC uPD96050 firmware for ST011"
required: true
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:298-300 (MissingSt011Rom), :938-943 (Hayazashi Nidan Morita Shougi CRC32 match)"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:298-300 (MissingSt011Rom), :938-943 (Hayazashi Nidan Morita Shougi CRC32 match)"
libretro: "src/load.rs:477-491"
- name: "st018.rom"
aliases: ["SNES_st018.rom"]
@@ -186,7 +230,9 @@ files:
required: true
min_size: 163840
validation: [size]
source_ref: "backend/snes-core/src/memory/cartridge.rs:310-320 (MissingSt018Rom), backend/snes-coprocessors/src/st018.rs:18-22,346-352 (TOTAL_ROM_LEN check)"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:310-320 (MissingSt018Rom), backend/snes-coprocessors/src/st018.rs:18-22,346-352 (TOTAL_ROM_LEN check)"
libretro: "src/load.rs:477-491"
note: "0x20000 program plus 0x8000 data. Used by Hayazashi Nidan Morita Shougi 2. Files larger than the expected length are accepted, shorter ones are rejected."
# -------------------------------------------------------
@@ -196,13 +242,16 @@ files:
system: nec-pc-engine-cd
description: "Super CD-ROM² System Card 3.0"
required: true
source_ref: "frontend/jgenesis-native-driver/src/mainloop/pce.rs:29-50 (PceCdNoBios), frontend/jgenesis-native-config/src/pce.rs:15, 44, backend/pce-core/src/cartridge.rs:84-101, config/pce-config/src/lib.rs:60-65"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/pce.rs:29-50 (PceCdNoBios), frontend/jgenesis-native-config/src/pce.rs:15, 44, backend/pce-core/src/cartridge.rs:84-101, config/pce-config/src/lib.rs:60-65"
libretro: "src/load.rs:34, src/load.rs:48-56, src/load.rs:317"
note: "Every disc fails to load without it. One slot accepts any System Card dump, no size or content check, but the default Arcade Card and the Super System Card need a v3.0 ROM. A file over 512 KiB is mapped as a plain HuCard."
# -------------------------------------------------------
# Master System / Game Gear
# -------------------------------------------------------
- name: "bios.sms"
mode: standalone
system: sega-mastersystem
description: "Master System BIOS"
required: false
@@ -210,6 +259,7 @@ files:
note: "Read only when sms_boot_from_bios is enabled or the emulator runs without a cartridge, both off by default. One slot accepts any regional dump, no size or content check."
- name: "bios.gg"
mode: standalone
system: sega-gamegear
description: "Game Gear BIOS"
required: false
@@ -220,6 +270,7 @@ files:
# Game Boy / Game Boy Color
# -------------------------------------------------------
- name: "dmg_boot.bin"
mode: standalone
system: nintendo-gb
description: "Game Boy boot ROM"
required: false
@@ -229,6 +280,7 @@ files:
note: "Loaded only when dmg_boot_rom is enabled, off by default. Without it the CPU starts post-boot."
- name: "cgb_boot.bin"
mode: standalone
system: nintendo-gbc
description: "Game Boy Color boot ROM"
required: false
@@ -242,6 +294,7 @@ files:
# NES
# -------------------------------------------------------
- name: "nes.pal"
mode: standalone
aliases: ["nespalette.pal"]
system: nintendo-nes
description: "External NES color palette"
+106 -8
View File
@@ -1,14 +1,25 @@
emulator: UZDoom
type: standalone
type: standalone + libretro
core_classification: game_engine
source: "https://github.com/UZDoom/UZDoom"
profiled_date: "2026-10-20"
source_commit: "7910df7102033fd7754a317f3254f24101135926"
core_version: "5.0.3"
source:
standalone: "https://github.com/UZDoom/UZDoom"
libretro: "https://git.libretro.com/libretro/uzdoom"
profiled_date: "2026-11-09"
source_commit:
standalone: "7910df7102033fd7754a317f3254f24101135926"
libretro: "829f29959d01203c1971f75ee784912edc2297e8"
core_version:
standalone: "5.0.3"
libretro: "5.1.0-pre"
version_basis:
kind: tag
tag: "5.0.3"
distance: 0
standalone:
kind: tag
tag: "5.0.3"
distance: 0
libretro:
kind: file
path: "src/version.h"
pattern: '#define\s+VERSIONSTR\s+"([^"]+)"'
display_name: "UZDoom"
cores:
- uzdoom
@@ -52,6 +63,34 @@ notes: |
3a41131845415bc4bb5474f8de301a77736bd858e2ab489926325a2675e8263f,
built from this commit). They are rebuilt with every release.
The libretro build lives on the libretro branch of libretro's copy of
the project, which carries UZDoom trunk of 2026-10-28 (67bdb4b, after
the 5.0.3 branch point) and adds src/common/platform/libretro/. The core
takes a .wad or .iwad by full path and starts the engine with -iwad on
it, the configuration uzdoom-libretro.ini and the savegames in the save
directory, and $PROGDIR set to the system directory. A frontend without
a system directory or a save directory gets no game.
ref: src/common/platform/libretro/retro_core.cpp:57-66,
src/common/platform/libretro/retro_core.cpp:296-299,
src/common/platform/libretro/retro_core.cpp:317-331,
src/common/platform/libretro/retro_paths.cpp:4-17
uzdoom.pk3 and game_support.pk3 are compiled into the libretro binary
and served under uzdoom-internal:/ whenever BaseFileSearch asks for
those names, so no copy on disk is read. The other engine resources
are not: lights.pk3, brightmaps.pk3 and game_widescreen_gfx.pk3 are
looked for in $PROGDIR first, and the soundfont directories are
$PROGDIR/soundfonts and $PROGDIR/fm_banks, both below the system
directory.
ref: src/common/platform/libretro/embedded_pk3.S.in:1-39,
src/common/platform/libretro/retro_resources.h:7-26
The IWAD is the content, and the files an IWAD entry loads from its own
folder (voices.wad, extras.wad, soundtrack, nerve.wad, nerveunity.wad)
are read beside it. A Required IWAD (hexen.wad under hexdd.wad,
strife1.wad under sve.wad) and id24res.wad are looked for in the IWAD
search paths, which hold "." and $PROGDIR and never the content folder.
files:
# ================================================================
# Engine resources (shipped with the port, add_pk3 in CMakeLists)
@@ -59,6 +98,7 @@ files:
- name: "uzdoom.pk3"
category: game_data
mode: standalone
bundled: true
required: true
size: 7159816
@@ -69,6 +109,7 @@ files:
- name: "game_support.pk3"
category: game_data
mode: standalone
bundled: true
required: false
size: 2918075
@@ -79,6 +120,7 @@ files:
- name: "lights.pk3"
category: game_data
mode: standalone
bundled: true
required: false
size: 23637
@@ -86,8 +128,17 @@ files:
sha1: "aad904eec722503845348fdf9fa47586d58df5df"
source_ref: "src/d_main.cpp:2394-2399, wadsrc_lights/CMakeLists.txt:1"
- name: "lights.pk3"
category: game_data
mode: libretro
required: false
source_ref:
libretro: "src/d_main.cpp:2422-2429, src/common/utility/findfile.cpp:248-262, src/common/platform/libretro/retro_core.cpp:59"
note: "Read from the system directory, the core's $PROGDIR. Built from wadsrc_lights/."
- name: "brightmaps.pk3"
category: game_data
mode: standalone
bundled: true
required: false
size: 246507
@@ -95,8 +146,17 @@ files:
sha1: "b47d9397c4dc00a4ea079053167d317118c26b0a"
source_ref: "src/d_main.cpp:2400-2405, wadsrc_bm/CMakeLists.txt:1-2"
- name: "brightmaps.pk3"
category: game_data
mode: libretro
required: false
source_ref:
libretro: "src/d_main.cpp:2430-2435, src/common/utility/findfile.cpp:248-262, src/common/platform/libretro/retro_core.cpp:59"
note: "Read from the system directory, the core's $PROGDIR. Built from wadsrc_bm/."
- name: "game_widescreen_gfx.pk3"
category: game_data
mode: standalone
bundled: true
required: false
size: 5565904
@@ -104,8 +164,17 @@ files:
sha1: "457494b0d6961773686bf1a3555c0bc595ef8ec4"
source_ref: "src/d_main.cpp:2406-2411, wadsrc_widepix/CMakeLists.txt:1-2"
- name: "game_widescreen_gfx.pk3"
category: game_data
mode: libretro
required: false
source_ref:
libretro: "src/d_main.cpp:2436-2441, src/common/utility/findfile.cpp:248-262, src/common/platform/libretro/retro_core.cpp:59"
note: "Read from the system directory, the core's $PROGDIR. Built from wadsrc_widepix/."
- name: "uzdoom.sf2"
category: game_data
mode: standalone
bundled: true
path: "soundfonts/uzdoom.sf2"
required: false
@@ -115,8 +184,18 @@ files:
source_ref: "src/common/audio/music/i_soundfont.cpp:323-347, 435-439, src/common/audio/music/music_config.cpp:137, src/CMakeLists.txt:1445-1451"
note: "Default soundfont, used when the soundfont directories hold none. Every file of those directories is taken by its content. fluid_patchset defaults to uzdoom, and when no soundfont carries that name the first SF2 found is used."
- name: "uzdoom.sf2"
category: game_data
mode: libretro
path: "soundfonts/uzdoom.sf2"
required: false
source_ref:
libretro: "src/common/audio/music/i_soundfont.cpp:435-439, src/gameconfigfile.cpp:226-233, src/common/platform/libretro/retro_core.cpp:59"
note: "Read below the system directory, the core's $PROGDIR. Built from soundfont/ in the tree."
- name: "GENMIDI.GS.wopl"
category: game_data
mode: standalone
bundled: true
path: "fm_banks/GENMIDI.GS.wopl"
required: false
@@ -126,8 +205,18 @@ files:
source_ref: "src/CMakeLists.txt:1453-1455, src/gameconfigfile.cpp:223-230, src/common/audio/music/i_soundfont.cpp:349-354"
note: "OPL3 bank copied next to the executable. fm_banks is one of the scanned soundfont directories."
- name: "GENMIDI.GS.wopl"
category: game_data
mode: libretro
path: "fm_banks/GENMIDI.GS.wopl"
required: false
source_ref:
libretro: "src/gameconfigfile.cpp:226-233, src/common/platform/libretro/retro_core.cpp:59"
note: "fm_banks below the system directory is one of the scanned soundfont directories."
- name: "gs-by-papiezak-and-sneakernets.wopn"
category: game_data
mode: standalone
bundled: true
path: "fm_banks/gs-by-papiezak-and-sneakernets.wopn"
required: false
@@ -144,6 +233,15 @@ files:
# ---- Doom ----
- name: "gs-by-papiezak-and-sneakernets.wopn"
category: game_data
mode: libretro
path: "fm_banks/gs-by-papiezak-and-sneakernets.wopn"
required: false
source_ref:
libretro: "src/gameconfigfile.cpp:226-233, src/common/platform/libretro/retro_core.cpp:59"
note: "fm_banks below the system directory is one of the scanned soundfont directories."
- name: "doom.wad"
category: game_data
system: doom
+74 -11
View File
@@ -1,22 +1,33 @@
emulator: Vita3K
type: standalone
source: "https://github.com/Vita3K/Vita3K"
type: standalone + libretro
source:
standalone: "https://github.com/Vita3K/Vita3K"
libretro: "https://git.libretro.com/libretro/vita3k-libretro"
upstream: "https://github.com/Vita3K/Vita3K"
profiled_date: "2026-10-23"
source_commit: "6ec8e6ce31f3d6099b14eb9dd0320c09ef6386b6"
core_version: "v0.2.1"
profiled_date: "2026-11-09"
source_commit:
standalone: "6ec8e6ce31f3d6099b14eb9dd0320c09ef6386b6"
libretro: "87666afd9e84e1a59ec07d495bab4dc114f0798a"
core_version:
standalone: "v0.2.1"
libretro: "v0.2.1"
version_basis:
kind: file
path: "vita3k/CMakeLists.txt"
pattern: 'set\(VITA3K_APP_VER_HI (\d+)\)\nset\(VITA3K_APP_VER_MID (\d+)\)\nset\(VITA3K_APP_VER_LO (\d+)\)\nset\(VITA3K_APP_VERSION "v'
format: "v{1}.{2}.{3}"
standalone:
kind: file
path: "vita3k/CMakeLists.txt"
pattern: 'set\(VITA3K_APP_VER_HI (\d+)\)\nset\(VITA3K_APP_VER_MID (\d+)\)\nset\(VITA3K_APP_VER_LO (\d+)\)\nset\(VITA3K_APP_VERSION "v'
format: "v{1}.{2}.{3}"
libretro:
kind: file
path: "vita3k/CMakeLists.txt"
pattern: 'set\(VITA3K_APP_VER_HI (\d+)\)\nset\(VITA3K_APP_VER_MID (\d+)\)\nset\(VITA3K_APP_VER_LO (\d+)\)\nset\(VITA3K_APP_VERSION "v'
format: "v{1}.{2}.{3}"
display_name: "Vita3K (PS Vita)"
cores:
- vita3k
- "vita3k-sa"
systems: [sony-playstation-vita]
# Standalone emulator, no libretro core exists.
# Firmware PUP files are one-time installations: install_pup() decrypts and
# extracts partition images (os0, vs0, sa0, pd0) into the emulator data directory.
# The PUP file itself is deleted after extraction.
@@ -29,6 +40,7 @@ systems: [sony-playstation-vita]
files:
- name: PSVUPDAT.PUP
mode: standalone
path: "psvita/PSVUPDAT.PUP"
required: true
hle_fallback: true
@@ -41,6 +53,7 @@ files:
source_ref: "vita3k/packages/src/pup.cpp:260-314, vita3k/app/src/app.cpp:176, vita3k/module/src/load_module.cpp:142-161, 187"
- name: PSP2UPDAT.PUP
mode: standalone
path: "psvita/PSP2UPDAT.PUP"
required: false
hle_fallback: true
@@ -50,8 +63,47 @@ files:
font directory when the partition holds content.
source_ref: "vita3k/packages/src/pup.cpp:296-297, vita3k/app/src/app.cpp:177, vita3k/renderer/src/renderer.cpp:161-167"
# The libretro build installs each part from a .pup it finds itself. The
# code names no file: a .pup is told apart by its name alone, so the
# labels below carry the word the code looks for.
- name: "PSVUPDAT.PUP"
mode: libretro
path: "vita3k/PSVUPDAT.PUP"
required: true
note: >
System firmware, installed into vs0 at the first start that finds it
missing. Any .pup in system/vita3k whose name holds neither preinst
nor font is taken for it, and psp2updat.pup or psvupdat.pup at the
root of the system directory too. The core starts a game without it,
and games do not run.
source_ref:
libretro: "vita3k/libretro/libretro_installer.cpp:188-195, vita3k/libretro/libretro_installer.cpp:201-222, vita3k/libretro/libretro_installer.cpp:271-278, vita3k/libretro/libretro_installer.cpp:295-345, vita3k/libretro/libretro_vita3k.cpp:873-877, vita3k/libretro/libretro_vita3k.cpp:2793-2796"
- name: "preinst.pup"
mode: libretro
path: "vita3k/preinst.pup"
required: false
note: >
Preinstalled package, installed into pd0. Any .pup in system/vita3k
with preinst in its name, whatever the case. Sony serves it as
PSP2UPDAT.PUP, which this build would take for the system firmware.
source_ref:
libretro: "vita3k/libretro/libretro_installer.cpp:188-195, vita3k/libretro/libretro_installer.cpp:271-278, vita3k/libretro/libretro_installer.cpp:318-345"
- name: "font.pup"
mode: libretro
path: "vita3k/font.pup"
required: false
note: >
Font package, installed into sa0. Any .pup in system/vita3k with font
in its name, whatever the case. Sony serves it as PSP2UPDAT.PUP, which
this build would take for the system firmware.
source_ref:
libretro: "vita3k/libretro/libretro_installer.cpp:188-195, vita3k/libretro/libretro_installer.cpp:271-278, vita3k/libretro/libretro_installer.cpp:318-345"
notes: |
Standalone PS Vita emulator. No libretro core.
Standalone PS Vita emulator, with a libretro build kept on the libretro
branch of libretro's copy of the project, which merges upstream master.
Firmware installed via File > Install Firmware or CLI --firmware flag.
PUP files validated by SCEUF magic header only (vita3k/packages/src/pup.cpp:119), no hash check.
After install, four partitions are extracted:
@@ -64,3 +116,14 @@ notes: |
libsceavplayer, libSceJson, and more (vita3k/module/src/load_module.cpp:142-162).
A third optional preinst firmware PUP (pd0 partition: system BGM, resources)
is available from Sony but not commonly required for game compatibility.
The libretro build reads the three firmware packages from
system/vita3k and installs each part still missing into its storage at
load, the system firmware detected by its modules in
vs0/sys/external. A .pup loaded as content is installed the same way.
data/, the built-in shaders and the dialog icons are compiled into the
core and written into system/vita3k when the copy there is not this
build's (vita3k/libretro/embed_system_files.cmake:1-9).
ref: vita3k/libretro/libretro_installer.cpp:60-67,
vita3k/libretro/libretro_installer.cpp:159-177,
vita3k/libretro/libretro_vita3k.cpp:2414-2420
+146 -49
View File
@@ -3,16 +3,16 @@ type: standalone + libretro
core_classification: community_fork
source:
standalone: "https://github.com/xemu-project/xemu"
libretro: "https://github.com/LibretroAdmin/xemu-libretro"
libretro: "https://git.libretro.com/libretro/xemu-libretro"
upstream: "https://github.com/xemu-project/xemu"
logo: "https://raw.githubusercontent.com/xemu-project/xemu/master/data/xemu_64x64.png"
profiled_date: "2026-09-17"
profiled_date: "2026-11-09"
source_commit:
standalone: "25e1ee2fd59a451f2ab57e825b4f8a5414220c8b"
libretro: "d9804db79f87f6a6a5548b14ca4a8d5164390338"
libretro: "50fc538657f44704e0d1d0906bdc9ef6e435dffe"
core_version:
standalone: "v0.8.139-2-g25e1ee2"
libretro: "libretro-experimental"
libretro: "0.8.136-53"
version_basis:
standalone:
kind: tag
@@ -21,14 +21,15 @@ version_basis:
distance: 2
libretro:
kind: file
path: "ui/xemu-libretro.c"
pattern: 'info->library_version\s*=\s*"([^"]+)"'
display_name: "Microsoft - Xbox (xemu)"
path: "upstream.version"
pattern: '^(\S+)'
display_name: "Microsoft - Xbox / Sega Chihiro (xemu)"
cores:
- xemu
- "xemu-sa"
systems:
- microsoft-xbox
- sega-chihiro
data_root:
windows:
@@ -45,16 +46,14 @@ data_root:
note: "xemu.toml beside the executable makes its folder the root"
notes: |
Full-system Xbox emulator built on QEMU. One tree builds the standalone
application and, with the libretro build option, a core in which a shim
replaces ui/xemu.c: the QEMU machine runs on its own thread, retro_run pumps
the RetroPads into the Duke controllers and blits the NV2A surface into the
frontend's framebuffer through an OpenGL 4.0 core context, and content is a
.iso or .xiso image that QEMU opens from its full path. Save states are not
implemented, and game saves live inside the hard disk image.
ref: meson_options.txt:52-53, ui/xemu-libretro.c:1-27,
ui/xemu-libretro.c:609-617, ui/xemu-libretro.c:680-697,
ui/xemu-libretro.c:874-876
Full-system Xbox emulator built on QEMU. The libretro core is built from
libretro's xemu-libretro tree on its libretro branch, which merges
Tovarichtch's xemu fork (xemu master with Chihiro support) and keeps the
core alone: the standalone UI and packaging are removed. upstream.version
names the upstream version merged. Content is an Xbox disc image (.iso,
.xiso) or a Chihiro netboot image (.bin), opened from its full path. An
Xbox disc boots an Xbox, any other image a Chihiro.
ref: ui/libretro.c:3117-3123, ui/libretro.c:3312-3320
Four files feed the machine through the sys.files block of the
configuration: the MCPX boot ROM, the flash ROM, the EEPROM and the hard disk
@@ -69,14 +68,27 @@ notes: |
ui/xemu-settings.cc:70-133, ui/xemu.c:1373-1393,
ui/xui/main-menu.cc:1553-1575
The core reads the same four files from the frontend system directory, each
under a name picked by a core option that offers a default and a few
alternatives, and keeps its configuration as xemu-libretro.toml in that
directory. The boot ROM, the flash ROM and the disk image are opened before
the machine starts, and a missing one fails the load with a message naming
the file. The EEPROM is left to the machine, which generates one.
ref: ui/xemu-libretro.c:112-127, ui/xemu-libretro.c:139-145,
ui/xemu-libretro.c:178-236
The core has no option for these paths. It looks for each file in
system/xemu/, then at the root of the system directory, and keeps the
first it opens; when none is there the path stays in system/xemu/. The
flash ROM is tried as Complex_4627v1.03.bin, then Complex_4627.bin. A
missing boot ROM or flash ROM fails the load. A missing hard disk image
is written there from the formatted image the core carries
(data/xbox_hdd.qcow2), and the EEPROM is left to the machine, which
generates one. Shader caches and patches live in system/xemu/ too.
ref: ui/libretro.c:3044-3049, ui/libretro.c:3370-3449,
ui/libretro.c:2088-2105, ui/libretro.c:3361-3367,
ui/libretro.c:2485
A Chihiro boots only its own BIOS, system/xemu/Chihiro/chihiro_xbox_bios.bin,
which has to be MAME's 512 KiB image (sha1 b700b004). The media board
flash and the three EEPROMs are read beside it by their MAME names, and a
missing one, or a BIOS that is not that image, leaves the machine paused
with a message naming it. The network firmware ver1305.bin is read from
the same folder when it is there, and only a linked cabinet needs it.
ref: ui/libretro.c:1782-1795, hw/xbox/chihiro/chihiro.c:2280-2292,
hw/xbox/chihiro/chihiro.c:2294-2334, hw/xbox/chihiro/chihiro.c:2376-2402,
hw/xbox/chihiro/chihiro.c:365-380, hw/xbox/chihiro/chihiro.c:490-505
The standalone boots whatever it can. An unreadable flash file or a
rejected EEPROM clears autostart and queues an error for the HUD, an
@@ -87,7 +99,8 @@ notes: |
files:
- name: mcpx_1.0.bin
path: mcpx_1.0.bin
path: "xemu/mcpx_1.0.bin"
standalone_path: mcpx_1.0.bin
required: true
size: 512
validation: [size]
@@ -98,16 +111,17 @@ files:
of the flash image, which the machine maps as a writable overlay at the
top of the address space. qemu_init drops the path with an error when
the file cannot be opened or is not 512 bytes, and the machine then runs
the flash alone. The core option xemu_bootrom names the file, default
mcpx_1.0.bin, with mcpx.bin, MCPX_1.0.bin and boot_rom.bin offered as
alternatives. The core refuses to load when the chosen file is absent.
the flash alone. The core reads system/xemu/mcpx_1.0.bin, else
mcpx_1.0.bin at the root of the system directory, and refuses to load
when neither is there.
source_ref:
standalone: "system/vl.c:2983-3006, hw/xbox/xbox.c:143-171, hw/xbox/xbox.c:468-470"
libretro: "ui/xemu-libretro.c:113-114, ui/xemu-libretro.c:192-193, ui/xemu-libretro.c:210-236"
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3418-3427"
- name: Complex_4627.bin
path: Complex_4627.bin
aliases: [Complex.bin, cerbios.bin]
path: "xemu/Complex_4627.bin"
standalone_path: Complex_4627.bin
aliases: [Complex_4627v1.03.bin]
required: true
size: [262144, 524288, 1048576]
validation: [size]
@@ -118,17 +132,17 @@ files:
Passed as -bios and opened through qemu_find_file. An image whose size
is not a multiple of 65536 bytes counts as a failed load, like a missing
file: the 256 KB region is filled with 0xFF and the machine starts
anyway. An unreadable path clears autostart in the standalone. The core
option xemu_flashrom names the file, default Complex_4627.bin, with
Complex_4627_v1.03.bin, complex_4627.bin, cerbios.bin, Cerbios.bin,
bios.bin, xbox_bios.bin and Complex.bin offered as alternatives. The
core refuses to load when the chosen file is absent.
anyway. An unreadable path clears autostart in the standalone, which
takes any file the settings name. The core tries
Complex_4627v1.03.bin, then Complex_4627.bin, in system/xemu/ and
then at the root of the system directory, and refuses to load when
none is there.
source_ref:
standalone: "system/vl.c:3041-3053, hw/xbox/xbox.c:63-123"
libretro: "ui/xemu-libretro.c:115-118, ui/xemu-libretro.c:195-196, ui/xemu-libretro.c:210-236"
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3429-3436"
- name: xbox_eeprom.bin
path: xbox_eeprom.bin
path: "xemu/xbox_eeprom.bin"
standalone_path: eeprom.bin
aliases: [eeprom.bin]
required: false
@@ -144,14 +158,15 @@ files:
disk key and online key, the North American region and the NTSC-M video
standard. A file of any size other than 256 bytes is rejected and
autostart is cleared. The standalone defaults to eeprom.bin next to
xemu.toml. The core option xemu_eeprom names the file, default
xbox_eeprom.bin, with eeprom.bin and EEPROM.bin offered as alternatives,
and does not check for it before the machine starts.
xemu.toml. The core reads system/xemu/xbox_eeprom.bin, else
xbox_eeprom.bin at the root of the system directory, and leaves the
machine to generate system/xemu/xbox_eeprom.bin when neither is there.
source_ref:
standalone: "system/vl.c:2909-2949, system/vl.c:3030-3039, ui/xemu-settings.cc:135-146, hw/xbox/smbus_storage.c:56-87, hw/xbox/smbus_storage.c:90-128, hw/xbox/smbus_storage.c:155-160, hw/xbox/eeprom_generation.c:93-140"
libretro: "ui/xemu-libretro.c:119-120, ui/xemu-libretro.c:198-199, ui/xemu-libretro.c:204-209"
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:1778-1780"
- name: xbox_hdd.qcow2
mode: standalone
path: xbox_hdd.qcow2
required: true
installed_on: [batocera, emudeck, recalbox, retrodeck, rocknix]
@@ -162,19 +177,101 @@ files:
and the file opens. An unreadable file only queues an error and an empty
path attaches no drive. Snapshots are stored inside the image. The
project publishes a formatted image carrying its own unsigned dashboard
and empty TDATA and UDATA folders. The core option xemu_hdd names the
file, default xbox_hdd.qcow2, with xbox_hdd_8gb.qcow2, hdd.qcow2 and
xbox_hdd.img offered as alternatives. The core refuses to load when the
chosen file is absent.
and empty TDATA and UDATA folders.
The xemu release does not carry the image. Batocera and Recalbox
package the 1.0 xemu-hdd-image and copy it into the saves folder at
launch when none is there, RetroDECK copies its packaged copy into the
BIOS folder during setup, and EmuDeck downloads it while setting xemu
up. ROCKNIX packages the same image and unzips it at launch into
bios/xemu/hdd/, the path its xemu.toml gives hdd_path.
source_ref: "system/vl.c:3060-3074, ui/xemu-snapshots.c:156"
- name: xbox_hdd.qcow2
mode: libretro
path: "xemu/xbox_hdd.qcow2"
required: false
has_builtin: true
description: "Xbox hard disk image, 8 GB with the retail partition layout"
note: >-
Read from system/xemu/, else from the root of the system directory.
When neither holds one, the core writes the formatted xemu-dashboard
image it carries to system/xemu/xbox_hdd.qcow2. Game saves live in
the image.
source_ref:
standalone: "system/vl.c:3060-3074, ui/xemu-snapshots.c:156"
libretro: "ui/xemu-libretro.c:121-123, ui/xemu-libretro.c:200-202, ui/xemu-libretro.c:210-236"
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3438-3448, ui/libretro.c:2088-2105"
# Sega Chihiro, libretro build: system/xemu/Chihiro/, MAME's names.
- name: "chihiro_xbox_bios.bin"
mode: libretro
system: sega-chihiro
path: "xemu/Chihiro/chihiro_xbox_bios.bin"
required: true
size: 524288
sha1: "b700b0041af8f84835e45d1d1250247bf7077188"
validation: [size, sha1]
description: "Chihiro BIOS"
note: "The only flash image a Chihiro boots. Any other file, or none, leaves the machine paused with a message."
source_ref:
libretro: "ui/libretro.c:1785-1789, hw/xbox/chihiro/chihiro.c:2280-2292, system/vl.c:3325-3398"
- name: "fpr21042_m29w160et.bin"
mode: libretro
system: sega-chihiro
path: "xemu/Chihiro/fpr21042_m29w160et.bin"
aliases: ["fpr-23887_29lv160te.ic4", "fpr-23887.bin"]
required: true
max_size: 4194304
validation: [size]
description: "Chihiro media board flash"
note: "Read beside the BIOS, then in its parent folder, under these three names in turn. Up to 4 MiB is accepted. Without it the machine stays paused."
source_ref:
libretro: "hw/xbox/chihiro/chihiro.c:2259-2278, hw/xbox/chihiro/chihiro.c:2294-2334, system/vl.c:3325-3398"
- name: "ic10_g24lc64.bin"
mode: libretro
system: sega-chihiro
path: "xemu/Chihiro/ic10_g24lc64.bin"
required: true
size: 8192
validation: [size]
description: "Chihiro QC EEPROM"
note: "Read beside the BIOS and refused at any other size. Without it the machine stays paused."
source_ref:
libretro: "hw/xbox/chihiro/chihiro.c:2376-2402, system/vl.c:3325-3398"
- name: "ic11_24lc024.bin"
mode: libretro
system: sega-chihiro
path: "xemu/Chihiro/ic11_24lc024.bin"
required: true
size: 128
validation: [size]
description: "Chihiro baseboard EEPROM"
note: "Read beside the BIOS and refused at any other size. Without it the machine stays paused."
source_ref:
libretro: "hw/xbox/chihiro/chihiro.c:2376-2402, system/vl.c:3325-3398"
- name: "pc20_g24lc64.bin"
mode: libretro
system: sega-chihiro
path: "xemu/Chihiro/pc20_g24lc64.bin"
required: true
size: 8192
validation: [size]
description: "Chihiro SC EEPROM"
note: "Read beside the BIOS and refused at any other size. Without it the machine stays paused."
source_ref:
libretro: "hw/xbox/chihiro/chihiro.c:2376-2402, system/vl.c:3325-3398"
- name: "ver1305.bin"
mode: libretro
system: sega-chihiro
path: "xemu/Chihiro/ver1305.bin"
required: false
description: "Chihiro network board firmware 13.05"
note: "Read when present. The media board reports its version from it, and a linked cabinet runs it on the network board, which cannot start without it."
source_ref:
libretro: "ui/libretro.c:1790-1794, hw/xbox/chihiro/chihiro.c:365-380, hw/xbox/chihiro/chihiro.c:490-505"
- name: wpcap.dll
required: false
+30 -19
View File
@@ -11,19 +11,19 @@
"advanced_tests": "a13ebba9e3d4b1f70f882d824268152026ff184a",
"amiarcadia": "73e48e85824950f30df26673219cd5ca4548496a",
"amiberry": "e5d1f0f9a143594d893031caed9aa760ff34ce0a",
"anarch": "f06701967498ab0a5dfc0c7ca50c3aeea6c9e6e6",
"anarch": "b8fa81cda3b6e08423b27c2a919493a43dfd69e1",
"applewin": "c999c4b73ff48409acecb0239214c74f3464bcd1",
"ardens": "938877e6a867441fbab2edfd19acc3d85f4b0277",
"arduous": "cb6f0917fa4454126fdb93714eadb6d6cfab1a9f",
"armsx2": "c8a763b3d75e84997218323350a22cc79fe8e39a",
"atari800": "07b87e91cf4577db7791188399f1cc1f320932f0",
"azahar": "1173e2e8a919d578cc589545cb3c0c71dc4e1188",
"azahar": "88fa072675ff483b8affca41569543abc7defce9",
"b2": "140b31e2d829f094fbf81856f63acd8f3c97f9e8",
"bbkemu": "ee36e46bfcff3ec6f66da3e35bc249d398d962ca",
"beetle_saturn": "d0364ee2ba9f0ba1e676dcf397cc66aad5204f8d",
"bennugd": "620191828ed5ac08426aa132a7e15dabfe78b702",
"bk": "7025d150c3265eaaabf8c1863a7fe367402f2dc1",
"blastem": "0850a1ce3c92ed115ea42d7df89741c26e46907a",
"blastem": "51f458b542f618e71ef3c2282606f69adae7aee7",
"bluemsx": "8ea8ac764e50f2618e4936dcf7d8dc43952488c1",
"bnes": "fcd6e352d4949a876014c516d9afc86fd25ae92c",
"boom3": "f7c3290aa476e2fa724b97974713bdfb9d9594d9",
@@ -70,9 +70,10 @@
"duckstation": "7113d3c62a314cc6da7ef3bc12efec29f415ed6b",
"easyrpg": "d057e86ecc3482bc41dd88e5af75a59dea3360c6",
"ecwolf": "514cca6aa6df9f5552e9119d6173d3ff0d4e1a4a",
"eduke32": "12b0ac4a97c2279620f3ff5173753e82cd80bc35",
"eka2l1": "b6a0192caf919ef988bef44653153eb4815b3852",
"emucv": "1cf170a6eea802ed5f58d51482b06098f20ee7d6",
"emuscv": "37ca60ffca2affc6e2a264184cf16b64a5a9d1d1",
"emuscv": "0be7ab4a28cb8cd68c77622d71bc893aaa8eca5f",
"emux_chip8": "76b0e06041b05ebbf723b101c04e0016729919cc",
"emux_gb": "ea951760e5ade5fb20dc4ca56f12e36bfd0a65fd",
"emux_nes": "043810ea5c9b3dcd4e82df1427c504331d3fc297",
@@ -105,11 +106,12 @@
"galaksija": "f27a232f8ae2ac12bae8436ed8fd220b745e8264",
"gam4980": "3d757498a3c9fa728c9df1ee18dd88faf73432fa",
"gambatte": "fc1e4e3b8f0ae047fab73ab516c5a0276370303d",
"gearboy": "670b1b90974ab6487b792fbeeddf5736afa4318f",
"gearcoleco": "2126bdabe8d1d8bb7d6dbcf3d1956502777bbc49",
"geargrafx": "79fe02a2840a276d1c834e31910ec91b3d9aa8b0",
"gearlynx": "624951f9e137ad27af7eabbf02550bc615a78dd2",
"gearsystem": "90d34a245aa2b6ac69a23a9af7952043f5d34425",
"gametank": "7342fd10425dfd8f0c646228408cd45c0495c1a6",
"gearboy": "ccf4bde10740c71fb86b943b72326c47010c40c6",
"gearcoleco": "2d1bbb7a43b720b645263ce94479f5fbfeadccb9",
"geargrafx": "9027529ce6014924824872253b6e07cc133cf933",
"gearlynx": "4ed786f46c7ebda13bade51446653161013b24ca",
"gearsystem": "4c32f3e20dfb72456cb8f71dde1666c569ae7ac9",
"genesis_plus_gx": "ae18384f5f4ba3e8417d430419d5fb4c1da02349",
"genesis_plus_gx_wide": "7a0deff1895e84f7475928814cdcdc9795471405",
"geolith": "e130b2796ea18dcce8cb8dcc6e35361d7c4c1682",
@@ -120,14 +122,17 @@
"handy": "e9f0c36320a31642202201bce0031f8a73c5a49e",
"hatari": "7641a27200948c97d046b7e0d559401894cc24ae",
"hatari2014": "54fde5cfffa09ec45d7a27a9b37978b7742677c2",
"hatarib": "9b2901327080b1c81406ba053dc1887fece953f3",
"hatarib": "6b670077662ea2283853283b89761d1ba4acfa16",
"hbmame": "54c043535e2635e936a8ac20912ab125394adf89",
"higan_sfc": "9bdcf2d0e92f0e9509b0bd91872c84c3562b9040",
"holani": "ec099eecd2d31c2c9355ca0f2b057c877d75e58a",
"hyperscanemu": "d137163bbd41e7fd81c1944979a795cf2a46b31a",
"hypseushw": "efdcb86be9467cdf3ef49dd9077ba6b6ad1d195b",
"imageviewer": "5eeb8e208aed6bec71427f6d6ac6bc9c93bb3365",
"irogb": "fd57733234d7219ff1758464406d5c67201b8c4e",
"ishiiruka": "d8c8c6c016451cb7c0d340eb51f150bf6f0983b3",
"jaxe": "5bb4cd5077edf0fce90a51116130894612460d2e",
"jgenesis": "86b9c9b8a7ff91962608a85bba560d7b91710e15",
"jollycv": "598b90e899a7d7d46f555c77c89c3a888d8eafb9",
"jumpnbump": "ed1a11061c6c53045f3b0d8c10128f719d5ea113",
"kronos": "e9711a1019be483c0d994ad1f3109e5ab06d0f2d",
@@ -135,12 +140,12 @@
"lutro": "7a5e1ba0d29c909b24f4da77296e0b794323fddd",
"m2000": "5a93b6679ed203a68db5cd8478a2fdfd03c86bf0",
"mame": "ae3a33aec0981c37c8caa63a7d8c86cbccbbc11c",
"mame2000": "326d7666692086df51e77f6ec89438872604ed18",
"mame2000": "962b4e8a6b6761158ab3fa0238fb3adb3caba4ab",
"mame2003": "f3ed8c023d555151e4d2cfce389ffdd2e50dab6e",
"mame2003_midway": "aa36dcb2e9295ff7d39a1c44fd641ab127c8d5d0",
"mame2003_plus": "07d5ae3f3857d574a19a67a4feb5e382bd419f79",
"mame2009": "1b673833aca392291e9643b24cda35539e2f7273",
"mame2010": "8f6b8d900859ce2f7f01bff1be5c60946076b829",
"mame2009": "d616c022fda2568b7e57310449c55fc436349d3b",
"mame2010": "a56aea04232f735f1de54b78bea2494484f1cc0d",
"mame2015": "8abad707dd5c0206eb6f0889adb9b46128ea0975",
"mame2016": "6231bcc43590a3adc36fa4c14ddefe4d373fa440",
"mamearcade": "86f27948d45ed51bf9c6d523ebc1d63d5d92e840",
@@ -161,13 +166,14 @@
"mednafen_vb": "0d3399122790f3e72d25abaab995622474e720e2",
"mednafen_wswan": "24cf8e85a0d027d464afd71612bbdc2a1aa86c65",
"melonds": "ba1e3762404c290082ca202183704e3c711bb49c",
"melondsds": "82c511d23dfa7b8a3f3bb43b38c6598cd835740b",
"melondsds": "510ce789c11a92ab54e140ebd1c7e8a1e8c6b056",
"mesen": "82871f69374e2e9a4e8ac52009bed1a9c26a3c94",
"mesen-s": "e9d19eb873e5d1dc8c65f409c7603413f5c99a32",
"mesen2": "cb556adf4cca53da9d7bad80fc63cc92fb37bf34",
"mess2015": "b9260d933fae4b78c34c45ed1b3e6f12cddae7d5",
"meteor": "871d3b256cff96544ee8866e860c5f5afb293ef1",
"mgba": "90e1425af4bf9b1cfcef189d51b596e19c793ffd",
"mgba_splitscreen": "d7fc431fade83166922e8c4d2bcdb4899c6771a4",
"minivmac": "224fc445e6ffaa2b1ec2805fd5a8bf54daadc273",
"mkxp-z": "a5a54cb7c2001afe6fcdd9a782584a3ee8f020df",
"mojozork": "131fd6fe964349afd49b77a3d1b7e3712ad7aca9",
@@ -200,6 +206,7 @@
"opentyrian": "5f3bae87cddae1c5cb5f51cef3ea43e3a45c0a2b",
"opera": "d8447c579efd7425edc06b6e03697abfeebee062",
"panda3ds": "f95daaa5e6e68dabe71e825655f09a7e3c7b17fd",
"parallel_dc": "4c40bc45cbe50c468d0538e443b9da9ec1d30598",
"parallel_n64": "320b88d1032d3caa5ae3b39469dacc005ccae59b",
"parallel_n64_debug": "96611a7235f47b06075d237ef8e5d33207d195a2",
"pascal_pong": "a1810d465843e18701c208c9ec2a92d783195fe3",
@@ -214,6 +221,7 @@
"picodrive": "9e539d30e23a7ee469a6780500fb1400de00c976",
"piece": "0fbc5df982831b9ac3b2e327c41f4d68d42c3620",
"play": "b91e6d04d33a86694d1e14ed8f3cddd962805f33",
"playdiaemu": "f37bff0b3a374d0080fb29524a80612fed433c4a",
"pocketcdg": "9a7a9606dfc265ced4e6b8d0356b245bff076fc2",
"pokemini": "07cabab917a3b8040d80538b843de778f006820e",
"pokketstation": "90f40d6c9c3dc0dd347db21afa07d47c1407f032",
@@ -237,10 +245,11 @@
"retrodream": "0544849053aa85007b3a4a4162501fa8ad259d9a",
"romcleaner": "6c9181472df165dab7449100f01cf6def1d9d707",
"rp6502": "128440e0c79671b0bdd13bad6b04f05ccd12492f",
"rust_dos": "c50392af047e750dc6ae535f791fd3a4ff4e6be9",
"rustation": "01fdab0903e30a19a0ca299fc15b8aa241843417",
"rustynes": "c231a5836ff48970ada68f39cb002ebba190dbb8",
"rustynes": "c1407f2957ffac8caf674a5fb0ce178c4f27bce5",
"rvvm": "5fe5334df5112ff14bee0009f2de55656fb815a4",
"same_cdi": "2bc8421aef357ccb70d320a113045b1bc2f8aff1",
"same_cdi": "82470bf9c8a7321f2f4abd46f00c40bdf41c8237",
"sameboy": "900d258764ec864fdae7b33d26ccb1f261023193",
"sameduck": "7625ddea334c4f1747b10e3ab92459ee2a3b05d7",
"scummvm": "17d120c360629463b535c6c872ec7d4faf94fd1c",
@@ -290,6 +299,7 @@
"ume2015": "cc668cd200e31492ac09f6b7f3e77e338f8f10aa",
"uw8": "c920638e44627f5ea9fb5a66cd05b925d3fa7744",
"uxn": "ae7f7069dd14125875d1474c97eba70c916e3b99",
"uzdoom": "56c8fe493db262a75474c5dc7e13f03999717aa4",
"uzem": "e3cec8c8a0ccee9fba3884a80c8a3c909d513355",
"vaporspec": "390f79a6b346d6aa32afb5f5e6356b079a05578b",
"vba_next": "edbdb88f64a85755f2085f2cb80d232429f4848b",
@@ -308,9 +318,10 @@
"vice_xvic": "33f3689b881367a2400cdead1d7b542a311b4dc2",
"video_processor": "5bdc74ff749976a560a534af0d06277153a5c206",
"vidtest": "4d8fe9a3f3033d06b5ec8ac28327965dcf951f0b",
"vircon32": "66d770352a9a1da119e8f766df17b0bfcbf7d757",
"virtualjaguar": "fc434223e248d32c38e46fcd84eae40116d1bbb6",
"vircon32": "1fbaa79426989703455aa5e04c669e983bf970af",
"virtualjaguar": "f78c0b179cb494e7debf68c4a794bf4c5c1f3e89",
"virtualxt": "0f078c4357c3f6196faea56951930491455b47b8",
"vita3k": "d6d2a56d045fbc80ca63c0449a8bf39dba48953a",
"vitaquake2": "18ae56936e0857d726df6b1805bcaf39f649e1c8",
"vitaquake2-rogue": "5740238c8c868c1bd77278565deb4d0380bff1f9",
"vitaquake2-xatrix": "9457b624a2ef954d8a956a9dbb1cade98a4f8535",
@@ -321,7 +332,7 @@
"wqxemu": "75b6fd2d3726386ebf3e2839ab1facbe87df3f7a",
"x1": "81e99f41eb8a048defc206383fbabdf281e53b6f",
"x64sdl": "4171f40c8a70256a2c5cb70db6a2b8fa733d9b3d",
"xemu": "e6033c0002a3311d6f0ba2bd6c1f399324d65e96",
"xemu": "723ba3f04f24dfd148ab2ddb8318cd85ad7553ab",
"xrick": "2bb032e72b1432fa2c428d186db4ce55dfec8e2f",
"yabasanshiro": "bc1d40f813591ab89fb3c69af143976b636a6d89",
"yabause": "3b4247a760bff675b05f8436ce0b648cf4ea9e21",
+17 -5
View File
@@ -1097,11 +1097,19 @@ def triage_state(report: ProfileReport) -> str:
def select_repo(profile: dict) -> upstream.Repo | None:
"""Repository the profile was read from: source first, then upstream."""
"""Repository the profile was read from: source first, then upstream.
A source keyed by build mode with no upstream (uzdoom) names its
repositories only in the dict, which a plain string read never parses.
"""
for field in ("source", "upstream"):
repo = upstream.parse_repo(str(profile.get(field) or ""))
if repo is not None:
return repo
for _, _, url in declared_repositories(profile):
repo = upstream.parse_repo(url)
if repo is not None:
return repo
return None
@@ -1496,14 +1504,18 @@ def detect_pinned_tag(
def tag_pinned_views(
profile: dict, views: list[RepoView], cache_dir: str, offline: bool
) -> dict[tuple[str, str], str]:
"""Views whose pin is the tag `core_version` names, keyed by repository."""
"""Views whose pin is the tag `core_version` names, keyed by repository.
A core_version keyed by build mode names the tag of the view's own mode:
uzdoom's standalone sits on 5.0.3 while its libretro branch moves.
"""
tagged: dict[tuple[str, str], str] = {}
declared = profile.get("core_version")
for view in views:
if view.pin == view.head:
continue
for tag in version_tag_candidates(
profile.get("core_version"), view.repo.name
):
version = declared.get(view.mode) if isinstance(declared, dict) else declared
for tag in version_tag_candidates(version, view.repo.name):
if upstream.tag_commit(view.repo, tag, cache_dir, offline) == view.pin:
tagged[(view.repo.host, view.repo.slug)] = tag
break
+11
View File
@@ -1254,6 +1254,17 @@ class TestSelectRepo(unittest.TestCase):
def test_none_when_no_supported_host(self):
self.assertIsNone(select_repo({"source": "https://www.6809.org.uk/"}))
def test_source_keyed_by_mode_without_upstream(self):
repo = select_repo(
{
"source": {
"standalone": "https://github.com/UZDoom/UZDoom",
"libretro": "https://github.com/libretro/uzdoom",
},
}
)
self.assertEqual(repo.name, "UZDoom")
class TestBuildReport(unittest.TestCase):
def setUp(self):