Commit Graph
2349 Commits
Author SHA1 Message Date
Abdessamad Derraz 00aac8dc72 docs: say what catalog.json lists
index.json called the catalog every published file, while the one-item
documents of emulators/, platforms/, systems/ and lookup/ are in none of
its items. The description and the data page now say so.
2026-11-06 03:48:37 +01:00
Abdessamad Derraz 225cdaff22 fix: show exact sizes where the code compares them
A size validated by the emulator is shown with its bytes on the emulator
page, and a collection card's badge gives the exact size, in whole KB or
MB only when it is one. raze's three DUKE3D.GRP read 42.3 MB alike.
2026-11-06 03:44:57 +01:00
Abdessamad Derraz 6d6a79019a feat: name the setups on each emulator page
An emulator page said nothing of the setups that run it, and a file
card's Platforms line named only the setups whose own list holds the file.
A Run by row lists the platforms resolve_platform_cores gives, and each
card names the packs that carry the file for their emulators.
2026-11-06 03:37:17 +01:00
Abdessamad Derraz 9efb34c761 fix: resolve the data directory source link
The Fetched from line printed source_url with {version} unsubstituted, a
404 on six pages, and Revision showed a zip's ETag as a revision. The URL
now carries the registry version, and only a git commit is shown, linked.
2026-11-06 03:30:12 +01:00
Abdessamad Derraz 81acb00536 feat: fill the large file issue form
validate_pr linked the bare missing-bios form for a file too large for git
and then said to put it in the pull request and under bios/. The link now
carries filename, sha1, md5 and size, and the pull request advice is left
out for such a file.
2026-11-06 03:29:24 +01:00
Abdessamad Derraz f1f2254be8 docs: drop the upstream remote from CONTRIBUTING
profile_sync.py finds and fetches the project's main by itself. The
documented --base upstream/main failed in any clone without that remote,
where the same command without --base passes.
2026-11-06 03:28:36 +01:00
Abdessamad Derraz 4581a54882 docs: list mame among the trees dedup keeps
tools.md named 14 of the 15 NODEDUP_DIRS. The test matched the missing
mame inside _mame_clones.json and now compares the list item by item.
2026-11-06 03:26:59 +01:00
Abdessamad Derraz adf969c70b docs: link the start pages from the README
Quick install linked only the installer reference. It now names the first
install, troubleshooting and FAQ pages.
2026-11-06 03:26:24 +01:00
Abdessamad Derraz 7b4c03afc2 docs: say what the archived status changes
The README, the setup pages and adding-a-platform tied archived to a
scraping schedule and a CI matrix that do not exist. Archived keeps a
platform out of the runs that cover every platform unless
--include-archived is passed.
2026-11-06 03:20:01 +01:00
Abdessamad Derraz ab1866fd66 feat: compare the site npm pins with the registry
The ci area of check_freshness read the PyPI and action pins only. The
exact versions website/package.json pins (astro, starlight) now get a row
each, STALE once npm publishes a newer release.
2026-11-06 03:17:31 +01:00
Abdessamad Derraz 33db4e9c83 fix: file a device set under each of its systems
The site read an entry's system: only, so the 430 MAME entries that list
systems: were filed under no section. It now reads common.entry_system_ids
for an entry that names its own systems.
2026-11-06 03:15:39 +01:00
Abdessamad Derraz 8c3e653234 fix: key the arcade sha1 cache by the database
The cache compared id(db), so a database freed and replaced at the same
address answered with the first one's Arcade set.
2026-11-06 03:15:07 +01:00
Abdessamad Derraz 55ac3162f5 docs: name the slot function the pack reads
architecture.md said the pack and verify decide through slots.arbitrate(),
while a test forbids them to call it: they read slot_choices() through
pack_overrides(). build_claim_index, the name-keyed index the module
docstring described, had no caller outside its own tests.
2026-11-06 03:13:57 +01:00
Abdessamad Derraz b873c6a9fb fix: skip the report excerpt without the assets
The excerpt quotes verify over the whole collection. The PR workflow
restores none of the release assets, so the run there printed other
counts and failed on every push since the engine batch. The test now
names how many assets are absent and skips.
2026-11-06 02:20:14 +01:00
Abdessamad Derraz 6acd48a344 chore: merge narrowed pack comparison 2026-11-06 01:37:34 +01:00
Abdessamad Derraz 172639d0dd chore: merge demul profile 2026-11-06 01:01:37 +01:00
Abdessamad Derraz 1008b4b0f5 chore: merge maker folder name matches 2026-11-06 00:58:46 +01:00
Abdessamad Derraz 0983ae0188 chore: merge origin/main 2026-11-06 00:07:47 +01:00
Abdessamad Derraz d265453b32 feat: compare narrowed packs with verify
Step 5 builds the --required-only, --no-game-data, --region, --target
and --system packs of every platform in memory and compares their paths
with verify run under the same narrowing. verify_platform gains
required_only, generate_pack a record mode. A run samples three regions,
targets and systems per platform (155 packs, about 3 minutes);
--full-narrowings compares all 1,150 (25 minutes). A test fails when
_narrowings() gains a dimension that is neither compared nor exempted.
2026-11-06 00:07:40 +01:00
Abdessamad Derraz 20a6266923 fix: keep platform_system out of the site contract
The published platform contract validates against platform.schema.json, which does not carry the resolver's per-entry system key. The two inheritance tests and the alias call check read the new entry shape, and the testing guide lists test_maker_folder_names.
2026-11-05 23:54:47 +01:00
Abdessamad Derraz 755259517f feat: assemble the naomi.zip demul reads
Demul 0.7 reads 44 NAOMI BIOS rows from naomi.zip, the HOTD2, F355 and Airline Pilots BIOS among them. No copy held them all. The set is built with build_torrentzip from members already in the collection, each checked against the crc32 and sha1 of demul.exe's table, and kept in bios/Other/demul/. Batocera, KNULLI and RetroBat place it at bios/naomi.zip, the file MAME cores there also open, so it carries the nine MAME members the Demul table does not list.

