Commit Graph
4895 Commits
Author SHA1 Message Date
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 2fe15e99f9 chore: merge launcher names 2026-11-09 18:29:52 +01:00
Abdessamad Derraz b5f82fdd29 chore: drop the lwmp dedup entry
splitwolf, already in NODEDUP_DIRS, covers bios/Other/splitwolf/lwmp.
2026-11-09 18:27:21 +01:00
Abdessamad Derraz e4ef720e16 fix: identify amiberry's named kickstarts
The libretro core opens its Kickstart candidates by name and checks
nothing more (libretro.cpp:1804-1867), while its ROM table names each
image by CRC32 and size (rommgr.cpp:159-207, 334-359). The ten named
entries now carry the table's values, so they resolve by content:
kick12.rom moves from a 512 KiB file the table does not list to
KS 1.2 rev 33.180 (a6ce1636) in twelve manifests.
2026-11-09 18:27:03 +01:00
Abdessamad Derraz 56ed37c3f0 chore: merge launcher placement 2026-11-09 18:23:46 +01:00
Abdessamad Derraz 5794ed4178 fix: drop the atari800 config key aliases
ROM_5200_A, ROM_BASIC_A and six more are atari800.cfg keys, not names
atari800 opens: MatchByName knows only atariosa.rom and its kin
(sysrom.c:278-294), and the keys are config_key since 969907e29. The
twelve labels the scan identifies by CRC32 are found_by: content, and a
platform declaration of a file such an entry accepts by hash, in the
folder the core scans, now meets it: RetroDECK's ROM_BASIC_A answers
atari-basic-rev-a.rom without the alias.
2026-11-09 18:22:55 +01:00
Abdessamad Derraz cf6eb412f1 feat: bind emudeck links for switch and 3ds
yuzu, eden, Ryujinx and Azahar declare the data directories their code
reads, so EmuDeck's links place their keys in bios/<emulator>/keys and
leave the 3DS NAND files it links nowhere named, not at the BIOS root.
2026-11-09 18:22:39 +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 b5ee4ab09e feat: read pico-8 launchers of rocknix, retrobat
ROCKNIX's start_pico8.sh runs pico8_64 or pico8_dyn from
/storage/roms/pico-8 and RetroBat's Pico8 generator runs pico8.exe from
its pico8 emulator folder. Both are recorded as exec records, read from
the scripts at the revisions the platform files pin.
2026-11-09 18:22:26 +01:00
Abdessamad Derraz a9fdf6eefc docs: state the scph10000 tie-break
The model fill picks the original revision when two primaries are
equally accepted, so every run ships the same file.
2026-11-09 18:15:48 +01:00
Abdessamad Derraz 47ae5aa601 feat: fill a launcher name from a settled entry
The gap report never offers an entry the platform's list settles, so
AmberELEC's amiberry configs, which pass kick34005.A500.rom and
kick40068.A1200.rom beside a declared kick34005.A500, got nothing. The
launcher layer now reads the entries it was not offered, through the
setting or the extended name only: by its own name an entry left out of
the report was left out for a reason.
2026-11-09 18:13:24 +01:00
Abdessamad Derraz 13bd4a3698 feat: pair each config name with its key
A record naming several files of one config lists their keys in the
same order (describe_keys). Each launcher place now carries its own
key, so AmberELEC's 5200a.rom receives the ROM_5200_A file.
2026-11-09 18:10:05 +01:00
Abdessamad Derraz 969907e29b feat: name the atari800 rom config keys
atari800 reads each ROM path from its config key (sysrom.c:123-149,
616-623) and identifies a file by the CRC32 of its slot (sysrom.c:89-
108). AmberELEC's atari800.cfg sets ROM_5200_A, ROM_BASIC_A and
ROM_BASIC_B to 5200a.rom, BASIC_Rev_A.rom and BASIC_Rev_B.rom.
2026-11-09 18:10:05 +01:00
Abdessamad Derraz 46fc4d5d15 chore: merge integ into fix-launch-names 2026-11-09 18:05:44 +01:00
Abdessamad Derraz 5073e4ea85 chore: merge knulli and amberelec launchers 2026-11-09 18:04:36 +01:00
Abdessamad Derraz e4e6126a59 feat: cut the ps3 ps2_emu bios from firmware
RetroBat and Batocera list ps3_ps2_emu_bios.bin, the PS2 BIOS the PS3
carries for ps2_emu. RPCS3 installed the held PS3UPDAT.PUP (4.90,
sha1 093f8698) and decrypted dev_flash/ps2emu/ps2_emu.self, and the
image is the span firmware_bios_claim release 2 cuts, padded to 4 MiB.
Its romdir parses and ROMVER reads 0220JD20121227. Two runs give the
same bytes, sha1 2dc921be.
2026-11-09 18:03:38 +01:00
Abdessamad Derraz 25e515f982 docs: quote the -rp flag in amberelec_launchers 2026-11-09 18:03:08 +01:00
Abdessamad Derraz 7ca7872fdc feat: record knulli's macintosh boot disk
MAME and libretro MAME pass /userdata/bios/<bootdisk>.img with -flop1
when the option is in the generator's list, else <bootdisk>.chd with
-hard. Each branch is a {bootdisk} template: the list the code tests
for the floppy, and for the hard disk the choices es_features.yml
offers that the list does not take. The menu offers macos3 while the
code tests macos30, so System 3.0 is passed as macos3.chd.
2026-11-09 18:03:08 +01:00
Abdessamad Derraz f0289e3624 feat: record pcsx2's relative bios folder
configureINI writes [Folders] Bios = ../../../bios/ps2 into
inis/PCSX2.ini, which PCSX2 and AetherSX2 resolve against the config
folder configgen hands it. relative_folders reads the call, the ini
path and the value, and records the resolved /userdata/bios/ps2 as a
passes_path for pcsx2 and aethersx2.
2026-11-09 17:59:09 +01:00
Abdessamad Derraz cedeee2254 refactor: one meaning for copy records
A copies record names its files under search_dir, the folder the code
copies from, and passes_to is the target, as the schema and RetroPie,
RetroDECK and AmberELEC already write it. KNULLI listed patches.zip
under the BIOS folder it is copied into, and KNULLI and RetroBat wrote
the target as prose with the condition. The condition of a copy now
goes in depends_on_option. Only launcher records change in knulli.yml
and retrobat.yml.
2026-11-09 17:58:37 +01:00
Abdessamad Derraz 8114f48e30 feat: fill a core option default by model
RetroDECK sets LRPS2's pcsx2_bios to scph10000.bin. The record names
the frontend, so the core is the one whose entry reads that setting.
Its entry is a placeholder, and the name spells a model: the held dump
the catalogues describe as SCPH-10000 goes in under that name in the
entry's directory, primaries first, then the earliest Redump revision
(ps2-0100j-20000117).
2026-11-09 17:53:48 +01:00
Abdessamad Derraz 09fe506281 feat: name the lrps2 bios option
LRPS2 reads the PS2 BIOS named by its pcsx2_bios option under
EmuFolders::Bios (libretro/main.cpp:525-536).
2026-11-09 17:53:48 +01:00
Abdessamad Derraz a6aea81c17 chore: merge integ into fix-launch-names 2026-11-09 17:47:35 +01:00
Abdessamad Derraz 21d34748e5 feat: list unsourceable launcher names apart
A launcher name that a reader's profile entry declares unsourceable is
no file left to find. Its row carries the reason and both reports
print it under its own count, never mixed with the names to acquire.
2026-11-09 17:47:26 +01:00
Abdessamad Derraz b841550bdf feat: name the user soundfont retrobat copies
RetroBat copies bios/scummvm/extra/Roland_SC-88.sf2 to DOSBox Pure and
DOSBox Staging and offers it in the soundfont option
(DosBoxStaging.Generator.cs:246-252, 336-344). No canonical file of
that name exists, and both emulators take any SoundFont
(dosbox_pure_libretro.cpp:1380-1412, fluidsynth.cpp:194-230).
2026-11-09 17:47:26 +01:00
Abdessamad Derraz ffad06487c feat: read the amberelec launcher layer
amberelec_launchers reads runemu.py with ast and, at the commit the
scraper pins, the scripts its standalone table runs and the configs
their packages install: RetroArch and retrorun directories, the MAME
-rp path, atari800.cfg, Hatari's default TOS, amiberry's kickstarts
link and defaults, yabasanshiro, PICO-8, piemu, scummvm, freej2me and
easyrpg. 17 records.

