Commit Graph
241 Commits
Author SHA1 Message Date
Abdessamad Derraz 77fef7289f feat: show the handheld demo and steps per tab
make_demo.py records a second variant: the full-screen interface at the
640x480 screen of an R36S, on an ArkOS root made with bwrap, started as
the Tools menu launcher starts it (RETROBIOS_PAD=gptokeyb), driven by the
keys gptokeyb sends for the buttons. demo.json holds one entry per
variant with its alt text. No Windows variant: under pwsh on Linux the
installer's summary gives --dest /mnt/e/bios back.

The quick install box of Get your files gets an "On the device" tab with
the handheld recording, the terminal recording under the others but
Windows, and, under the text of each computer tab, a drawing of opening
the terminal and pasting (sitesteps.py, inline SVG in the theme's
colours, title and desc). The terminal steps name the physical action.
2026-11-09 07:35:03 +01:00
Abdessamad Derraz 16f8c869a5 chore: merge installer fixes, fifth pass 2026-11-07 00:11:09 +01:00
Abdessamad Derraz 70f530516d chore: merge pack and resolver fixes 2026-11-07 00:06:15 +01:00
Abdessamad Derraz 01a13c6457 feat: derive standalone copies from profiles 2026-11-06 15:19:01 +01:00
Abdessamad Derraz 6bf62d5746 fix: refuse profile narrowings without cores
MiSTer and BizHawk declare cores: []. --region, --one-per-slot and
--no-game-data read the profiles of the cores a platform runs, so their
packs and manifests withdrew nothing under a name and README that said
they had. generate_pack and verify now refuse the flags for a named
platform and leave it out under --all.
2026-11-06 15:01:58 +01:00
Abdessamad Derraz 1f3fc52013 fix: read the EmuDeck Windows cores from Windows 2026-11-06 14:49:42 +01:00
Abdessamad Derraz 8100d671f9 chore: merge origin/main 2026-11-06 13:02:20 +01:00
Abdessamad Derraz 5e90a455e4 feat: add EmuELEC hardware targets
The v4.8 release publishes four images (Amlogic-ng, GameForce,
OdroidGoAdvance, OdroidM1, read from its asset names). The metapackage
(packages/sx05re/emuelec/package.mk:8-77) builds the S922X cores, dolphinSA
and mame only on Amlogic-ng, Amlogic-no, RK356x and OdroidM1, and removes
duckstation on the handhelds with a sed that replaces the first match only:
pcsx_rearmed, written twice, keeps its 64-bit build. Each package is mapped
to its cores by the .so or program its install step copies, PKG_ARCH is
applied as scripts/build:28-30 does, and es_systems.cfg is edited per
device as emuelec-emulationstation/package.mk:114-143 does. Amlogic-ng and
OdroidM1 list 124 cores, the handhelds 117.
2026-11-06 12:09:05 +01:00
Abdessamad Derraz 4d3f589ef4 refactor: drop the archived platform status
RetroPie was the only platform with status: archived, which kept it out
of verify --all, slots, the pipeline and list_platforms unless
--include-archived was typed. release_pack already decides which packs a
release publishes and the installer serves every platform, so the status
set nothing apart. The field, its schema entry and the flag are gone, and
RetroPie is covered by every full run like any other platform.
2026-11-06 11:52:34 +01:00
Abdessamad Derraz c0e4bd8379 chore: merge resolver fixes, fourth pass 2026-11-06 10:28:27 +01:00
Abdessamad Derraz a29b836730 chore: merge installer fixes, fourth pass 2026-11-06 10:28:14 +01:00
Abdessamad Derraz 43cb0f84ab feat: add AmberELEC hardware targets
AmberELEC's metapackage adds LIBRETRO_CORES_EXTRA (bsnes, Mesen, melonDS, geolith) only on RG552, RG353 and RG503, and deletes those cores from es_systems.cfg on every other device (packages/amberelec/package.mk:23-31, 45-58 at a21975bf). The new target scraper reads the Makefile's device images, that test and es_systems.cfg the way the platform scraper does: RG351P, RG351V and RG351MP list 125 cores, the other three 136. The installer reads the device from COREELEC_DEVICE in os-release (scripts/image:168).
2026-11-06 09:04:51 +01:00
Abdessamad Derraz 97d0a478d2 fix: read RetroArch's config under XDG_CONFIG_HOME
Native RetroArch on Linux keeps retroarch.cfg under $XDG_CONFIG_HOME/retroarch when the variable is set, and falls back to ~/.retroarch.cfg (file_path_special.c fill_pathname_application_data, configuration.c open_default_config_file at e98e1da0). Detection read ~/.config/retroarch only.
2026-11-06 08:18:59 +01:00
Abdessamad Derraz 5c93c6dc6b refactor: one emudeck script-to-profile rule
The target scraper kept its own copy of the EmuScripts table and took
.ps1 files the platform scraper never read, so emudeck-we's template
skeleton was published as a core and removed afterwards by an override.
Both scrapers now read emulator_of_script, and the platform scraper
lists the installers at the pinned revision, as launchers: and the
SteamOS target already did. Targets rescraped, override dropped.
2026-11-06 08:12:19 +01:00
Abdessamad Derraz 19898cb6ea chore: merge site and docs fixes, third pass 2026-11-06 06:38:47 +01:00
Abdessamad Derraz df801fd311 chore: merge resolver and export fixes 2026-11-06 05:54:29 +01:00
Abdessamad Derraz 83076818b0 chore: merge origin/main 2026-11-06 05:18:32 +01:00
Abdessamad Derraz 3cb1d9c06a fix: keep the -sa name in ROCKNIX targets
The target scraper stripped -sa from every standalone package while the platform scraper keeps both spellings. vice-standalone, scummvm-standalone and supermodel3 answer to vice-sa, scummvm-sa and supermodel-sa only, so every targeted ROCKNIX build left them out. Both now read standalone_emulators(), and the targets are rescraped at tag 20261001.
2026-11-06 04:05:10 +01:00
Abdessamad Derraz 87f6211983 fix: one core name per RetroPie package
The platform scraper kept lr-dosbox-pure as dosbox-pure, which matched the standalone DOSBox Pure Unleashed profile, while the target scraper wrote dosbox_pure. Both now read core_name(), and platforms/retropie.yml is rescraped at its pinned revision 46128cd2: only the libretro core names change, and six Unleashed files leave the RetroPie manifest.
2026-11-06 04:03:36 +01:00
Abdessamad Derraz 6015552fb2 fix: offer Lakka's card route from Linux only
Lakka keeps /storage on the card's ext4 partition (Lakka-LibreELEC
4696b48f scripts/mkimage:72, 95), which Windows and macOS do not open, and
its page offered them a card route. card_run is now [linux], and a page
with no Windows route says only Linux opens the card.
2026-11-06 03:58:38 +01:00
Abdessamad Derraz 657e3bc55b docs: say what archived means on the RetroPie page
The RetroPie guide note still tied the archived status to a scraping
schedule no tool runs. The doc test now reads _guides.yml too.
2026-11-06 03:51:05 +01:00
Abdessamad Derraz a2e8809945 fix: map a card's image name to its board
Batocera and KNULLI write the image name, not the board, to the card's board file (post-image-script.sh). The target scraper now records each board's images from Config.in, the target lists carry them, and the installer maps a card's image to its board. KNULLI's boot/knulli.board is read too.
2026-11-06 03:40:34 +01:00
Abdessamad Derraz 736dadd7e9 chore: record which platforms install data trees
Each registered platform running a core that reads a data directory was checked against its own image at the revision its platform YAML pins. A platform that installs the tree goes in installed_on, one that never opens it in unread_on, and one that leaves it to the user joins for_platforms. The install steps are cited beside each _data_dirs.yml entry.
2026-11-05 23:25:22 +01:00
Abdessamad Derraz b90f8bb0b9 chore: merge tooling batch 2026-11-05 15:57:19 +01:00
Abdessamad Derraz 97b72c95c5 chore: merge knulli target scraper 2026-11-05 12:42:54 +01:00
Abdessamad Derraz a9ecfea1a6 feat: add knulli target scraper
KNULLI builds per board on Batocera's Kconfig model from its own tree (knulli-cfw/knulli-linux at the tag platforms/knulli.yml pins): configs/knulli-*.board, package/system/knulli-system/Config.in, knulli-es-system/es_systems.yml and the knulli-cfw/buildroot submodule. Ten boards, the armhf library builds excluded.
2026-11-05 12:42:23 +01:00
Abdessamad Derraz 313693e58b fix: settle batocera kconfig before mapping cores
Continued if-conditions were cut at their first line, so GLES3 held on every board, and selects guarded by a negation stayed on once fired. Derived flags are read line by line, each pass rebuilds the symbol set from the board, and the architecture comes from the board's BR2_<arch> choice.
2026-11-05 12:42:19 +01:00
Abdessamad Derraz 4dd43aa627 feat: set up Termux storage from the one-liner 2026-11-05 12:18:39 +01:00
Abdessamad Derraz 2c81e1a1af feat: watch the rom folder pins 2026-11-05 12:09:10 +01:00
Abdessamad Derraz f1ce63fe5c docs: name the SHARE drive folder for a card 2026-11-05 12:05:08 +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 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 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 9e6af0aa6b feat: serve the one-line installer from the site
The site serves install.sh at /retrobios/i and install.ps1 at
/retrobios/i.ps1. generate_site.py writes both copies with the
installer address set to install.py at the commit the site is built
from (GITHUB_SHA in CI, HEAD locally), so the pinned SHA-256 and the
downloaded installer always come from one commit, including while a
deploy is still running.

