Commit Graph
2373 Commits
Author SHA1 Message Date
Abdessamad Derraz 75e688f6ce chore: regenerate the database and manifests 2026-10-20 17:03:22 +02:00
Abdessamad Derraz 2827d28ceb chore: drop raine's bundled history.dat copy
Only raine's bundled entry reached it, and no platform, other profile entry or install manifest needs it (bundled_only.py).
2026-10-20 17:03:21 +02:00
Abdessamad Derraz 3014027d53 fix: serve the catalogued LaserActive PAC-S1 v1.05
The primary (sha1 f7101b40) is named by no dump catalog and differs from the catalogued dump in 60 runs of 16 bytes. The variant (sha1 b3b1d880) is the dump No-Intro, TOSEC and MAME 0.289 (laseractj, v105) name and the only one BizHawk 2.11.1 accepts (FirmwareDatabase.cs:294). No platform pins either md5, so the catalogued dump becomes the primary.
2026-10-20 17:03:21 +02:00
Abdessamad Derraz a8732ca9df feat: profile the GSplus legacy build
Recalbox builds digarok/gsplus-legacy-archive (gsplus.mk:8-9), Batocera a fork of it whose loading code matches, and RetroBat runs its gsplus-win-sdl release (GsPlus.Generator.cs:26-30). digarok/gsplus, which gsplus.yml documents, is a later KEGS 1.38 import sharing no history with it. The legacy build reads ROM, ROM1, ROM3, ROM01, ROM03, ROM.01, ROM.03 at 128 or 256 KB (src/config.c:863-908), refuses to start without one, and reads c600.rom, parallel.rom and printer fonts as optional.
2026-10-20 16:57:24 +02:00
Abdessamad Derraz f111e1c505 docs: built_by names who ships a build
The resolver reads built_by as the platforms on which a core name means this build. Its definition said platforms that compile a libretro build, which excludes a standalone build a platform installs from the project's release. The field now says what it decides: platforms that ship this build under its core name, compiled or installed from the release.
2026-10-20 16:57:24 +02:00
Abdessamad Derraz cee77bebe0 chore: regenerate the updated platform files 2026-10-20 16:49:59 +02:00
Abdessamad Derraz dfdb887fb8 fix: say which cores find their BIOS by content
DuckStation (bios.cpp:208, 397-427), SwanStation (host_interface.cpp:
136-194), rustation (lib.rs:107-160), FS-UAE (rommgr.cpp:92-151),
ares (firmware.cpp:116-136) and Altirra (uifirmwarescan.cpp:29-113)
scan a folder and identify firmware by hash; Ymir does in its
standalone build only. FS-UAE still opens rom.key by name
(rommgr.cpp:1397-1498). The export then stops writing their labels
into platform lists: Batocera's psx block goes from 106 entries to 10,
and System.dat's scph5000.bin keeps its own hashes.
2026-10-20 16:49:16 +02:00
Abdessamad Derraz 1b50170922 fix: give MAME and FBNeo data files their system
Entries without a system in multi-system profiles were left unattributed by the truth model, and four System.dat additions left the export. Each system is read from the core's code at its pin. hiscore.dat, cheats and history serve every running machine (mame2000 cpuintrf.c:664-666, mame2003 cpuexec.c:280-282, mame2003_plus cpuexec.c:296-298, fbneo hiscore.cpp:154-161 gated on BDF_HISCORE_SUPPORTED), all arcade in those builds, so arcade. BIOS sets take the id their driver gives in the other MAME profiles, and bctvidbs is barcrest-mpu4 everywhere. Files serving several systems of one build (groovymame data files, raine) keep no system. Core resolution is unchanged on every platform.
2026-10-20 16:45:54 +02:00
Abdessamad Derraz e5174a07bf feat: mark files a core finds by content
DuckStation identifies its BIOS by MD5 in a folder it scans
(bios.cpp:208), so its entries' names are labels. The export wrote them
into Batocera's and ROCKNIX's lists as files to hold: a user with only
scph5501.bin read 104 missing BIOS where DuckStation boots. Labels also
lent their md5 to a name another core opens, and paired by name they
replaced System.dat's scph5000.bin hashes.

