A set whose every ROM is NO_DUMP or ROM_OPTIONAL only warns in
handle_missing_file, so the machine runs without it. The parser now
keeps undumped and optional ROMs for that decision, the merge and the
release profiles write required false for such sets, and the text
patcher rewrites the required line it used to leave. A curated false
over a set with dumped ROMs is kept, except over no contents, which is
what an undumped set leaves once a later release dumps it.
pSxMAME builds mamedev/mame itself at 0.133 and left the current
refresh, which would have moved it onto 0.289 refs. Release profiles
keep their citations double-quoted on regeneration.
Wrapped buttons get a row gap, the copy button fits a one-line code block, tables line up with the text, four counters share one row, the sticky sidebar label gets a rule, and a phone table no longer squeezes its first column to one letter per line.
The header logo was a 256 px compressed raster whose navy chip vanished on the indigo bar. The chip is now an SVG, white with the glyph cut out, and the favicon set (SVG, 32 px and an opaque 180 px touch icon) comes from scripts/make_site_icons.py.
The two redesign branches and the archive repair met in the testing guide and the prose rules: list test_archive_recipes, drop three clause semicolons, write the forbidden glyphs as escapes in the image test. README and mkdocs.yml regenerated from the merged generator.
bios/Bungie holds the Marathon scenarios Aleph One reads, entries its profile files as category game_data. Listed with the other publishers' trees, they leave the system files count and sit under Game engines and PC games on the site.
Five tabs from Start here to Contribute, a level on every page, a device picker on Get your files that lists every registered platform, and platform pages that open on where the files go, the command, the pack and how to check. FAQ and troubleshooting keep the questions asked before installing, the technical ones move to their own page, and getting started points to the pages that took its content.
device_group in the registry places each platform on the device picker, in the navigation and on the home page. scripts/siteguides.py holds the guide text per platform: what it is, its BIOS folder, where the install command runs.
scripts/sitediagrams.py writes the explainer, install flow, verification modes, MinUI card, pipeline and data layer diagrams as inline SVG from the registry, the platform files, the install manifests and the pipeline step list. A page asks for one with an image comment, which the decoration pass resolves. The two mermaid diagrams of the architecture page are replaced, so no page loads mermaid from unpkg.
Platform logos and system icons are copied once by fetch_site_images.py with their source and owner recorded, and the build rewrites the remote links to the copies. validate_site refuses an image from another host. Three registry logos named a personal avatar instead of the project's (RomM, ROCKNIX, MiSTer FPGA) and MyMinUI's was a GitHub identicon, now dropped.
One 1200x630 sharing card per section, a 404 page with search and the two entry pages, and a list of screenshots that need a real device.
Header keeps the brand indigo in dark mode, buttons and inline code in links take the link colour, badges get darker backgrounds: axe reports no contrast failure left on nine pages in both schemes (617 nodes before). Admonitions keep one meaning per colour. On a phone, tables with a download button stack one block per row, other tables hold their first column, and commands wrap. Card grid, numbered steps, level label, terminal panel and path chip classes for the generated pages.
A held archive whose name has a recipe fails when it carries three or more members outside every recipe of that name. Exempt: containers a platform pins by md5, members a platform pins by zipped_file, merged clones in their own folder, NAOMI device_ref ROMs, samples and artwork.
RetroDECK pins the container md5 of 170 of the archives 6ee162f8 imported, which carry the ROMs of every slot option reachable from the set. Those copies move verbatim to .variants/, where the md5 still resolves them, and the primary is rebuilt as TorrentZip from the recipe the profiles declare, each member checked by crc32 and sha1. Where a same-named copy in bios/Arcade/Arcade held the same pollution, it is rebuilt too.
Two members only these copies held stay in the older recipe that names them: pio_a72.bin in imds2ioc and presap2rb_123.rom in electron_romboxp (MAME 0.195 to 0.220), both under .variants/.
6ee162f8 imported MAME device and machine archives that each carried the ROMs of every slot option reachable from the set (H19 terminal ROMs in sys68k_cpu30.zip, 371 ISA card ROMs in slvrball.zip). MAME reads a slot card from the card's own archive, so those members were never read there.
Each archive is rebuilt as TorrentZip from the recipe its profiles declare (their union when profiles of several MAME versions differ), every member checked by crc32 and sha1. A copy whose recipe build already exists under the same name is removed, keeping the one filed under its manufacturer. 341-0057.bin, held only in these copies, stays in the MAME 0.220 a2pic recipe under .variants/. Every member removed is still held elsewhere in the collection.
251 sets that profiles or platforms now name were imported from MAME 0.289 only. Replaying the 22 cached listxml releases adds their older recipes (a2pic 0.220 carries 341-0057.bin) and loses none of the 2148 existing ones.
A release recorded without a platform's pack linked its button to that release, which serves no pack for AmberELEC, EmuELEC, KNULLI, MinUI, NextUI or MyMinUI. The cell now names the release and points to the installer, which reads the file lists on main. Core folder links resolve each core name to the profile page that describes it (mednafen_vb is beetle_vb).
Platform pages labelled base_destination, the root the platform's own list writes from, as the BIOS path, so EmuDeck read bios/ where the pack goes into ~/Emulation/bios/. The row now gives the registry's extract_to, the folder the README and the pack guide name. A platform that names no file (MinUI and its forks) showed 0/0 coverage and an empty systems table; its page now lists each core folder with the files the pack puts in it.
Both pairs from the Real3D SDK disc (_SETUP.1): Bayou 0x64130009 at
Assets/, Orlando 0x64130005 in .variants/. The .pmem size check against
the .cmem header keeps a pair from mixing models.
chex.deh and french.deh come from idgames (themes/chex/chexdeh.zip, utils/exe_edit/patches/french.zip), both released with no restriction by their author.
The archive held 33 members of other sets (H19, Mockingboard...) next to its five CPU-30 ROMs. Every extra member is held elsewhere in the collection. Rebuilt as TorrentZip from the five members MAME 0.289's listxml names, checked by crc32 and sha1.
The layout check skipped any archive it found no copy of, and it looked
copies up by name only, so 23 MAME device sets held through the clone map
were never checked and pro1000.zip was never reported absent.
p1_p4.bin and p2.bin come from Group13 of the InstallShield archive on
the PRO-1000 SDK CD (archive.org item real3d, real3d.iso sha1
042fbf36). Both match the crc32 Config/Games.xml declares. Built as
TorrentZip.
The bare name mupen64plus is the standalone program on every platform that lists it (Batocera, KNULLI, Recalbox, RetroPie, ROCKNIX). The libretro buildbot publishes no core by that name, so mupen64plus_next no longer claims it.