Commit Graph
5267 Commits
Author SHA1 Message Date
Abdessamad Derraz 7cb0e67eb6 feat: profile the Batocera and Recalbox LRPS2
Batocera 43.1 builds libretro/ps2 at 416291a with 001.bios-dir.patch and
Recalbox 10.1.1 builds it at 9485a53 with 0001-recalbox-paths.patch. Both
patches move the BIOS scan from pcsx2/bios to ps2, and Recalbox also moves
the data root to system/ps2. Each build gets its own built_by profile:
lrps2-416291a under Batocera's pcsx2 name, lrps2-9485a53 under Recalbox's
ps2 name.

A platform's own build now answers for its own build mode only on a
dual_mode_cores name, so Batocera keeps standalone PCSX2 beside its
libretro build.
2026-11-10 11:38:03 +01:00
Abdessamad Derraz d457948143 fix: keep standalone copies of a twice-held file
A profile standalone copy was dropped when the manifest held its file
under two destinations. With the libretro PS2 cores' pcsx2/bios/ scan,
DuckStation's ps2_scph50006.bin and ps2_scph50008.bin copies left the
Batocera, Recalbox and RetroBat manifests. Same bytes at every path
are one source: the copy whose cores name the emulator, else the
shortest path.
2026-11-10 11:16:30 +01:00
Abdessamad Derraz 871caf9cae fix: scan placeholder BIOS folders in packs
LRPS2 and PCEE2 name their BIOS <bios>.bin, which resolves to no
file, so the platform pack's agnostic scan never anchored pcsx2/bios/
for them. On RetroArch yaps2 anchored it and the files carried only
yaps2 as their core. On Batocera and RetroBat, where yaps2 does not
run, pcsx2/bios/ stayed empty or held only the platform's own list.

The scan now takes the folders where the system's other profiles
resolve a hashed dump of that shape, the evidence the emulator pack
already used, and a companion (<bios>.nvm) looks where its image is
proven.
2026-11-10 11:16:25 +01:00
Abdessamad Derraz 12daa6698f docs: keep the release page to packs and launchers
The release carries the packs, the handheld launchers and the signed checksum list. The installer and the file lists are pinned from the tag (installer page, For packagers), and check_release.py now refuses them as unrecorded files. The notes link each pack's files on the release itself, in a beginner's page: one idea per line. The handheld section links the latest release.
2026-11-10 10:54:04 +01:00
Abdessamad Derraz 96ef06b9fa chore: record release v2026.11.10
release.json read from the published archives, README download table from it.
2026-11-10 10:36:44 +01:00
Abdessamad Derraz 76ccc3e72a chore: regenerate the installer doc sample 2026-11-10 10:19:51 +01:00
Abdessamad Derraz ec8f9eb566 chore: merge origin/main 2026-11-10 10:11:13 +01:00
Abdessamad Derraz fbcb6c7352 fix: count only the pack's own files in pack_files
An entry the installer places in the roms, emulators or configs folder is in the install list but not in the ZIP, which is unzipped into the BIOS folder. pack_files and pack_size counted them: release_record.py refused Batocera (19196 against 19125 in the archive) and RetroBat (9200 against 8882). Manifests regenerated twice, identical.
v2026.11.10
2026-11-10 09:54:13 +01:00
Abdessamad Derraz 498fa5cb11 fix: set the raw error flag in one place
The test called main and left --offline and the WSL probe behind for the tests after it. say_raw_errors holds the rule, and the test calls it alone.
2026-11-10 09:10:34 +01:00
Abdessamad Derraz 482260f599 chore: merge origin/main 2026-11-10 08:43:21 +01:00
Abdessamad Derraz e8e2215a49 fix: clear the raw error flag on each run
--verbose set it and no run cleared it, so a later run in the same process ended its clock message with the raw SSL text. Also: --target named again in its refusal, three names mypy read as another type, a semicolon and a tooling file named in test comments.
2026-11-10 08:43:20 +01:00
Abdessamad Derraz f7a0a7f263 fix: keep the date and Next steps out of search
A query word matches the start of a longer word. Since the index grew,
the "2" of "playstation 2 bios" matched the 2026 of every page's date
line and the "u" of "wii u bios" the "use" of Next steps, so the
PlayStation and Nintendo pages held every query word and ranked above
the PlayStation 2 and Wii U pages. Both blocks carry
data-pagefind-ignore now: search_gate answers 58 of 58 queries, the
four console pairs by 9 to 14 percent. Batocera's pages weigh 882
bytes more for it.
2026-11-10 08:41:03 +01:00
Abdessamad Derraz 8e15f94ed1 chore: merge origin/main
# Conflicts:
#	install.ps1
#	install.sh
#	install/launchers/index.json
2026-11-10 07:39:26 +01:00
Abdessamad Derraz 25057ee3a2 chore: refresh the source path record
Drop the tree the amiberry 8.3.0 pin_build named: RetroBat pins that build nowhere in a repository.
2026-11-10 07:38:15 +01:00
Abdessamad Derraz 6191d4783a fix: point each Amiberry build pin at its repo
KNULLI builds amiberry from Batocera's package through its batocera
submodule: the reference now names knulli-linux at 20260511, the tag
platforms/knulli.yml is read at, and the package file below the
submodule. check_freshness follows a path .gitmodules declares to the
commit the tree pins, which reads AMIBERRY_VERSION = v7.1.0 there.

