Commit Graph
848 Commits
Author SHA1 Message Date
Abdessamad Derraz 8a3c4ea2fb chore: refresh database, manifests and readme 2026-08-11 17:14:25 +02:00
Abdessamad Derraz 4eea2db101 feat: profile three java me front-ends 2026-08-11 16:56:20 +02:00
Abdessamad Derraz 4bd277a7be feat: name every narrowing in the pack filename 2026-08-11 16:56:20 +02:00
Abdessamad Derraz 5b0e6836de refactor: split the problem-files gap section
generate_gap_analysis reached complexity 56. Its problem-files section
is the one that stands alone -- it reads platform_problems and nothing
else -- so it becomes its own function and the caller drops to 43.

The neighbouring sections were tried too and put back: they share
gap_report and the resolved core list, so pulling them out turns a
render pass into an argument-threading exercise for no gain. Verified
by generating the site with both versions against the same data: 529 of
530 pages identical, the odd one a wiki page another run had edited.
2026-08-11 16:52:18 +02:00
Abdessamad Derraz e53f7dfafc test: cover the four 3DS unique-data verifiers
verify.py reaches these through a dynamic import and nothing exercised
them, so a signature check that accepted everything would have looked
exactly like one that worked.

Console dumps are personal data and cannot be committed, but the
verifiers only read structure and signatures: the fixtures are built
from the layouts in unique_data.cpp and otp.cpp, signing with a key the
test owns and passing the matching public key in through the keys file.
That covers the region-change detection in SecureInfo_A, the embedded
LFCS in movable.sed, and the OTP path down to the sect233r1 certificate
including the pre-v5 expiry endianness.

crypto_verify goes from 9 to 89 percent. Disabling the OTP hash check
and the movable.sed magic check each fails a test.
2026-08-11 16:31:35 +02:00
Abdessamad Derraz d37caecc27 test: cover slot naming and per-system extras 2026-08-11 16:06:20 +02:00
Abdessamad Derraz 80ea7f5764 chore: refresh database, manifests and readme 2026-08-11 16:05:57 +02:00
Abdessamad Derraz 627cc84a78 test: skip pack checks while a build holds dist
The pack integrity tests failed whenever another run was writing
dist/, reporting a corrupt archive when the only fact established was
that somebody else was building. Which test went red depended on how
far along that build was. They skip now, the way validate_schemas
already does.
2026-08-11 16:05:57 +02:00
Abdessamad Derraz ed0c44be4a feat: profile idtech4a++, ines and infinity 2026-08-11 15:56:45 +02:00
Abdessamad Derraz 694f2a74d0 fix: index emulator systems by display name too 2026-08-11 15:56:45 +02:00
Abdessamad Derraz 4b1ab7cb74 fix: separate findable gaps from unsourceable ones
The README said 14 files were 'not in the collection yet', which
implies somebody could still put them there. Nine of them cannot be:
WHDLoad.key is a per-user signed registration, Custom.dat and key.txt
are slots the emulator expects the user to fill, gpib.rom and
dragonfly-2.3.rom have never been dumped, CARTS.CRC belongs to a dead
code path. The profiles already record why, so the two are now counted
apart: five still to be found, nine that cannot be.
2026-08-11 15:56:26 +02:00
Abdessamad Derraz b890998a94 chore: refresh database, manifests and readme 2026-08-11 14:45:18 +02:00
Abdessamad Derraz a0abe939f9 feat: profile haku x 2026-08-11 14:40:33 +02:00
Abdessamad Derraz e97c1fbbcc fix: keep unsourceable files from matching homonyms 2026-08-11 14:40:33 +02:00
Abdessamad Derraz 94512b5acf fix: drop manifest entries with no download source
install.py fetches a file from its repo_path or from a release asset.
Resolution can land on a file the database does not index, and the
entry then shipped with neither: a line in the download list that can
only ever fail. Those are recorded as omitted instead, which is what
the installer already knows how to report, and a test holds the
committed manifests to it.

