Commit Graph
1919 Commits
Author SHA1 Message Date
Abdessamad Derraz e50eeb52fd chore: merge audit batch, resolver and profiles 2026-11-05 13:16:03 +01:00
Abdessamad Derraz 50be709240 chore: merge audit batch, truth and export 2026-11-05 13:16:03 +01:00
Abdessamad Derraz d5e5146819 feat: hold bumps of profiles one platform ships
A bulk advance moved fheroes2, supertux and supermariowar past the
revision EmuELEC compiles, and nothing stopped it: bump_commit refused
built_by only. It now leaves a profile a single registered platform ships
until it carries pin_frozen or the new pin_follows, which says that
platform builds the branch tip.

hode, bermuda, bennugd-monolithic and ccleste are held on the
PKG_VERSION of their EmuELEC v4.8 package.mk, equal to their pins.
rigelengine was one commit past it (README.md only) and goes back to
f05996f9.
2026-11-05 12:23:41 +01:00
Abdessamad Derraz 394ef44e57 fix: one system slug for bermuda syndrome
bermuda.yml (the EmuELEC build) and bsyndrome.yml (RetroBat's bs.exe)
document the same cyxx/bermuda engine under two slugs, bermuda-syndrome
and bsyndrome, so the site gave the game two system pages. bsyndrome now
files its entries under bermuda-syndrome.
2026-11-05 12:23:41 +01:00
Abdessamad Derraz bef8b50669 fix: compare --changed with the project main line
In a fork's clone origin/main is the fork: once pushed it is HEAD, and
profile_sync --changed --strict checked nothing and passed while the PR's
CI then failed. The default base is now the line validate_pr.py reads:
upstream/main or origin/main when that remote is the project, the
project's main fetched otherwise.
2026-11-05 12:16:28 +01:00
Abdessamad Derraz 593260a5ed fix: name orphaned pins on the triage line
needs_review counts an orphaned pin and a moved repository, but the
triage line only added stale prose and unchecked refs, so pcem read
"1 to review" for an upstream_commit outside its branch history.
2026-11-05 11:59:33 +01:00
Abdessamad Derraz 739f651a16 feat: check refs into a submodule
idtech4a++ cites xash3d-fwgs filesystem/filesystem.c, starship and
ghostship Torch src/Companion.cpp: files of submodules of the declared
repository. No blob of the declared tree answers, so the parts stayed
external and a bump moved the submodule commit with nothing checked.
A project word now also resolves to the one submodule named after it,
and a file under a submodule is read in the repository .gitmodules
names, at the commit the declared revision pins it to.
2026-11-05 11:58:22 +01:00
Abdessamad Derraz 8ddaabe07a fix: check the core file at a refused pin path
The integrity check let a platform file the frontend's hash refuses
hold its path, so the core file the builder ships there was never
compared (finding 3).
2026-11-05 11:57:06 +01:00
Abdessamad Derraz dde6229775 fix: count a core's release asset as packed
verify replayed the core extras offline: a release asset an online
build fetched and packed took no path in its report (finding 2).
2026-11-05 11:55:53 +01:00
Abdessamad Derraz 71020c3974 fix: list a pending release asset as packed
verify counted it OK but kept its path out of pack_destinations, so an
online step 5 reported the fetched file as pack only (finding 1).
2026-11-05 11:54:42 +01:00
Abdessamad Derraz 25b5523024 fix: name the file each emulator reads in slots
A keep line gave every emulator the file of the first profile claim:
Recalbox's neocdz.zip line said geolith reads the archive fbneo reads.
The JSON 'expected' lists each file with its emulators (finding 4).
2026-11-05 11:53:58 +01:00
Abdessamad Derraz f2e25aeea2 feat: list platforms with --list-platforms
install.py took --list-platforms, generate_pack.py --list and verify.py
nothing. Both tools now take --list-platforms and print the same list
from common.py. generate_pack.py keeps --list (finding 80).
2026-11-05 11:52:26 +01:00
Abdessamad Derraz 3f07924faf fix: validate_pr reads each platform's own check
A file was matched by its container sha1 or md5 alone. A zipped_file
member, a Recalbox member digest, a RetroDECK sha256 and a RomM size and
crc32 are now read the way verify reads them, and an identical copy's
folder is where its variants go.
2026-11-05 11:51:56 +01:00
Abdessamad Derraz 000877689f fix: name the split directory by the pack stem
The prefix was assembled by hand and kept a '/' or ':' the full pack
name makes safe (finding 17).
2026-11-05 11:50:44 +01:00
Abdessamad Derraz d7d6f3e412 fix: one hash mismatch rule for diff and export
diff_truth read sha1, md5 and crc32 and let one shared value settle the
entry, while export_native corrected each of the four fields on its own.
contradicted_hashes is now the single decision both read.
2026-11-05 11:50:09 +01:00
Abdessamad Derraz 1718813728 fix: skip a platform without the --system asked
--all --system built every pack asked for and exited 1 on a platform
that has no such system. The scope is now decided before the lock:
skipped under --all, refused under --platform (finding 15).
2026-11-05 11:49:41 +01:00
Abdessamad Derraz 7f31cf37cf fix: split only the systems the target runs
--split --target asked for a part per declared system, and each one
the target drops ended on a refusal naming it unknown (finding 14).
2026-11-05 11:47:37 +01:00
Abdessamad Derraz c7df790744 fix: one system scope for verify and the packs
A system the target leaves no core for was verified 0/0 with exit 0,
and generate_pack blamed the platform for lacking it. Both read
platform_scope_systems and system_scope_error now (findings 13, 14).
2026-11-05 11:47:03 +01:00
Abdessamad Derraz cfc2515909 fix: check the zipped_file member before composite
A one-member archive whose member carries the zipped_file md5 under
another name has that md5 as its composite. The name step returned it as
md5_composite_exact, which slots and the site take as content proof, while
Batocera looks the member up by name and finds nothing.
2026-11-05 11:45:58 +01:00
Abdessamad Derraz f69bd7cbd5 fix: read the database size of a declared hash
A platform declaration that names only an md5 left the size check
undecided, and an undecided same-named match overrode a profile's
system:. The size the database holds for that md5 now refutes it: clk's
Oric basic10.rom no longer joins Batocera's BK list.
2026-11-05 11:44:40 +01:00
Abdessamad Derraz 9ae0ede21d fix: check --target before the output lock
A mistyped target waited on the dist lock and the data directory refresh
before it was refused (finding 62).
2026-11-05 11:44:22 +01:00
Abdessamad Derraz a434c1a8a0 fix: add a retropie file to its own system's list
Only the first BIOS clause of a help string was read, so naomi2.zip and
segasp.zip went into flycast's Dreamcast sentence. A file now joins the
clause whose names the platform files under its system, or is not added.
2026-11-05 11:43:54 +01:00
Abdessamad Derraz 8ef4eb47fc fix: refuse a target --verify-packs cannot honour
An unknown target, or one the platform does not publish, was dropped and
the full pack verified under it with rc 0 (finding 34).
2026-11-05 11:43:53 +01:00
Abdessamad Derraz 609710e2d7 fix: say a platform has no hardware targets
The error named platforms/targets/<name>.yml, which read as a file
missing from the repository (finding 63).
2026-11-05 11:42:46 +01:00
Abdessamad Derraz 08cf4dd914 fix: skip other casings in a foreign tree
reminiscence's Flashback module reunion resolved to skyline's
zoneinfo/Indian/Reunion through the case-insensitive name step, and the
emulator pack shipped the time-zone file. Another casing found only in
another emulator's tree says nothing about the entry.
2026-11-05 11:42:29 +01:00
Abdessamad Derraz f3fe6f58b4 fix: name the path of a file read at two places
MyMinUI printed the same MISSING line twice for Bios/FBN/ and Bios/NG/
sfiii2a.zip (finding 78).
2026-11-05 11:41:46 +01:00
Abdessamad Derraz 4e5b48ddbe fix: keep the md5 a mister entry already holds
A BiosDB entry is one record: md5, size and url describe one dump. The
first md5 the truth accepts replaced an accepted one with no change
reported. The exporter now writes record_hash, as RomM and System.dat do.
2026-11-05 11:41:18 +01:00
Abdessamad Derraz 666883ad53 fix: print missing core files under their count
They came after the held-but-not-packed line and read as files
installed with their emulator (finding 79).
2026-11-05 11:41:02 +01:00
Abdessamad Derraz 0418df5337 fix: truth region is the union of every reader
The first core to tag a file set its region. The pack's region index takes
the union of the tags and voids it on an untagged reader: the truth now
applies the same rule (psxonpsp660.bin, epr-17952a.ic8).
2026-11-05 11:40:41 +01:00
Abdessamad Derraz 5e4becf876 fix: count each reason a held file is not packed
The first entry's reason stood for the whole count: 16 Lakka files
under one cause that 2 of them carried (findings 23 and 76).
2026-11-05 11:40:40 +01:00
Abdessamad Derraz 6e77da4b82 fix: write every platform count in the summary
A platform with one entry had no number, so the named counts did not
add up to the total (finding 81).
2026-11-05 11:39:25 +01:00
Abdessamad Derraz d38cd58036 feat: scrape recalbox rom folders per board
GitLab refused the hundred raw reads per IP. A GitLab directory is now
read from one archive request, else a shallow sparse git fetch, and the
cache keeps its file list so offline runs know what is absent.

Each board builds system.ini against its defconfig: a core whose package
the board does not enable is dropped (pisnes was the SNES default
everywhere), and a system with no core is not built. The row names the
default most boards share, board_defaults the others. A files: list
names whole files and is carried as files through the index and the
installer.

A folder no name resolves, run by a core of several machines, now holds
those machines: thomson, multivision and pcv2 had no fallback, so their
games got no file. Arcade-indexed cores keep naming files per set.
2026-11-04 16:48:34 +01:00
Abdessamad Derraz a05fc599d9 fix: read recalbox board sections as romfs does
board_cores walked only the plain [core.N] sections and replaced a board
section whole. romfs2 systemholder.py reads a slot present as
[core.N.<board>] alone (gb and gbc bsnes on x86_64) and each key from the
board section, then <key>.<board>, then the plain key. The committed
target lists are unchanged on all seven boards.
2026-11-04 16:48:34 +01:00
Abdessamad Derraz 9d3458d47a chore: merge generated page refresh 2026-11-04 05:54:14 +01:00
Abdessamad Derraz 8848f3e6f6 chore: merge tools page refresh 2026-11-04 05:49:49 +01:00
Abdessamad Derraz 0bd206da4d chore: merge main into Sony pages 2026-11-04 05:11:58 +01:00
Abdessamad Derraz 531edaa1ad feat: give every Sony console its own page
A section shares its page's search fields, and "playstation 3 bios" found the PlayStation page before the Sony page that held the PS3. CONSOLE_PAGES splits Sony by console whatever the size. The search gate now expects the PlayStation 3 page in the top two for that query, the order of words being something Pagefind does not weigh, and the page first for "ps3 bios".
2026-11-04 03:55:07 +01:00
Abdessamad Derraz fd7dd0efe5 fix: games tools write whole files, name options
The games importers wrote through fixed .part names, the new options had
no help text, and romfolders stopped on the first setup the offline cache
lacked. RetroArch's rom folder map is regenerated from its source spec
(path null, as the schema says). The installer's Python 3.8 job imports
the games tests without pyyaml, so the region rules load lazily.
2026-11-03 22:46:17 +01:00
Abdessamad Derraz af2e930d32 chore: merge games on card installer mode 2026-11-03 21:06:04 +01:00
Abdessamad Derraz 8ba0a8c3f6 chore: merge main 2026-11-03 19:12:38 +01:00
Abdessamad Derraz 2e9175a8e9 feat: install for the games on the card
--for-games reads the card's rom folders through install/games/ and keeps
what the games need: per system what its default core reads, one region
where the content proves it (crc32 and size, a disc serial, a header the
core reads), an arcade set's BIOS parents. A game not recognised gets
every BIOS of its system and is named. --required-only keeps only what
starts. The plan and the line menu open on it when the card holds games,
everything one press away. A cache keeps what reading a card found.
2026-11-03 18:51:21 +01:00
Abdessamad Derraz ff1f94e473 feat: read 0.78 era arcade parents from code
mame2000, mame2003 and mame2003-plus carry a DAT their code moved past. Their parents and BIOS sets now come from src/driver.c and src/drivers/ at the pin, named by the src tree sha. The DAT is still read to report gaps. FBNeo DATs are read one namespace each, console sets keyed by driver. A BIOS with no dumped ROM is no longer listed.
2026-11-03 18:46:45 +01:00
Abdessamad Derraz b69b33178b feat: publish board sets and sets with no bios
The games index now names, per arcade core, the game sets that load no
BIOS set and every BIOS set, so a set on a card the DAT does not know is
told apart from one that needs nothing. Each board default core of a rom
folder gets its own fallback set, and index.json maps every folder name
a setup uses to its systems, for a games folder on a computer.
2026-11-03 18:17:03 +01:00
Abdessamad Derraz 1271b338f4 fix: keep listxml machines larger than a read 2026-11-03 18:07:08 +01:00
Abdessamad Derraz c2ad67e4fa feat: publish the games index with install lists 2026-11-03 17:45:03 +01:00
Abdessamad Derraz 1aa36258b2 feat: scrape the rom folders of each setup 2026-11-03 17:37:33 +01:00
Abdessamad Derraz 249b189ec9 feat: index arcade sets by bios parent 2026-11-03 16:36:26 +01:00
Abdessamad Derraz dc337c893c feat: add region and per-game file rules 2026-11-03 16:36:26 +01:00
Abdessamad Derraz 8d8689c2e4 feat: import game catalogs and header rules 2026-11-03 16:36:22 +01:00
Abdessamad Derraz 0939cf4d77 fix: cut emulator parts by the words rows show
MAME's first card part showed 1,931 words against the 1,693 ceiling once
888 entries named their system: each row gained a "for <system>" badge
while parts were cut by card count. Parts are now cut by the words each
row shows with its card closed, balanced, at most 1,350 a part and still
at most 180 entries. MAME goes from 9 parts to 10, no part disappears.
2026-11-03 15:58:03 +01:00