Commit Graph
16 Commits
Author SHA1 Message Date
Abdessamad Derraz 2fc3df50c6 fix: place Dolphin's User folder a platform sets
Dolphin reads its User folder at $XDG_DATA_HOME/dolphin-emu, else
~/.local/share/dolphin-emu (Source/Core/UICommon/UICommon.cpp:449-477).
The profile names both, so a launcher handing that folder places the
layout:

- EmuELEC starts Dolphin with XDG_DATA_HOME=/storage/roms/dolphin
  (dolphinSA/scripts/dolphin.sh:28): its 30 files move from the BIOS
  root to dolphin/dolphin-emu/ of the install tree.
- RetroDECK links User/Triforce to bios/Triforce
  (dolphin/component_prepare.sh:30, 49), where its list already puts
  segaboot.gcm. The rest of the User folder sits in the Flatpak's data
  directory and is named as read outside the BIOS folder.

An entry only the standalone build reads, path and no standalone_path,
now takes that path as its layout path (Load/Firmware/rtl_bt/), and
the pass copying a name the platform declares elsewhere reaches an
unprefixed path: gba_bios.bin lands in dolphin/dolphin-emu/GBA/.
2026-11-10 12:21:05 +01:00
Abdessamad Derraz 74ef0a37d5 fix: place Cemu's MLC where RetroDECK sets it
RetroDECK sets mlc_path to $bios_path/cemu (cemu/component_prepare.sh:14,
29), which replaces the MLC Cemu reads under its user data directory
(src/config/CemuConfig.cpp:25-26, ActiveSettings.cpp:295-320). The
profile names that key, so the layout's mlc01/ folder is placed in
bios/cemu. Two readers kept the binding from reaching the manifest:

- a moved entry kept its standalone load_from, data_dir, and the gap
  report set the MLC aside as read outside the system directory. The
  platform's folder now replaces the build's own root.
- an entry read outside the BIOS tree was no longer offered to the
  launcher layer, so RetroDECK's link of keys.txt to bios/cemu/keys.txt
  went unserved. It is offered again, fills no destination by its own
  path, and a launcher place it fills settles it.

The RetroDECK manifest gains the 55 MLC files under bios/cemu/. It
drops the root copies of keys.txt, otp.bin, seeprom.bin,
shareddata.bin, cafeLibs/ and resources/sharedFonts/, which standalone
Cemu reads in the Flatpak's $XDG_DATA_HOME/Cemu and names them as read
outside the BIOS folder. The libretro copies under bios/Cemu/ stay.
2026-11-10 12:20:55 +01:00
Abdessamad Derraz 0e0e24d905 feat: name the data-storage key of EKA2L1
EKA2L1 keeps its devices under the data-storage folder, data by
default and relative to the working directory
(src/emu/config/include/config/options.inl:45). RetroBat writes
data-storage = bios/eka2l1/data (Eka2l1.Generator.cs:153, 156), so the
layout's data/ folder is placed there.

The SYM.ROM extra at data/roms/nem-4/ of the BIOS root, read by
nobody, leaves the RetroBat manifest: RetroBat declares the file at
eka2l1/data/roms/NEM-4/SYM.ROM, the same slot on its case-folding
filesystem. The files shipped beside the executable are named as read
in the emulator folder.
2026-11-10 12:20:40 +01:00
Abdessamad Derraz 5255716273 fix: read EmuELEC's home in launcher paths
EmuELEC links /storage/.local/share/flycast to /storage/roms/bios/dc
(flycast.sh:11-14 at v4.8), and Flycast reads
$HOME/.local/share/flycast. Root's home there is /storage
(packages/sysutils/busybox/package.mk:168, profile.d/98-busybox.conf:4,
sourced by flycast.sh:7), which nothing recorded, so the link bound
nothing and flycastsa's files went to the BIOS root.

The registry's home_directory now spells that directory as ~ in the
handles and directories of launcher records. flycastsa's ten files
land in bios/dc, where the libretro build already reads them. The
manifest drops dc_boot.bin and dc_nvmem.bin from the BIOS root, which
no emulator reads there, and six arcade archives at the root go back
to the MAME sets the mame cores claim.
2026-11-10 12:02:36 +01:00
Abdessamad Derraz adac87ec32 feat: name the ROM folder option of QUASI88kai
-romdir replaces the ROM directory (src/getconf.cpp:282-290, 529),
and RetroPie writes -romdir $biosdir/pc88 into quasi88.ini
(scriptmodules/emulators/quasi88.sh:67). Its 19 ROMs move from rom/
to pc88/ in the RetroPie pack, manifest and verify.
2026-11-10 11:50:38 +01:00
Abdessamad Derraz ddc947c85d fix: place files in a folder a launcher sets
KNULLI sets AetherSX2's [Folders] Bios to bios/ps2
(aethersx2Generator.py:219), yet its 112 PS2 BIOS files went to the
BIOS root. Three causes:

- a record's passes_to was split into words, so "[Folders] Bios"
  could not be told from "[Filenames] BIOS". ini_keys() adds the
  section-qualified key a profile names in standalone_directories.