The freej2me-lr.jar and pico8_64 notes now name the file in a sentence
about the emulator, as test_launcher_aliases asks once a launcher
records it.
2026-11-09 17:47:23 +01:00
Abdessamad Derraz c65ed9d69d chore: merge fluidsynth profile 2026-11-09 17:47:16 +01:00
Abdessamad Derraz 2c58f50a2d feat: read the knulli launcher layer
knulli_launchers reads KNULLI's configgen and the PICO-8 installer at
the tag the scraper pins: Batocera's extractors where the generator is
still Batocera's code, KNULLI's own for lexaloffle, libretroOptions and
knulli-install-pico8, and one AST reader for the BIOS paths the other
generators pass on a command line, in a config key or the environment,
copy or test for. 52 records.
2026-11-09 17:47:16 +01:00
Abdessamad Derraz 10e4d925d0 refactor: root the configgen reader at a package
Configgen takes the configgen package path and whether the importer has
a legacy map, so KNULLI's copy at package/system/knulli-configgen reads
with the same extractors. hatari accepts the bare filename KNULLI builds
and joins to BIOS, and options read by subscript or isOptSet. melonds
accepts a console type read by subscript. Batocera's records are
unchanged at batocera-43.1.
2026-11-09 17:47:09 +01:00
Abdessamad Derraz 4fe2d14832 docs: profile fluidsynth as emuelec runs it
FluidSynth 2.0.6 (EmuELEC fluidsynth-git, PKG_SHA256 matched) loads
any argument whose header is RIFF sfbk and names no SoundFont.
SC-55.sf2 is named only by emuelec-utils:67 and no EmuELEC package
or script installs or fetches it, so the entry is unsourceable: user
supplied, no canonical file.
2026-11-09 17:45:53 +01:00
Abdessamad Derraz 0a62f065b8 feat: collect the xm7 drive sound effects
XM7 plays fddseek.wav, relay_on.wav and relayoff.wav from its data
directory (linux-sdl/sdl/api_snd2.cpp:155-159, 213-267). The three come
from Win32/ of the XM7 V3.4L77SX+z09 final release archive by PI. and
Ryu Takegami, archived on archive.org as xm7tr_3477sxz09.
2026-11-09 17:44:16 +01:00
Abdessamad Derraz 768cc9fd6f chore: merge origin/main 2026-11-09 17:43:44 +01:00
Abdessamad Derraz 6024932846 feat: read a launcher name with an added extension
ROCKNIX's Amiberry configs pass kick34005.A500.rom and
kick40068.A1200.rom, Amiberry's names for Kickstart 1.3 and 3.1 with
.rom appended. Amiberry opens the path as given and boots AROS without
it, so the pack now ships the held ROM under the launcher's name.
2026-11-09 17:42:13 +01:00
Abdessamad Derraz 7f76419f3c feat: list the amiberry kickstart rom scan
Amiberry names every Kickstart its ROM table lists by SHA-1, whatever
the file is called (src/rommgr.cpp:144-378), and a model takes the
first ROM id of its list (src/cfgfile.cpp). The profile carried one of
the 58 images. WHDLoad booting links eight of them into its Kickstarts
folder under their kickNNNNN names (amiberry_whdbooter.cpp:368-375),
which the entries now answer to.
2026-11-09 17:42:12 +01:00
Abdessamad Derraz f81688d2d4 chore: merge dsi boot blobs 2026-11-09 17:35:38 +01:00
Abdessamad Derraz b5c517b07a feat: add dsi boot blobs cut from the dsi nands
Each blob is TWLCFG 0x88-0x1AF, HWINFO_N 0x88-0x9B and HWINFO_S 0x88-0x9F, read from a retail NAND dump by DSperate's own nand_boot_blobs at ddf2910e. The primary comes from dsi_nand.bin, the seven others from the regional dumps and the dsi_nand.bin variant.
2026-11-09 17:35:05 +01:00
Abdessamad Derraz 7f04ed8096 chore: merge emuelec launchers 2026-11-09 17:34:40 +01:00
Abdessamad Derraz 82a6b2f833 feat: read the emuelec launchers
emuelec_launchers.py reads emuelecRunEmu.sh and the scripts and
configs it starts at the tag batocera-systems is read at (v4.8): 36
records for RetroArch, retrorun, freej2me, MAME, PICO-8, Flycast,
Amiberry, DuckStation, Yabasanshiro, jzIntv, Mupen64Plus, Hatari,
AdvanceMAME, ScummVM, Dolphin and the MIDI synths.
2026-11-09 17:34:03 +01:00
Abdessamad Derraz 7aacbbe214 docs: name the jar the freej2me core joins
The note named freej2me-lr.jar only in its ROCKNIX sentence, so a
launcher record naming the jar read as a platform choice.
freej2me_libretro.c:488 joins it to the system directory.
2026-11-09 17:34:03 +01:00
Abdessamad Derraz 5d75135ec8 feat: map sdltrs rom slots to their options
sdltrs reads its three ROM slots from the romfile1, romfile3 and
romfile4p options (src/trs_options.c:323-325). RetroPie passes
-romfile4p $biosdir/level4p.rom under the emulator id sdltrs-model4p,
so the pack ships the 4 KB Model 4P boot ROM under that name.
2026-11-09 17:32:30 +01:00
Abdessamad Derraz c0bb6a00cc feat: name the ares ngp firmware settings
ares binds each firmware path to <system>/Firmware/<type>.<region>
(desktop-ui/settings/settings.cpp:263-264, 280-283). EmuDeck writes a
No-Intro name into NeoGeoPocket and NeoGeoPocketColor BIOS.World, so
the pack now ships the held BIOS under that name.
2026-11-09 17:32:30 +01:00
Abdessamad Derraz 979111f6f2 feat: settle launcher names the code fills
A search a launcher stops at the first held name of is filled, and a
copy from the platform's own package or script brings its own file:
neither is a name the collection lacks. A launcher that writes its
file into the setting a profile entry is read from (config_key) now
receives that entry's held file under its own name, in the report and
in the pack.
2026-11-09 17:31:18 +01:00
Abdessamad Derraz 024032ab89 chore: merge fix-profiles 2026-11-09 17:28:10 +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
Abdessamad Derraz a2bf1c6f8e feat: record the uae4all working directory
RetroPie starts UAE4All2 with pushd $md_inst, the directory whose
kickstarts folder it links to BIOS/amiga. The scriptmodule reader now
emits that working directory as it does for DraStic.
2026-11-09 17:28:00 +01:00
Abdessamad Derraz a22d9fd499 docs: add the dsperate-headless dsi boot blob
dsperate-headless reads a 0x154-byte console data blob through --dsi-boot and stops on any other size. The flag has no default, so the name is a label. Without it the bytes come from the NAND's TWLCFG and HWINFO files, are generated for DSiWare run without a NAND, or stay zero in card mode.
2026-11-09 17:27:48 +01:00
Abdessamad Derraz 9bb1cfaa82 feat: collect openmsx svi-738 system roms
openMSX reads the SVI-738 and SVI-738 SE machines' ROMs by the
SHA-1s their machine XMLs list. The disk and BASIC ROMs come from
the MAME svi738 set and match the XML, TOSEC and MAME hashes. The
SE BASIC and RS-232 ROMs were already held under other names.
2026-11-09 17:26:15 +01:00
Abdessamad Derraz 3d662cbd15 docs: read the triforce font load from code
LoadFileToIPL reads a standalone font with no size check, keeping what fits in the IPL image. The sizes stay as the IPL dump fonts' lengths and the notes say so. No HLE stands in for a missing font: the IPL read raises an alert and the game runs on, so hle_fallback goes.
2026-11-09 17:25:10 +01:00
Abdessamad Derraz d9aaa9bdba docs: split xemu system files by build
The standalone runs without the MCPX ROM and the disk image, queuing an error, and stops only without a flash ROM: vl.c clears autostart. bootrom_path, flashrom_path and hdd_path have no default, so their names are labels and the standalone entries lose path. The core still refuses to load without the MCPX ROM or the flash.
2026-11-09 17:23:08 +01:00