RetroBat pins amiberry 8.3.0.0 only in emulators/versions.xml on its
download server, read by emulatorLauncher/Installer.cs. No repository
holds it, so amiberry-8.3.0 keeps pin_frozen, which says so, and no
pin_build.
2026-11-10 07:10:43 +01:00
Abdessamad Derraz 7d89877aab chore: count the longer Amiberry name's bytes
The Batocera pages name its Amiberry build twice, now as 'Amiberry
8.0.0 (facaaeb, Batocera)': 20 more bytes each on the 1,356,360
measured at 27c33b966, so the byte budget is 1,356,400.
2026-11-10 07:07:10 +01:00
Abdessamad Derraz c8784fa6ef fix: name the two Amiberry 8.0.0 builds apart
Batocera builds facaaeb, 332 commits after v7.1.1, and EmuELEC
builds 452783a, 44 commits after it. Both read 8.0.0 from
CMakeLists.txt and both displayed as 'Amiberry 8.0.0', three site
pages under one title. Each name now carries its commit and the
platform that builds it.
2026-11-10 07:06:36 +01:00
Abdessamad Derraz 837cce6d34 chore: refresh the source path record
sitesources.py --fetch for today's pins: anybor's tree moved to
b3557f6, and the fbneo citations now include the Mega Drive and PC
Engine drivers.
2026-11-10 07:03:23 +01:00
Abdessamad Derraz 9c53e6e9ae fix: write fluidsynth's version as its tag reads
The pin is tag v2.0.6 at distance 0, so the describe form, and the
core_version every tag-based profile writes, is v2.0.6. The profile
wrote 2.0.6.
2026-11-10 07:02:27 +01:00
Abdessamad Derraz 691afe5653 chore: weigh Batocera's pages with its downloads
Batocera's pages now name the cores its x86_64 RetroArch downloads.
Each file lists every core reading it with its citations, the Game
Boy Advance going from 4 readers to 10, and Elektronika BK, FM Towns
and Nintendo DS passed the part budget. On the gate's built site at
27c33b966 the platform weighs 13 pages, 15,662 elements (under the old
18,854) and 1,356,360 bytes, 145,243 more than the 1,211,117 recorded.
The page and byte budgets take those measured values.
2026-11-10 07:01:48 +01:00
Abdessamad Derraz f89a6b2f15 chore: merge integ-2026-11-09 2026-11-10 07:00:05 +01:00
Abdessamad Derraz 9a4234e21f fix: list a region-free BIOS after regional ones
The PlayStation section opened on psxonpsp660.bin under 'every
region': since sets carry the requirement, ARMSX1's region-free member
of its required BIOS set counts as required, and the world line came
first, above the scph files most emulators read, and its card first.
A file read for every region is a stand-in for each region's BIOS, so
that line now follows the territories.

The Apple II start now leads on BizHawk's and Mednafen's files, a tie
of two readers with CLK's and POM2's apple2e.rom. The test named that
one file. It now checks that every start file is a link, its intent.
2026-11-10 07:00:01 +01:00
Abdessamad Derraz 0605079cda fix: skip a schema check without jsonschema 2026-11-10 06:58:07 +01:00
Abdessamad Derraz 08e603fb83 fix: read a missing name with spaces whole
The parity test cut each MISSING line at the first space. openMSX's
ROM names hold spaces (Japanese MSX-Write (1986) (Ascii) (J).rom), so
the msx pack's list read 'Japanese' where verify named the file. Both
sides now name the same 81 files.
2026-11-10 06:51:08 +01:00
Abdessamad Derraz a5f2ed073f chore: record two dumps the new profiles lack
The amiberry profiles written today name the A2000 keyboard MCU ROM
by the hashes amiberry's ROM table gives (crc32 c23d280e, sha1
b5c4b8c3, rommgr.cpp:141-142), and openmsx-libretro names
nms8245_disk.rom by the two sha1 openMSX's machine file accepts. The
collection holds neither: its D8039HLC.rom is crc32 fb92a773 and its
nms8245_disk.rom is sha1 c3f3ca45. Both are real gaps, recorded with
their reason.
2026-11-10 06:50:05 +01:00
Abdessamad Derraz a7987afc7e chore: rebuild the site when alternatives.py moves 2026-11-10 06:48:41 +01:00
Abdessamad Derraz cc8017b932 fix: drop yabadabadoo from the unresolved cores
ROCKNIX's folder rows naming yabadabadoo now resolve to its profile,
since the platform lists the libretro cores it installs and yabadabadoo
is a build it makes. The reason recorded for it outlived its row.
2026-11-10 06:48:31 +01:00
Abdessamad Derraz 0762d39cbe docs: list the new launcher test modules 2026-11-10 06:48:31 +01:00
Abdessamad Derraz 751d6b7e5b fix: carry the dinothawr and dirksimple trees
Batocera and KNULLI now resolve the dinothawr core, and Batocera the
dirksimple core, as cores their RetroArch downloads from the buildbot.
Neither image builds them, so nothing installs the trees they read:
the two entries name those platforms.
2026-11-10 06:48:10 +01:00
Abdessamad Derraz eef42d34d3 docs: split clauses in two profile notes 2026-11-10 06:47:50 +01:00
Abdessamad Derraz 14f1dbe50d docs: quote flags and split clauses in comments 2026-11-10 06:47:50 +01:00
Abdessamad Derraz 7b141e7a54 fix: name every reader of a held file out of reach
A release asset absent from the checkout is omitted from the install
list. That omission named only the first core reading it: harm1.wad,
action2.wad and delaweare.wad named gzdoom, so install.py --target
rpi1, where lzdoom runs, kept nothing the builder's list for rpi1
omits. The omission now names the cores of the claims folded onto the
entry too.
2026-11-10 06:47:15 +01:00
Abdessamad Derraz 27c33b966e fix: keep a test's installer run off the WSL side
test_install loads its own install module. Its free-space test ran
main() in process without naming the OS, so on a WSL host main()
entered WSL mode and left _WSL active in that module, for the rest of
the process. Any test of the module run after it, as when the module
is named twice on one command line, read D:\bios as /mnt/d/bios. The
test now runs as Linux and restores _WSL on exit.
2026-11-10 05:49:12 +01:00
Abdessamad Derraz 3cd5efdd53 chore: move anybor to b3557f6
Upstream added 19 build profiles to src/pin.json, 252 from 3020 to
8023 on the same nine engines, and moved the core version to 0.1.85.
The two changed citations, pin.json:1-20 and obor_engines.h:6-7, still
name the version lines, read at b3557f6, which prose_written_at
records. The diff renames the core options to anybor_* and adds no
file read: the system directory still gives only AnyBOR.ini to the
packed and ZIP preparation. Five citations in libretro.cpp shift by
five lines.
2026-11-10 04:44:41 +01:00
Abdessamad Derraz 13e60386be fix: type the code written today for mypy
Every error outside mypy-baseline.txt is fixed in the code:
- common.py: the CRC32 step reused found, the name the layout branch
  gives a resolution tuple, for its list of matches. It now has its own
  name. bindings_of annotates its systems.