The resolver left another emulator's own copy out of the member and superset ranking, so Flycast and the MAME cores keep the copies they were served.
2026-11-05 23:37:06 +01:00
Abdessamad Derraz 49ff682eda chore: merge origin/main 2026-11-05 23:25:48 +01:00
Abdessamad Derraz 54a3876a8b feat: carry the data trees a platform's cores read
A platform pack carried only the trees its own systems declared, so for_platforms reached RetroArch, Lakka and RetroPie alone and every other platform running blueMSX, FBNeo or Dolphin got no tree. The pack, the install list and the pipeline's tree members now add the trees of the libretro cores the platform runs, below the system directory and build folder the core reads, unless the platform installs or never opens them. A platform entry the manifest resolved into a carried tree becomes that tree's member, which the installer can fetch: AmberELEC and EmuELEC no longer hold 192 blueMSX machine configs back. stonesoup reads its tree beside the content and pcee2 compiles its resources in, so neither tree reaches a BIOS pack.
2026-11-05 23:25:29 +01:00
Abdessamad Derraz 55f7ed24c2 fix: rank archives by name on a shared crc32
segadimm.zip holds fpr23905.ic36 and fpr23905c.ic36 under the same crc32, and segasp.zip four fpr-*.ic72 images. Ranked by crc32 alone, a copy missing some of them tied with the full set and the index order chose it. A crc32 that two declared members share now also requires the member name.
2026-11-05 23:25:21 +01:00
Abdessamad Derraz d1ebd411ab fix: narrow hashless name matches to their maker
AmberELEC's nec-pc-88 declares DISK.ROM with an empty md5. QUASI88 reads
that name as n88sub.rom, the 2 KB PC-88 disk ROM (libretro.c:1085), but
the name step served the 16 KB MSX disk ROM, the only primary of that
name. The quasi88 alias never reached by_name, which refuses an alias a
primary already carries.

load_platform_config now writes each entry's system as platform_system.
A platform entry with no hash and no owning emulator, whose system id
names a maker, takes no name candidate filed under another maker, in
the name step and in the hash_mismatch step after it. When nothing is
left, by_shadowed_alias, the profile aliases by_name refuses, answers
within the system's maker folder. names_manufacturer and BUCKET_FOLDERS
move to common.py, and generate_site imports them.

