Commit Graph
911 Commits
Author SHA1 Message Date
Abdessamad Derraz f097184b00 fix: stop counting a contradicted hash as covered
The per-emulator report captured the status resolve_local_file returns
and then ignored it: any non-empty path became OK. An entry whose only
candidate contradicts its declared hash therefore read as covered, so a
same-named file from another system stood in for one the collection
does not hold. 36 entries across 14 profiles were affected, among them
config.ini, ROM and rom2.bin, names that collide across systems.

Emulator validation still runs first, since it names the field that
disagrees; the resolution status is consulted only when validation had
nothing to say.
2026-08-12 04:21:54 +02:00
Abdessamad Derraz 0efd4f34ce feat: collect the msx machine configurations 2026-08-12 04:19:38 +02:00
Abdessamad Derraz e325b84174 feat: derive the switch console keys from the held dump 2026-08-12 04:10:32 +02:00
Abdessamad Derraz 88fc667106 feat: collect the arcade audio samples and the console keys 2026-08-12 03:49:12 +02:00
Abdessamad Derraz 45ced32598 docs: drop tooling references from test docstrings
Three docstrings pointed at a contributor-guide file that is not part
of the repository. The rules they describe are stated directly now.
2026-08-12 03:44:25 +02:00
Abdessamad Derraz a0d34f04ad feat: collect the naomi 2 and dragon alpha boot roms 2026-08-12 03:16:00 +02:00
Abdessamad Derraz 1fd5f40ef6 feat: add six emulator profiles 2026-08-12 03:15:05 +02:00
Abdessamad Derraz 87117a3e8f feat: collect naomi2 and dragon alpha boot roms 2026-08-12 03:15:05 +02:00
Abdessamad Derraz 2114c62b0b chore: refresh the mame4droid hiscore data 2026-08-12 03:15:05 +02:00
Abdessamad Derraz 7c043475cd feat: follow mame clones in the gap analysis 2026-08-12 03:15:05 +02:00
Abdessamad Derraz b86a34933c feat: parse gamel machines and computed sizes 2026-08-12 03:15:05 +02:00
Abdessamad Derraz ac9ce4d2cc feat: realign prose refs across fourteen profiles 2026-08-12 03:11:47 +02:00
Abdessamad Derraz 6719aa415d feat: anchor prose citations beside source refs 2026-08-12 03:11:47 +02:00
Abdessamad Derraz 48a432d79c feat: collect the game genie rom in both loader forms 2026-08-12 01:43:35 +02:00
Abdessamad Derraz ef449ed12f feat: collect ten ps2 board dumps 2026-08-12 01:38:26 +02:00
Abdessamad Derraz 4b9c89466a feat: serve the cmd drive roms under the vice names 2026-08-12 01:35:12 +02:00
Abdessamad Derraz bd8fb75722 feat: collect three coh-h board dumps 2026-08-12 01:32:13 +02:00
Abdessamad Derraz 1251589940 chore: drop the unsourceable flag on collected files 2026-08-12 01:17:07 +02:00
Abdessamad Derraz 5bae72bcae feat: collect the vita patch list 2026-08-12 01:16:40 +02:00
Abdessamad Derraz a47d3a7efe feat: collect the applewin resource roms 2026-08-12 01:12:10 +02:00
Abdessamad Derraz 8c0de8f91c feat: collect the wii nand backup 2026-08-12 01:10:54 +02:00
Abdessamad Derraz eece892a73 feat: collect the ps4 system modules and the mame support data 2026-08-12 01:07:44 +02:00
Abdessamad Derraz d0395f4226 feat: collect the xbox dashboard tree and the eeprom 2026-08-12 00:55:24 +02:00
Abdessamad Derraz 2fcde58db0 feat: collect the amiibo keys and the driver libraries 2026-08-12 00:49:40 +02:00
Abdessamad Derraz b120528dd7 test: cover the native format exporters
export_native turns the profile data back into each platform's own
file, for a maintainer there to pick up and use, and none of the ten
exporters had a test. Coverage goes from 0 to 83%.

Writing them found the EmuDeck exporter rejecting its own output: its
export skips placeholder entries, its validate looked for them anyway
and reported the omission as a missing hash. Both sides apply the same
filter now.

