Commit Graph
379 Commits
Author SHA1 Message Date
Abdessamad Derraz b82c4be6c9 fix: say what to act on by default
Five lines the default text hid are back where the user reads them:
- the result names each failed file again, after Exit too;
- a run, --check, the plan and the result count the files an emulator
  needs that are not available here, --verbose or Details naming them;
- --check names each copy that fails its check, the files that sit too
  deep and what a run copies, and says such a copy is backed up; only
  the plain missing files wait on --verbose;
- the plan and the result keep the count of save files left out and the
  remedy, the reason going to Details;
- the plan counts the --from files that could not be read where no row
  names them, and says another drive to add.

Exit codes are unchanged. The result's word budget rises by the failed
file line.
2026-11-10 01:46:23 +01:00
Abdessamad Derraz fcb64e3857 feat: full screen keeps its notes on Details
The plan, Confirm and the result say what happens, its size, where and
the next step. Their counts, free space, backup and save notes, kinds,
reasons a file is left out, per-file failures and commands move to a
Details screen: d on the plan, Confirm and the result, the Details row
on the plan, Y, o or Tab on the result. Opened on the result, they are
also said in the terminal after Exit. Installing lists the files that
went well only with --verbose, and --verbose draws every line in place.
The log line reads Log: so that Details names one thing.

--check prints its count, the folder and the remedy in both modes, so
that --verbose prints every default line. Each golden screen gets a word
budget per size, and a test proves the screen and its Details together
equal the --verbose screen.
2026-11-10 01:09:37 +01:00
Abdessamad Derraz 36745abf10 feat: line mode says details only with --verbose
By default a run prints what it installs, the BIOS folder, the progress
at a terminal, the result and the next step. The steps, the per-file log
lines, the counts and the reasons a file is left out come back with
--verbose. --check gives the count and the folder, and lists each file
with --verbose. The installer page shows the default run and walks
through the --verbose one.
2026-11-10 00:21:37 +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 d337e11c64 chore: regenerate the install lists
Data trees fetched again and the merged installer phase 0 and platform quirks applied.
2026-11-09 22:18:31 +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 b356d58406 chore: merge installer phase 0
# Conflicts:
#	README.md
#	install.ps1
#	install.sh
#	install/launchers/index.json
#	wiki/installer.md
2026-11-09 21:14:01 +01:00
Abdessamad Derraz 20291e3573 chore: merge the platform quirks branch
# Conflicts:
#	install.ps1
#	install.sh
#	install/launchers/index.json
#	wiki/testing-guide.md
2026-11-09 20:56:04 +01:00
Abdessamad Derraz b067d27d53 feat: give the package command back in hints
Run from the retrobios package, a hint and --help named python3 install.py, a file that user does not have. The package's launcher sets RETROBIOS_BOOTSTRAP=pypi, and the command is read from the environment it runs in: uvx retrobios from uv's cache, pipx run retrobios from pipx's, retrobios once installed.
2026-11-09 19:04:08 +01:00
Abdessamad Derraz 6c14468862 feat: say the installer and setup pages plainly
- The installer speaks without "you": the first screen asks "Where
  to install?", rows read "Copy the BIOS files from an old card or a
  folder", a close match reads "Close matches: ...". The handheld
  launchers and their port text follow, and the pronoun guard no
  longer lists any installer message.
- A setup that runs as an app opens on its one-line command, the
  folder table after it; a setup that runs on its own device keeps
  the network folder first, which its ZIP route needs.
- The home steps say what to do: "Its page gives one line to copy",
  "Paste it, press Enter".
2026-11-09 16:33:56 +01:00
Abdessamad Derraz 602945faf0 feat: logos, build stamps and exact wording
- The installer says "Every file on the list is in place." where it
  said "Everything is in place.": a check covers the files the
  collection holds, and the required ones it lacks follow.
- The FAQ, first install, legal and home pages state only what the
  code shows (PlayStation 1 and Saturn run without a BIOS on some
  emulators, save files are never touched, records are added).
