Commit Graph
5258 Commits
Author SHA1 Message Date
Abdessamad Derraz c8bbf900a6 chore: merge the install.py spacing from main 2026-11-11 17:39:01 +01:00
Abdessamad Derraz 85bcfca125 chore: keep two blank lines before _is_link
e38764627 left three blank lines after the record function, and
test_install_tui's two-blank-lines check failed Validation. The pins of
install.sh and install.ps1 and the launcher index follow the new hash.
2026-11-11 17:08:13 +01:00
Abdessamad Derraz a004e56220 chore: regenerate data for the release 2026-11-11 16:47:26 +01:00
Abdessamad Derraz f218998f59 chore: merge the removal and backups from main 2026-11-11 15:35:44 +01:00
Abdessamad Derraz a51f3d7f43 fix: name the removal options on the site
The options glance gains a Remove and put back group, the testing guide names test_install_removal, install.py declares _REPARSE_POINT once, and the type baseline drops three errors this change resolved.
2026-11-11 15:34:48 +01:00
Abdessamad Derraz 3bebf75da5 chore: merge the last MAME fixes 2026-11-11 15:23:57 +01:00
Abdessamad Derraz e9329e411d chore: regenerate the games index
install/games/ was last written before 7035da115 and 801af113b changed
the rom folders files (offers, searched_by) and before this branch's
profile and collection changes: test_published_files_are_current failed.
generate_games_index rewrites 37 files, setups and fallbacks. The
arcade indexes do not change, clone parents staying out of them.
2026-11-11 15:21:53 +01:00
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 e55fd0b76f fix: let a moved page return as part of its target
Sega's page passed its budget and was split by console again:
systems/sega-dreamcast is once more written, as a part whose parent is
systems/sega, the page it had moved to. The redirect already stands
aside for a written page. The test now asks the old address to be
absent or a part of its target.
2026-11-11 15:03:28 +01:00
Abdessamad Derraz a004c924f5 fix: find a filter box read, not the word Filter
A line opening on "Filter " stood for a filter box read whole, but the
installer page's key table has a row "Filter a long list". The reader
now counts a filter box that is not hidden. An MDX source writes the
space between two tags as {" "}: the reader of the generated sources
reads it as a space.
2026-11-11 15:03:24 +01:00
Abdessamad Derraz 01ddbec80f fix: follow the get page title rule in its test
The test rebuilt the old rule (any profile of the setup's name) and so
expected "BIOS pack for RetroArch" once the frontend profile landed.
It now reads the profile's files, as get_page_title does.
2026-11-11 15:03:17 +01:00
Abdessamad Derraz 114afee41b feat: move a config read at the pin with it
A profile following the branch tip (pin_follows) can carry a
config_reads entry read at the build a platform installs, which is
the pin itself: advmame's retropie entry reads advmame.rc at 96237a5.
bump_commit now advances such a revision with source_commit, and
leaves every other revision (another platform's build) alone.
2026-11-11 14:59:37 +01:00
Abdessamad Derraz 88dff3af82 fix: keep the space between two tags in MDX pages
MDX reads a line of tags alone as JSX and drops the space between
them: the RetroDECK page, written as MDX for its tabs, read
"2007/2008Coverage". mdx_safe writes that space as {" "}, which MDX
keeps. Checked against satteri's mdxToHast, not on a built site.
2026-11-11 14:58:10 +01:00
Abdessamad Derraz 62242013ff chore: raise the Batocera page weight for its refs
The MSX part of the Batocera page now cites every reader of the blueMSX
and fMSX machine ROMs (c62515a78, 26c71d03d): 34 KB of links that are
the content. Measured on the gate build of 7c5ad8366.
2026-11-11 14:57:58 +01:00
Abdessamad Derraz cb7700a594 fix: read AdvanceMAME's dir_rom list on RetroPie
RetroPie writes dir_rom $romdir/mame-advmame:$romdir/arcade into the
rc of each AdvanceMAME build (advmame.sh:100, configure_advmame being
called by the 1.4 and 0.94 modules too). _search_list_in_roms split
every list on ';', so the line was dropped and the sets landed at the
BIOS root, where no build reads them.

Each program's separator is now read from its own code: AdvanceMAME
strtoks dir_rom on file_dir_separator(), ':' on Linux, in the three
builds RetroPie ships (advance/linux/file.c:138-141, advance/osd/
fileio.c:696-699 at 96237a5, 685-688 at advancemame-1.4, 640-643 in
advancemame-0.94.0). MAME splits on ';' (src/emu/fileio.cpp:56, 64,
112 at mame0289). RetroPie is rescraped at 427e762: the three
passes_path records are its only change.

advmame, advmame-1.4 and advmame-0.94 carry a retropie config_reads
for dir_rom, read at the build RetroPie installs (96237a5, the tag
advancemame-1.4 its tarball matches, the 0.94.0 tarball). The 1.4 and
0.94 profiles gain the dir_rom pool and a path for each set, and 0.94
a pin_build on rp_module_repo.

Manifests: on RetroPie 55 sets of the three builds move from the BIOS
root to roms/mame-advmame, the first folder of the list, which every
game started from either folder reads. Seven archives other cores
share stay at the root for them. No other platform changes. verify
--all keeps its severity and status counts.
2026-11-11 14:57:12 +01:00
Abdessamad Derraz 39a8ccfd6d fix: count advancemame's sets at its new pin
AdvanceMameOnEmuELEC counted the 29 sets of 799060b. At 0f6a767 the
profile has 26 (aleck64, atarisy1, cedmag and coh1002v leave, hng64
joins), placed in roms/mame and roms/arcade: 52 entries.
2026-11-11 14:57:01 +01:00
Abdessamad Derraz 7aba66b946 chore: record the source paths of the new pins
The RetroArch frontend profile and the advancemame pin were never read
by sitesources.py --fetch. Trees whose profiles now cite more paths
record them too.
2026-11-11 14:54:26 +01:00
Abdessamad Derraz 08b1644a88 fix: compare a held pin to its pin_build only
Since 3129eaf10 a pin_build entry also names the build config_reads are
read at, a revision of its own: ROCKNIX builds DuckStation 0.1-10998
while the profile pins the code at c9dc2254. The test held those to the
profile's pin and read six profiles as disagreeing. advancemame, a held
pin, still disagrees: its pin is moved on another branch.
2026-11-11 14:53:22 +01:00
Abdessamad Derraz ad67e5f59a docs: quote the Phoenix slot message as code
The site reads no pronoun outside code: the quoted dialog of the notes
is now code, and the source_ref annotation says what the dialog names.
2026-11-11 14:49:33 +01:00
Abdessamad Derraz d643f6d560 fix: title the RetroArch pack as before
The RetroArch frontend profile (files: []) made the get/ page read
"BIOS pack for RetroArch", the order kept for a setup whose emulator
page is titled "<name> BIOS files". A profile listing no file titles
its page "<name> emulator": the setup keeps its own title.
2026-11-11 14:41:23 +01:00
Abdessamad Derraz cbebe432fc fix: drop host paths from the release probes
Seven core_probe records of 2026-11-10 kept the content's parent folder
and one pack probe a traceback naming the worktree. The lines are not
published yet: each is rewritten and resealed, and the eight pack
probes naming a resealed record carry its new id.
2026-11-11 14:40:17 +01:00
Abdessamad Derraz 9d37c46bb3 fix: hide host paths in probe logs and errors
MAME logs the folder above the content's ("Parent path"), which no
place named, and a pack probe kept core_probe's traceback with the
checkout spelled out. The first is written <content>/.., the second
<repo>, <dest> and <work>, replaced before the error is cut.
2026-11-11 14:40:17 +01:00
Abdessamad Derraz 0b36d77071 fix: key an emulator folder omission by its cores
Since 7f20702b4 an omission read in an emulator's own folder is one per
folder, and the folder is the core's: mame2015 and mame2016 each list
3dobios.zip. The check keyed omissions by root and dest alone and read
seven manifests as listing one place twice.
2026-11-11 14:35:59 +01:00
Abdessamad Derraz 258b6215fc feat: collect intv and videopac MAME sets
MAME 0.289 reads intv.zip (exec.bin, src/mame/mattel/intv.cpp:549-552)
and videopac.zip (o2bios.rom, src/mame/philips/odyssey2.cpp:902-905).
The collection held both ROMs loose, INTV_EROM.bin and o2rom.bin, with
the crc32 and sha1 MAME declares. The two archives are built from them
with build_torrentzip and filed beside them: bios/Mattel/Intellivision/
and bios/Philips/Videopac/.

odyssey2 is a clone of videopac declaring the same o2bios.rom, which a
ROM search along the parent chain finds in videopac.zip. Its archive
would be a byte-identical copy, so the profile entry is dropped and the
videopac entry says so.

database.json gains the two archives (the name index also follows the
profiles' current aliases), and recipes/archives.json their recipes,
both rebuild: exact, sources profile:mame and collection.

Manifests: intv.zip and videopac.zip reach mame/bios on every platform
running MAME, and roms/intellivision and roms/videopac on EmuDeck and
RetroDECK. Each platform has 2 to 6 fewer omissions.
2026-11-11 14:34:17 +01:00
Abdessamad Derraz 2f9152e77a docs: cite NetherSX2 jadx lines in the path form
"e.java line 72" escaped profile_sync, which tracks path:line only.
Written "jadx e.java:72", each citation reads as one in a project the
profile does not declare, as decompiled output is. The jadx version
moves to the notes.
2026-11-11 14:34:00 +01:00
Abdessamad Derraz 049a80f2e3 chore: trigger the site on the scripts it imports
The build now imports romdir.py and three scraper modules through the
launcher layer: a push touching only them did not rebuild the site.
sitesteps.py was listed twice.
2026-11-11 14:31:54 +01:00
Abdessamad Derraz 298ea5fcb2 docs: describe the scraper --revision option 2026-11-11 14:31:31 +01:00
Abdessamad Derraz dd1625d1fb fix: read the omission line the installer writes
not_installable_words writes "436 files, 264 of them required. Why:
...": the count is followed by a comma, never a space, so the pattern
found no line and the test read the dry run as omitting nothing. The
page and the installer agree, the pattern did not follow them.
2026-11-11 14:31:12 +01:00
Abdessamad Derraz 32e09a4f7e docs: describe home_directory and rescrape_args 2026-11-11 14:31:08 +01:00
Abdessamad Derraz 484a711053 docs: describe config_reads and libretro_pools
Both profile fields reached the schema without a row in the profile
field table. pin_frozen is no longer required by pin_build, which now
stands beside pin_frozen or config_reads: its row says so.
2026-11-11 14:31:08 +01:00
Abdessamad Derraz 02a400aead docs: quote command line flags in comments as code
The lone-dash check read MAME's -rompath and -samplepath, QUASI88's
-romdir and RetroBat's -hash and -sp as half a dash glued to a word.
Quoted as code they read as flags. A C loop quoted in romdir.py and a
docstring in test_agnostic_scope no longer read as clause semicolons.
2026-11-11 14:28:10 +01:00
Abdessamad Derraz 3fb21f9c1e fix: skip schema checks when jsonschema is absent
validate_schemas needs jsonschema, which the build does not install.
test_launcher_evidence imported it at the top, so the suite without it
errored. The module is now named in the testing guide, and its
docstring no longer joins two clauses with a semicolon.
2026-11-11 14:26:53 +01:00
Abdessamad Derraz e74cbfa4e2 fix: pin advancemame at AmberELEC's build
The three builds the platforms ship are 5f301c8 (Recalbox), 6a34ec0
(EmuELEC) and 0f6a767 (AmberELEC): 5f301c8 is an ancestor of 6a34ec0,
itself an ancestor of 0f6a767. 0f6a767 is no longer on the rewritten
branch and is fetched by its sha. The profile was held at 799060b,
which none of them builds, so EveryBuildReferenceNamesThePin failed.

At 0f6a767 and its two ancestors the same 26 BIOS roots are registered
with the same contents. aleck64, atarisy1, cedmag and coh1002v are not
among them and leave the profile with the Aleck64 and Cedar Magnet
systems, and hng64 (src/drivers/hng64.c:1425-1431, 1718) joins it.
Every ref is moved with the pin and read again. Each cited line holds
the same text at 6a34ec0 and 5f301c8, except advance/osd/video.c:1787,
1795: Recalbox's 5f301c8 compiles those tables from blitmax.h and
startup.h, now said in the notes. The doc/advmame.d citations, worded
otherwise in the older builds, give way to the code that does it
(advance/linux/file.c:87-99, src/romload.c:167-204), and the artwork
refs to src/artwork.c, the loader of this revision.

Manifests: AmberELEC and Recalbox gain hng64.zip and lose aleck64.zip,
cedmag.zip and coh1002v.zip at their BIOS root. EmuELEC loses
cedmag.zip from arcade and mame, its other three stay for MAME 2010
and 2003-Plus, and hng64.zip takes the copy holding the advancemame
members. profile_sync: 0 to review, config_reads BUILD_OK at 6a34ec0.
2026-11-11 14:26:00 +01:00
Abdessamad Derraz d917b486ce docs: quote the voxatron fatal error as code 2026-11-11 14:25:54 +01:00
Abdessamad Derraz 1abbd44914 refactor: type the default core of a rom folder 2026-11-11 14:25:05 +01:00
Abdessamad Derraz 7f7b50e8bf chore: merge removing installed files 2026-11-11 14:24:40 +01:00
Abdessamad Derraz 051da11164 feat: profile the MAME sets ES-DE commands start
ES-DE starts eleven machines whose sets the mame profile did not list.
Read at mame0289 (the upstream pin, f34f025) and its -listxml:

- apple2e, a7800, channelf, intv and videopac are parents, required
- fmtownshr (of fmtowns) and odyssey2 (of videopac) are clones
- the devices they load (a2diskiing, d2fdc, votrsc01a, stic, i8244,
  i8245) are already profiled
- arcadia, megaduck, pv1000 and svision declare no ROM, in their
  machine or in a device, and run from the cartridge alone

The systems list gains the ten machines' systems.

Manifests: apple2e, a7800, channelf and fmtownshr reach mame/bios on
every platform running the core, and the ES-DE folders of EmuDeck and
RetroDECK (apple2, atari7800, channelf, fmtowns). intv, videopac and
odyssey2 are omitted: the collection holds exec.bin and o2bios.rom
loose only (INTV_EROM.bin, o2rom.bin). verify --all keeps its severity
and status counts. profile_sync: 0 to review.
2026-11-11 14:11:10 +01:00
Abdessamad Derraz 4bb76b67c2 fix: keep files a removal or restore would lose
Restore moves a file in place with other bytes into a new dated backup, the installer's own recorded copy aside. Removal hashes each file again just before it goes and keeps one changed since the plan, keeps the record entries of files that stayed, touches the record only after the yes, and stops on a BIOS folder that is not there. A Windows junction counts as a link in the planner, the backup walk and --delete-backup. A place both the platform's list and a core name is never a core's alone, and two names of one file on a folding drive are planned once. A restore into a moved folder says the record was not updated.
2026-11-11 14:06:57 +01:00
Abdessamad Derraz 7c5ad8366b chore: regenerate the data for the release 2026-11-11 13:55:41 +01:00
Abdessamad Derraz 05f3f5c702 feat: honour the boards a folder offers a core on
ROCKNIX writes some add_emu_core calls under a case on DEVICE, and the
rom folders file keeps that branch as the offer's `when` (uae4arm for
amiga, emulators/package.mk:188). A board's core list names such a core
when another folder offers it there, so --target placed its files in a
folder the board does not offer it for.

offer_boards() reads `when` and board_defaults against the platform's
targets, aliases included. A board build (generate_pack and generate
--manifest with --target, verify --target) carries the board in the
config (TARGET_KEY), and content_folder_tags leaves out the pairs the
board is not offered. A manifest for every board lists in
offered_boards each profile placed in such a folder, and install.py
--target drops its files there on the other boards.

Manifests: no file moves. The cores ROCKNIX offers under a device case
read no file beside the game today, so no manifest carries
offered_boards yet.
2026-11-11 13:46:57 +01:00
Abdessamad Derraz 389ebfa132 fix: let config reads date their own build
A pin_build that only dates a config_reads entry names the revision the
platform reads that file at (ROCKNIX's armsx2 PKG_VERSION, KNULLI's
lrmame0278), not the profile's source_commit. Since a6716796a wrote
config_reads into the profiles, EveryBuildReferenceNamesThePin counted
armsx2, duckstation, hatari, mame, melonds and xemu as disagreeing. The
value is now required to name the pin only for a profile whose pin
those references hold or follow (pin_frozen, pin_follows).

advancemame still disagrees: held at 799060b, it names three earlier
builds (EmuELEC 6a34ec0, AmberELEC 0f6a767, Recalbox 5f301c8).
2026-11-11 13:27:18 +01:00
Abdessamad Derraz 7ff8f17808 feat: profile RetroPie's AdvanceMAME tip build
RetroPie clones amadvance/advancemame at the branch tip with no
revision (scriptmodules/emulators/advmame.sh:16, 39-41 at 427e762), so
advmame is profiled at 96237a5 (v5.0-484), built_by retropie and held
by pin_follows. RetroPie's advmame now resolves to it, advancemame
keeping EmuELEC, AmberELEC and Recalbox.

The MAME workflow at 96237a5: 28 BIOS roots registered in
mame/mamedriv.c (macs2bios is not), the eight ZN roots under their MAME
names (coh1000c, coh3002c, coh1002m, coh1000t, coh1002e, coh1001l,
coh1000w, coh1000a), modern Neo Geo members, coh1000w's CAT702, and 15
device archives that BIOS_LOAD reads first (atarisy1, coh3002t, m1comm,
midssio, namcoc65/68/69/71/74, s_smp, saa5050, sente6vb, sns_dsp1bleg,
t5182, v4bios). bctvidbs declares no ROM of its own. Three laserdisc
player programs are opened by name outside any ROM list, with a fatal
length, CRC32 and SHA1 check: pr8210, 22vp931 and simutrek.

pin_build accepts pin_follows in the schema, and bump_commit advances a
built_by profile that follows the tip.

Manifests: RetroPie gains 24 archives at its BIOS root, the ZN ones
under their new names, and nss.zip moves to the copy holding
nss-c.dat and nss-ic14.02. The other platforms do not change.
verify --all keeps its counts. profile_sync: 0 to review.
2026-11-11 13:27:00 +01:00
Abdessamad Derraz 4e9a6974d3 docs: describe removing files
New section Removing files, the new options, the four event kinds and the exit codes of removal.
2026-11-11 13:20:42 +01:00
Abdessamad Derraz e38764627b feat: remove installed files and list backups
--remove deletes for good, or moves into a backup with --backup, only what the install record proves the installer placed: unchanged bytes, a regular file below the BIOS folder reached through no link, a SHA-1 the list still serves. Shared, changed, hand-added and unservable files stay and are named. --backups lists, --delete-backup deletes, --restore now updates the record. The full screen gains More, Remove files, the removal plan, Backups and their confirms. Events removal_plan, removed, restored and backup.
2026-11-11 13:20:42 +01:00
Abdessamad Derraz 157d60691d chore: merge the MAME ES-DE search paths 2026-11-11 13:01:56 +01:00
Abdessamad Derraz 801af113b7 feat: record every core a rom folder offers
The rom folders files kept the default core of each folder only, so a
core the user picks in the frontend's menu was not known to read its
sets there. Each folder now lists its offers: every <core> of every
<emulator> in AmberELEC's es_systems.cfg (arcade:
packages/ui/emulationstation/config/es_systems.cfg:116-150), every core
of EmuELEC's es_systems.json, every add_emu_core of ROCKNIX's emulators
package.mk with the device case it is written under (arcade: 218-229),
and the emulator of every ES-DE <command>. A core written under every
branch of a case is offered unconditionally. The ES-XML, ES-JSON,
ELEC-conf and ES-DE setups are rescraped at their pins: archr, arkos,
chaos, darkos, jelos, kolos, pan4elec, retrobat and unofficialos gain
the same records and nothing else.

A libretro core offered for a folder reads the sets it loads beside the
game there, as the default one does.

Manifests, roms folders gaining sets read beside the game:
- AmberELEC: +215 (293.1 MB) in fbneo, arcade and mame, for MAME 2010,
  2015, 2016 and 2003-Plus. 1 omission leaves.
- EmuELEC: +291 (232.0 MB) in cps1, cps2, cps3, mame, fbneo and
  arcade, for MAME 2010 and 2003-Plus. 47 omissions leave.
- ROCKNIX: +501 (538.7 MB) in fbneo, neogeo, cps1, cps2, cps3, arcade
  and mame, for MAME 2010, 2015 and 2003-Plus. 120 omissions leave.
- EmuDeck: +306 (251.2 MB) in cps, cps1, cps2, cps3, arcade and mame,
  for MAME 2000, 2003, 2003-Plus and 2010. 92 omissions leave.
Each omission that leaves was a set named as read outside the BIOS
folder. RetroDECK and the other platforms do not change. No file
leaves, and verify --all keeps its severity and status counts.
2026-11-11 12:57:45 +01:00
Abdessamad Derraz 01a422f86c fix: give a shared roms archive the default copy
A pack writes one file per path, and the second pass of core extras
gave a path read by several cores to the first profile in name order:
EmuELEC's arcade/neogeo.zip took AdvanceMAME's copy although the folder
starts MAME 2003-Plus by default (es_systems.json:82), and RetroDECK's
cps folders took MAME 2000's neogeo.zip and MAME 2003's nss.zip, which
lack members MAME 2003-Plus requires there.

The copies cores ask for at one path are now gathered first. The copy
of the core the roms folder starts by default goes first, then the one
holding every required member of the most claims, then profile order.
The others stay alternatives in the manifest.

Manifests: EmuELEC arcade/neogeo.zip becomes neogeo.zip.74df3258
(MAME 2003-Plus, AdvanceMAME's 4ccf6682 an alternative). RetroDECK
roms/cps, cps1, cps2 and cps3 get neogeo.zip.74df3258 and
nss.zip.cba0bd8c. No file is added or removed. verify --all keeps its
counts.
2026-11-11 12:55:22 +01:00
Abdessamad Derraz 852ce19ca9 fix: read EmuDeck's MAME in ES-DE's rom folders
EmuDeck writes mame.ini rompath ${romsPath}/arcade;${biosPath};
${biosPath}/mame (emuDeckMAME.sh:66-68). Steam ROM Manager starts MAME
through tools/launchers/mame.sh with the game alone, so that list is
read there. Every standalone MAME command of ES-DE v3.5.0, which EmuDeck
installs, passes -rompath %GAMEDIR%\;%ROMPATH%/<system>, and the command
line outranks mame.ini. A set the mame.ini record places keeps that
place and also goes to each folder a command passes for a machine that
reads it.

The Model 3 folder, live in EmuDeck's list and commented out in
RetroDECK's, holds the machines of sega/model3.cpp.

Manifests: EmuDeck gains 1483 files (466.7 MB) below roms/, 480 each in
arcade, consolearcade and mame, the others in adam, daphne, laserdisc,
macintosh and 15 more. The pack ZIP does not change, roms/ being
written by the installer. No file leaves.
2026-11-11 12:32:06 +01:00
Abdessamad Derraz 7035da1154 feat: read libretro MAME's -rompath from ES-DE
ES-DE starts the libretro MAME core with a command line as its content
in 22 commands across 21 systems ("apple2e -rompath \"%GAMEDIRRAW%;
%ROMPATH%/apple2\" -flop1 ...", resources/systems/linux/es_systems.xml
at RetroDECK's 15e1b236 and EmuDeck's ES-DE v3.5.0), run through the
shell by popen (es-core/src/utils/PlatformUtil.cpp:231, 257).

At 5f5a0774 the core reads content that is no file as a command line
(retro_init.cpp:966-1008). Set_Path_Option passes its own -rompath
<content dir>;<system>/mame/bios;<system>/mame/roms (580-597), then
every word of the command line follows, -rompath included, only -rp
being dropped when mame_paths_enable is off (902-940, 914-919). MAME
keeps the later value of an option given twice at one priority
(src/lib/util/options.cpp:260-276, clifront.cpp:243). Those commands
read their sets in the folders they name, and mame/bios stays read by
every command that passes none.

The ES-DE parser records these commands in searched_by with their core,
the mame profile declares libretro_pools (-rompath and -rp stand for
mame/bios), and a set there also goes to each folder a command names
for a machine that reads it.

Manifests: EmuDeck gains 16 files below roms/ (apple2, apple2gs,
astrocde, crvision, gamate, gamecom, gmaster, intellivision, odyssey2,
scv, supracan, vectrex, videopac, vsmile). RetroDECK does not change:
its standalone MAME commands already put the same sets at the same
paths. No file leaves.
2026-11-11 12:30:53 +01:00
Abdessamad Derraz d9565f2a4b chore: merge the remaining launcher proofs 2026-11-11 12:18:08 +01:00