Commit Graph
2798 Commits
Author SHA1 Message Date
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 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 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 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 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 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 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 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 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
Abdessamad Derraz 9c46f7471d fix: write a shared list without a YAML anchor
The amiberry and hatarib extractors give a search record and its copy
record one list object, and PyYAML wrote it as &id001 and *id001.
platforms/retrobat.yml, batocera.yml and knulli.yml carried such
anchors. The platform dumper now writes every list out, and the two
files the RetroBat scrape does not rewrite are dumped again through it:
their content is unchanged.
2026-11-10 02:25:45 +01:00
Abdessamad Derraz 2eca218535 fix: fill a launcher name listed under another
RetroPie lists KS 1.3 as kick34005.A500, and its fs-uae launcher
passes $biosdir/kick13.rom. The listed copy settles fs-uae's entry by
content, so the launcher layer never offered it, and kick13.rom
reached the pack only as a copy of UAE4All2's amiga/kick13.rom: the
x86 boards, without UAE4All2, lost it. An entry the list settles under
another name now answers the launcher's place by its own name.
2026-11-10 02:08:16 +01:00
Abdessamad Derraz 3d2629f652 fix: keep the claims of every core on a file
The first profile reading a requirement hosts the others' claims,
and two ways of dropping the host dropped them too. DraStic brings its
own usrcheat.dat, and DSPerate, which reads the same file, lost it
wherever DraStic runs. A missing file was recorded for its first
reader alone: NAPALM.GRP named Raze, Data.rsdk Sonic Mania. A list
built for a board without that reader carried what the full list
left out, and install.py --target disagreed with the builder on
ROCKNIX, KNULLI, Batocera and RetroPie boards.
2026-11-10 02:08:11 +01:00
Abdessamad Derraz 2a6b8b5943 fix: name the boards a downloaded core reaches
A board's core list names Batocera's standalone amiberry and the
buildbot's amiberry core alike, so install.py --target kept the
amiberry 8.5.0 libretro files on bcm2711, whose RetroArch downloads
nothing. resolve_platform_cores decides that reach, and the install
list now carries its answer as downloaded_cores, read by the
installer's narrowing for a target.