Every command a user copies names the short address. The raw form
stays on the installer page as the fallback. Deploy Site now runs on
changes to install.sh and install.ps1. The install box weight keeps
the address length its ratio was fitted on, so no console page moves.
2026-10-28 05:47:38 +01:00
Abdessamad Derraz 25c356669b fix: record each platform's own list version
install/<platform>.json wrote the constant "1.0" as the version of the
list it was built from. The manifest now carries the version the platform
YAML records, and generate_pack refuses a YAML without one.

inherits: no longer passes a parent's version to a child: Lakka was
published as RetroArch v1.22.2 in its manifest, pack name and site page.
lakka.yml records v6.1, the Lakka-LibreELEC tag its target list is read
at. The MiSTer scraper refuses a BiosDB without a timestamp instead of
writing an empty version.

A pack's manifest.json records list_version, so an install from the pack
alone knows it too. Manifests regenerated twice and compared: only
version and generated changed.
2026-10-27 19:10:39 +01:00
Abdessamad Derraz 4fbbd2c760 fix: one setup decision for line mode and screen
Line mode finds mounted cards, shows its menu and names the folder for a
pack, asks the folder instead of taking a default, and lists setups in the
screen's order. Devices have one spelling each, matched without case,
spaces or punctuation, and a device several systems run lists them all.
--tui --dest reads a card as --plain does. Card boundaries read every
parent up to a mount point from mountinfo. --offline with --yes counts the
files it leaves out as pending, never as failed. The P3 points of
code_audit_15 and tui_audit_8 follow.
2026-10-27 08:43:08 +01:00
Abdessamad Derraz 74f4e301a6 fix: one card reading and one offline wording
card_choice is the one reading of a card's root for --dest, the setup
list with --dest, a card listed, browsed, typed or numbered: a blank
stick named for KNULLI, ROCKNIX or a system no card file names gets its
folder below the root and the same note on the screen and in line mode,
kept on Create the folder? and the plan. The MinUI family refuses a blank
--dest. A card mounted as BIOS is that card, a folder inside another
system's card is refused up to the drive's mount point, a list named for
another system's card gets a note, a refused --dest emits an error
event. AmberELEC and EmuELEC get a card setup.