found_by: name | content, on a profile or a file and keyed by build like
load_from. The truth records which cores open each name (_named_by). A
label pairs with a platform entry by hash only, is never added, merges
with an opened name only on a shared hash, and is counted in the export
report rather than listed as missing.
2026-10-20 16:32:22 +02:00
Abdessamad Derraz eaf6d1859d chore: regenerate the README and site config 2026-10-20 16:28:45 +02:00
Abdessamad Derraz 0eec5ab4be fix: file a truth entry by content, not by name
A name the platform declares filed an entry under that system before
its own system:, and the last declaration of a name won. fmsx's 16 KB
DISK.ROM went to nec-pc-88 for quasi88's 2 KB disk.rom and came out as
a second DISK.ROM line under "NEC - PC-8801"; dosbox's SC-55
ROM1.BIN/ROM2.BIN went to galaksija.

A declaration now files an entry only when it can be the same file: a
shared hash, or no size both admit. The same content declared under two
systems is filed under both, an entry's own system stands against a
refuted homonym, and a systemless profile's placeholder takes only names
the platform does not declare. Merging reads the same size rule, so a
24 KB ROM and an entry capped at 16 KB stay two files.
2026-10-20 16:14:55 +02:00
Abdessamad Derraz f758efd062 fix: write no export its validator refuses
validate() ran after the files were written, so an export the
exporter's own validator refused still replaced the published one in
exports/, and only the exit code said so. The platform now fails before
anything is cleared or written.
2026-10-20 15:55:29 +02:00
Abdessamad Derraz 49b79a6d52 fix: refuse a file read off the pinned revision
pinned_base returned an empty base when the platform's source named no
revision or no longer ended in the exported file, and the exporter's
own branch URL was then patched without a word. Every file an export
reads must now carry the revision the platform YAML records, or the
platform fails and asks for a rescrape. The check covers every file of
every platform: ROCKNIX's second file, RetroDECK's manifests and
RetroPie's tarball were checked by nothing before.
2026-10-20 15:40:28 +02:00
Abdessamad Derraz dd5680300a feat: collect the missing MAME 0.289 device sets
55 device sets the collection lacked or held incomplete. 24 are rebuilt from ROMs already in bios/, 31 come from the archive.org item mame-roms-non-merged. Every member matches the 0.289 listxml size, crc32 and sha1, and each archive is built with build_torrentzip. The complete nss_tvinterface goes to .variants since RetroDECK pins the incomplete copy. The old at_keybc.zip held two of the three ROMs, its md5 is pinned by no platform, and is replaced by the complete set RetroDECK pins (63536a7d). Database and install manifests are regenerated with the files, including the vMac.ROM move.
2026-10-20 15:35:08 +02:00
Abdessamad Derraz 4da40c471d fix: isolate an unreadable original per platform
A cached bios_db.json.zip that was not a zip raised BadZipFile out of
run(): --all stopped and the platforms after it were never exported.
fetch() also cached any 200 reply, so an error page replaced a good
archive and was served on every later run, and an IncompleteRead or an
oversized reply escaped the same way. An archive is now read before it
is cached, and an unreadable file fails its own platform with the
--refresh-cache remedy.
2026-10-20 15:24:30 +02:00
Abdessamad Derraz 194ed23ded feat: list the 1,254 MAME 0.289 device sets
Generated by mame_hash_scraper --devices from mame0289lx.zip, the release asset whose sha256 matches GitHub's digest. Each set is optional: the core runs without it, and only a machine using the device needs it. 1,252 cite their ROM block, two are written without a ref because two blocks hold the same ROMs. Two note citations now carry their full upstream path.
2026-10-20 15:12:23 +02:00
Abdessamad Derraz 8de45b6f45 feat: generate MAME device sets from -listxml
A machine that instantiates a device loads the device's ROMs from <shortname>.zip (src/emu/device.cpp:140-152), and a missing required ROM stops that machine (romload.cpp:529-570, 667-671). The BIOS root scan never sees these sets. mame_hash_scraper --devices --listxml reads them from the -listxml of the release mame.yml pins, refuses another release, and cites each set at the ROM_START block holding its ROMs. The BIOS root merge also wrote refs without the upstream prefix and would have rewritten all 171 of them in mame.yml.
2026-10-20 15:12:23 +02:00
Abdessamad Derraz 7a65a2cf83 fix: refuse an export without its original
System.dat, RomM, Recalbox and RetroBat were rebuilt from our data when
their file was not cached: libretro's quoted names, Recalbox's comments
and one of its two zxspectrum blocks were lost, and the run said OK.
needs_original now follows native_sources, so every format we patch
fails without the file it patches and writes nothing.
2026-10-20 15:09:16 +02:00
Abdessamad Derraz 77deef1820 chore: file vMac.ROM under the Macintosh Plus
Its first 128 KB are byte-identical to macplus.rom, the Mac Plus ROM, and Mini vMac's Plus build reads it. It was filed under Macintosh II.
2026-10-20 15:08:25 +02:00
Abdessamad Derraz 60dfba51f3 feat: profile px68k SDL standalone
IPL search order iplrom, iplromxv, iplromco, iplrom30 and font cgrom30, cgrom30.tmp, cgrom, cgrom.tmp (SDL/SDL2/winx68k.cpp:277-331), SCSI ROMs (:140-271), all from $HOME/.keropi (SDL/prop.c:172-194). One IPL and one font are required: without them the CPU loop never starts.
2026-10-20 15:07:21 +02:00
Abdessamad Derraz f61c3d9ca5 feat: profile QUASI88kai standalone
The ROM list is src/memory.cpp:87-100. A missing ROM is filled with 0xFF and the emulator starts, so only N88.ROM, N88SUB.ROM and N88EXT0.ROM, without which nothing boots, are required. The directory is QUASI88_ROM_DIR, else <home>/rom (src/file-op.cpp:444-521). The CMake ROMDIR setting only appears in the help text.
2026-10-20 15:07:21 +02:00
Abdessamad Derraz 78fd70ae50 feat: profile Mini vMac 37 standalone
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).
2026-10-20 15:07:21 +02:00
Abdessamad Derraz a5c66bab46 fix: geargrafx reads PAC firmware for LaserActive
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.
2026-10-20 14:56:38 +02:00
Abdessamad Derraz 50beb0ca27 fix: o2em reads one BIOS, chosen by an option
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.
2026-10-20 14:56:38 +02:00
Abdessamad Derraz 920f0eb67c fix: give mame2010's system-less sets their system
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.
2026-10-20 14:56:38 +02:00
Abdessamad Derraz 07f1e881f1 fix: give each DOSBox-X file the system it serves
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.
2026-10-20 14:56:38 +02:00
Abdessamad Derraz 19b88ca055 fix: refuse an export without its truth
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.
2026-10-20 14:54:16 +02:00
Abdessamad Derraz 63556b4873 fix: fuse runs without its model ROMs
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.
2026-10-20 14:42:30 +02:00
Abdessamad Derraz b0dd3ab6f8 chore: regenerate the updated platform files 2026-10-20 14:41:12 +02:00
Abdessamad Derraz e81c63804a fix: correct no hash the code does not check
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.
2026-10-20 14:40:10 +02:00
Abdessamad Derraz cc31f9f863 fix: put ide250.zip under openMSX's systemroms
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.
2026-10-20 14:35:28 +02:00
Abdessamad Derraz e607c6c8ad chore: regenerate the database
Indexes the aliases added to the profiles.
2026-10-20 14:26:25 +02:00
Abdessamad Derraz e05ce9c643 fix: list the MAME sets platforms run
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 48969cabbd fix: list the Amiga and Mac images cores open
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 43fee39139 fix: list the PS3 ps1_rom.bin swanstation reads
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 5129b967e6 fix: list the PS2 images PCSX2 builds accept
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz b55e48b0bc fix: list LaserActive and Mega CD images for ares
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz fb9198937a fix: name the ROMs Recalbox gives GSplus
Recalbox's GSplus launcher passes apple2gs1.rom or apple2gs3.rom as the ROM path. They are aliases of ROM.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz b8fcdd68c1 fix: name the flash ROMs platforms give xemu
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 20216858a4 fix: list the IPL images Ymir identifies
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz bc2fe238e7 fix: list the MSX ROMs blueMSX and openMSX read
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 85db3cad72 fix: list the ROMs xroar's ROM lists name
xroar finds ROMs through its ROM lists and adds .rom itself: disk10, ddos10, ddos40, dplus48 and d64rom1 are named there (src/xroar.c:714).
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 186ad0fafa fix: list the ROMs atari800 finds by checksum
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz b3545d3cc4 fix: name the TOS images launchers pass to Hatari
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.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 9bcfa049ba fix: carry a profile destination into the truth
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.
2026-10-20 14:24:05 +02:00
Abdessamad Derraz 181ad0c630 fix: pair truth entries hash-consistent first
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.
2026-10-20 14:24:00 +02:00
Abdessamad Derraz 19974e34b8 docs: state only checked facts on the exports page
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.
2026-10-20 13:33:53 +02:00
Abdessamad Derraz 7a3cbc657d docs: describe other projects by facts only
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.
2026-10-20 13:33:53 +02:00
Abdessamad Derraz e9e56f545d chore: regenerate the updated platform files 2026-10-20 13:20:34 +02:00
Abdessamad Derraz 048334cc82 docs: offer the platform files as peers would
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.
2026-10-20 13:20:34 +02:00