The builder tested only the first installable name of a profile:
Batocera lists higan_sfc_balanced and nside_sfc_balanced, the x86_64
downloader offers the second, and the core left the x86_64 pack with
its Super GameBoy files.
2026-11-10 02:07:54 +01:00
Abdessamad Derraz 7f20702b48 fix: one omission for a place two builds read
RetroPie builds amiberry 5.7.2 and 6.3.3, one per board, both in
$md_inst of its amiberry package. Each build recorded roms/kick.rom
and whdboot/AmiQuit in the emulator's folder apart, and
install/retropie.json listed both destinations twice. A file read
outside the BIOS tree is now keyed by the folder the platform installs
the listed name into, and one omission names every core reading it.
2026-11-10 02:06:44 +01:00
Abdessamad Derraz f08d6bccf6 fix: accept the lists a pack carries
Since ddafc2ff4 a pack's manifest.json holds install_list and
targets, which install.py reads with the pack alone. The pack schema
refused both. It now names them, and validate_schemas.py checks each
against the install and target manifest schemas.
2026-11-10 02:05:59 +01:00
Abdessamad Derraz 2dc427d5d0 chore: merge origin/main 2026-11-10 00:50:05 +01:00
Abdessamad Derraz 57399b967a fix: drop amiberry copies its install provides
bundled_only.py --strict listed 14 copies in bios/Commodore/Amiga/
.variants that only the per-build amiberry profiles reach, each through
a bundled entry. Four are the AROS ROMs, and those entries say
not_bundled_on: ROCKNIX, AmberELEC and Recalbox package amiberry
without them, so their packs bring them from the collection. The tool
read bundled alone and listed them, and now keeps a copy a
not_bundled_on entry reaches. The ten others (WHDLoad, boot-data.zip,
whdload_db.xml of 5.6.5 to 8.0.0) no platform, profile or manifest
needs: removed. database.json is to be regenerated with the
collection's release assets.
2026-11-09 23:32:02 +01:00
Abdessamad Derraz a8b9853474 fix: guard openmsx roms on its user folder layout
The test's premise was stale, not the profile: openmsx.yml now writes
share/systemroms below openMSX's user folder, the file pool's first
place, and each platform's binding moves it. The test keeps guarding
the same thing: every entry under share/systemroms, and on RetroBat,
which sets OPENMSX_HOME to bios/openmsx, placed in the
openMSX/share/systemroms folder its own list declares.
2026-11-09 23:30:12 +01:00
Abdessamad Derraz c8d61fd103 fix: name rs232.rom as openmsx's code names it
AHashScanLabelNamesNoOtherDump read openmsx-libretro's rs232.rom as
fmsx's name for another dump: share/extensions/rs232.xml:18-22 names
it, so it joins CODE_NAMED. test_standalone_links called unittest.main()
before the amiberry classes, which a direct run skipped.
2026-11-09 23:28:05 +01:00
Abdessamad Derraz 4a576a8409 fix: count a required set once on emulator pages
Since the groups model, load_emulator_profiles marks every member of a
required set required, and the page counted each one: DuckStation,
which needs one BIOS of the game's region among the 105 images of its
ps-bios set, read "105 required, 0 optional". The site counts a
required set once and says one file fills it, and a set whose members
the code picks by region reads as one choice. The tests were not keyed
by a count but by the profile's name, through raw YAML that no longer
carries the derived requirement: they now read the profile as the site
does, take the count from the set, and keep their guard against a
get-all-of-them reading. Fourteen other profiles with required sets
(kronos, pom2, picodrive...) were overcounted the same way.
2026-11-09 23:24:50 +01:00
Abdessamad Derraz bfa79d6788 fix: name the Neo Geo Pocket systems by their ids
Phase 0 files snk-neogeo-pocket and neo-geo-pocket-color under snk-ngp and snk-ngpc. The No-Intro catalogs, their importer map and the campaign list now use those ids, the games index is regenerated, and the site's name table drops the eleven entries the new aliases leave unread.
2026-11-09 23:12:26 +01:00
Abdessamad Derraz 314b15b4ad fix: type role libretro cores as libretro
2048 and gong (game), radio and video_processor (utility) and the test
cores (test) are libretro builds, but their role sat in type:, which
resolve_platform_cores filters on: all_libretro left them out, so no
platform resolved them and RetroArch's manifest named none, the
--installed-cores gap of issue 87. The role moves to role:, and type
stays libretro: type keeps saying how a profile is built and run, which
the resolver reads, while teaching the resolver that three role values
mean libretro would make type a classification again. The site and
coverage leave test cores out by role. fluidsynth, a library and no
libretro core, keeps type utility. A test keeps every buildbot core
named by RetroArch's resolution.
2026-11-09 23:01:22 +01:00
Abdessamad Derraz c77aa7eed6 chore: merge integ installable fix 2026-11-09 22:32:23 +01:00
Abdessamad Derraz 55211acb37 fix: type amiberry 8.5.0 as the code builds it
The 8.5.0 source builds a standalone Amiberry and the libretro core, so
the profile is standalone + libretro again. A standalone name a build the
platform compiles itself answers to keeps meaning that build: RetroBat's
standalone amiberry is 8.3.0, and 8.5.0 runs there as the core only.
2026-11-09 22:23:05 +01:00
Abdessamad Derraz 8a4b7aa8e6 fix: keep buildbot cores a standalone name hides
Batocera's x86_64 RetroArch downloads the amiberry, cemu and xemu cores
although the image builds standalone emulators of those names. They now
stay in installable_cores, run both ways, and reach only the boards whose
downloader offers them.
2026-11-09 22:22:57 +01:00
Abdessamad Derraz 5ccf0edadd chore: point the shipped-build guard at knulli
EmuELEC v4.8 ships no RigelEngine: rigelengine is a dependency of
emuelec-ports, which no package, options file or Makefile of an image
pulls in. The guard now reads advanced_drastic, which KNULLI alone
ships, and still refuses a bump until the profile says why its pin
moves.
2026-11-09 22:22:08 +01:00
Abdessamad Derraz bc8669c45c fix: keep a buildbot core beside its standalone
installable_cores removed every buildbot name the image builds, so a
libretro core sharing its name with a standalone package was lost:
Batocera runs amiberry standalone and its x86_64 boards fetch
amiberry_libretro. A name now compares within its build mode, and the
resolver and the layouts treat such a core as the emulator's libretro
build, run both ways. Batocera gains amiberry, azahar, cannonball, cemu,
dosbox, ecwolf, eduke32, fsuae, openmsx, rpcs3, supermodel, vita3k, xemu
and ymir as installable, KNULLI cannonball.
2026-11-09 22:22:03 +01:00
Abdessamad Derraz 577b654a9d feat: place retrobat's amiberry 8.3.0 roms
RetroBat writes rom_path and whdboot_path below its amiberry emulator
folder and copies the kickstarts and rom.key it finds in bios into that
ROMs folder. The copies and both folders are launcher records, and the
8.3.0 standalone entries go to the emulators tree where the build reads
them.
2026-11-09 22:15:42 +01:00
Abdessamad Derraz 96faec98a4 chore: merge integ board rule 2026-11-09 21:55:49 +01:00
Abdessamad Derraz 78e6134c75 feat: resolve each platform to its own amiberry
A platform that builds Amiberry itself runs that revision under the name,
on every board it builds: RetroPie 5.7.2 and 6.3.3, Recalbox 8.2.2,
Batocera 7.1.1-332, KNULLI 7.1.1. The 8.5.0 profile is the buildbot
libretro core. It now names the ROM table's own file names and hashes
the keyboard MCU images.
2026-11-09 21:55:42 +01:00
Abdessamad Derraz 513384fa4d feat: read recalbox's amiberry rom_path 2026-11-09 21:55:32 +01:00
Abdessamad Derraz ceee9ffbe7 chore: merge board rule and installable cores 2026-11-09 21:54:24 +01:00
Abdessamad Derraz 4ad7179bac chore: merge the platform quirks integration
# Conflicts:
#	install.ps1
#	install.sh
#	install/launchers/index.json
2026-11-09 21:54:06 +01:00
Abdessamad Derraz 20885afe04 fix: keep the cores knulli's retroarch installs
KNULLI's RetroArch is Batocera's build with its core downloader on.
Its armv7 hard-float boards (atm7039, r16, rk3128) fetch from buildbot
linux/armhf: atm7039's shipped retroarch.cfg hides the menu entry but
leaves the URL, and Settings offers the entry back. Its aarch64 boards
get no buildbot URL. ecwolf, squirreljme, stella2014 and vemulator come
back as installable cores, and openmsx, which no buildbot list carries,
stays out.
2026-11-09 21:53:50 +01:00
Abdessamad Derraz 828d1527ee fix: keep the cores batocera's retroarch installs
Batocera builds RetroArch with its core downloader (configure defaults,
qb/config.params.sh:149-150), shown in the menu since it is no Lakka
build (config.def.h:743-745), and configgen sets no URL, so the compiled
one applies: buildbot linux/x86_64 or linux/armhf, none on aarch64
(config.def.h:1855-1861). The targets scraper names that list per board
(downloads, an armv7-A CPU read from arch/Config.in.arm), the builder
and the published target lists add it, and the platform names the union
as installable_cores. applewin, gong, squirreljme and vemulator come
back that way. A build option that compiles the downloader out, or a
shipped retroarch.cfg that blanks its URL, turns it off.
2026-11-09 21:53:15 +01:00
Abdessamad Derraz 0ea7a349df fix: journey tests wait for the plain titles
The setup screen is titled Where to install? and Confirm says Counted again for these choices since the plain-words pass.
2026-11-09 21:37:38 +01:00
Abdessamad Derraz a7e757598f fix: list the libretro cores rocknix installs
ROCKNIX listed retroarch, which stood for every libretro profile (351
resolved), while its devices build 124 libretro packages. The platform
list now names the cores those packages install on at least one device.

