mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-17 17:03:27 -05:00
fix: file every platform system under a known id
Thirty platform system ids, such as sufami, pokemini, vsmile, and Recalbox's comma-joined msx1,msx2, matched no system any profile names, so no core file was attributed to them and --system missed them. The scraper maps now carry those names, and a test holds every platform system to a profile system apart from two named folds.
This commit is contained in:
1 parent
0894b67d3f
commit
dbcd26d3ab
9 files changed
+764
-727
No files matched your search
+12
-20
@@ -566,7 +566,7 @@ systems:
|
||||
native_name: Odyssey 2
|
||||
native_id: odyssey2
|
||||
name: Odyssey 2
|
||||
videopacplus:
|
||||
philips-videopac:
|
||||
files:
|
||||
- name: g7400.bin
|
||||
destination: g7400.bin
|
||||
@@ -985,10 +985,6 @@ systems:
|
||||
native_system: segacd
|
||||
native_path: bios/bios_CD_J.bin
|
||||
native_name: Sega CD
|
||||
native_id: segacd
|
||||
name: Sega CD
|
||||
megadrive-msu:
|
||||
files:
|
||||
- name: bios_CD_E.bin
|
||||
destination: bios_CD_E.bin
|
||||
required: true
|
||||
@@ -1010,7 +1006,7 @@ systems:
|
||||
native_system: megadrive-msu
|
||||
native_path: bios/bios_CD_J.bin
|
||||
native_name: MSU-MD
|
||||
native_id: megadrive-msu
|
||||
native_id: segacd
|
||||
name: MSU-MD
|
||||
sega-saturn:
|
||||
files:
|
||||
@@ -1230,7 +1226,7 @@ systems:
|
||||
native_name: Satellaview
|
||||
native_id: satellaview
|
||||
name: Satellaview
|
||||
sufami:
|
||||
nintendo-sufami-turbo:
|
||||
files:
|
||||
- name: STBIOS.bin
|
||||
destination: STBIOS.bin
|
||||
@@ -1428,7 +1424,7 @@ systems:
|
||||
native_name: Xbox
|
||||
native_id: xbox
|
||||
name: Xbox
|
||||
amiga500:
|
||||
commodore-amiga:
|
||||
files:
|
||||
- name: kick33180.A500
|
||||
destination: amiga/kick33180.A500
|
||||
@@ -1500,10 +1496,6 @@ systems:
|
||||
native_system: amiga500
|
||||
native_path: bios/amiga/amiga-os-310-a600.rom
|
||||
native_name: Amiga 500
|
||||
native_id: amiga500
|
||||
name: Amiga 500
|
||||
commodore-amiga:
|
||||
files:
|
||||
- name: kick34005.A500
|
||||
destination: amiga/kick34005.A500
|
||||
required: true
|
||||
@@ -1616,7 +1608,7 @@ systems:
|
||||
native_system: amigacd32
|
||||
native_path: bios/amiga/amiga-ext-310-cd32.rom
|
||||
native_name: Amiga CD32
|
||||
native_id: amigacdtv
|
||||
native_id: amiga500
|
||||
name: Amiga CD32
|
||||
pc60:
|
||||
files:
|
||||
@@ -2040,7 +2032,7 @@ systems:
|
||||
native_name: Fujistu FM-Towns
|
||||
native_id: fmtowns
|
||||
name: Fujistu FM-Towns
|
||||
gp32:
|
||||
gamepark-gp32:
|
||||
files:
|
||||
- name: gp32.zip
|
||||
destination: gp32.zip
|
||||
@@ -2645,7 +2637,7 @@ systems:
|
||||
native_name: Apple Macintosh
|
||||
native_id: macintosh
|
||||
name: Apple Macintosh
|
||||
segaai:
|
||||
sega-ai:
|
||||
files:
|
||||
- name: segaai.zip
|
||||
destination: segaai.zip
|
||||
@@ -3215,7 +3207,7 @@ systems:
|
||||
native_name: ColecoVision
|
||||
native_id: colecovision
|
||||
name: ColecoVision
|
||||
bbc:
|
||||
acorn-bbc-micro:
|
||||
files:
|
||||
- name: bbcb.zip
|
||||
destination: bbcb.zip
|
||||
@@ -4822,7 +4814,7 @@ systems:
|
||||
native_name: VTech CreatiVision
|
||||
native_id: crvision
|
||||
name: VTech CreatiVision
|
||||
vsmile:
|
||||
vtech-vsmile:
|
||||
files:
|
||||
- name: vsmile.zip
|
||||
destination: vsmile.zip
|
||||
@@ -4856,7 +4848,7 @@ systems:
|
||||
native_name: VTech V.Smile
|
||||
native_id: vsmile
|
||||
name: VTech V.Smile
|
||||
socrates:
|
||||
vtech-socrates:
|
||||
files:
|
||||
- name: socrates.zip
|
||||
destination: socrates.zip
|
||||
@@ -4924,7 +4916,7 @@ systems:
|
||||
native_name: Bandai RX-78
|
||||
native_id: rx78
|
||||
name: Bandai RX-78
|
||||
advision:
|
||||
entex-advision:
|
||||
files:
|
||||
- name: advision.zip
|
||||
destination: advision.zip
|
||||
@@ -5536,7 +5528,7 @@ systems:
|
||||
native_name: Triforce
|
||||
native_id: triforce
|
||||
name: Triforce
|
||||
bk:
|
||||
elektronika-bk:
|
||||
files:
|
||||
- name: B11M_BOS.ROM
|
||||
destination: bk/B11M_BOS.ROM
|
||||
|
||||
+677
-683
File diff suppressed because it is too large.
Load diff
+16
-22
@@ -497,7 +497,7 @@ systems:
|
||||
native_path: bios/mame/hash/adam_flop.xml
|
||||
native_name: Coleco Adam
|
||||
name: Coleco Adam
|
||||
advision:
|
||||
entex-advision:
|
||||
files:
|
||||
- name: advision.zip
|
||||
destination: advision.zip
|
||||
@@ -513,7 +513,7 @@ systems:
|
||||
native_path: bios/mame/hash/advision.xml
|
||||
native_name: Adventure Vision
|
||||
name: Adventure Vision
|
||||
amiga500:
|
||||
commodore-amiga:
|
||||
files:
|
||||
- name: kick33180.A500
|
||||
destination: kick33180.A500
|
||||
@@ -536,9 +536,6 @@ systems:
|
||||
native_system: amiga500
|
||||
native_path: bios/kick37175.A500
|
||||
native_name: Amiga 500
|
||||
name: Amiga 500
|
||||
commodore-amiga:
|
||||
files:
|
||||
- name: kick40068.A1200
|
||||
destination: kick40068.A1200
|
||||
required: true
|
||||
@@ -546,6 +543,13 @@ systems:
|
||||
native_system: amiga1200
|
||||
native_path: bios/kick40068.A1200
|
||||
native_name: Amiga 1200
|
||||
- name: kick40068.A4000
|
||||
destination: kick40068.A4000
|
||||
required: true
|
||||
md5: 9bdedde6a4f33555b4a270c8ca53297d
|
||||
native_system: amiga4000
|
||||
native_path: bios/kick40068.A4000
|
||||
native_name: Amiga 4000
|
||||
- name: kick40060.CD32.ext
|
||||
destination: kick40060.CD32.ext
|
||||
required: true
|
||||
@@ -575,16 +579,6 @@ systems:
|
||||
native_path: bios/kick40060.CD32
|
||||
native_name: Amiga CD32
|
||||
name: Amiga CD32
|
||||
amiga4000:
|
||||
files:
|
||||
- name: kick40068.A4000
|
||||
destination: kick40068.A4000
|
||||
required: true
|
||||
md5: 9bdedde6a4f33555b4a270c8ca53297d
|
||||
native_system: amiga4000
|
||||
native_path: bios/kick40068.A4000
|
||||
native_name: Amiga 4000
|
||||
name: Amiga 4000
|
||||
apfm1000:
|
||||
files:
|
||||
- name: apfm1000.zip
|
||||
@@ -797,7 +791,7 @@ systems:
|
||||
native_path: bios/mame/hash/aquarius_cass.xml
|
||||
native_name: Aquarius
|
||||
name: Aquarius
|
||||
arcadia:
|
||||
emerson-arcadia-2001:
|
||||
files:
|
||||
- name: ar_bios.zip
|
||||
destination: ar_bios.zip
|
||||
@@ -1145,7 +1139,7 @@ systems:
|
||||
native_path: bios/mame/hash/bbcmc_flop.xml
|
||||
native_name: BBC
|
||||
name: BBC
|
||||
bk:
|
||||
elektronika-bk:
|
||||
files:
|
||||
- name: B11M_BOS.ROM
|
||||
destination: bk/B11M_BOS.ROM
|
||||
@@ -1515,7 +1509,7 @@ systems:
|
||||
native_path: bios/disksys.rom
|
||||
native_name: Nintendo Family Computer Disk System
|
||||
name: Nintendo Family Computer Disk System
|
||||
ecwolf:
|
||||
wolfenstein3d:
|
||||
files:
|
||||
- name: ecwolf.pk3
|
||||
destination: ecwolf.pk3
|
||||
@@ -1726,7 +1720,7 @@ systems:
|
||||
native_path: bios/mame/hash/gmaster.xml
|
||||
native_name: Game Master
|
||||
name: Game Master
|
||||
gp32:
|
||||
gamepark-gp32:
|
||||
files:
|
||||
- name: gp32.zip
|
||||
destination: gp32.zip
|
||||
@@ -2247,7 +2241,7 @@ systems:
|
||||
native_path: bios/Mupen64plus/IPL_DEV.n64
|
||||
native_name: Nintendo 64 DD
|
||||
name: Nintendo 64 DD
|
||||
namco2x6:
|
||||
namco-system246:
|
||||
files:
|
||||
- name: r27v1602f.7d
|
||||
destination: pcsx2/bios/r27v1602f.7d
|
||||
@@ -2824,7 +2818,7 @@ systems:
|
||||
native_path: bios/SGB2.sfc
|
||||
native_name: Super Game Boy
|
||||
name: Super Game Boy
|
||||
sufami:
|
||||
nintendo-sufami-turbo:
|
||||
files:
|
||||
- name: STBIOS.bin
|
||||
destination: STBIOS.bin
|
||||
@@ -2933,7 +2927,7 @@ systems:
|
||||
native_path: bios/mame/hash/vg5k.xml
|
||||
native_name: VG5000
|
||||
name: VG5000
|
||||
vsmile:
|
||||
vtech-vsmile:
|
||||
files:
|
||||
- name: vsmile.zip
|
||||
destination: vsmile.zip
|
||||
|
||||
@@ -15695,7 +15695,7 @@ systems:
|
||||
native_system: vectrex
|
||||
component: retroarch
|
||||
description: Vectrex BIOS
|
||||
vsmile:
|
||||
vtech-vsmile:
|
||||
files:
|
||||
- name: vsmile.zip
|
||||
destination: bios/vsmile.zip
|
||||
|
||||
@@ -127,6 +127,18 @@ def es_systems_emulators(text: str) -> tuple[set[str], set[str]]:
|
||||
|
||||
|
||||
SYSTEM_SLUG_MAP = {
|
||||
"advision": "entex-advision",
|
||||
"amiga500": "commodore-amiga",
|
||||
"bbc": "acorn-bbc-micro",
|
||||
"bk": "elektronika-bk",
|
||||
"gp32": "gamepark-gp32",
|
||||
# MSU-MD runs on the Mega Drive cores and loads the Mega-CD BIOS.
|
||||
"megadrive-msu": "sega-mega-cd",
|
||||
"segaai": "sega-ai",
|
||||
"socrates": "vtech-socrates",
|
||||
"sufami": "nintendo-sufami-turbo",
|
||||
"videopacplus": "philips-videopac",
|
||||
"vsmile": "vtech-vsmile",
|
||||
"atari800": "atari-400-800",
|
||||
"atari5200": "atari-5200",
|
||||
"atarist": "atari-st",
|
||||
|
||||
@@ -45,7 +45,12 @@ SOURCE_URL = (
|
||||
|
||||
SYSTEM_SLUG_MAP = {
|
||||
"3do": "3do",
|
||||
"bk": "elektronika-bk",
|
||||
"dragon": "dragon64",
|
||||
"palm": "palm-os",
|
||||
"pokemini": "nintendo-pokemon-mini",
|
||||
"sufami": "nintendo-sufami-turbo",
|
||||
"videopacplus": "philips-videopac",
|
||||
"trs80coco": "coco",
|
||||
"amiga600": "commodore-amiga",
|
||||
"amiga1200": "commodore-amiga",
|
||||
@@ -230,7 +235,10 @@ class Scraper(BaseScraper):
|
||||
|
||||
for system_elem in root.findall(".//system"):
|
||||
platform = system_elem.get("platform", "")
|
||||
system_slug = SYSTEM_SLUG_MAP.get(platform, platform)
|
||||
# One <system> can serve several platforms ("msx1,msx2", "gb,gbc"):
|
||||
# it is filed under the first, which names the machine family.
|
||||
first = platform.split(",")[0].strip()
|
||||
system_slug = SYSTEM_SLUG_MAP.get(first, first)
|
||||
fullname = system_elem.get("fullname", "")
|
||||
|
||||
for bios_elem in system_elem.findall("bios"):
|
||||
|
||||
@@ -74,6 +74,10 @@ def es_systems_cores(text: str) -> tuple[set[str], set[str]]:
|
||||
# until the two shared one map.
|
||||
SYSTEM_SLUG_MAP = {
|
||||
**BATOCERA_SLUGS,
|
||||
"amiga4000": "commodore-amiga",
|
||||
"arcadia": "emerson-arcadia-2001",
|
||||
"ecwolf": "wolfenstein3d",
|
||||
"namco2x6": "namco-system246",
|
||||
"ps2": "sony-playstation-2",
|
||||
"ps3": "sony-playstation-3",
|
||||
"psvita": "sony-playstation-vita",
|
||||
|
||||
@@ -153,6 +153,7 @@ SYSTEM_SLUG_MAP: dict[str, str | None] = {
|
||||
"dragon": "dragon64",
|
||||
"tanodragon": "dragon64",
|
||||
"pico8": "pico8",
|
||||
"vsmile": "vtech-vsmile",
|
||||
"wolfenstein": "wolfenstein-3d",
|
||||
"zxspectrum": "sinclair-zx-spectrum",
|
||||
}
|
||||
|
||||
@@ -713,6 +713,38 @@ class OneNativeIdOneSystem(unittest.TestCase):
|
||||
self.assertTrue({"sony-playstation", "nintendo-ds"} <= set(data["systems"]))
|
||||
self.assertFalse({"psx", "nds", "atari800"} & set(data["systems"]))
|
||||
|
||||
# A platform system no profile names gets no core extra and answers no
|
||||
# --system. Named here: Batocera's family folds Naomi and Atomiswave into
|
||||
# one system the profiles keep apart, and MiSTer cores nothing profiles.
|
||||
UNMATCHED = {
|
||||
"*": {"sega-dreamcast-arcade"},
|
||||
"misterfpga": {"gameking", "interact", "marty", "studio-ii", "superacan",
|
||||
"videobrain"},
|
||||
}
|
||||
|
||||
def test_every_platform_system_meets_a_profile_system(self):
|
||||
import yaml # noqa: PLC0415
|
||||
|
||||
from common import ( # noqa: PLC0415
|
||||
_norm_system_id,
|
||||
load_emulator_profiles,
|
||||
load_platform_config,
|
||||
)
|
||||
|
||||
known = set()
|
||||
for profile in load_emulator_profiles(str(REPO_ROOT / "emulators")).values():
|
||||
known |= {_norm_system_id(s) for s in profile.get("systems") or []}
|
||||
known |= {_norm_system_id(f["system"]) for f in profile.get("files") or []
|
||||
if isinstance(f, dict) and f.get("system")}
|
||||
registry = yaml.safe_load((REPO_ROOT / "platforms" / "_registry.yml").read_text())
|
||||
for name in registry["platforms"]:
|
||||
with self.subTest(platform=name):
|
||||
config = load_platform_config(name, str(REPO_ROOT / "platforms"))
|
||||
allowed = self.UNMATCHED["*"] | self.UNMATCHED.get(name, set())
|
||||
stray = {s for s in config.get("systems", {})
|
||||
if _norm_system_id(s) not in known} - allowed
|
||||
self.assertEqual(stray, set())
|
||||
|
||||
def test_xroar_machines_reach_the_platforms_that_run_it(self):
|
||||
import yaml # noqa: PLC0415
|
||||
|
||||
|
||||
Reference in new issue
Block a user