Each IWAD entry named only its iwadinfo.txt lines. It now also cites the add_pk3 rule that packs the file into game_support.pk3, the FIWadManager constructor that reads the IWADINFO lump, the Names parser and the directory scan. Load files cite the Load parser and the loader beside the IWAD, and square.pk3 the -iwad branch.
GZDoom collects its IWAD candidates from [IWADSearch.Directories], reads
the support WAD there and the Load files from the IWAD's own folder
(src/d_iwad.cpp:456-476, 593-624, 862-901). RetroDECK lists
RETRODECKROMSDIR/doom there (gzdoom/rd_assets/rd_config/gzdoom.ini:9),
which component_prepare.sh:27 rewrites to $roms_path/doom. The extractor
read only the BIOS placeholder of a preset: it now records every line
naming the BIOS or the roms folder the script rewrites, with that sed
line in its source. $roms_path, whose default is the roms root
(config/retrodeck/retrodeck.json:5), is read as that root.
The profile names IWADSearch.Directories as a pool and lays its IWADs
and their support and Load files out at its top. On RetroDECK the 20
held IWADs land in roms/doom, the 23 others are named missing there.
The root copies stay for prboom and uzdoom, which claim them. No other
platform hands GZDoom that list, so none changes.
RetroDECK writes bios/gzdoom into [FileSearch.Directories]
(gzdoom/rd_assets/rd_config/gzdoom.ini:19). BaseFileSearch reads that
list after the program directory for the engine pk3s, and for -file,
-deh, -bex and zvox.wad (src/common/utility/findfile.cpp:224-296).
IWADs come from IWADSearch.Directories and their Load files from the
IWAD's folder (src/d_iwad.cpp:456-476, 613-624, 877-901), so no entry
of the profile is read from bios/gzdoom and nothing is bound.
Each standalone profile records where its version is read: the source
at its pin (clk 2026-07-23-136-g9020107, shadps4 0.20.1 WIP, eden
v0.2.0-401-g26a03d2), the APK, binary or archive read (kind package),
or, where no reading can be made, kind unverified with the reason: a
host the tools cannot read, a forge gone or not answering, no build
recorded as read, a pin on another branch. Those keep their value,
unconfirmed.
ROCKNIX names its standalone packages <emu>-sa (package.mk under
projects/ROCKNIX/packages/emulators/standalone at 20261001); RetroPie
names its libretro scriptmodules lr-<name>. Each name joins the profile
of the project its package builds. supermodel-sa builds
DirtBagXon/model3emu-code-sinden, the supermodel3 profile.
EmuELEC, AmberELEC and KNULLI launch standalone emulators by the name
their launch code dispatches on (HATARISA, PPSSPPSDL, FBNEOSA) and ship
32-bit or patched builds of libretro cores under their own .so names
(flycast_32b, mupen64plus_next_alt, genesis_plus_gx_cart_special,
mame0139, flycast-xtreme). Each name joins the profile of the project
its package builds. fceumm_mod reads gg.rom, not gamegenie.nes, and
never opens it, so it gets its own profile.
Each platform's own packages were read at the revision our data pins, for every emulator and core it ships: Batocera, Recalbox, RetroPie, ROCKNIX, Lakka, RetroDECK, RetroBat and EmuDeck. Files a package installs where the emulator reads them are recorded with installed_on, and files a release bundles but a package leaves out with not_bundled_on, so each platform's pack brings what its users lack and nothing they already have. The standalone profiles never checked before were held against their releases the same way. Batocera's imame4all is the mame2000 core. The primary neogeo.zip was a 7.7 KB placeholder no platform pins and no pack served: removed, the real dumps stay in .variants.
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.
validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.