Commit Graph
13 Commits
Author SHA1 Message Date
Abdessamad Derraz bad9a7f601 feat: follow a clone to its parent set
MAME's search path for a set is the set and every ancestor
(src/emu/driver.cpp:31-38, src/emu/romload.cpp:67-84 at mame0289), so
a clone reads the ROMs it shares with its parent from the parent's
archive. games/arcade/<profile>.json now records, under parents, each
parent game set with ROMs and the clones whose romof chain reaches it
before any BIOS set, and rom_search_sets adds them to what a command
reads. The installer's index leaves them out, as it does the sources.

arcade_parent_importer --all is re-run: every profile gains parents,
and mame0258, mame0278, mame2010, mame2015, mame2016 and fbneo also
gain the sources their committed files lacked.

Manifests, EmuDeck and RetroDECK only: videopac.zip reaches
roms/odyssey2 beside i8244.zip, electron.zip roms/electron, and the 35 parent
sets the profile holds (a7800, apple2e, intv, videopac and others)
reach arcade, consolearcade and mame, the folders whose command starts
any machine. verify --all keeps its severity and status counts.
2026-11-11 15:21:10 +01:00
Abdessamad Derraz 7a3d91585d feat: read ES-DE MAME search paths
ES-DE starts standalone MAME with -rompath %GAMEDIR%\;%ROMPATH%/<system>
in 78 live commands across 54 systems (resources/systems/linux/
es_systems.xml at retrodeck-main-20261103-162710, 15e1b236; two more
are commented out). The command line outranks mame.ini, so RetroDECK's
MAME reads its sets in the roms folder each command names and in no
BIOS folder. The ES-DE rom folders parser now records, per folder, the
folders a standalone command passes as its ROM search path and the
machines it starts, or that the game is the machine (%BASENAME%).
Rescraped at the pinned revisions: retrodeck, emudeck and
emudeck-windows gain these records and nothing else.

A command reads the sets its machines load: the machine's own set, the
BIOS sets on its romof chain and the device sets with ROMs it
instantiates, from games/arcade/mame.json (mame0289 -listxml). That
index now also lists the game and device sets of each driver source
file, so a %BASENAME% folder reads for its board: neogeo and stv by
their BIOS root, cps1-3 and model2 by source file, daphne and laserdisc
by the laserdisc player devices, gameandwatch and lcdgames by the
handheld sources, any other (arcade, mame, consolearcade) for every
machine. The published installer copy of the index leaves the sources
out.

Manifests: RetroDECK gains 1399 files, 378.2 MB, below roms/. Of the 219
sets named as read outside the BIOS folder, 58 reach 146 files (25.9 MB),
161 stay named, no command's machine reading them. 441 sets RetroDECK's
list also declares at bios/ reach 1253 files (352.3 MB), 429 each in
arcade and mame and 480 in consolearcade. No other platform changes.
2026-11-11 11:17:06 +01:00
Abdessamad Derraz 2589099f2d chore: merge origin/main
install/games regenerated over both sides.
2026-11-09 07:12:07 +01:00
Abdessamad Derraz fcd6753b9e fix: one id per machine for the games fallback
muOS names its GBA folder gameboyadvance first, which resolved to ares's
game-boy-advance. mgba lists nintendo-gba, so the fallback set was empty
and an unrecognised GBA game got no file. ares, dgen, picodrive, fbneo,
fbalpha2019 and emux_sms now use the ids the other profiles use, with
their old spellings kept as SYSTEM_ALIASES (bios.sms and fbneo's
Spectrum sets had fallen to the other bucket of the RetroArch list).

A folder whose name spells a machine its core does not run now also
holds the core's machines: a PC Engine CD folder run by mednafen_pce_fast
got no System Card. Install lists and install/games regenerated.
2026-11-09 06:13:24 +01:00
Abdessamad Derraz ab9fe76de2 fix: resolve the cores handhelds rename
ArkOS ran the GBA with gpsp_ezode_mod and dArkOS with mgba_rumble: no
profile named them, so an install for the card's games kept every GBA
core's files, FBNeo's 3,472 data files among them. Each rename proven
from the OS build (same code base, same BIOS loading) joins its
profile's cores. The resolver folds either separator, and falls back to
the emulator column when the core names a mode, a machine or a plugin
of that program, only where its profile declares the folder's system:
MAME documents no GameKing ROM. 109 unresolved names are 56, each one
recorded with why in tests/test_games_index.py.
2026-11-09 06:04:42 +01:00
Abdessamad Derraz 1ed605969d fix: standalone writers take the repository lock 2026-11-06 03:42:09 +01:00
Abdessamad Derraz dd904e2fab fix: say what differs in games index --check
--check printed only STALE and a path, after the whole coverage table. It now skips the table, names what changed in each document (an added file, a changed key) and the command that writes them. The published index lagged the RetroArch manifest by ep128emu/roms/ide12.rom and is regenerated.
2026-11-05 19:17:23 +01:00
Abdessamad Derraz 891741433b fix: publish the games index whole or not at all
install/games/, the event schema, the launcher index and wiki/installer.md were truncated at their final name, so an interrupted run left a committed-looking partial JSON document. They now go through write_text_atomic.
2026-11-05 19:16:59 +01:00
Abdessamad Derraz 141042dd81 refactor: narrow the install list once per cores 2026-11-05 11:59:21 +01:00
Abdessamad Derraz d38cd58036 feat: scrape recalbox rom folders per board
GitLab refused the hundred raw reads per IP. A GitLab directory is now
read from one archive request, else a shallow sparse git fetch, and the
cache keeps its file list so offline runs know what is absent.

Each board builds system.ini against its defconfig: a core whose package
the board does not enable is dropped (pisnes was the SNES default
everywhere), and a system with no core is not built. The row names the
default most boards share, board_defaults the others. A files: list
names whole files and is carried as files through the index and the
installer.

A folder no name resolves, run by a core of several machines, now holds
those machines: thomson, multivision and pcv2 had no fallback, so their
games got no file. Arcade-indexed cores keep naming files per set.
2026-11-04 16:48:34 +01:00
Abdessamad Derraz fd7dd0efe5 fix: games tools write whole files, name options
The games importers wrote through fixed .part names, the new options had
no help text, and romfolders stopped on the first setup the offline cache
lacked. RetroArch's rom folder map is regenerated from its source spec
(path null, as the schema says). The installer's Python 3.8 job imports
the games tests without pyyaml, so the region rules load lazily.
2026-11-03 22:46:17 +01:00
Abdessamad Derraz b69b33178b feat: publish board sets and sets with no bios
The games index now names, per arcade core, the game sets that load no
BIOS set and every BIOS set, so a set on a card the DAT does not know is
told apart from one that needs nothing. Each board default core of a rom
folder gets its own fallback set, and index.json maps every folder name
a setup uses to its systems, for a games folder on a computer.
2026-11-03 18:17:03 +01:00
Abdessamad Derraz c2ad67e4fa feat: publish the games index with install lists 2026-11-03 17:45:03 +01:00