Commit Graph
1250 Commits
Author SHA1 Message Date
Abdessamad Derraz a41fb285ed feat: profile amiberry 7.1.1-332 for batocera 2026-11-09 21:55:32 +01:00
Abdessamad Derraz 42f78ec8ff feat: profile amiberry 6.3.3 built by retropie 2026-11-09 21:55:32 +01:00
Abdessamad Derraz ab5016852f feat: profile amiberry 5.7.2 built by retropie 2026-11-09 21:55:32 +01:00
Abdessamad Derraz aeccdf6e11 chore: merge amiberry builds 2026-11-09 20:59:15 +01:00
Abdessamad Derraz bc386e0561 feat: profile amiberry 8.0.0 built by EmuELEC
EmuELEC 4.8 builds amiberry 452783a (CMakeLists.txt declares 8.0.0).
Same paths as 7.1.1, a ROM database with the PPC flash images, which
the scan hashes with their config bytes cleared, so no file hash is
declared for them. Tests check that ROCKNIX, AmberELEC and EmuELEC
resolve their own build, the other platforms the 8.5.0 profile, and
that ROCKNIX places its kickstarts at the BIOS root.
2026-11-09 20:58:25 +01:00
Abdessamad Derraz c182cfa948 feat: profile amiberry 7.1.1 built by AmberELEC
AmberELEC builds amiberry c53d6db (CMakeLists.txt declares 7.1.1). Its
ROM path is rom_path, else roms/ below the home directory
(AMIBERRY_HOME_DIR, ~/Amiberry, or the working directory in portable
mode), scanned at its root by the ROM database. The WHDLoad booter
reads whdboot/ below $XDG_DATA_HOME/amiberry. EmuELEC's 452783a adds
13 PPC board ROMs to the database and hashes flash images otherwise,
so it gets its own profile. AmberELEC reaches its Kickstarts through
the .uae kickstart_rom_file paths, the fixed_name records.
2026-11-09 20:58:25 +01:00
Abdessamad Derraz 9d72fe4546 feat: profile amiberry 5.6.5 built by ROCKNIX
ROCKNIX builds amiberry 5c54536 (target.h declares 5.6.5). Every file
it reads lies below its start path, the working directory: the ROM
database dumps, aros-ext.bin, aros-rom.bin and rom.key in kickstarts/,
the WHDLoad booter files in whdboot/. Profiled from that revision,
pin_frozen with pin_build on ROCKNIX's package.mk.

The ROCKNIX scraper records the folder its start script enters and the
kickstarts link it carries there by copying /usr/config/amiberry, so
<cwd>/kickstarts binds to the BIOS root. A standalone + libretro profile
under a name the platform's own build answers to no longer resolves
there: ROCKNIX's amiberry is 5.6.5, not 8.5.0.
2026-11-09 20:58:13 +01:00
Abdessamad Derraz 297ec74bd9 chore: merge sudachi folder and ps4 fonts 2026-11-09 20:33:36 +01:00
Abdessamad Derraz b9d0613cc3 feat: collect the shadps4 system fonts
45 fonts from a PS4 firmware 11.00 dump (archive.org item
sony-ps4-system-font), checked against the item's md5 and sha1 and,
for 44 of them, byte for byte against the separate ps4font upload.
Each sits in the folder the console keeps it in: shadPS4 mounts
fonts/font and fonts/font2 as two guest folders (emulator.cpp:640-661),
so the ten font2 fonts move there and the seven font2 files the mount
also serves get entries.
2026-11-09 20:32:54 +01:00
Abdessamad Derraz e93ff86bf1 chore: merge integ configs root and switch folders
The configs root place joins roms and emulator folders in the split
handed directories, and RetroBat's portable folder table keeps both
sides. Batocera, KNULLI and RetroBat records regenerated.
2026-11-09 20:16:41 +01:00
Abdessamad Derraz ada5f01cd1 feat: bind retrobat sudachi portable folder
Sudachi.Generator.cs:28-30 creates user/ beside sudachi.exe, and
sudachi reads it as PORTABLE_DIR (path_util.cpp:92, fs_paths.h:9) in
place of %APPDATA%. Its keys now go below emulators/sudachi/user/.
2026-11-09 20:14:41 +01:00
Abdessamad Derraz 339297c75c chore: merge integ-2026-11-09 placement round
Both binding sides kept: roms_place, named handles and environment
variable directories from integ run through the pool and per-system
binding of this branch. Batocera, KNULLI and RetroBat launcher records
regenerated from the merged extractors.
2026-11-09 19:58:11 +01:00
Abdessamad Derraz 111a93440f feat: bind retrobat switch portable folders
RetroBat's generators create user/ beside yuzu.exe and eden.exe and
portable/ beside Ryujinx.exe, which the emulators read in place of
%APPDATA% (PORTABLE_DIR, Ryujinx AppDataManager.cs:12, 60). Their keys
now go below emulators/<key>/.
2026-11-09 19:54:00 +01:00
Abdessamad Derraz 9d955bb980 feat: add the shadps4 system fonts
The font library opens each SST font by its dumped or PS4 name in
fonts/, fonts/font/ and fonts/font2/ and falls back to the Noto fonts it
embeds, so the 38 entries are optional with an HLE fallback.
2026-11-09 19:53:35 +01:00
Abdessamad Derraz 5bf8aa8a3e fix: place amiberry ROMs in rom_path
The standalone Amiberry scans rom_path, ROMs below its content root by
default, for the ROMs of its database, without descending into
folders, and reads rom.key beside the Kickstart and the MT-32 ROMs
from mt32-roms. Those entries now carry standalone_path relative to
it, the four Kickstart labels holding slashes flattened. The kick*.rom
names stay the libretro build's.