validate_schemas read dist/ while a build was writing it and reported
a half-written pack as 'File is not a zip file'. It takes the shared
lock --verify-packs uses, and says so when a build holds it.
2026-08-11 14:40:33 +02:00
Abdessamad Derraz 85f3f7c393 fix: read the bios preference order the code applies 2026-08-11 14:34:49 +02:00
Abdessamad Derraz 5e4b3048a6 feat: add the fpse-ng and gba-emu bundled assets
Both are declared by the profiles that load them.
2026-08-11 14:21:55 +02:00
Abdessamad Derraz 17b4537bde feat: profile sixteen android and pinball front-ends
ES-DE standalone batch: PSX, DS, GBA, GBC, Xbox, Dolphin and pinball
front-ends, each read from its own source or shipped binary.
2026-08-11 14:21:29 +02:00
Abdessamad Derraz a372f2abf3 feat: keep one bios per slot on declared order 2026-08-11 13:34:15 +02:00
Abdessamad Derraz ecbe69760d refactor: check packs through a single path 2026-08-11 11:31:21 +02:00
Abdessamad Derraz 8ca918e9fa feat: collect the xbox chips and x68000 boot roms 2026-08-11 10:44:40 +02:00
Abdessamad Derraz 8e39d4d633 feat: collect the arcade support data and controller db 2026-08-11 10:00:14 +02:00
Abdessamad Derraz d2bc1288b5 feat: collect shaders, machine roms and the doom wad 2026-08-11 09:56:14 +02:00
Abdessamad Derraz 4ffc11b4cf feat: document the pre-v7 happy 810 images 2026-08-11 09:41:06 +02:00
Abdessamad Derraz d272d07b82 feat: collect the altirra and amstrad firmware sets 2026-08-11 09:35:28 +02:00
Abdessamad Derraz 4e0458dc83 feat: place per-machine variants at their declared paths 2026-08-11 09:19:25 +02:00
Abdessamad Derraz eea4d4254f feat: track the nxengine data table 2026-08-11 09:09:35 +02:00
Abdessamad Derraz 6450c18154 fix: fold the nxengine data into its existing directory 2026-08-11 09:08:55 +02:00
Abdessamad Derraz 08f68e647c feat: collect the pc and atari rom sets 2026-08-11 08:50:17 +02:00
Abdessamad Derraz f313e5b41c feat: collect the assets shipped with each emulator 2026-08-11 08:44:33 +02:00
Abdessamad Derraz f2b7b91476 feat: add the mo6 v2 rom for clock signal 2026-08-11 08:30:28 +02:00
Abdessamad Derraz d8a0d975d7 feat: judge a ref against every declared repository 2026-08-11 07:25:31 +02:00
Abdessamad Derraz 1d309852b6 feat: carry the visual-pinball citations to the new tree 2026-08-11 06:55:10 +02:00
Abdessamad Derraz 0c404e6275 feat: resolve the zesarux source paths 2026-08-11 06:51:12 +02:00
Abdessamad Derraz 759d3c0341 chore: refresh manifests, readme and nav 2026-08-11 06:22:49 +02:00
Abdessamad Derraz 37df4ef38a fix: narrow two cspect decompilation refs 2026-08-11 06:15:10 +02:00
Abdessamad Derraz 3032e0429d feat: profile cspect
ZX Spectrum Next emulator, read from its own distribution.
2026-08-11 06:12:06 +02:00
Abdessamad Derraz a8a89b3182 chore: index the acquired thomson roms 2026-08-11 06:10:14 +02:00
Abdessamad Derraz 222edcdc21 feat: add the mo6 v1 rom for clock signal 2026-08-11 06:08:06 +02:00
Abdessamad Derraz cf3302efd9 chore: refresh database, manifests and readme 2026-08-11 06:01:01 +02:00
Abdessamad Derraz 436f5f85de feat: add two more thomson roms for clock signal 2026-08-11 05:50:25 +02:00
Abdessamad Derraz dbb055f4ac feat: add the thomson cd90-640 controller rom
Clock Signal loads it from Thomson/cd90-640.rom.
2026-08-11 05:45:46 +02:00
Abdessamad Derraz 3bc9e5ec96 feat: attribute a shared path by its declared subject 2026-08-11 05:42:27 +02:00
Abdessamad Derraz 266567b9a0 feat: profile ten more standalone emulators
PS2, PS3, Xbox 360, Atari, C64, BBC Micro and arcade front-ends read
from their own source trees.
2026-08-11 05:34:21 +02:00
Abdessamad Derraz ca3a91d65b fix: trim two profiles to their load sites 2026-08-11 05:34:21 +02:00
Abdessamad Derraz d8e4325af2 fix: skip conformance on required-only packs
A required-only build is narrower than the platform declares by
design, like the source-restricted variants already handled, so the
full expectation must not be applied to it. --region is also refused
alongside --manifest-targets, which carries no region dimension.
2026-08-11 05:34:21 +02:00
Abdessamad Derraz 2879f489c4 feat: give every page a link preview
Links to this site get shared on Discord, Reddit and forums, where a
page with no Open Graph tags renders as a grey rectangle. The pages
already carry a per-page title and description, so a theme override
fills the tags from those; mkdocs-material would otherwise only emit
them through its social plugin, which pulls in Pillow and CairoSVG to
render a preview image these pages do not need.
2026-08-11 05:33:42 +02:00
Abdessamad Derraz 63672e246f feat: reprofile three cores on current upstream 2026-08-11 05:24:15 +02:00
Abdessamad Derraz cc24ff1bea fix: ignore the rendered timestamp when comparing
Decorated site pages carry the generation stamp twice: once as the
markdown footer and once as a rendered element. write_if_changed knew
only the first, so every page was rewritten on every run for the clock
alone.

The comparison is what makes the deploy-site freshness guard a real
staleness check rather than a guaranteed failure, and it had no tests.
2026-08-11 05:23:52 +02:00
Abdessamad Derraz c562459567 refactor: split the emulator page renderer
generate_emulator_page carried a 228-line loop body rendering one file
row from thirty-odd optional fields, which put its complexity at 141,
more than twice the next function in the repository. The row renderer
and its badge strip are now their own functions and the page function
sits at 68.

_forge_sources went from 18 to 32 when it learned to pair each
repository with its own revision; the pairing is now its own function
and the caller is back under the threshold.

Verified by regenerating the site and diffing: all 505 pages are
identical apart from their generation timestamps.
2026-08-11 05:22:25 +02:00