- MinUI and MyMinUI show their own boot logos, and the Android,
  Linux handheld and iPhone tiles show the Android robot, Tux and a
  plain device icon, each credited in sources.json.
- Each Markdown copy, llms.txt and llms-full.txt name the commit
  they were built from, version.json the current one, and the
  answering rules tell assistants to fetch a stale copy again.
- The deploy lists the pages whose words changed (digests.json) and
  posts them to IndexNow once the site is live.
2026-11-09 10:47:37 +01:00
Abdessamad Derraz 2589099f2d chore: merge origin/main
install/games regenerated over both sides.
2026-11-09 07:12:07 +01:00
Abdessamad Derraz bdd070dd2c fix: data trees go with the systems they serve
Choosing GBA alone brought FBNeo's cheats and samples, 3,472 files,
because both trees listed every FBNeo system. The profile now names the
systems each serves, from the code: a driver's <name>.ini, cheat.dat,
cheatnes.dat or cheatsnes.dat (conc.cpp:815-828, 1059-1083), the md_,
pce_, tg_ and sgx_ drivers the tree holds, and samples read by arcade
drivers alone (samples.cpp:886-899).

The list now gives a tree the platform's ids its systems normalize to,
as a core extra's: the cheats said sega-megadrive where RetroArch says
sega-mega-drive, and a tree no platform system serves goes with the
files of none, as the pack puts it. The installer keeps a tree for the
systems chosen by name, not for every system a shared file names: the
arcade choice took blueMSX's machines through msx.zip.
2026-11-09 06:53:16 +01:00
Abdessamad Derraz 6edb9fe691 chore: merge origin/main 2026-11-09 06:51:21 +01:00
Abdessamad Derraz 92b7d071c6 fix: one size for the ticked systems on the plan
With systems ticked since the check, the headline counted them (About
3479 files, 82.2 MB) and the Install row kept the whole list's size
(Install 6.6 GB). _ticked_estimate is the one count both read, offline
the files the folders copied from hold.
2026-11-09 06:27:48 +01:00
Abdessamad Derraz fcd6753b9e fix: one id per machine for the games fallback
muOS names its GBA folder gameboyadvance first, which resolved to ares's
game-boy-advance. mgba lists nintendo-gba, so the fallback set was empty
and an unrecognised GBA game got no file. ares, dgen, picodrive, fbneo,
fbalpha2019 and emux_sms now use the ids the other profiles use, with
their old spellings kept as SYSTEM_ALIASES (bios.sms and fbneo's
Spectrum sets had fallen to the other bucket of the RetroArch list).