Batocera's config_directories reads its rom_path save, KNULLI reuses
it. On Batocera, KNULLI and RetroPie the ROMs move from the BIOS root
to bios/amiga.
2026-11-09 19:48:22 +01:00
Abdessamad Derraz 8ec0c5482c fix: place xroar ROMs in each rompath
XRoar reads a ROM by name from the directories of rompath. The entries
take their file name as path, relative to ~/.xroar/roms or
${prefix}/share/xroar/roms, and rompath and -rompath are declared as
search lists.

Batocera records its rompath line, Recalbox -rompath bios/<system>
(the placeholder its extractor already writes), RetroBat its -rompath
as two records, bios/dragon and bios/coco for coco. An entry whose
name the platform list does not declare follows the launch its
profile system is listed under: Recalbox lists mc10.rom under
trs80coco, so alice.rom is read there.

Batocera ROMs move from the BIOS root to bios/xroar, Recalbox ROMs to
bios/dragon and bios/trs80coco, RetroBat ROMs to bios/dragon and
bios/coco. RetroDECK and RetroPie keep them at the BIOS root.
2026-11-09 19:41:40 +01:00
Abdessamad Derraz e6dbbe69ed fix: place openmsx system ROMs through filepool
openMSX reads share/systemroms below OPENMSX_HOME or ~/.openMSX and
every filepool entry by SHA1. The profile paths drop RetroBat's
openmsx/ prefix and declare those directories and the filepool.

Batocera's config_directories reads the filepool lines its generator
writes, KNULLI reuses it. RetroBat records OPENMSX_HOME, RetroPie the
moveConfigDir of ~/.openMSX that its systemroms link lies in, and the
configure --prefix of xroar that its roms link lies in.

Batocera and KNULLI system ROMs move from openmsx/share/systemroms to
openmsx/, beside the files their own lists declare, RetroPie's to
BIOS/openmsx, the folder linked as share/systemroms.
2026-11-09 19:32:00 +01:00
Abdessamad Derraz 5c5c7cd79c fix: read shadps4 sys_modules from its user folder
sys_modules/ is below shadPS4's user folder: user/ in the working
directory, else the XDG data folder (path_util.cpp:88-124). Batocera
and KNULLI start it from /userdata/system/configs/shadps4, so their
packs no longer carry bios/shadps4/sys_modules, which nothing read, and
name the modules instead. EmuDeck keeps its link at
bios/shadps4/sys_modules, and RetroBat places them in
emulators/shadps4/user/sys_modules.
2026-11-09 19:29:18 +01:00
Abdessamad Derraz d2546e557f fix: read citron and suyu keys from KeysDir
Both profiles placed their keys in switch/, Batocera's folder. The code
reads them from KeysDir, <data>/keys, so the paths are keys/<name> and the
profiles declare the data folders, the portable user folder and the
KeysDir handle. Batocera and KNULLI keep citron's keys in bios/switch,
EmuDeck places each emulator's in its linked bios/<emulator>/keys,
RetroBat in emulators/citron/user/keys, and KNULLI's suyu, which keeps
its data in /userdata/saves/switch, names them as read outside the BIOS
folder.
2026-11-09 19:29:18 +01:00
Abdessamad Derraz 8633db0a22 chore: merge voxatron split and emulator folders 2026-11-09 18:56:51 +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 ad424f796b chore: merge one-of sets 2026-11-09 18:33:21 +01:00
Abdessamad Derraz 50f9b642a0 fix: group the boot ROM slot Pizza Boy SC fills
Read while walking the profile checklist on the profiles the
variant_group conversion touched.

- pizza-boy-sc: the core holds one Mega CD slot and one Master System
  slot, filled through the document picker under any name, and tests
  only the Mega CD length (libsc.so frontend/android/src/lib.rs:475,
  569-648, megacd_main_machine.rs:169-178). Nothing picks by
  territory, so the three images of each are a group, not a selection
  slot: megacd-boot-rom required, mastersystem-boot-rom optional.
- fpse, fpse-ng: the BIOS note pointed at "the other images of the
  group", a set the profile does not list. It now says any 524288-byte
  PlayStation image fills the slot.
