mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-12 04:53:52 -06:00
chore: merge core-info reviews
This commit is contained in:
commit
7a5d5e5bf5
10 files changed
+585
-149
No files matched your search
+68
-9
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in new issue
Block a user