fix: record what RetroBat writes for xemu and Cxbx

The xemu generator writes eeprom.bin and xbox_hdd.qcow2 into
saves/<system> from its own resources and passes both in xemu.toml,
copies chihiro_eeprom.bin between saves/chihiro and the emulator folder,
and points the Chihiro snapshot store at saves/chihiro. The Cxbx
generator runs each build from its emulator folder (chihiro, chihiro-ds,
cxbx-reloaded, else cxbx-r), where it writes settings.ini, writes
EEPROM.bin into cxbx-reloaded for an Xbox, and mounts an .iso with its
own xbox-iso-vfs.exe after checking the Dokan 2 runtime. Nine records,
read at emulatorLauncher ca486005.

A program the launcher runs from its own folder is no launcher read
left to collect. xemu-chihiro lists the two files it generates,
chihiro_eeprom.bin and chihiro_snapshots.qcow2, as unsourceable.
This commit is contained in:
Abdessamad Derraz committed 2026-11-10 02:35:51 +01:00
1 parent 9c46f7471d
commit 7f38954041
6 files changed
+563 -1

No files matched your search

+9 -1
View File
@@ -1097,6 +1097,11 @@ LAUNCHER_READS_KEY = "_launcher_reads_not_held"
# A package record names no file: it records what a package builds.
_NAMELESS_KINDS = frozenset({"package"})
# The folder of the platform's own launcher, as its scraper spells it: a
# program the launcher runs from there (RetroBat's xbox-iso-vfs.exe) is part
# of the platform, never a file to collect.
PLATFORM_OWN_FOLDERS = frozenset({"<emulatorLauncher folder>"})
def launcher_file_names(record: dict) -> list[str]:
"""The concrete file names a launcher record reads, in code order.
@@ -1221,7 +1226,8 @@ def launcher_reads_not_held(
amiga-os-130.rom that exists (Amiberry.Generator.cs:674-699). A copy
whose source lies outside the BIOS directory brings a file the platform
installs itself, from its own package or written by its own script
(RetroPie's lr-vecx copies $md_inst/system.bin). A file handed to the
(RetroPie's lr-vecx copies $md_inst/system.bin), and so does a program
the launcher runs from its own folder. A file handed to the
setting a reader's profile entry is read from is that entry's file,
which the pack places under the launcher's name.
"""
@@ -1250,6 +1256,8 @@ def launcher_reads_not_held(
base = str(config.get("base_destination") or "bios")
if record.get("kind") == "copies" and not launcher_directories(record, base):
continue
if str(record.get("search_dir") or "") in PLATFORM_OWN_FOLDERS:
continue
settings = name_settings(record, names)
def by_setting(name: str) -> bool: