mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
feat: shared groups, scraper subdir prefixes, arcade + emulator profiles
shared groups in _shared.yml: np2kai, keropi, quasi88, kronos, ep128emu with source references for each subdirectory requirement. libretro_scraper: CORE_SUBDIR_MAP applies subdirectory prefixes at generation time (np2kai/, keropi/, dc/). EXTRA_SYSTEMS adds QUASI88. SYSTEM_SHARED_GROUPS injects includes for kronos/np2kai/keropi. new BIOS: CPS3 (23 ZIPs), Cannonball OutRun (40 ROMs), PCem PC BIOS (73 files), VICE Commodore ROMs, Spectrum ZIPs, dc_bios.bin, X1 fonts. new emulator profiles: redream, melonds_ds, lrps2 with doc vs source notes. platforms/README.md documents shared groups architecture.
This commit is contained in:
@@ -22,6 +22,16 @@ SOURCE_URL = (
|
||||
"master/dat/System.dat"
|
||||
)
|
||||
|
||||
# Libretro cores that expect BIOS files in a subdirectory of system/.
|
||||
# System.dat lists filenames flat; the scraper prepends the prefix.
|
||||
# ref: each core's libretro.c or equivalent — see platforms/README.md
|
||||
CORE_SUBDIR_MAP = {
|
||||
"nec-pc-98": "np2kai", # libretro-np2kai/sdl/libretro.c
|
||||
"sharp-x68000": "keropi", # px68k/libretro/libretro.c
|
||||
"sega-dreamcast": "dc", # flycast/shell/libretro/libretro.cpp
|
||||
"sega-dreamcast-arcade": "dc", # flycast — same subfolder
|
||||
}
|
||||
|
||||
SYSTEM_SLUG_MAP = {
|
||||
"3DO Company, The - 3DO": "3do",
|
||||
"Amstrad - CPC": "amstrad-cpc",
|
||||
@@ -107,6 +117,10 @@ class Scraper(BaseScraper):
|
||||
destination = rom.name
|
||||
name = rom.name.split("/")[-1] if "/" in rom.name else rom.name
|
||||
|
||||
subdir = CORE_SUBDIR_MAP.get(system_slug)
|
||||
if subdir and not destination.startswith(subdir + "/"):
|
||||
destination = f"{subdir}/{destination}"
|
||||
|
||||
requirements.append(BiosRequirement(
|
||||
name=name,
|
||||
system=system_slug,
|
||||
@@ -236,6 +250,34 @@ class Scraper(BaseScraper):
|
||||
|
||||
systems[req.system]["files"].append(entry)
|
||||
|
||||
# Systems not in System.dat but needed for RetroArch — added via
|
||||
# shared groups in _shared.yml. The includes directive is resolved
|
||||
# at load time by load_platform_config().
|
||||
EXTRA_SYSTEMS = {
|
||||
"nec-pc-88": {
|
||||
"includes": ["quasi88"],
|
||||
"core": "quasi88",
|
||||
"manufacturer": "NEC",
|
||||
"docs": "https://docs.libretro.com/library/quasi88/",
|
||||
},
|
||||
}
|
||||
for sys_id, sys_data in EXTRA_SYSTEMS.items():
|
||||
if sys_id not in systems:
|
||||
systems[sys_id] = sys_data
|
||||
|
||||
# Inject shared group references for systems that have core-specific
|
||||
# subdirectory requirements already defined in _shared.yml.
|
||||
SYSTEM_SHARED_GROUPS = {
|
||||
"nec-pc-98": ["np2kai"],
|
||||
"sharp-x68000": ["keropi"],
|
||||
"sega-saturn": ["kronos"],
|
||||
}
|
||||
for sys_id, groups in SYSTEM_SHARED_GROUPS.items():
|
||||
if sys_id in systems:
|
||||
systems[sys_id].setdefault("includes", []).extend(
|
||||
g for g in groups if g not in systems[sys_id].get("includes", [])
|
||||
)
|
||||
|
||||
return {
|
||||
"platform": "RetroArch",
|
||||
"version": metadata["retroarch_version"] or "",
|
||||
|
||||
Reference in New Issue
Block a user