The SDL build reads vMac.ROM, fixed at build time to the Mac Plus ROM name and 128 KB (setup/SPCNFGAP.i:60-63), and checks it against three Mac Plus checksums (src/CONTROLM.h:1344-1388). Search order: --rom, the executable's directory, mnvm_rom/ under the SDL pref path, the working directory (src/OSGLUSDL.c:546-620).
load_pac_bios runs only for .mmi content (platforms/libretro/libretro.cpp:507, 521-522), so pac-n1, pce-lp1 and pac-n10 carry system laseractive, and the system cards nec-pc-engine-cd.
o2em_bios defaults to o2rom.bin and only the chosen file is opened (libretro_core_options.h:52-64, libretro.c:989). Loading fails when it is missing or under 1024 bytes (libretro.c:160-189, 1043-1044). The four files share a variant group, o2rom.bin stays required, the others are optional. Only the first 1024 bytes are read and an unknown CRC still loads, so size becomes min_size and crc32 leaves validation.
hiscore.dat and cheat.zip serve every machine (machine.c:361-363), so arcade. The other twenty BIOS sets take the system ids the other MAME profiles give the same sets, from their drivers (naomi.c:4654-4661 for hod2bios, f355bios, airlbios). mac2bios is declared in macs.c:514, 740, not suprnova.c.
The profile set no system on its entries, so the truth model filed every one under the only profile system a platform has (nec-pc-98 on Batocera, truth.py:487-499). system.rom boots only on PCjr (dos_programs.cpp:2995-2996), MIDI ROMs and SoundFonts serve every machine (mpu401.cpp:678-793), FONT.ROM and the PC-98 bitmaps serve PC-98, the VGA and ROM BASIC images serve the IBM PC. The system BIOS image boots either kind and keeps no system.
dist/ is not committed and exports/ is. On a fresh clone, or with a
mistyped --truth-dir, the export copied each platform's file back
uncorrected, said OK and replaced the corrected export in exports/.
check_freshness then reported a stale export instead of the missing
model. The platform now fails, writes nothing, and names the
generate_truth command.
A Pentagon, Pentagon 512/1024 or Scorpion reset returns an error when a ROM is missing (fuse/machines/pentagon.c:131-139, pentagon512.c:76-91, pentagon1024.c:72-87, scorpion.c:76-78), machine_select_machine fails (fuse/machine.c:237) and machine_select falls back to the built-in 48K machine (fuse/machine.c:150-162). The core keeps running, so the eight model ROMs are optional.
validation: names what the code verifies. dosbox checks
MT32_CONTROL.ROM against nine sha1 and size; the truth's one md5 and
crc32 describe one of those revisions, and the export wrote them beside
System.dat's own sha1, a rom line no file satisfies, and replaced
Batocera's md5. pcsx_rearmed and DuckStation check scph1001.bin by size,
and the v2.0 md5 platforms name was replaced by v4.1's.
checked_hashes keeps a hash the code does not name only where a checked
hash pins one content. Otherwise it still pairs a renamed file but never
corrects or fills a value the platform wrote. Additions keep every hash.
diff_truth reads the same rule.
Every other openMSX entry documents the default file pool folder, share/systemroms. Batocera adds bios/openmsx to the pool and its pack keeps the destination it declares.
Sets the platforms' MAME launches load: CoCo, SCV, BBC, Electron, Mac, Dragon 64, Archimedes and others, each with its members' crc32 from libretro/mame at the pin. The note now states the version the commits pin (0.289) instead of a hand-kept count.
amiga-os-310.rom and Recalbox's kick02019.AROS pair are opened by amiberry's ROM scan (amiberry_gui.cpp, rommgr.cpp at the pin). MinivMacBootv2.dsk is opened by minivmac.
SwanStation hashes the first 512 KB of the 4 MB PS3 ps1_rom.bin, which is its table entry c02a6fbb (bios.cpp:70). Two refs pointed one line off: the hashes are on lines 66 and 71 at the pin.
ps2-0250j-20100415.bin passes the folder scan of pcsx2, armsx2 and yaps2. EmuDeck's SCPH-70004 .BIN, .ROM1 and .ROM2 are aliases in pcsx2, and the .rom1 note now says the stat is case-sensitive.
RetroBat's ares launcher writes the LaserActive BIOS paths into ares's settings, and ares loads them with no hash check. Three EmuDeck Mega CD md5s are images ares's sha256 table names, so their md5 sits beside the sha256.
RetroDECK, ROCKNIX and EmuDeck write Complex.bin or Complex_4627v1.03.bin into xemu's flash ROM path, and Batocera points chihiro at cerbios.bin. They are aliases of Complex_4627.bin.
Ymir standalone identifies an IPL by its XXH128 with seed kIPLHashSeed (memory_defs.hpp:10) against ipl_db.cpp:9-17. Each image's digest was recomputed with that seed and falls on the cited row.
blueMSX names Msx2pe, Msx2pexte, pesadelo and svi328a in its machine configs. openMSX declares the sha1 of nine RetroBat system ROMs in its machine XMLs, and unpacks IDE250.DAT from ide250.zip.
atari800 scans the system folder and recognises each OS and BASIC ROM by CRC32 (sysrom.c:104, 317-420), whatever its name. RetroDECK's ROM_* names are those config keys. Eleven entries carry md5, crc32 and size, under the label altirra already uses for the same dump where one exists.
Batocera, Recalbox and RetroBat choose the TOS file and pass its name to standalone Hatari (--tos, szTosImageFileName) or to hatariB (hatarib_tos): hatariGenerator.py:74-75, 158-193 (Batocera), Hatari.Generator.cs:144-154 (RetroBat). The libretro build still opens tos.img only. The names are aliases of tos.img.
A profile states where the code reads a file as path: or destination:,
and the resolver reads both. The truth copied path only: redream's
dc_bios.bin, read at dc/boot.bin, reached the export with no path, so
System.dat's dc/boot.bin was not seen and a dc_bios.bin line was added,
and Batocera got bios/dc_bios.bin instead of bios/dc/boot.bin.
Each truth entry claimed its platform line in turn, so the first one to
arrive won. dosbox-x's system.rom (alias bios.rom, no path) took
Batocera's np2kai/BIOS.ROM by name before np2kai's own np2kai/bios.rom
was tried, and the export wrote an IBM PCjr md5 on it. A path also
outranked a contradicting hash: the truth's MSX.rom joins bluemsx's path
and fmsx's md5, which replaced the blueMSX dump on Recalbox's and
System.dat's Machines/Shared Roms/MSX.rom while fmsx's own line held it.
pair_entries runs each test over every entry before the next, tests that
contradict no hash first. export_native and diff_truth both read it.
The intro gave an opinion on the effort lists take and said nothing is removed, while RetroArch and Lakka lose three hashes and one size. It now says no entry is removed, that dropped values are listed per platform, and names exactly what the tests run on patched code.
Profile notes and wiki pages called .info entries phantom or incorrect, and labelled an upstream list a known defect. They now state what each file declares and what the code reads. The wiki claimed Batocera prefix-matches truncated md5s; its script compares the full string (batocera-systems:1088), which the page now says. The gaps column reads "Not read by profiles" and notes that a profile may be incomplete.
The page called the original "their file" and listed hashes "corrected" and additions "left out", a verdict on work the page only proposes to extend. It now says what each updated file changes in neutral terms built from the report's numbers, gives the reason a file is not added, credits the effort a list takes to keep current, and invites an issue when a change does not fit a platform. A test keeps the judging words off the page.
The nested list structure stays, so each label renders bold instead of showing its asterisks. The platform details block becomes a list as well: its labels were paragraphs followed by items with no blank line between them. validate_site now reports any asterisks that reach a rendered page outside code, which runs in the deploy and in pipeline step 8b.
The rendering test imported pymdownx, which the CI test job does not install. An admonition nests its body by the same four spaces, so the test uses it and needs only markdown.
A key holding a mapping was written as a paragraph, and its children landed eight spaces deep inside the four-space admonition, where Markdown reads an indented code block: the clownmdemu analysis showed raw asterisks. Each level is now a list item with its children as a sublist, booleans read yes or no, and a null reads none.
BlastEm opens 32X_M_BIOS.bin and PicoDrive 32X_M_BIOS.BIN. On a case-insensitive platform the manifest kept the first and dropped the second core's claim, so an install narrowed to PicoDrive (RetroArch on Switch) lost the 32X BIOS its pack carries. The claim now joins the entry kept.
Recalbox now resolves uae4all to its own libretro build, so only the bundled entries of the standalone uae4all2 reached these two AROS ROMs, which its release ships.
Recalbox compiles uae4all from Chips-fr/uae4all-rpi (libretro-uae4all.mk:8-9), a libretro core that reads kick34005.A500 from the system directory and nothing else. built_by makes the name resolve to it on Recalbox only.
The libretro core passes system/mame/{hash,plugins,samples} (retro_init.cpp:111-155). Software lists are required in mamemess, where softlists are on by default. The trees and the 19 floppy samples are collected from libretro/mame at the pin.
Seven artwork zips from the core's metadata/artwork are read from mame2003-plus/artwork/ when Display Artwork is on, the default (artwork.c:2242-2258).
The libretro core copies whdboot from the system directory and uses a candidate only when WHDLoad, JST, AmiQuit, boot-data, the game database and the five RTB files are all there (amiberry.cpp:11510-11584). The core zip has none of them, so they are collected.
The standalone build loads it from the working directory then the profile root (app.cpp:5084-5119). The release packages ship it, the libretro tree never reads it.
tilemap.bin and tilepatch.bin are compiled into the core and settings come from core options, so no res/ file or config.xml is opened (omusic.c:50-67, config.c:86-87).
The A500 and LOUD floppy sound sets are read from uae_data/ (driveclick.c:77-104) when the option picks them, and capsimg is loaded from the system folder for IPF images (caps.c:37-96). The ten samples are collected from the core repository.
Since 3fffeb1 prboom.wad is compiled into the core (d_main.c:1449-1465). The IWADs it searches beside the content, in system/prboom/ and in system/ are now listed, with the ZDoom pk3 loaded before a pk3 mod.
The profile listed none. id1/pak0.pak is required (host.c:711-760), the retail and mission pack paks are read in order until one is missing, and Quoth 2.2 is mounted when the content path names it (common.c:1017-1020, 1724-1725). The three Quoth paks are collected, pak1.pak as a release asset.
With colorization set to custom, a DMG game reads palettes/<rom>.pal, then <header title>.pal, then default.pal under the system directory (libretro.cpp:2012-2091). A user-made file, so the entry is unsourceable.