- scans_dir records hand a folder too (ROCKNIX's bios/armsx2,
  EmuDeck's PCSX2 and ARMSX2) and were not read as handed.
- the agnostic scan looked its seeds up by the id of the profile's
  entries, while it walks the copies platform_layouts makes: any
  bound layout scanned nothing. Copies map back to the profile's
  entries by position.

An agnostic profile's entry the layout reads outside the BIOS tree
is now named by the gap report (outside_bios_folder) instead of
dropped: ARMSX2's arcade/proverb.zip on ROCKNIX and EmuDeck.
2026-11-10 11:46:57 +01:00
Abdessamad Derraz a8af82c2d5 fix: leave wpcap.dll to the Npcap install
xemu loads wpcap.dll with a plain LoadLibrary (winpcap-loader/loader.c),
and it works only with the Npcap driver, whose installer puts it on the
DLL search path. The schema has no marker for a file a separate system
install provides, so the entry is unsourceable with that reason. The
copy at the BIOS root of RetroBat, RetroDECK and eight other platform
lists, which no search order reaches, leaves them.
2026-11-10 02:41:52 +01:00
Abdessamad Derraz ffb3cbfed3 fix: place Xbox files where RetroBat reads them
Each Cxbx build reads its data from the folder its settings.ini sits
in, which RetroBat writes beside the binary: the three profiles name
Settings::GetDataLocation, so keys.bin, EmuDisk and EmuMediaBoard go to
emulators/<folder> on RetroBat instead of the BIOS root. RetroBat writes
cxbx-reloaded's EEPROM.bin and xemu's eeprom.bin and xbox_hdd.qcow2
itself (installed_on), and mounts an .iso with its own tool, so Cxbx's
dokan2.dll is never loaded there (unread_on).
2026-11-10 02:36:02 +01:00
Abdessamad Derraz 2eca218535 fix: fill a launcher name listed under another
RetroPie lists KS 1.3 as kick34005.A500, and its fs-uae launcher
passes $biosdir/kick13.rom. The listed copy settles fs-uae's entry by
content, so the launcher layer never offered it, and kick13.rom
reached the pack only as a copy of UAE4All2's amiga/kick13.rom: the
x86 boards, without UAE4All2, lost it. An entry the list settles under
another name now answers the launcher's place by its own name.
2026-11-10 02:08:16 +01:00
Abdessamad Derraz 7f20702b48 fix: one omission for a place two builds read
RetroPie builds amiberry 5.7.2 and 6.3.3, one per board, both in
$md_inst of its amiberry package. Each build recorded roms/kick.rom
and whdboot/AmiQuit in the emulator's folder apart, and
install/retropie.json listed both destinations twice. A file read
outside the BIOS tree is now keyed by the folder the platform installs
the listed name into, and one omission names every core reading it.
2026-11-10 02:06:44 +01:00
Abdessamad Derraz 7e22c38113 feat: place shadps4 files below the configs root
Batocera and KNULLI start shadPS4 from CONFIGS/shadps4, so its user
folder sits below /userdata/system/configs. The scrapers read that root
from batoceraPaths and write configs_root with its source_ref. The
manifest names it configs_directory, and install.py honours it through
the same checks as roms_directory: character rules, at most two ups,
the ancestor match and the lexical bound.
2026-11-09 19:53:49 +01:00
Abdessamad Derraz 3db2819150 refactor: read the roms root from romfolders
platforms/romfolders/<platform>.yml records the roms root from the OS's
own source (roms_root path and from_bios), the same fact the registry's
roms_directory restated for ROCKNIX alone. The manifest's roms_directory
now carries from_bios, which the installer follows from a BIOS folder of
the platform's name, and the registry key is gone. A list that installs
above its BIOS folder (AmberELEC) holds its roms root in the install
tree: a file a launcher runs from there is a plain dest. emulators_directory
stays in the registry: no rom folders file names emulator folders.
2026-11-09 19:03:49 +01:00
Abdessamad Derraz c8fe8d914d feat: install files into retrobat emulator folders
RetroBat's Pico8 generator runs pico8.exe from AppConfig.GetFullPath:
the emulatorLauncher.cfg key, else the first existing of four folders of
the RetroBat install. The registry describes that search
(emulators_directory) and the manifest writes such a file as
root: emulators. The installer places it only when the BIOS folder sits
beside RetroBat's launcher config and the config does not move the
folder, and names it no_emulators_directory otherwise. Packs skip it as
they skip root: roms.

The PICO-8 0.2.7 Windows build (pico8.exe, SDL2.dll) is collected from
the archive.org copy of pico-8_0.2.7_windows.zip, its pico8.dat being
the 0.2.7 one already held.
2026-11-09 18:55:49 +01:00
Abdessamad Derraz f47c8b8e5a fix: profile voxatron apart from pico-8
lexaloffle documented two programs, so every platform naming PICO-8
received Voxatron's files: ROCKNIX, RetroDECK and RetroBat run PICO-8
only. Voxatron is its own profile, named vox_official. A platform also
runs the emulators its standalone_cores list names: Batocera and KNULLI
list lexaloffle there and nowhere else.
2026-11-09 18:48:13 +01:00
Abdessamad Derraz 65e1db9fe1 feat: place files outside the bios tree
A platform that binds part of a standalone layout leaves the entries no
binding covers in a folder outside the BIOS tree: they are no longer
packed at the BIOS root, and the manifest names them (root: emulator,
outside_bios_folder). A launcher that executes a profile's file binds
the program folder: in the BIOS tree, below the roms directory a registry
entry names (root: roms, installed into the folder holding the BIOS
folder), or nowhere a pack reaches. A moved entry resolves by its own
path as well as by its destination.

uae4all gains kick.rom and rom.key in its working directory and loses a
not_bundled_on that named Recalbox, which runs uae4all-rpi. lexaloffle
declares that its programs read beside their executable, lists the
Windows build RetroBat runs and the pico8_dyn ROCKNIX runs on x86_64.
2026-11-09 18:22:34 +01:00
Abdessamad Derraz 6a9700489d feat: place standalone files through links
standalone_bindings maps each subfolder of a standalone layout to the
folder of the BIOS tree a platform's links and passed directories give
it, followed through a working directory. platform_layouts applies it,
so the pack, the manifest, verify and slots read one destination.

uae4all paths are now what the emulator reads, kickstarts/<name> below
its working directory, and RetroPie still receives them in amiga/.
2026-11-09 17:28:00 +01:00