The ref named the DLL string table. It now cites the functions in
pepflashplayer.dll 32.0.0.371 that join the plugin directory with
pepper.vch and hand the path to the Flash Access DRM callback.
Seven refs named a whole binary. They now cite the firmware check in
the RPCS3 build, the media board and JVS loaders in cxbxr-emu.dll, and
AMMediaboard.cpp at the commit the CrediarDolphin build reports. The
media board ROM is size checked, and the two JVS messages trade places.
The four entries had no ref. Each now names the slot declaration, the
dump reader and the md5 test for the PAL Anvil BIOS in the RetroBat
PhoenixEmuProject.exe. The Jaguar boot ROM is optional, the core starts
the cartridge itself, and the 3DO font slot gains an entry.
Refs were file offsets of help text and RTTI names. They now name the
ROM directory scan, the ROM slot loader with its AMSDOS header test and
the cartridge loader in Caprice.exe 26.4. The built-in ROMs are RCDATA
resources and cartridges come from a file dialog.
Refs were bare string addresses. They now name the functions the
shipped PDB gives for the media board boot, the JVS image loader, the
EEPROM and key readers and the wm2_loader.dll load. EEPROM.bin is
resized to 256 bytes before the check, so size leaves validation.
Refs cited history.txt, the readmes and the import directory. They now
name the font scan, the mask loader and the 55-entry effect table with
its loaders in the unpacked MFME.exe 20.1.0.0. Meter.wav takes the case
the table uses, and RelayOn.wav and RelayOff.wav gain entries.
Four Torch ROM entries named only their Roms_Torch.cfg line. They now cite BeebEmTorch.vbs passing -Roms Roms_Torch.cfg, BeebWin taking that file from the user data folder, RomConfigFile::Load, and BeebReadRoms opening each paged ROM.
background.jpg cited flash.html and qml.qrc only. It now cites the main.qml lines that open flash.html from the application folder, and the QML image that reads the compiled copy.
defaults.prp cited abuse.lsp, which does not name it. dev_init opens it at every start through property_manager::load, which skips a missing file, so it is optional. It holds the level editor window positions and is written back after an -edit session. english.lsp now cites the abuse.lsp load the engine runs and the install rule.
Refs were bare string addresses. They now name the functions in the
r2.5.2.0 binary that build, open and size check each file, matched to
the r2.5.2.2 symbol names. Eight files the binary loads gain entries:
microphone, Lua scripts, cheats, slot-2 GBA, DLDI image and logos.
The .dsd and .raw entries rested on the shader format text. They now
name the .dfx parser, the shader source loader and the texture reader in
libdrastic_arm64.so r2.6.0.4a. Readme citations give way to code, and
the shader log is <name>.dsd.log.
hiscore.zip and xm.zip named only their hash/a7800.xml entries. They now cite the cart_list software list of the driver, the hash path that holds the XML, its open in softlist_dev.cpp, and the ROM search by list and set name in romload.cpp.
The entry cited only the configure line that packs every *.rom into the release. The General Sound loader opens GS_ROM_NAME, fixed to gs105a.rom (src/soundchips/gs.h:34), and no code names gs104.rom, so ZEsarUX never reads it under its name.
The three C64DTV ROM entries named only their file in vice/data. They now cite the BasicName, KernalName and ChargenName resources that name them, the c64rom loaders those resources call, and the embedded table that answers the names in the libretro build.
The entry cited only the bundled file and its note said no code reads it. No source file of MSX.emu names cbios.txt at the pin, so it is not a file the emulator loads.
Refs cited the changelog, readme, manual and XM6 2.06 source. They now
name the loaders and DLL load sites in XM6.exe 260920. ROM30.DAT and the
SCSI ROMs take the exact sizes the code checks, the X68030 boots on a
stub without ROM30.DAT, and SRAM.DAT takes both sizes it writes.
Refs leaned on the PDF manual and pointed inside instructions. Each now
names the loader, the system file table index and the init path in
xm6g.exe 3.38. SCSIINROM.DAT is needed on the base model only, and
RTC.DAT and the YM2608 ROM take their read sizes.
Four entries cited only their file in Source/ROMs. tk90.rom, tk95.rom and spectrum48.arabic.rom are in no ROM list and are read when picked with the Browse button. interface1.edition1.rom is listed for ZX Interface 1, but ConfigureFDCRom has no Interface 1 branch, so it is read only when the configuration file sets ROMINTERFACE1.
Refs rested on string addresses. They now name the functions in vox
and vox_dyn that open each file. libHoloPlayCore.so is kept for the
Batocera generator that puts it on LD_LIBRARY_PATH, neither binary
loads it.
Data file refs rested on string addresses and the manual. They now
name the loader functions in the shipped pico8, pico8_64 and pico8.exe.
config.txt is read from the home folder first.
Theme and engine data entries named only scummvm.rc or an engine_data makefile. They now cite bundle_datafiles.sh, which builds the libretro bundle from those lists, the themepath or extrapath the core sets, and the code that opens each file: the theme lookup, the icon, shader, translation and font archives, and each engine's loader.
The DSP refs named IL2CPP methods only. They now carry the addresses
the v0.320 Windows GameAssembly.dll gives DSP1..ctor and
DSP1Core.LoadROM, with the CRC32 constant and the 8 KB buffer sites.
Entries that cited only pc-bios/meson.build now cite the code that opens them.
bios-256k.bin is the firmware of the pc and q35 machines (pc_piix.c:466, pc_q35.c:349) and pc is the machine the core starts for an .iso, so it is required, and a missing image exits in x86_bios_rom_init. bios.bin is read only by the ISA PC or when the firmware option is cleared, so it is optional. qboot.rom is microvm's firmware with ACPI off. The pxe-*.rom images and efi-eepro100.rom are read through a romfile= option, the EDK2 code images through -bios.
The three EDK2 variable store templates and vof-nvram.bin are removed: no code resolves them through the data directory, a pflash drive is opened by path and the core runs from the content folder (ui/libretro.c:697).
Refs cited cpcemu0.cfg lines, the help file and strace runs. Each now
names the loader, the config parser, the M4 board setup or the layout
dialog in cpcemu_portable.exe 3.0.2. The loader never checks length, so
size leaves validation, and NMIROM.BIN gains its own entry.
File refs cited the manifest and set records by data address only.
Each now names the code that reads them in DREAMM 4.0 linux-x64: the
name, size and CRC32 match, the reverse lookup and the set picker.
Notes no longer rest on strace.
Refs were prose. Each now names the function and offsets in the
2026/10/16 Linux AceDL that builds the path, reads the file and fails.
The firmware names the SNA loader opens without the .rom suffix become
aliases, and the plugin ROMs take a minimum size.
ROM, font and CARTS.SHA entries cited the copy in fMSX/ROMs, a file and not a reader. They now cite the system directory taken as ProgDir, the chdir to it, the LoadROM, LoadCart or LoadFNT call that names each file, and the function that opens it.
System ROM entries named only a machine or extension XML. They now cite the rule that ships share (install.py for openMSX, libretro_share.py and installShare for the libretro core), HardwareConfig loading machines/ or extensions/, and Rom.cc resolving the rom by filename then by sha1 in the file pool.
Machine ROM entries named only a config.ini, most with no line. Each now gives the config.ini line that names the ROM, then libretro.c building the Machines path and calling machineCreate, readMachine parsing the Slots section, and romLoad opening each slot file.
The original game files named only their .obg, .obs or .obm line. They now cite the CMake rules that configure and install the base set metadata, FindSets and AddFile that scan for it, FillSetDetails that reads its files and md5s groups, and the startup call per set type.
Driver records were cited by data address only. Refs now name the
game loader in ZiNc.exe 1.1 and its fatal paths. The table holds 71
records, so glpracr, glpracr2, btchamp, mgcldate and sfchamp are not
reachable and leave the BIOS notes.
Level, FMV and sound entries named only their gameflow.json5 line. They now cite the release packaging that ships data/trx/ship, the startup load of the mod's gameflow, the reader of the path or sfx_path key, the path patterns it resolves against, and the open of the level file.
The GRP entries named only their grpinfo.txt blocks. They now cite the add_pk3 rule that packs engine/grpinfo.txt into raze.pk3, ParseAllGrpInfos that reads it from ENGINERES_FILE, ParseGrpInfo, and the size and CRC match of GrpScan (the mustcontain pass for blocks without a CRC).
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.
AdvanceMAME reads its sets from dir_rom, a list of folders
(advance/osd/fileio.c:74, doc/advmame.d:680,699-701). EmuELEC's
advmame.rc sets dir_rom /storage/roms/mame (advmame.rc:11), and
advmame.sh rewrites /roms/mame to /roms/arcade when it is started for
the arcade system (advmame.sh:26-30). The extractor kept the keys under
the BIOS root alone: it now records those under the roms root too, and
a key the script rewrites gives one record for arcade and one for every
other system. A configgen record carries the systems it is written for.
The profile lays its 29 sets out at the top of dir_rom. On EmuELEC they
land in roms/mame. The 12 root archives AdvanceMAME alone claimed there
now hold the copies of the cores that also declare them (mame, geolith),
none of them lost.
A destination outside the BIOS tree is no proof of content: the moved
entry resolves by its layout path alone. roms/mame/konamigv.zip took
bios/Arcade/MAME/konamigv.zip, MAME 0.289's set, by that tail.
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.
MAME splits rompath, samplepath, hashpath and pluginspath on semicolons
and tries each directory in turn (src/emu/fileio.cpp:53-58, 330-392,
src/emu/emuopts.cpp:44-46, 53). The launcher records spell those lists
with the game's own folder in them, which handed_directories skipped:
- RetroBat passes -rp bios;<rom directory> (Mame64.Generator.cs:93-96)
and -rompath bios/psxmame/bios;<rom directory> to pSxMAME
(PSXMame.Generator.cs:38-48).
- KNULLI passes -rompath <romDirname>;/userdata/bios/mame;/userdata/bios
(mameGenerator.py:116-122).
- RetroPie writes rompath $romdir/mame;$romdir/arcade;$biosdir/mame
(mame.sh:133).
A semicolon list now gives each directory but the game's folder. A pool
that already lists the folder the files take keeps them there, and a
pool standing for the whole layout holds its files, never its folders.
The MAME profile names its sets at the top of the rompath and its
search settings as pools, pSxMAME its sets and rompath.
RetroBat's -sp and -hash records split on `bool hbmame = emulator ==
"hbmame"` (Mame64.Generator.cs:30): bios/mame/samples for mame64,
bios/hbmame/samples for hbmame.
Manifests: RetroBat gains the 12 pSxMAME sets in psxmame/bios and drops
samples/bbc.zip, read by nobody, which mame/samples/bbc.zip already
serves. KNULLI drops the same copy. RetroPie gains the 1427 MAME sets
in BIOS/mame, the root copies staying for the libretro cores. EmuDeck
names samples/bbc.zip as read outside the BIOS folder. RetroDECK's
samplepath is $bios_path/mame-sa/samples (mame/component_prepare.sh:94,
117): bbc.zip moves there from bios/samples/. Its MAME runs with the
-rompath ES-DE passes, %GAMEDIR%;%ROMPATH%/<system>, so the standalone
sets are named as read outside the BIOS folder and the root copies stay
for the libretro core. The 1427 sets
of RetroBat, KNULLI and EmuDeck stay at the BIOS root, listed in their
rompath. No file of any manifest is lost.
getromdatabydata clears bytes 0x10-0x2f and hashes the first 0x1c000
bytes, and 0x50000 too for a 512 KB file. The table SHA-1 of each
CyberStorm and Blizzard PPC image is now declared with that transform.
Each PCSX2 fork declares how its LoadBiosVersion reads the table:
the strncmp length on RESET, the NUL test on names, EXTINFO, and what a
read past the end does, from the source at the pin or the shipped
libemucore.so for NetherSX2 and its Turnip builds. The Recalbox libretro
PCSX2 and PCEE2 check no size, so their 4 to 8 MB bounds are gone, and
the PCEE2 and ARMSX2 arcade images require the COH-H zone.
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.
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/.
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.
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.
Recalbox 10.1.1 builds the wxWidgets-era libretro PCSX2 for x86_64 at
408e3b2 with 0003-bios-path.patch, which moves the BIOS scan from
pcsx2/bios to ps2, and lists it as the libretro core pcsx2 of the ps2
system. Since lrps2-9485a53 took the ps2 name no profile described it.
pcsx2-libretro-408e3b2 is built_by recalbox under the name pcsx2, beside
standalone PCSX2 and LRPS2. It reads <bios>.rom1, rom2, erom, nvm and
mec beside the selected image. GameIndex.yaml and the patch archives are
compiled in.
-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.