2026-11-09 18:32:53 +01:00
Abdessamad Derraz 2fe15e99f9 chore: merge launcher names 2026-11-09 18:29:52 +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 58735286a7 feat: let an archive join a set
Kronos reads kronos/stvbios.zip, else stvbios.zip at the root of the
system directory, and a ST-V game stops without either
(libretro.c:1608-1617, 1676-1681 at the pin). The archive under
archive_prefix and the root copy are one need, but only loose entries
could be members, so the required-only pack carried both.

An archive's own entry now joins a set like a loose file. verify
--emulator and the emulator pack settle archive units with the loose
entries, the required-only pick covers them, find_undeclared_files
and cross_reference record them, and the unit under archive_prefix
ranks before the same name at the root. Its members still settle the
archive by their contents. Kronos' stvbios.zip is grouped stv-bios.

No other profile reads one archive under two paths: odin and
tgpulse_next_m1 place their own entries at the prefix path, and
flycast's naomi.zip has one path per build.
2026-11-09 18:26:05 +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 ee98949d2c fix: profile the zip and hog probes at the pin
Read while walking the profile checklist on the grouped profiles.

- picodrive: find_bios tries each stem as .bin then as .zip
  (platform/libretro/libretro.c:1316-1326), and pm_open reads the
  first entry of at least 32 KB or with a ROM extension
  (pico/cart.c:122-158). The twelve .zip names join their region's
  set, ranked right after the .bin of the same stem.
- dxx-rebirth: the HOG entries cite the mount and the error that stops
  the game without one (similar/main/inferno.cpp:472, 476, 500-512).
2026-11-09 18:19:47 +01:00
Abdessamad Derraz 315dab82b7 feat: give each set its requirement and one pick
Three changes to the search-list model, one commit because the readers
and the profiles must move together for the schema to hold.

Set requirement in a groups map. pom2 falls back on apple2.rom for the
][ and the ][+, and on apple2e.rom for the //e it boots and for the
unenhanced //e: one required on the file could not say both. A profile
now declares groups: {name: {required}}, a member writes no required
of its own (schema and validate_schemas refuse one) and load_emulator_
profiles derives it, true when one of its sets is. group takes a name,
a list, or a map from set to rank where the rank differs per set. pom2
is grouped from SystemProfile.cpp and MainWindow.cpp:246-296 at its pin.

One member per required set under --required-only. The pick is the
first the code reads among the held members the region filter leaves,
by rank then declaration order; a set the platform declares a member
of is carried by that declaration. The emulator pack, verify
--emulator, the platform pack, its manifest and verify --platform read
alternatives.required_only_spares or core_file_spares.

variant_group is now selection_slot: files a core chooses between by
a rule other than first found (disc territory for PicoDrive and
Pizza Boy SC, the o2em_bios option, a WebAssembly probe in SWF
Player). Where the code takes any one, the field became a group:
ARMSX1 (ArmSxBackend.java:149-157, name order), ePSXe (load_bios
0x433540-0x433621 of the 2.0.5 Linux x64 binary, one configured path,
HLE when BiosHLE is set), FPse and FPse-NG, DXX-Rebirth's HOGs
(inferno.cpp:472-512). odin and zesarux carried it with no effect.
slot.py compares ranks only between candidates that share a set.
2026-11-09 18:19:32 +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 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 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 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 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 1e12d9fe38 feat: group the first-found BIOS lists
Each list read at the profile's pin, every member required: true where
the code needs one of the set, the order left in priority.

- yabause, yabasanshiro, kronos: libretro.c tries saturn_bios.bin,
  sega_101.bin, mpr-17933.bin (yabause 1035-1049, yabasanshiro
  1048-1071, kronos 1619-1638 after kronos/saturn_bios.bin). kronos
  also reads saturn_bios.bin at the system root, now its own entry.
  yabasanshiro refuses the game with no file even under forced HLE
  (1064-1071), so its hle_fallback is gone.
- yabadabadoo: bios_for_region (libretro.c:262-284) takes any of the
  three in an order the disc region picks. One group, no priority:
  region keeps that order, no single rank would be true.
- ymir libretro: kBiosFilenames (libretro.cpp:305-309), region first,
  else the first found, no game without one (1231-1236).
- duckstation: FindBIOSImageInDirectory (bios.cpp:397-450) keeps any
  image of the right size, a region mismatch only warns: one set.
- picodrive: find_bios walks one list per disc region
  (libretro.c:1272-1336), three groups.
- px68k: BIOSFILE then cgrom.dat or cgrom.tmp (libretro.c:984-1032).
- px68k-sdl: BIOSFILE and FONTFILE lists (winx68k.cpp:277-331).
- numero: ti83se, ti83plus, ti83 (libretronew.cpp:575-594), no ROM
  leaves a blank screen.
- freechaf: sl90025 then sl31253, HLE without either
  (libretro.c:186-199), optional set.
- pcsx1: scph1001, scph5501, scph7001 then any scph* (libretro.c:1229),
  HLE without, optional set.
- odin: three boot ROMs inside hikaru.zip.
2026-11-09 17:40:00 +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 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