The targets scraper read a package's name as its core: vice-lr installs
vice_x128, vice_x64, vice_xpet, vice_xplus4 and vice_xvic, which reached
no device. It now reads each package's makeinstall_target, the file
copied to ${INSTALL}/usr/lib/libretro under its target name, through
TARGET_ARCH and ENABLE_32BIT (pcsx_rearmed-lr, desmume-lr). 155
profiles resolve, each built by a device, and no device loses one.
2026-11-09 21:27:51 +01:00
Abdessamad Derraz ebba4c9c89 fix: list only what an emuelec image carries
The 29 port engines depend on emuelec-ports, which no package of a
released image depends on, and flycast-dojo is in no device list: the
targets scraper already says so (UNBUILT). The platform list and the
launcher records now hold what at least one device image carries. Each
system keeps the list es_systems.json gives it, which says whose files
its entries ask for: VVVVVV's data.zip is still never served xrick's.
2026-11-09 21:27:38 +01:00
Abdessamad Derraz 0aa551dba7 fix: list only what a batocera board builds
No Batocera board turns on BATOCERA_CORES_STILL_COMMERCIALIZED or
BATOCERA_CORES_EXPERIMENTAL (Config.in:109, 1670), so citron, ryujinx,
applewin and eka2l1 are not built, and freej2me, gong, squirreljme, uqm
and vemulator are selected by no Kconfig file at batocera-43.1. Read
with every sourced Kconfig file, the Pi 4 boards gain dxx-rebirth,
sonic2013, soniccd and xroar (mesa3d-rpi4 gives them OpenGL).
2026-11-09 21:26:40 +01:00
Abdessamad Derraz f362a54b12 fix: list only what a knulli board builds
KNULLI's es_systems.yml is Batocera's model: it lists every emulator
its configgen knows, and its Config.in selects many of them only on
x86_64 boards, which KNULLI has none of. The platform list now holds
what at least one board selects, read by the targets scraper, plus a
program the launcher runs from the BIOS folder (lexaloffle). 59 cores
and 44 standalone emulators leave the list, with their launcher records.

The targets scraper follows Config.in and every file it sources, so a
select a package declares itself counts (Batocera's mesa3d-rpi4 gives
the Pi 4 OpenGL). A sourced file absent at the pin is named and read as
empty: KNULLI 20260511 sources package/utils/vtree/Config.in, added in
June.
2026-11-09 21:26:09 +01:00