Across every registered platform the only resolution that moves is
AmberELEC nec-pc-88 DISK.ROM, from bios/Microsoft/MSX/DISK.ROM to
bios/NEC/PC-88/N88SUB.ROM. Manifests, truth and exports are otherwise
byte-identical.
2026-11-05 23:17:04 +01:00
Abdessamad Derraz 0350f42351 chore: merge site and docs batch 2026-11-05 22:22:37 +01:00
Abdessamad Derraz afd062d111 chore: merge resolver and profiles batch 2026-11-05 21:47:10 +01:00
Abdessamad Derraz 51ae0eb6d0 chore: merge engine and tooling batch 2026-11-05 21:08:54 +01:00
Abdessamad Derraz 943add6df0 fix: align tests with the new help and messages
The --skip-packs help and the validate_pr fetch error were reworded, and a batocera page with no tab bar is plain Markdown that keeps the underscore entity, read here as a browser shows it.
2026-11-05 20:33:37 +01:00
Abdessamad Derraz 62ed48e0a1 fix: run every class when a site test runs alone
Two classes were appended after unittest.main().
2026-11-05 20:33:37 +01:00
Abdessamad Derraz 213b20e2c8 refactor: read an entry's target as a function
The emulator card read entry_target from the consumers object, which the tests stand in for with a namespace. It is a module function now, and the pairing test resolves an archive member through it as the site does.
2026-11-05 20:33:37 +01:00
Abdessamad Derraz 4ed309b362 fix: record the ecwolf pk3 without a hash
Follows dc14ccc56. No pk3 shipped at the ecwolf pin is c011b428: the
ECWolf 1.3, 1.3.1, 1.3.2 and 1.3.3 x64 zips carry 13fe8057, cc10cb70,
d312ebbe and 8f4f0387, the buildbot ECWolf.zip 653f7b37, and
src/libretro/ecwolf_pk3_data.c at 0cccd9a8 embeds a 191995-byte pk3,
1a3fd445. The bundled-identity table records the entry with that proof.
2026-11-05 20:29:58 +01:00
Abdessamad Derraz 6c0a466ccf fix: expect Latin America on the USA DSi NAND
Follows f97f86c3a: DsiNandFollowsTheHeaderRegion still asserted the USA
slot as north-america alone.
2026-11-05 20:29:58 +01:00
Abdessamad Derraz 5749c66e32 fix: keep --system packs among the verified packs
The pack suffix test of b20d65d12 missed the platform --system packs, which carry their system after it (_BIOS_Pack_Playstation.zip): their manifest was no longer injected and install.py refused them. A pack name holds _BIOS_Pack, then an optional tag, then .zip.
2026-11-05 20:29:53 +01:00
Abdessamad Derraz e9ecef6896 docs: name the committed files over 50 MB
release-process.md listed tbblue.mmc, removed from bios/ on 2026-10-20, and left out uqm-remix-disc1.uqm. A test now reads the list against git ls-files.
2026-11-05 19:55:59 +01:00
Abdessamad Derraz 71457078e6 docs: state the cross-reference settlement rule
reading-reports.md said the cross-reference checks whether a profile's files appear in the platform config, a rule by name. Since 2026-10-10 declaration_settles counts a declaration only at the core's slot or at a size the core accepts, and an alias only where the core reads it.
2026-11-05 19:55:39 +01:00
Abdessamad Derraz 911dea8e4c docs: state the size proof slots.py counts
architecture.md said a file found by its name claims nothing. Since 2b535525e slots.py counts such a copy (size_exact) when it has the exact size the profile declares and the platform's file another size, as RetroDECK's sgb2.boot.rom shows.
2026-11-05 19:55:15 +01:00
Abdessamad Derraz 3011ee498e feat: record the build file behind a held pin
pin_frozen was prose, and no tool read the build file it cites, so a platform building another revision left the profile holding one nobody ships. pin_build records the platform, its repository, the revision read, the file, the variable and its value. check_freshness reads the file again where the platform's YAML now stands and reports STALE when the value moved. 36 of the 46 held profiles carry it, each value read from the build file at the platform's scraped revision. The other ten name no build file and are counted on one row: six RetroBat binary packages and four holds not tied to a platform build.
2026-11-05 19:54:48 +01:00
Abdessamad Derraz 133afc1df6 docs: say the pack copies each ZIP byte for byte
Since fed03c3db _add_zip_to_pack copies every archive of the collection as is. architecture.md and tools.md still said MAME and FBNeo romsets were rebuilt deterministically, so a third party rebuilding neogeo.zip to compare would read a sound pack as corrupt.
2026-11-05 19:53:45 +01:00
Abdessamad Derraz 200f6383ab fix: hold the pcem upstream pin at its last sync
upstream_commit 25b54e3f was dev's HEAD at the 2026-10-23 bump. dev has
been rewritten since, and the pin is on no branch (diverged 109/114), so
profile_sync reports it orphaned. libretro-pcem shares no history with
sarah-walker-pcem/pcem: it took mainline patches by hand until 2016-04-13
(c9f3593f, 223f434f). Its sound_adlibgold.c holds 10739b96, the last
upstream commit before that date, and the port has none of the 6x86 work
of 2016-04-27. The pin is held there with upstream_frozen.
2026-11-05 19:52:55 +01:00
Abdessamad Derraz ac98a1fe8a docs: replace project verdicts in profiles
pcsx1, rustation and np2kai called a project abandoned, dead or never completed. Each now gives the date of the last commit or the project's own words, and a test refuses the verdicts yabause and gearboy carried too.
2026-11-05 19:51:57 +01:00
Abdessamad Derraz cbe98d5fec fix: keep the mister row among the platforms 2026-11-05 19:51:12 +01:00
Abdessamad Derraz 6e8c0de166 fix: follow the xenios preview branch
The pin 87b176a0 and tag v2.0.1 sit on preview (ahead 129, behind 0) and
not on the default xenios branch, which diverged (ahead 1784, behind 24).
The preview-v2.0.1 releases carry the dmg and ipa the notes name. With no
source_branch, profile_sync called the pin orphaned and listed 19 refs to
review that only measured the branch divergence. It now reads 1.
2026-11-05 19:49:56 +01:00
Abdessamad Derraz 8584847bc9 fix: link the check commands from the pack pages
The get pages told a reader on another setup version to run `--check` after copying, with no command and no link, to someone holding a ZIP and no installer. The line now links the setup page's How to check section.
2026-11-05 19:49:22 +01:00
Abdessamad Derraz dc14ccc566 fix: drop the .info md5 from the ecwolf profile
ecwolf.pk3 carried md5 c011b428, which its note said came from the .info.
The code checks no hash (src/wl_iwad.cpp:664-672) and the pk3 is built
from wadsrc/static/ at the pin, so no shipped file is designated by it.
The entry still resolves to the same file by name, and the platform lists
that pin this md5 are untouched.
2026-11-05 19:48:12 +01:00
Abdessamad Derraz 83bc4246b3 fix: mark the FS-UAE Kickstart as found by content
FS-UAE scans its Kickstarts directory and names a ROM by checksum
(src/fs-uae/config.c:121-140, main.c:431-470), opens kick.rom by name
only as a fallback (memory.cpp:1597-1606) and loads AROS when no ROM is
found (memory.cpp:2374-2379). required: true and the launcher's dialog
came from RetroPie's fs-uae.sh, which retropie.yml launchers: records.
The entry is now optional and found by content. kick13.rom stays as its
label, the name amiberry and uae4all give this 256 KB dump.
2026-11-05 19:46:48 +01:00
Abdessamad Derraz 32cc1ce4fa fix: render a single tab without a tab bar
142 tab bars held one tab, most of them "On the device" under a heading saying so. One item now stands alone, led by its label unless it names the place the text around already gives. The network route drops "Run the command on the computer" under the heading "From your computer", which keeps RetroPie in its word budget.
2026-11-05 19:46:22 +01:00
Abdessamad Derraz c1f0e8c2ca fix: compare system packs in pipeline step 5
Step 5 built emulator packs one profile at a time, where two profiles never share a path. It now also builds each system pack that gathers several profiles and compares it with verify. The first run found five standalone MSX and ColecoVision packs where verify skipped the data tree of a profile the system filter left without files, and credited msx-emu's copies the pack never wrote. verify now places those trees too: 541 system packs, all equal.
2026-11-05 19:45:39 +01:00
Abdessamad Derraz 72cebb4c2b fix: tag the BizHawk USA DSi NAND for the Americas
DecideNAND (MelonDS.cs:684-706) reads the JPN, USA, EUR, AUS, CHN and KOR
bits of header byte 0x1B0. A DSi title sold in Latin America carries the
USA bit, so the USA NAND serves it. Tagged north-america alone, it fell
out of an --emulator bizhawk --region br,jp pack.
2026-11-05 19:43:14 +01:00
Abdessamad Derraz 3cd4ed2566 fix: tag citra-mmj USA font for Latin America
apt.cpp:128-140 picks the shared font archive by GetRegionValue: CHN, KOR
and TWN get their own, every other CFG region gets 0x00014002. The CFG
region set has USA and no Latin America value, so the USA font serves the
Americas, which the repo writes [north-america, latin-america]. With
latin-america missing, --region br,cn kept only the Chinese archive.
2026-11-05 19:42:05 +01:00