Offline, every surface says missing, not failed: no retry line, no
--from after --from, Nothing installed when nothing was, --check counts
what needs the internet, a suggested command keeps --offline.

Drive letters under WSL for every path option, shown as D:\.

The setup list names each card system's devices and puts the cards after
RetroArch when nothing is found (Onion: 4 presses at 40x12, was 10), the
filter and the line menu take a device name, one match is chosen in one
press. Line mode names the BIOS folder and the card picked, leaves the
save directory files out before its menu, offers f) to copy from a
folder. Confirm shows no Install while it counts, Back from the systems
lands on Install, help keeps its column, one spelling per device.
2026-10-27 06:10:48 +01:00
Abdessamad Derraz b12c0af4b8 feat: card computers and retrooz folder in guides 2026-10-24 00:54:00 +02:00
Abdessamad Derraz 59285292c3 chore: bizhawk app icon, minui initials
BizHawk's tile takes EmuHawk's application icon (ApplicationIcon in its csproj) instead of an account avatar. MinUI has no logo of its own: its entry and copy go, and fetch_site_images.py now removes the copy of a platform without a logo.
2026-10-23 20:04:12 +02:00
Abdessamad Derraz c1a942ad31 feat: cite a folder for every handheld row
Allium, JELOS, KOLOS and MiyooCFW folders come from their own trees at the revision the installer reads. Rows with no cited folder point at RetroArch's System/BIOS setting, and a folder only Linux reads says so. KNULLI's SAMBA switch is linked, AmberELEC's roms share is named, the MinUI family says the command makes each folder, and an iPhone and iPad tile joins the handheld group.
2026-10-23 18:53:55 +02:00
Abdessamad Derraz a2fc09a89e feat: permanent download page per platform
get/<platform>/ lists the files of the current release pack, read from
release.json, or gives the command for a setup without one. The README,
setup pages, Get your files and the release notes link it instead of
asset URLs, which die with each deleted tag. Setups without a ZIP say so
with the command beside it, and validate_site checks every get/ page.
2026-10-23 17:06:51 +02:00
Abdessamad Derraz 32c648b67d feat: release packs for marked platforms only
release_pack: true in the registry is the list a release builds: RetroArch,
EmuDeck, RetroBat, Batocera, RomM and MiSTer, 83% of the downloads of
v2026.10.10. generate_pack --all, --verify-packs, the pipeline consistency
step, release_record and check_release read it. Manifests are still written
for every platform.
2026-10-23 17:06:46 +02:00
Abdessamad Derraz add2d87190 feat: cite the handheld systems that run retroarch
One row per system the installer detects RetroArch on, with the card folder and the devices each system's own pages list, every value carrying its source. Android and Linux handhelds become tiles of the handheld group.
2026-10-23 10:47:34 +02:00
Abdessamad Derraz 235001babb feat: cite terminals, shares and hardware 2026-10-23 02:34:13 +02:00
Abdessamad Derraz be09d517d9 feat: read retrodeck dual-mode cores from es-de
RetroDECK listed every component standalone only. Azahar, Cemu, Dolphin,
MAME, melonDS, PCSX2 and PPSSPP also run through RetroArch: RetroDECK/ES-DE
es_systems.xml at 15e1b236 loads <name>_libretro.so beside each standalone
command, and the cores ship whole from the buildbot nightly
RetroArch_cores.7z (retroarch/component_recipe.json:250-262). Their
libretro layouts, Azahar's save-dir files among them, now reach the pack.
2026-10-22 22:59:47 +02:00
Abdessamad Derraz bf22f1da47 fix: keep Batocera's save files apart from bios/
batocera-systems lists bios/saves/dolphin-emu/Triforce/segaboot.gcm, so the pack folder for the save directory is userdata-saves/. validate_schemas refuses a pack folder the BIOS tree already uses.
2026-10-22 21:44:14 +02:00
Abdessamad Derraz 2d26385efe feat: place save-dir files in each system folder
Batocera, KNULLI, Recalbox, RetroBat and RetroDECK hand a libretro core <saves>/<system> at each launch. Each copy lands below every system that runs the core. EmuDeck keeps one unsorted saves/retroarch/saves. The unsupported platforms record why.
2026-10-22 21:16:59 +02:00
Abdessamad Derraz 9a1bf4baa6 feat: record the systems each libretro core runs 2026-10-22 21:16:47 +02:00
Abdessamad Derraz 1cd6c9ee4d feat: place save-dir files in packs and lists
load_from: save_dir entries of a libretro build were left out of every
pack. They now go below the platform's save folder (registry
save_directory: RetroArch saves/, Lakka savefiles/, by core), the
manifest marks them root: save, and verify replays the same placement.
Platforms keeping saves per system or per game list them as omitted.
2026-10-22 19:58:26 +02:00