A folder whose name spells a machine its core does not run now also
holds the core's machines: a PC Engine CD folder run by mednafen_pce_fast
got no System Card. Install lists and install/games regenerated.
2026-11-09 06:13:24 +01:00
Abdessamad Derraz 6692cf908c fix: read a card's games under --platform
The full screen passes --platform=retroarch for a muOS card. Detection
never runs in that child, so games_setups fell back to RetroArch's own
setup and the run said no games folder was found beside MUOS/bios. The
card's own files now name its system, as card_app reads them.
2026-11-09 06:12:02 +01:00
Abdessamad Derraz ab9fe76de2 fix: resolve the cores handhelds rename
ArkOS ran the GBA with gpsp_ezode_mod and dArkOS with mgba_rumble: no
profile named them, so an install for the card's games kept every GBA
core's files, FBNeo's 3,472 data files among them. Each rename proven
from the OS build (same code base, same BIOS loading) joins its
profile's cores. The resolver folds either separator, and falls back to
the emulator column when the core names a mode, a machine or a plugin
of that program, only where its profile declares the folder's system:
MAME documents no GameKing ROM. 109 unresolved names are 56, each one
recorded with why in tests/test_games_index.py.
2026-11-09 06:04:42 +01:00
Abdessamad Derraz 39bc5f020b feat: put a .nomedia in packs unzipped on Android
The RetroArch pack lands in RetroArch Android's system folder, where MediaProvider indexed 3 842 images, sounds and videos (552 MB) into the gallery and music apps: a folder holding .nomedia is hidden with every folder below it (FileUtils.java:1587-1629, ModernMediaScanner.java:845-846, a183e2b9). A pack whose platform files an Android target, unfiltered or built for one, carries an empty .nomedia. pack_files counts it and the integrity check takes it for a marker.
2026-11-09 05:52:52 +01:00
Abdessamad Derraz c33114714e feat: leave out names a FAT card refuses
FAT, exFAT and Windows refuse < > : " | ? * in a name (fs/fat/namei_vfat.c:201-207, fs/exfat/nls.c:396-403). RetroDECK's component manifest names zxs:48.rom, zxs:if1-2.rom and snes:st018.data.rom: on an exFAT card each write failed with EINVAL on every run. The installer now probes the BIOS folder as keeps_case does, leaves those entries out and names them.
2026-11-09 05:47:43 +01:00
Abdessamad Derraz ec407dfbdd feat: hide an Android BIOS folder from the gallery
An install on Android leaves an empty .nomedia in the BIOS folder. MediaProvider hides a folder holding one and every folder below it (FileUtils.java:1587-1629, ModernMediaScanner.java:845-846, a183e2b9), and RetroArch writes none: the samples, overlays and videos of system/ showed in the gallery and music apps. --check and --dry-run write nothing.
2026-11-09 05:41:49 +01:00
Abdessamad Derraz ae5b6219bb chore: merge origin/main 2026-11-07 03:28:27 +01:00
Abdessamad Derraz 097914507b feat: install for the card's games without asking
--yes alone installed the whole list, 6.4 GB on a dArkOS card holding
two games, while the screen offers what the games need first. A run that
asks nothing now takes that first choice when the card holds games, and
says so. --all-files installs the whole list. A run given its list
(the screen's own runs) or narrowed by name is unchanged.
2026-11-07 03:16:06 +01:00
Abdessamad Derraz 6316fd12ff feat: keep data trees the card's cores read
The manifest names the cores that read a tree no platform system
declares, every reader of a shared tree included. An install for the
games of a card keeps such a tree only when its plan runs one of them:
a SNES game on ArkOS (snes9x) no longer takes FBNeo's cheats and samples.
A system no setup names a core for keeps every core's tree.
2026-11-07 03:16:06 +01:00
Abdessamad Derraz 6cc646acd6 fix: type errors the merged batches brought
The name step reused one variable for paths and for (path, md5, size)
tuples, the standalone copies reused targets inside its own loop, and
the WSL state read as object. Ten baseline entries no longer occur.
2026-11-07 00:55:46 +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 1fb20fe53d chore: list the installer's new hash for launchers
install/launchers/index.json records the SHA-256 of install.py that
--add-app checks, and was not rewritten with the pins.
2026-11-06 23:28:21 +01:00
Abdessamad Derraz 966ab201ea fix: regenerate the launcher list after main
Main changed install.py without the launcher index, so --add-app
refused every launcher and nine tests failed on main itself. The demo
script added a list without a type, and an archive-size test still
built the data-tree refs without the needed flag the builder reads.
2026-11-06 21:48:46 +01:00
Abdessamad Derraz 072380c268 feat: install the fewest files for a card's games
--for-games --required-only on a dArkOS card from a computer kept every
file of the list: --dest skipped the card's detection, so its rom
folders were never found. The games part beside the BIOS folder now
names them. The manifest marks a data tree every core runs without
(optional), and --required-only leaves it out: one GBA and one SNES game
took FBNeo's cheats and samples, 3,472 files no game opened.
2026-11-06 19:58:41 +01:00
Abdessamad Derraz 2ae34b9497 fix: keep the --target help a literal string 2026-11-06 16:18:35 +01:00
Abdessamad Derraz 8477cda1ca feat: end a check with files missing on code 3 2026-11-06 15:44:14 +01:00
Abdessamad Derraz 7d99685ce1 fix: drop the Recalbox boot disk from minivmac
Mini vMac opens no MinivMacBootv2.dsk at babdf7b5: disks come from a .cmd
(libretro-core.c:181-195) or disk1.dsk to disk9.dsk
(OSGLUERETRO.c:563-579). The name is the one Recalbox's configgen writes
into its .cmd, already recorded in its launchers: layer. Nine manifests
no longer send the 24 MB image to platforms that never open it.
2026-11-06 15:25:02 +01:00
Abdessamad Derraz c24738a81d fix: say a full drive as such, not a read error 2026-11-06 15:21:59 +01:00
Abdessamad Derraz 7d8a3486e6 fix: count data trees in the free space check 2026-11-06 15:20:50 +01:00
Abdessamad Derraz 4eba10d1ad fix: name every board system in --target help 2026-11-06 15:19:32 +01:00
Abdessamad Derraz 01a13c6457 feat: derive standalone copies from profiles 2026-11-06 15:19:01 +01:00
Abdessamad Derraz 13a10da993 fix: serve the dump a name's hashes prove
dsi_bios7.bin and dsi_bios9.bin hold the DSi Panda devkit boot ROMs, eMMC
key-Y zeroed. Every md5 and crc32 declared under those names designates
a retail dump in the same directory, yet hashless entries (RetroBat,
dsperate) got the devkit ROMs by name. by_proven_name maps such a name to
the proven primaries beside it. kick13.rom, dsi_firmware.bin and
spectrum.zip follow the same rule.
2026-11-06 15:00:28 +01:00
Abdessamad Derraz 26be1152ea feat: find Steam libraries from the client folder 2026-11-06 14:53:53 +01:00
Abdessamad Derraz 92e374328f feat: find the RetroArch AppImage portable home 2026-11-06 14:51:44 +01:00
Abdessamad Derraz 1f3fc52013 fix: read the EmuDeck Windows cores from Windows 2026-11-06 14:49:42 +01:00
Abdessamad Derraz 2571acc820 fix: say when Windows does not answer under WSL 2026-11-06 14:48:29 +01:00
Abdessamad Derraz f693cd3ec6 fix: lock a data archive while a run holds it 2026-11-06 14:46:38 +01:00
Abdessamad Derraz 44565a07bb feat: read the EmuELEC device in the installer
EmuELEC's scripts/image writes COREELEC_DEVICE to os-release (v4.8, line
189), as a GameForce image shows. The installer reads it the way it does
for AmberELEC and applies install/targets/emuelec.json. MiSTer FPGA takes
EmuELEC's place in the test of a platform without targets.
2026-11-06 12:09:09 +01:00
Abdessamad Derraz d0c65dca22 chore: merge pack and verify fixes 2026-11-06 10:28:27 +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 333f1ac3ca fix: resume a cut data archive
A data archive cut mid-download was deleted on every failure: the retry and the next run started from zero, while the run said nothing was lost. The archive is now kept beside its tree with the validator its server sent, and the rest is asked for with Range and If-Range. Checked against the release: fbneo-samples stopped at 16 MB, the next run downloaded 34.6 MB of 50.5.
2026-11-06 09:04:52 +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 4efcb3da64 fix: group core files under their pack path
On a platform that writes bios/ in front of its destinations (RetroDECK, AmberELEC, EmuELEC), a core extra was grouped, dropped and held under its bare destination while the platform's declaration of the same file used bios/<name>. Beetle PSX's scph5501.bin was kept by the --region japan pack while the declaration was dropped and the installer dropped the path. extra_region_key keys every extra with the platform's declared root, in the builder, the manifest selection, verify's replay and the omissions. The same key gives the declared entries the systems of the core files at their path: every --system case of RetroDECK differed between pack and installer before, none does now.
2026-11-06 09:00:06 +01:00