- launchers.py, retropie_launchers.py, install.py: an Optional value
  read before its None check.
- recalbox_launchers.py, rocknix_launchers.py: Launcher calls take
  typed keywords, a partial or named parameters, instead of a
  dict[str, object] spread. end_lineno falls back to lineno.
- retrobat_launchers.py: the StageRomKey match no longer reuses the
  str key, and record values are checked before they are iterated.
- batocera_launchers.py: the value of an assignment is read on an
  Assign or AnnAssign only, and the launcher list is annotated.
- emuelec_launchers.py, emuelec_scraper.py, rocknix_scraper.py: import
  fallbacks no importer reaches are dropped, a reused name renamed.
- batocera_targets_scraper.py: a submodule answer without a commit is
  refused.
The baseline loses the 30 entries these fixes resolved and gains
none.
2026-11-10 04:41:44 +01:00
Abdessamad Derraz b6129310e5 fix: let pinned executables through validate_pr
An executable is refused unless an emulator profile pins its exact bytes by sha1 or sha256. PICO-8's pico8.exe and SDL2.dll, from the official 0.2.7 archive, are pinned by the lexaloffle profile; md5 and crc32 never vouch for code.
2026-11-10 04:24:25 +01:00
Abdessamad Derraz 705b02e693 fix: name a pageless core instead of linking it
KNULLI's system pages linked /emulators/test/ from the cores examined for an entry: the test core resolves as a downloadable core and has no page, which failed the site's link check. Cores examined now link only the profiles the site writes a page for.
2026-11-10 04:01:26 +01:00
Abdessamad Derraz 5f14ace463 fix: say start a game on the device itself
Run on the device detection found (KNULLI, Batocera), the last line said to start that system, which is already running. A computer still names its emulator, and a card mounted on one is still put back.
2026-11-10 03:47:58 +01:00
Abdessamad Derraz d59b76dd02 fix: count test cores by role on the surfaces
Five test cores moved from type: test to role: test. The page
generator already leaves them out by role, the surface test still read
the old type and counted 653 profiled cores against the page's 648.
2026-11-10 03:34:48 +01:00
Abdessamad Derraz 60aae0c291 docs: describe groups and standalone_pools
The profile field table lacked the two top-level fields the schema
gained: groups, the sets whose requirement members take, and
standalone_pools, the search lists of directories a standalone build
reads. Their rows follow the schema's descriptions.
2026-11-10 03:32:22 +01:00
Abdessamad Derraz b1bff89e56 docs: quote the profiles as they read now
DuckStation's scph5501.bin carries group: ps-bios since required moved
onto the set, and Yabause's saturn_bios.bin is required only through
its group. The required HLE example is now QUASI88's n88.rom, an entry
that is required and carries hle_fallback itself.
2026-11-10 03:32:04 +01:00
Abdessamad Derraz c1a018f20d docs: state core resolution as the code reads it
The rule's strategies moved from resolve_platform_cores to
_platform_profiles, and the test read the old function. It now reads
both. The page named ROCKNIX among the lists naming retroarch, which
it no longer does since its list names the libretro cores it
installs, and said nothing of installable_cores: a downloadable core
designates libretro builds and counts under --target only on the
boards whose downloader offers it.
2026-11-10 03:30:55 +01:00
Abdessamad Derraz c31068c362 chore: regenerate data, manifests and docs
Online pipeline at 169776790, generated twice with identical output: database, recipes, install manifests and games index, native exports, README, installer and report excerpts.
2026-11-10 03:28:35 +01:00
Abdessamad Derraz 63088b663f fix: keep each installer error to one sentence
Six messages on stderr ran 26 to 35 words before the option to give. Each now says the problem and the remedy in at most 25 words, and a test measures every stderr message against that budget.
2026-11-10 02:53:07 +01:00
Abdessamad Derraz 1697767909 fix: ship the demo Pak6 placeholder with its set
main/Pak6.pk3 now goes to the demo disc's empty placeholder, listed
with the demo entries, so the pack carries Pak0 to Pak7 as the
Allied Assault single-player demo 0.05 installs them. The 1.11 patch
Pak6.pk3 stays a named and collected retail entry, not chosen: the
retail Pak0 to Pak5 are not held, and no release shipped the demo
with it.
2026-11-10 02:51:36 +01:00
Abdessamad Derraz 96c31d7f44 fix: name the Allied Assault demo paks
The seven pk3 files under main/.variants/ are the Medal of Honor:
Allied Assault single-player demo 0.05, extracted from the December
2001 demo disc (archive.org ea-mohaa-sp-demo, EA_MOHAA_SP_Demo.iso,
sha1 4cba6697): Pak0 to Pak5, and Pak6 and Pak7, two identical empty
placeholders. OpenMoHAA reads the demo from main/ like the full game
(common.c:3168-3182) and mounts every .pk3 there (files.cpp:3136).