The placeholder assertion initially passed for the wrong reason twice
over -- the fixture entry had no hash, so it was dropped as incomplete
rather than as a placeholder, and the assertion then read the name
while the exporters write the path. It is pinned on an unmistakable
destination now, and removing the guard fails two tests.
2026-08-12 00:46:04 +02:00
Abdessamad Derraz fa5b1130ec chore: drop the unsourceable flag on the vita databases 2026-08-12 00:35:14 +02:00
Abdessamad Derraz 69d0c7ad85 chore: drop a same-named file from another project 2026-08-12 00:35:06 +02:00
Abdessamad Derraz 1ea547255d feat: collect the soundfonts and the controller database 2026-08-12 00:33:51 +02:00
Abdessamad Derraz 50dd523493 chore: refresh database, manifests and readme 2026-08-11 20:42:36 +02:00
Abdessamad Derraz b24c5cdb91 feat: refine eighteen profiles and drop a duplicate
cheat.zip under mame4droid was byte-identical to the Arcade copy and
resolves by hash from there.
2026-08-11 20:30:27 +02:00
Abdessamad Derraz b5f28d7b7f chore: drop three reads whose result went nowhere
The requirement parser read core, hashMatchMandatory and note from
each bios element and discarded all three, which reads like a dropped
attribute: hashMatchMandatory decides whether a wrong hash is yellow or
red on Recalbox. It is not lost -- the config parser below captures it
for the YAML -- so these were leftovers, and they cost a look to
confirm that.

Two yaml imports left unused by the move to the shared loader go too.
2026-08-11 20:27:53 +02:00
Abdessamad Derraz e6813aaa60 feat: collect the vita compatibility data and the arcade history 2026-08-11 20:20:18 +02:00
Abdessamad Derraz 0a941acc43 refactor: split the site validator into its two passes
validate_site reached complexity 43 doing three things at once. The
per-page checks and the link resolution are now separate functions and
the caller keeps only the cross-page duplicate check, which cannot run
until every page has been seen.

The first attempt left the link pass calling a closure that had moved,
and running it against the real site did not catch that: no page there
has a broken link, so the error path never ran. The unit test covering
a deliberately broken fragment did.
2026-08-11 20:16:11 +02:00
Abdessamad Derraz 00f10b0379 refactor: extract rename matching from the truth diff
_diff_system reached complexity 42, and its hash-based rename fallback
is the part that stands alone: a platform is free to call a file
whatever it likes, so a name matching nothing is not yet a gap, and
counting one file as both missing and extra invents a discrepancy.

That step is now its own function at complexity 31, with the tests it
never had: pairing on any of the three digests, case folding, non-string
values, and the case where two files simply have no hashes and so are
not evidence of anything. diff_truth output is unchanged.
2026-08-11 19:54:45 +02:00
Abdessamad Derraz 7a9e227e95 feat: collect the archiver libraries for xm6 2026-08-11 19:44:19 +02:00
Abdessamad Derraz faff5c08bd feat: collect the amstrad roms and the mame4droid data 2026-08-11 19:38:39 +02:00
Abdessamad Derraz e66a89d1be feat: collect the trs-80 rom images and the ines assets 2026-08-11 19:33:32 +02:00
Abdessamad Derraz 826e8c0c01 feat: collect the fpse plugins and the apple iie keyboard rom 2026-08-11 19:29:30 +02:00
Abdessamad Derraz fec53f7a20 chore: refresh database, manifests and readme
Regenerated with the large-file cache populated, the state CI builds
from: without it ten preserved entries resolve differently and the
counts drift by one file.
2026-08-11 19:28:08 +02:00
Abdessamad Derraz 2df67ba204 feat: collect the epsxe shader packs 2026-08-11 19:21:00 +02:00
Abdessamad Derraz 4b8d7baac5 feat: transcribe bios search orders into priority 2026-08-11 19:18:30 +02:00
Abdessamad Derraz d862de9a2e feat: collect the drastic data files 2026-08-11 19:14:34 +02:00
Abdessamad Derraz d7da2d1645 feat: rebuild the a7800 bios archives from their recipes 2026-08-11 19:12:09 +02:00
Abdessamad Derraz cffb067a59 chore: refresh database, manifests and readme 2026-08-11 19:06:19 +02:00
Abdessamad Derraz 9dfe73d37a feat: collect the schweber demo unit image 2026-08-11 19:02:57 +02:00
Abdessamad Derraz 28643bef5b feat: collect the flash player runtime and the supercharger roms 2026-08-11 18:57:09 +02:00
Abdessamad Derraz f3d912f3d3 feat: profile five more emulators and refine seven 2026-08-11 18:54:15 +02:00
Abdessamad Derraz 9af958e9f8 feat: re-extract the j2me and arcade front-end assets
Bytes taken from the shipped applications rather than a normalised copy.
2026-08-11 18:54:15 +02:00
Abdessamad Derraz d28efae88c fix: stop git normalising preserved bytes
SHA1 is the primary key of this collection and there was no
.gitattributes, so git guessed. Git for Windows sets core.autocrlf=true
by default: a clone there rewrites every file git considers text,
meaning the shaders, .ini, .txt and .dat assets under bios/ arrive with
CRLF and a different hash from the one published. Verification then
fails on files nobody touched.

bios/ and data/ are exempt from normalisation, generated artefacts are
pinned to LF so a Windows checkout does not show them modified, and the
rule order is asserted rather than assumed.
2026-08-11 18:52:10 +02:00
Abdessamad Derraz 851b9c9e50 feat: collect the bam runtime and its tracking libraries 2026-08-11 18:41:44 +02:00