Each demo pak is now an entry with its hashes, listed before the
retail entry of its slot, so Pak0 to Pak5 resolve. The 1.11 patch
Pak6.pk3 keeps its slot. The retail entries keep unsourceable, now
naming the retail release as what the collection lacks.
2026-11-10 02:49:02 +01:00
Abdessamad Derraz aa80fbbef2 chore: drop xemu's wpcap.dll copy
Npcap's installer provides wpcap.dll on the DLL search path; xemu loads it with LoadLibrary and nothing reads the BIOS folder copy, which no entry reaches since a8af82c2d.
2026-11-10 02:42:18 +01:00
Abdessamad Derraz a8af82c2d5 fix: leave wpcap.dll to the Npcap install
xemu loads wpcap.dll with a plain LoadLibrary (winpcap-loader/loader.c),
and it works only with the Npcap driver, whose installer puts it on the
DLL search path. The schema has no marker for a file a separate system
install provides, so the entry is unsourceable with that reason. The
copy at the BIOS root of RetroBat, RetroDECK and eight other platform
lists, which no search order reaches, leaves them.
2026-11-10 02:41:52 +01:00
Abdessamad Derraz ffb3cbfed3 fix: place Xbox files where RetroBat reads them
Each Cxbx build reads its data from the folder its settings.ini sits
in, which RetroBat writes beside the binary: the three profiles name
Settings::GetDataLocation, so keys.bin, EmuDisk and EmuMediaBoard go to
emulators/<folder> on RetroBat instead of the BIOS root. RetroBat writes
cxbx-reloaded's EEPROM.bin and xemu's eeprom.bin and xbox_hdd.qcow2
itself (installed_on), and mounts an .iso with its own tool, so Cxbx's
dokan2.dll is never loaded there (unread_on).
2026-11-10 02:36:02 +01:00
Abdessamad Derraz 7f38954041 fix: record what RetroBat writes for xemu and Cxbx
The xemu generator writes eeprom.bin and xbox_hdd.qcow2 into
saves/<system> from its own resources and passes both in xemu.toml,
copies chihiro_eeprom.bin between saves/chihiro and the emulator folder,
and points the Chihiro snapshot store at saves/chihiro. The Cxbx
generator runs each build from its emulator folder (chihiro, chihiro-ds,
cxbx-reloaded, else cxbx-r), where it writes settings.ini, writes
EEPROM.bin into cxbx-reloaded for an Xbox, and mounts an .iso with its
own xbox-iso-vfs.exe after checking the Dokan 2 runtime. Nine records,
read at emulatorLauncher ca486005.

A program the launcher runs from its own folder is no launcher read
left to collect. xemu-chihiro lists the two files it generates,
chihiro_eeprom.bin and chihiro_snapshots.qcow2, as unsourceable.
2026-11-10 02:35:51 +01:00