From 16ec5fa2d237365c8beb8e2b53a38b408633145f Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:28:32 +0100 Subject: [PATCH 1/6] docs: turn the readme into a front page The README ran 211 lines and 2,000 words: five commands with options, an 18-row download table, coverage figures and the build commands, all before the help. It now says what the project does, gives the line that installs for Windows and for the rest, shows it, lists the six ZIPs and the setups that install by command, and leads to the site, where the figures and every option live. The build commands sit in a closed block. No personal pronoun is left in its text. --- CONTRIBUTING.md | 2 +- README.md | 177 ++++------------ scripts/generate_readme.py | 360 +++++++++----------------------- scripts/site_markdown.py | 6 +- tests/test_audit_regressions.py | 9 +- tests/test_doc_pages.py | 23 +- tests/test_doc_surfaces.py | 13 +- tests/test_release_packs.py | 6 +- tests/test_site_bootstrap.py | 2 +- tests/test_site_demo.py | 4 +- tests/test_site_integration.py | 2 +- 11 files changed, 176 insertions(+), 428 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e85902a47..7acb100ce 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -102,7 +102,7 @@ handheld launchers, `bwrap` (bubblewrap) for the probe sandbox, and a Python 3.8 with pyte (`python3.8 -m pip install "pyte==0.8.2"`) for the full screen. CI has all three. `profile_sync.py` compares the branch with this repository's `main`, and -fetches it in a fork's clone. A profile you only edit is not held to +fetches it in a fork's clone. An edited profile is not held to `--strict`: its older refs are reviewed by hand. The full pipeline is not needed for a contribution: it rebuilds every pack diff --git a/README.md b/README.md index d927af444..4814dbab5 100644 --- a/README.md +++ b/README.md @@ -5,183 +5,80 @@

-

- Site -

+

The BIOS files emulators need, put in the right folder and checked.

-BIOS and firmware files for AmberELEC, Batocera, BizHawk, EmuDeck, EmuELEC, KNULLI, Lakka, MiSTer FPGA, MinUI, MyMinUI, NextUI, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM. +

Website · Get the files · A game does not start · Questions

-A pack holds the files its emulators read, as their source code names them, and leaves out what the emulators install themselves. +Some consoles need a small program, the **BIOS**, to start their games: PlayStation 1 and 2, Saturn, Neo Geo, Dreamcast and more. RetroBIOS installs the BIOS and firmware files for AmberELEC, Batocera, BizHawk, EmuDeck, EmuELEC, KNULLI, Lakka, MiSTer FPGA, MinUI, MyMinUI, NextUI, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM, checked the way each one checks them. -## Quick install +## Install in one line -Copy one command into your terminal: +**Windows**: open the Start menu, type **PowerShell** and open it. Paste this line (right-click in the window) and press Enter. + +```powershell +irm https://abdess.github.io/retrobios/i.ps1 | iex +``` + +**Linux, macOS, Steam Deck, Android (Termux)**: open a terminal, paste this line and press Enter. ```bash -# Linux / macOS / Steam Deck curl -fsSL https://abdess.github.io/retrobios/i | sh - -# Windows (PowerShell) -irm https://abdess.github.io/retrobios/i.ps1 | iex - -# Android (Termux: it installs Python and asks for storage access) -curl -fsSL https://abdess.github.io/retrobios/i | sh - -# SD card mounted on a PC: a muOS, KNULLI, ROCKNIX, Lakka, MiSTer, Onion, spruceOS or MinUI card -# is found by itself. For another card, --dest is its BIOS folder -# (RetroArch on Switch: retroarch/cores/system, on Android: RetroArch/system) -curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --platform retroarch --dest /path/to/sdcard/retroarch/cores/system - -# Options in PowerShell: anything after | iex goes to iex, so the script runs as a block -&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --check ``` +**A handheld, an SD card, or not sure?** [Pick the device](https://abdess.github.io/retrobios/which-pack/): its page gives the folder and the command. A muOS, Onion, spruceOS, MinUI, KNULLI, ROCKNIX, Lakka or MiSTer SD card plugged into the computer is found by itself. + ![Recording of the one-line command in a terminal. The installer finds an ArkOS SD card with 6 games, plans 43 BIOS files (15.1 MB) for them, installs them and shows the summary.](docs_assets/demo/install.gif) -The script opens a full-screen installer, driven with the arrow keys and Enter, or with a controller on a handheld. It finds your setup and its BIOS folder, downloads only the missing files and checks each one. It can also copy the BIOS files from your old SD card. -Every option, and what the installer detects and writes, is on the [installer page](https://abdess.github.io/retrobios/wiki/installer/#passing-options). +The installer finds the setup and its BIOS folder, installs the files it needs (only what the games need when it finds them on the card) and checks each one. Its screen installs everything, or fewer under **Choose systems**. Arrow keys and Enter drive it, or a controller on a handheld. It sends nothing back ([what is counted](https://abdess.github.io/retrobios/wiki/privacy/)). Options go after the line in the form the [installer page](https://abdess.github.io/retrobios/wiki/installer/#passing-options) gives. -First time? Follow the [first install, step by step](https://abdess.github.io/retrobios/wiki/first-install/). A game does not start: [what to check](https://abdess.github.io/retrobios/wiki/troubleshooting/). Other questions: the [FAQ](https://abdess.github.io/retrobios/wiki/faq/). +First time? [The first install, step by step](https://abdess.github.io/retrobios/wiki/first-install/). A game does not start: [what to check](https://abdess.github.io/retrobios/wiki/troubleshooting/). Other questions: [FAQ](https://abdess.github.io/retrobios/wiki/faq/). -## Download BIOS packs +## Or download a ZIP -A pack holds its platform's own BIOS list plus the files its emulator cores load. What no pack carries yet is in the [gap analysis](https://abdess.github.io/retrobios/gaps/). Pick your platform, download the ZIP, extract to the BIOS path. Each Download link is a page that keeps its address from one release to the next. The installer above does the same file by file: its screen installs everything, or fewer under **Choose systems**, and `--system`, `--core`, `--region` and `--target` make the same choice without questions. For a bare minimum, build your own pack below. +The Files column counts what a pack holds once unzipped. -A pack over 2 GB comes in several parts (`Pack.part1of2.zip`, `Pack.part2of2.zip`), and every part is needed. Each part is an ordinary ZIP: extract them all into the same folder. - -Every release ships `SHA256SUMS.txt` and a detached signature of it, checkable against `allowed_signers` in this repository: [verifying a release](https://abdess.github.io/retrobios/wiki/release-process/#verifying-a-release). - -The Files column counts what a pack holds once extracted, the figure a file manager shows for the folder. It differs from one platform to the next because a pack carries only what that platform's emulators load. The size is what the files occupy once extracted, and the ZIP itself downloads smaller. - -| Platform | Files | Extracted size | Extract to | Download | -|----------|------:|---------------:|-----------|----------| -| AmberELEC | - | - | `/storage/roms/` | [Use the command](https://abdess.github.io/retrobios/get/amberelec/) | +| Setup | Files | Size | Unzip into | Download | +|-------|------:|-----:|------------|----------| | Batocera | 12,810 | 7.5 GB | `/userdata/bios/` | [Download](https://abdess.github.io/retrobios/get/batocera/) | -| BizHawk | - | - | `Firmware/` | [Use the command](https://abdess.github.io/retrobios/get/bizhawk/) | | EmuDeck | 620 | 3.2 GB | `~/Emulation/bios/` | [Download](https://abdess.github.io/retrobios/get/emudeck/) | -| EmuELEC | - | - | `/storage/roms/` | [Use the command](https://abdess.github.io/retrobios/get/emuelec/) | -| KNULLI | - | - | `/userdata/bios/` | [Use the command](https://abdess.github.io/retrobios/get/knulli/) | -| Lakka | - | - | `/storage/system/` | [Use the command](https://abdess.github.io/retrobios/get/lakka/) | | MiSTer FPGA | 83 | 29 MB | `/media/fat/games/` | [Download](https://abdess.github.io/retrobios/get/misterfpga/) | -| MinUI | - | - | `/` | [Use the command](https://abdess.github.io/retrobios/get/minui/) | -| MyMinUI | - | - | `/` | [Use the command](https://abdess.github.io/retrobios/get/myminui/) | -| NextUI | - | - | `/` | [Use the command](https://abdess.github.io/retrobios/get/nextui/) | -| ROCKNIX | - | - | `/storage/roms/bios/` | [Use the command](https://abdess.github.io/retrobios/get/rocknix/) | -| Recalbox | - | - | `/recalbox/share/bios/` | [Use the command](https://abdess.github.io/retrobios/get/recalbox/) | | RetroArch | 8,504 | 6.0 GB | `system/` | [Download](https://abdess.github.io/retrobios/get/retroarch/) | | RetroBat | 12,399 | 7.9 GB | `bios/` | [Download](https://abdess.github.io/retrobios/get/retrobat/) | -| RetroDECK | - | - | `~/retrodeck/` | [Use the command](https://abdess.github.io/retrobios/get/retrodeck/) | -| RetroPie | - | - | `~/RetroPie/BIOS/` | [Use the command](https://abdess.github.io/retrobios/get/retropie/) | | RomM | 1,087 | 1.5 GB | `library/bios/` | [Download](https://abdess.github.io/retrobios/get/romm/) | -ZIPs are made for the setups most people download. The others read "Use the command": the installer above installs every file for them and checks each one, and `--dry-run` shows what it would install ([why no ZIP](https://abdess.github.io/retrobios/wiki/faq/#why-is-there-no-zip-for-my-setup)). +ZIPs are made for the setups most people download. The others install with the line above, and each page gives the command: [AmberELEC](https://abdess.github.io/retrobios/get/amberelec/), [BizHawk](https://abdess.github.io/retrobios/get/bizhawk/), [EmuELEC](https://abdess.github.io/retrobios/get/emuelec/), [KNULLI](https://abdess.github.io/retrobios/get/knulli/), [Lakka](https://abdess.github.io/retrobios/get/lakka/), [MinUI](https://abdess.github.io/retrobios/get/minui/), [MyMinUI](https://abdess.github.io/retrobios/get/myminui/), [NextUI](https://abdess.github.io/retrobios/get/nextui/), [ROCKNIX](https://abdess.github.io/retrobios/get/rocknix/), [Recalbox](https://abdess.github.io/retrobios/get/recalbox/), [RetroDECK](https://abdess.github.io/retrobios/get/retrodeck/), [RetroPie](https://abdess.github.io/retrobios/get/retropie/). -## What's included +Unzip into the BIOS folder, files straight in it. A big pack comes in parts (`Pack.part1of2.zip`): download every part ([why some setups have no ZIP](https://abdess.github.io/retrobios/wiki/faq/#why-is-there-no-zip-for-my-setup)). Each release lists its files' SHA-256 with a signature ([verifying a release](https://abdess.github.io/retrobios/wiki/release-process/#verifying-a-release)). -BIOS, firmware, and system files for consoles from Atari to PlayStation 3. -These are the files an emulator loads from disk instead of carrying inside itself. Some are required to boot a system, others improve accuracy or unlock a feature, and the packs carry both. +## Help -Each file is checked the way your platform checks it. Most compare a checksum, the fingerprint of a file's contents, which catches a corrupt or unexpected copy. RetroArch, Lakka and RetroPie check that the file is present under its name without reading its contents (`path_is_valid` in RetroArch's `core_info.c`), and MinUI, NextUI and MyMinUI hand each core its folder without opening a file in it: the Coverage table says which applies to you. Independently of that, the collection records five fingerprints per file, and wherever an emulator's code states an expected size or hash, that value is read from its source and rechecked here. +- "BIOS missing" or a game does not start: [what to check](https://abdess.github.io/retrobios/wiki/troubleshooting/) +- Have a file? [Check it by its hash](https://abdess.github.io/retrobios/files/) +- Every console and the files it needs: [systems](https://abdess.github.io/retrobios/systems/) +- Asking an AI assistant: it reads the site best from [llms.txt](https://abdess.github.io/retrobios/llms.txt) -- **1,087 files** the platforms' emulators load are still to be found, and 138 more the collection does not hold and does not serve by name (retail data, per-user keys, user-filled slots), each with its reason. Both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/) -- **18 platforms** supported with platform-specific verification -- **623 emulators** profiled from source (RetroArch cores + standalone) -- **532 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...) -- **19,947 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,744 system files, 2,975 arcade ROM sets, 11,228 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table -- **566 of 5,744 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC). Arcade sets and engine data fall outside what those catalogs index -- **15.8 GB** for the whole collection +## What makes it different -## Supported systems +- **623 emulators profiled from their source code**: each file an emulator loads, its hash and the line of code that reads it +- **18 setups**, each checked its own way: MD5 for Batocera and Recalbox, the file name for RetroArch, as their own code does +- **532 systems**, 19,947 files in the collection, [what is still missing](https://abdess.github.io/retrobios/gaps/) named file by file +- Public data: [JSON, CSV and SQLite](https://abdess.github.io/retrobios/data/), MIT licensed -NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 498+ more. - -Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)** - -## Coverage - -| Platform | On its BIOS list | Files its emulators load | Checked by | -|----------|-----------------:|-------------------------:|------------| -| AmberELEC | 414/434 | 4,754/4,937 | MD5 | -| Batocera | 353/353 | 14,171/15,291 | MD5 | -| BizHawk | 118/118 | - | SHA-1 | -| EmuDeck | 168/168 | 8,426/8,528 | MD5 | -| EmuELEC | 543/572 | 4,788/10,217 | MD5 | -| KNULLI | 290/290 | 9,126/15,350 | MD5 | -| Lakka | 532/532 | 7,909/7,994 | name only | -| MiSTer FPGA | 81/81 | - | MD5 | -| MinUI | 0/0 | 78/79 | name only | -| MyMinUI | 0/0 | 356/367 | name only | -| NextUI | 0/0 | 343/350 | name only | -| ROCKNIX | 38/38 | 7,427/9,139 | MD5 | -| Recalbox | 351/351 | 3,125/3,344 | MD5 | -| RetroArch | 526/526 | 7,918/7,985 | name only | -| RetroBat | 348/348 | 5,135/9,659 | MD5 | -| RetroDECK | 2,007/2,008 | 6,705/6,992 | MD5 | -| RetroPie | 532/532 | 8,117/12,771 | name only | -| RomM | 383/383 | 83/874 | size, then any hash | - -Each fraction is what the pack has over what is needed, counting required and optional files alike since both ship. The first column is the BIOS list the platform publishes. The second counts files its emulators load that this list never mentions, found by reading their source code, and it is routinely several times larger. A short fraction means files are still missing, and they are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/). -That second number is a floor, not a ceiling: an emulator that accepts any file handed to it names none in its code, so nothing there can be counted. -Checked by is the test your platform runs on its own, replicated here from its source code, so the result matches what you would see in the frontend ([how each one works](https://abdess.github.io/retrobios/wiki/verification-modes/)). - -## Build your own pack +
+For developers: build a pack Packs are built from a clone, and the clone carries the collection: its checkout alone is over 7.7 GB. `git clone --depth 1 https://github.com/Abdess/retrobios.git` leaves the history out. Files kept as release assets are downloaded when a pack needs them. Then generate packs for any platform, emulator, or system: ```bash -# The pack of a platform, as released python scripts/generate_pack.py --platform retroarch --output-dir dist/ -python scripts/generate_pack.py --platform batocera --output-dir dist/ - -# Single emulator or system python scripts/generate_pack.py --emulator dolphin -python scripts/generate_pack.py --system sony-playstation-2 - -# One region, best first, one file per system and region -python scripts/generate_pack.py --platform retroarch --region us,eu,jp -python scripts/generate_pack.py --platform retroarch --region us --one-per-slot - -# Firmware only: the game data a list or a core names is left out, each file named -python scripts/generate_pack.py --platform emuelec --no-game-data - -# The bare minimum: only the files each core needs to start python scripts/generate_pack.py --platform batocera --required-only - -# List available emulators and systems -python scripts/generate_pack.py --list-emulators -python scripts/generate_pack.py --list-systems - -# Coverage of this repository's collection per platform, emulator or system -# (it reads database.json and bios/: for your own BIOS folder, run the installer with --check) -python scripts/verify.py --all python scripts/verify.py --platform batocera -python scripts/verify.py --emulator flycast -python scripts/verify.py --platform retroarch --verbose # emulator ground truth ``` -Requires Python 3.9 or newer and `pyyaml`. The one-line installer alone runs on Python 3.8. +Requires Python 3.9 or newer and `pyyaml`. The one-line installer alone runs on Python 3.8. Every tool and option: [tools](https://abdess.github.io/retrobios/wiki/tools/). How the lists are built: [architecture](https://abdess.github.io/retrobios/wiki/architecture/). -## Documentation site - -The [documentation site](https://abdess.github.io/retrobios/) provides: - -- **Per-platform pages** with file-by-file verification status and hashes -- **Per-emulator profiles** with source code references for every file -- **Per-system pages** showing which emulators and platforms cover each console -- **Gap analysis** identifying missing files and undeclared core requirements -- **Cross-reference** mapping files across 18 platforms and 623 emulators -- **Versioned data access** through JSON, CSV and SQLite exports with published SHA-256 checksums - -## How it works - -A platform's BIOS list and an emulator's code are maintained separately. Each list is compared with the emulator source code, file by file where a profile exists, and where the two differ the code decides. - -Hashes document what emulator code loads and accepts, not dump provenance. That boundary, and how it relates to preservation catalogs such as No-Intro, is drawn in the [technical questions](https://abdess.github.io/retrobios/wiki/technical-faq/#are-these-files-verified-against-original-hardware-dumps). - -1. **Read emulator source code**: trace every file the code loads, its expected hash and size -2. **Cross-reference with platforms**: match against what each platform declares -3. **Build packs**: include baseline files plus what each platform's cores need -4. **Verify**: run platform-native checks and emulator-level validation +
## Contributors @@ -196,7 +93,7 @@ Hashes document what emulator code loads and accepts, not dump provenance. That ## Community tools -- [BIOS Preservation Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool) by [monster-penguin](https://github.com/monster-penguin) - scan, verify, and stage your own BIOS collection using RetroBIOS hash metadata +- [BIOS Preservation Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool) by [monster-penguin](https://github.com/monster-penguin) - scans, verifies and stages a BIOS collection using RetroBIOS hash metadata ## Contributing @@ -208,4 +105,4 @@ The scripts and tooling are released under the [MIT License](LICENSE). The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed. The reasoning, and where it is weakest, is in [the project's legal position](https://abdess.github.io/retrobios/wiki/legal/). -*Auto-generated on 2026-11-06T23:09:06Z* +*Auto-generated on 2026-11-09T06:27:53Z* diff --git a/scripts/generate_readme.py b/scripts/generate_readme.py index f7b8aa383..3c6ed58b1 100644 --- a/scripts/generate_readme.py +++ b/scripts/generate_readme.py @@ -594,6 +594,15 @@ def generate_readme(db: dict, platforms_dir: str, db_path: str = "database.json" system_ids = system_index(profiles) + # The README is the repository's front page and its most read page: a + # visitor from a search lands here, often new to terminals. It says what + # the project does, gives the one line that installs, shows it, and leads + # on to the site, where every detail lives. The figures and the lists it + # once carried (coverage, collection, build commands) are the site's. + record = release_record.load_advertised(platforms_dir=platforms_dir) + extract_paths = _extract_cells(platforms_dir) + released = [name for name in sorted(coverages, key=lambda n: coverages[n]["platform"]) + if release_totals(name, record)[0]] lines = [ '

', " ", @@ -602,281 +611,118 @@ def generate_readme(db: dict, platforms_dir: str, db_path: str = "database.json" " ", "

", "", - '

', - ' ' - 'Site', + '

The BIOS files emulators need, put in the right folder and checked.

', + "", + '

' + f'Website · ' + f'Get the files · ' + f'A game does not start · ' + f'Questions' "

", "", - f"BIOS and firmware files for {_names_list(coverages)}.", + "Some consoles need a small program, the **BIOS**, to start their games: PlayStation 1" + " and 2, Saturn, Neo Geo, Dreamcast and more. RetroBIOS installs the BIOS and firmware" + f" files for {_names_list(coverages)}, checked the way each one checks them.", "", - "A pack holds the files its emulators read, as their source code names" - " them, and leaves out what the emulators install themselves.", + "## Install in one line", "", - "## Quick install", + "**Windows**: open the Start menu, type **PowerShell** and open it. Paste this line" + " (right-click in the window) and press Enter.", "", - "Copy one command into your terminal:", + "```powershell", + install_command("powershell"), + "```", + "", + "**Linux, macOS, Steam Deck, Android (Termux)**: open a terminal, paste this line" + " and press Enter.", "", "```bash", - "# Linux / macOS / Steam Deck", install_command("sh"), - "", - "# Windows (PowerShell)", - install_command("powershell"), - "", - "# Android (Termux: it installs Python and asks for storage access)", - install_command("sh"), - "", - "# SD card mounted on a PC: a muOS, KNULLI, ROCKNIX, Lakka, MiSTer, Onion, spruceOS or MinUI card", - "# is found by itself. For another card, --dest is its BIOS folder", - "# (RetroArch on Switch: retroarch/cores/system, on Android: RetroArch/system)", - install_command("sh", "--platform retroarch --dest /path/to/sdcard/retroarch/cores/system"), - "", - "# Options in PowerShell: anything after | iex goes to iex, so the script runs as a block", - install_command("powershell", "--check"), "```", "", + f"**A handheld, an SD card, or not sure?** [Pick the device]({SITE_URL}which-pack/):" + " its page gives the folder and the command. A muOS, Onion, spruceOS, MinUI, KNULLI," + " ROCKNIX, Lakka or MiSTer SD card plugged into the computer is found by itself.", + "", f"![{demo_description()}]({DEMO_GIF})", "", - "The script opens a full-screen installer, driven with the arrow keys and Enter, or with a" - " controller on a handheld. It finds your setup and its BIOS folder, downloads only the missing" - " files and checks each one. It can also copy the BIOS files from your old SD card.", - f"Every option, and what the installer detects and writes, is on the [installer page]({SITE_URL}wiki/installer/#passing-options).", + "The installer finds the setup and its BIOS folder, installs the files it needs (only" + " what the games need when it finds them on the card) and checks each one. Its screen" + " installs everything, or fewer under **" + _installer_words().TUI_SYSTEMS_ROW + "**." + " Arrow keys and Enter drive it, or a controller on a handheld. It sends nothing back" + f" ([what is counted]({SITE_URL}wiki/privacy/)). Options go after the line in the" + f" form the [installer page]({SITE_URL}wiki/installer/#passing-options) gives.", "", - f"First time? Follow the [first install, step by step]({SITE_URL}wiki/first-install/)." + f"First time? [The first install, step by step]({SITE_URL}wiki/first-install/)." f" A game does not start: [what to check]({SITE_URL}wiki/troubleshooting/)." - f" Other questions: the [FAQ]({SITE_URL}wiki/faq/).", + f" Other questions: [FAQ]({SITE_URL}wiki/faq/).", "", - "## Download BIOS packs", + "## Or download a ZIP", "", - f"A pack holds its platform's own BIOS list plus the files its emulator cores load. What no pack carries yet is in the [gap analysis]({SITE_URL}gaps/). Pick your platform, download the ZIP, extract to the BIOS path. Each Download link is a page that keeps its address from one release to the next. The installer above does the same file by file: its screen installs everything, or fewer under **" + _installer_words().TUI_SYSTEMS_ROW + "**, and `--system`, `--core`, `--region` and `--target` make the same choice without questions. For a bare minimum, build your own pack below.", - "", - "A pack over 2 GB comes in several parts (`Pack.part1of2.zip`," - " `Pack.part2of2.zip`), and every part is needed. Each part is an" - " ordinary ZIP: extract them all into the same folder.", - "", - "Every release ships `SHA256SUMS.txt` and a detached signature of it," - " checkable against `allowed_signers` in this repository:" - " [verifying a release]" - "(https://abdess.github.io/retrobios/wiki/release-process/" - "#verifying-a-release).", - "", - "The Files column counts what a pack holds once extracted, the figure a" - " file manager shows for the folder. It differs from one platform to" - " the next because a pack carries only what that platform's emulators" - " load. The size is what the files occupy once extracted, and the ZIP" - " itself downloads smaller.", + "The Files column counts what a pack holds once unzipped.", "", + "| Setup | Files | Size | Unzip into | Download |", + "|-------|------:|-----:|------------|----------|", ] - - # Where the pack itself is extracted, which is not always the BIOS folder: - # a pack whose entries already carry their own root (RetroDECK) extracts - # one level above it. - extract_paths = _extract_cells(platforms_dir) - - lines.extend( - download_table( - coverages, extract_paths, - release_record.load_advertised(platforms_dir=platforms_dir), - ) - ) - lines.extend(["", no_pack_line()]) - - lines.extend(_paragraphs(extract_notes(platforms_dir, released_only=True))) - - lines.extend( - [ - "", - "## What's included", - "", - "BIOS, firmware, and system files for consoles from Atari to PlayStation 3.", - "These are the files an emulator loads from disk instead of" - " carrying inside itself. Some are required to boot a system," - " others improve accuracy or unlock a feature, and the packs carry" - " both.", - "", - "Each file is checked the way your platform checks it. Most compare" - " a checksum, the fingerprint of a file's contents, which catches a" - " corrupt or unexpected copy. RetroArch, Lakka and RetroPie check" - " that the file is present under its name without reading its" - " contents (`path_is_valid` in RetroArch's `core_info.c`), and" - " MinUI, NextUI and MyMinUI hand each core its folder without" - " opening a file in it: the" - " Coverage table says which applies to you. Independently of that," - " the collection records five fingerprints per file, and wherever" - " an emulator's code states an expected size or hash, that value is" - " read from its source and rechecked here.", - "", - ( - f"- **{acquirable_total:,} files** the platforms' emulators load" - f" are still to be found, and {unsourceable_total:,} more the" - f" collection does not hold and does not serve by name (retail" - f" data, per-user keys, user-filled slots), each with its reason." - f" Both are named in the" - f" [gap analysis]({SITE_URL}gaps/)" - if missing_total - else "- **Nothing missing**: every file the platforms'" - " emulators load is in the collection" - ), - f"- **{len(coverages)} platforms** supported with platform-specific verification", - f"- **{emulator_count} emulators** profiled from source (RetroArch cores + standalone)", - f"- **{len(system_ids)} systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)", - collection_line(total_files, comp), - *_catalog_matched_line(db), - f"- **{format_size(total_size)}** for the whole collection", - "", - "## Supported systems", - "", - ] - ) - - # Show well-known systems for SEO, link to full list - well_known = [ - "NES", - "SNES", - "Nintendo 64", - "GameCube", - "Wii", - "Game Boy", - "Game Boy Advance", - "Nintendo DS", - "Nintendo 3DS", - "Switch", - "PlayStation", - "PlayStation 2", - "PlayStation 3", - "PSP", - "PS Vita", - "Mega Drive", - "Saturn", - "Dreamcast", - "Game Gear", - "Master System", - "Neo Geo", - "Atari 2600", - "Atari 7800", - "Atari Lynx", - "Atari ST", - "MSX", - "PC Engine", - "TurboGrafx-16", - "ColecoVision", - "Intellivision", - "Commodore 64", - "Amiga", - "ZX Spectrum", - "Arcade (MAME)", - ] - lines.extend( - [ - ", ".join(well_known) + f", and {len(system_ids) - len(well_known)}+ more.", - "", - f"Full list with per-file details: **[{SITE_URL}]({SITE_URL})**", - "", - "## Coverage", - "", - "| Platform | On its BIOS list | Files its emulators load | Checked by |", - "|----------|-----------------:|-------------------------:|------------|", - ] - ) - - for name, cov in sorted(coverages.items(), key=lambda x: x[1]["platform"]): - display = cov["platform"] - checked = check_label(cov["mode"], cov["config"].get("hash_rule")) - core_total = ( - cov["core_present"] + cov["core_missing"] + cov["core_unsourceable"] - ) - core_cell = f"{cov['core_present']:,}/{core_total:,}" if core_total else "-" + for name in released: + files, size = release_totals(name, record) + display = coverages[name]["platform"] lines.append( - f"| {display} | {cov['present']:,}/{cov['total']:,} |" - f" {core_cell} | {checked} |" + f"| {display} | {files:,} | {format_size(size) if size else '-'} |" + f" {extract_paths.get(display, '')} |" + f" {download_links(name, record, 'Download', site=SITE_URL)} |" ) - - lines.extend( - [ - "", - "Each fraction is what the pack has over what is needed, counting" - " required and optional files alike since both ship. The first" - " column is the BIOS list the platform publishes. The second counts" - " files its emulators load that this list never mentions, found by" - " reading their source code, and it is routinely several times" - " larger. A short fraction means files are still missing, and they" - " are named in the" - f" [gap analysis]({SITE_URL}gaps/).", - "That second number is a floor, not a ceiling: an emulator that" - " accepts any file handed to it names none in its code, so nothing" - " there can be counted.", - "Checked by is the test your platform runs on its own, replicated" - " here from its source code, so the result matches what you would" - f" see in the frontend ([how each one works]({SITE_URL}wiki/verification-modes/)).", - "", - "## Build your own pack", - "", - clone_line(db), - "", - "```bash", - "# The pack of a platform, as released", - "python scripts/generate_pack.py --platform retroarch --output-dir dist/", - "python scripts/generate_pack.py --platform batocera --output-dir dist/", - "", - "# Single emulator or system", - "python scripts/generate_pack.py --emulator dolphin", - "python scripts/generate_pack.py --system sony-playstation-2", - "", - "# One region, best first, one file per system and region", - "python scripts/generate_pack.py --platform retroarch --region us,eu,jp", - "python scripts/generate_pack.py --platform retroarch --region us --one-per-slot", - "", - "# Firmware only: the game data a list or a core names is left out, each file named", - "python scripts/generate_pack.py --platform emuelec --no-game-data", - "", - "# The bare minimum: only the files each core needs to start", - "python scripts/generate_pack.py --platform batocera --required-only", - "", - "# List available emulators and systems", - "python scripts/generate_pack.py --list-emulators", - "python scripts/generate_pack.py --list-systems", - "", - "# Coverage of this repository's collection per platform, emulator or system", - "# (it reads database.json and bios/: for your own BIOS folder, run the installer with --check)", - "python scripts/verify.py --all", - "python scripts/verify.py --platform batocera", - "python scripts/verify.py --emulator flycast", - "python scripts/verify.py --platform retroarch --verbose # emulator ground truth", - "```", - "", - "Requires Python 3.9 or newer and `pyyaml`. The one-line installer alone runs on Python 3.8.", - "", - "## Documentation site", - "", - f"The [documentation site]({SITE_URL}) provides:", - "", - "- **Per-platform pages** with file-by-file verification status and hashes", - "- **Per-emulator profiles** with source code references for every file", - "- **Per-system pages** showing which emulators and platforms cover each console", - "- **Gap analysis** identifying missing files and undeclared core requirements", - f"- **Cross-reference** mapping files across {len(coverages)} platforms and {emulator_count} emulators", - "- **Versioned data access** through JSON, CSV and SQLite exports with published SHA-256 checksums", - "", - "## How it works", - "", - "A platform's BIOS list and an emulator's code are maintained" - " separately. Each list is compared with the emulator source code," - " file by file where a profile exists, and where the two differ the" - " code decides.", - "", - "Hashes document what emulator code loads and accepts, not dump" - " provenance. That boundary, and how it relates to preservation" - " catalogs such as No-Intro, is drawn in the" - f" [technical questions]({SITE_URL}wiki/technical-faq/" - "#are-these-files-verified-against-original-hardware-dumps).", - "", - "1. **Read emulator source code**: trace every file the code loads, its expected hash and size", - "2. **Cross-reference with platforms**: match against what each platform declares", - "3. **Build packs**: include baseline files plus what each platform's cores need", - "4. **Verify**: run platform-native checks and emulator-level validation", - "", - ] - ) + others = [name for name in sorted(coverages, key=lambda n: coverages[n]["platform"]) + if name not in released] + lines.extend([ + "", + "ZIPs are made for the setups most people download. The others install with the line" + " above, and each page gives the command: " + + ", ".join(f"[{coverages[name]['platform']}]({SITE_URL}get/{name}/)" for name in others) + + ".", + "", + "Unzip into the BIOS folder, files straight in it. A big pack comes in parts" + " (`Pack.part1of2.zip`): download every part" + f" ([why some setups have no ZIP]({SITE_URL}wiki/faq/#why-is-there-no-zip-for-my-setup))." + " Each release lists its files' SHA-256 with a signature" + f" ([verifying a release]({SITE_URL}wiki/release-process/#verifying-a-release)).", + "", + "## Help", + "", + f"- \"BIOS missing\" or a game does not start: [what to check]({SITE_URL}wiki/troubleshooting/)", + f"- Have a file? [Check it by its hash]({SITE_URL}files/)", + f"- Every console and the files it needs: [systems]({SITE_URL}systems/)", + f"- Asking an AI assistant: it reads the site best from [llms.txt]({SITE_URL}llms.txt)", + "", + "## What makes it different", + "", + f"- **{emulator_count} emulators profiled from their source code**: each file an emulator" + " loads, its hash and the line of code that reads it", + f"- **{len(coverages)} setups**, each checked its own way: MD5 for Batocera and Recalbox," + " the file name for RetroArch, as their own code does", + f"- **{len(system_ids)} systems**, {total_files:,} files in the collection," + f" [what is still missing]({SITE_URL}gaps/) named file by file", + f"- Public data: [JSON, CSV and SQLite]({SITE_URL}data/), MIT licensed", + "", + "
", + "For developers: build a pack", + "", + clone_line(db), + "", + "```bash", + "python scripts/generate_pack.py --platform retroarch --output-dir dist/", + "python scripts/generate_pack.py --emulator dolphin", + "python scripts/generate_pack.py --platform batocera --required-only", + "python scripts/verify.py --platform batocera", + "```", + "", + "Requires Python 3.9 or newer and `pyyaml`. The one-line installer alone runs on Python 3.8." + f" Every tool and option: [tools]({SITE_URL}wiki/tools/). How the lists are built:" + f" [architecture]({SITE_URL}wiki/architecture/).", + "", + "
", + "", + ]) contributors = fetch_contributors() if not contributors: @@ -910,7 +756,7 @@ def generate_readme(db: dict, platforms_dir: str, db_path: str = "database.json" "", "- [BIOS Preservation Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool)" " by [monster-penguin](https://github.com/monster-penguin)" - " - scan, verify, and stage your own BIOS collection" + " - scans, verifies and stages a BIOS collection" " using RetroBIOS hash metadata", "", "## Contributing", @@ -1053,7 +899,7 @@ handheld launchers, `bwrap` (bubblewrap) for the probe sandbox, and a Python 3.8 with pyte (`{floor_line}`) for the full screen. CI has all three. `profile_sync.py` compares the branch with this repository's `main`, and -fetches it in a fork's clone. A profile you only edit is not held to +fetches it in a fork's clone. An edited profile is not held to `--strict`: its older refs are reviewed by hand. The full pipeline is not needed for a contribution: it rebuilds every pack diff --git a/scripts/site_markdown.py b/scripts/site_markdown.py index c72b972e3..db9e5b143 100644 --- a/scripts/site_markdown.py +++ b/scripts/site_markdown.py @@ -20,11 +20,15 @@ on the built site: from __future__ import annotations import argparse +import os import re import sys from html.parser import HTMLParser from pathlib import Path +sys.path.insert(0, os.path.dirname(__file__)) +from common import run_cli # noqa: E402 + SITE = "https://abdess.github.io" BASE = "/retrobios/" # Elements whose content is never words a reader needs. @@ -342,4 +346,4 @@ def main() -> int: if __name__ == "__main__": - sys.exit(main()) + run_cli(main) diff --git a/tests/test_audit_regressions.py b/tests/test_audit_regressions.py index 38832433e..ea06e86c9 100644 --- a/tests/test_audit_regressions.py +++ b/tests/test_audit_regressions.py @@ -56,8 +56,8 @@ class ReadmeRegressions(unittest.TestCase): def _quick_install(self) -> str: readme = (ROOT / "README.md").read_text(encoding="utf-8") - return readme.split("## Quick install", 1)[1].split( - "## Download BIOS packs", 1 + return readme.split("## Install in one line", 1)[1].split( + "## Or download a ZIP", 1 )[0] def test_advertised_bootstrap_urls_are_the_shipped_ones(self): @@ -1121,7 +1121,10 @@ class CatalogRatioRegressions(unittest.TestCase): match = re.search( r"\*\*([\d,]+) of ([\d,]+) system files\*\* matched to", readme ) - self.assertIsNotNone(match, "README no longer states the catalog ratio") + if match is None: + # The README states no ratio since it leads to the site: a ratio + # it states must still be the database's. + return matched, total = (int(g.replace(",", "")) for g in match.groups()) self.assertEqual(matched, count_catalog_matched(db)) self.assertEqual(total, compute_composition(db)["systems"]["files"]) diff --git a/tests/test_doc_pages.py b/tests/test_doc_pages.py index 6ca5886f1..0b025c755 100644 --- a/tests/test_doc_pages.py +++ b/tests/test_doc_pages.py @@ -340,7 +340,7 @@ class FilesColumnParagraph(unittest.TestCase): paragraph = next(p for p in readme.split("\n\n") if "The Files column" in p) self.assertNotIn("\n", paragraph.strip()) after = readme.split(paragraph, 1)[1].lstrip("\n") - self.assertTrue(after.startswith("| Platform | Files |")) + self.assertTrue(after.startswith("| Setup | Files |")) class PageOpenings(unittest.TestCase): @@ -769,14 +769,12 @@ class ReadmeInstallerOptions(unittest.TestCase): import generate_readme source = inspect.getsource(generate_readme.generate_readme) - self.assertIn('install_command("powershell", "--check")', source) self.assertIn("wiki/installer/#passing-options", source) self.assertIn("## Passing options", _page("installer.md")) readme = (ROOT / "README.md").read_text(encoding="utf-8") - quick = _section(readme, "Quick install") - from siteguides import INSTALL_PS1 - - self.assertIn(f"&([scriptblock]::Create((irm {INSTALL_PS1}))) --check", quick) + quick = _section(readme, "Install in one line") + # The README gives the bare line and sends options to the page that + # writes their PowerShell form: an option after `| iex` reaches iex. self.assertIn("wiki/installer/#passing-options", quick) self.assertNotRegex(readme, r"(?m)^irm \S+ \| iex \S") @@ -791,7 +789,7 @@ class PublishedNumbersShareOneFormat(unittest.TestCase): readme_source = inspect.getsource(generate_readme.generate_readme) self.assertNotIn("size_mb", readme_source) - self.assertIn("format_size(total_size)", readme_source) + self.assertIn("format_size(size)", readme_source) self.assertIn("{total_files:,}", inspect.getsource(generate_site)) self.assertEqual(generate_readme.format_size(16011 * 1024 * 1024), "15.6 GB") @@ -1713,9 +1711,7 @@ class ReadmeKeepsItsPointers(unittest.TestCase): """The README sent a reader to 'build your own pack below' for a bare minimum, and the block below never named --required-only.""" readme = (ROOT / "README.md").read_text(encoding="utf-8") - self.assertIn("For a bare minimum, build your own pack below.", readme) - block = readme[readme.index("## Build your own pack"):] - block = block[:block.index("\n## ", 1)] + block = readme[readme.index("For developers"):readme.index("")] self.assertIn("--required-only", block) def test_unsourceable_files_are_not_said_to_exist_nowhere(self): @@ -1725,7 +1721,8 @@ class ReadmeKeepsItsPointers(unittest.TestCase): readme = (ROOT / "README.md").read_text(encoding="utf-8") self.assertNotIn("sourced at all", readme) self.assertNotIn("nobody has made", readme) - self.assertRegex(readme, r"more the collection does not hold and does not serve by name") + # The README names no count: the gap analysis it links does, by reason. + self.assertIn("gaps/", readme) class ArchitectureStatesTheArbitration(unittest.TestCase): @@ -2041,8 +2038,8 @@ class BuildYourOwnPackSaysWhatTheCloneCosts(unittest.TestCase): line = generate_readme.clone_line(db) self.assertIn("git clone --depth 1", line) self.assertRegex(line, r"over \d+(\.\d)? GB") - section = _section((ROOT / "README.md").read_text(encoding="utf-8"), - "Build your own pack") + readme = (ROOT / "README.md").read_text(encoding="utf-8") + section = readme[readme.index("For developers"):readme.index("")] self.assertIn("git clone --depth 1", section) def test_advanced_usage_names_the_shallow_clone(self): diff --git a/tests/test_doc_surfaces.py b/tests/test_doc_surfaces.py index c87d74052..df04632bf 100644 --- a/tests/test_doc_surfaces.py +++ b/tests/test_doc_surfaces.py @@ -191,16 +191,17 @@ class DownloadLinksKeepTheirAddress(unittest.TestCase): from common import list_registered_platforms, list_release_pack_platforms readme = _read("README.md") - table = _section(readme, "## Download BIOS packs") + table = _section(readme, "## Or download a ZIP") self.assertNotIn("/releases/download/", table) released = set(list_release_pack_platforms("platforms")) + rows = [line for line in table.splitlines() if line.startswith("| ")] for key in list_registered_platforms("platforms"): with self.subTest(platform=key): + # Every setup's lasting page is linked: a ZIP's from its row, + # the others from the line that says they install by command. self.assertIn(f"]({SITE_URL}get/{key}/)", table) - row = next(line for line in table.splitlines() - if f"get/{key}/)" in line) - if key not in released: - self.assertIn("[Use the command]", row) + in_rows = any(f"get/{key}/)" in row for row in rows) + self.assertEqual(in_rows, key in released) def test_the_download_page_rows_link_get_pages(self): page = _which_pack() @@ -258,7 +259,7 @@ class TheReadmeLeadsBeginnersToTheirPages(unittest.TestCase): def test_quick_install_links_the_start_pages(self): # The code block holds `#` comment lines, so the section runs to # the next level-two heading. - section = _read("README.md").split("## Quick install", 1)[1].split("\n## ", 1)[0] + section = _read("README.md").split("## Install in one line", 1)[1].split("\n## ", 1)[0] for page in ("first-install", "troubleshooting", "faq"): with self.subTest(page=page): self.assertIn(f"wiki/{page}/)", section) diff --git a/tests/test_release_packs.py b/tests/test_release_packs.py index e3d54147a..65a859c26 100644 --- a/tests/test_release_packs.py +++ b/tests/test_release_packs.py @@ -284,9 +284,9 @@ class EverySurfaceSaysWhy(unittest.TestCase): def test_the_readme_rows_read_use_the_command(self): readme = (REPO_ROOT / "README.md").read_text(encoding="utf-8") - row = next(line for line in readme.splitlines() if line.startswith("| KNULLI |")) - self.assertIn(f"[Use the command]({SITE}get/knulli/)", row) - self.assertIn("ZIPs are made for the setups most people download.", readme) + line = next(text for text in readme.split("\n\n") if "ZIPs are made for the setups most people download." in text) + self.assertIn(f"[KNULLI]({SITE}get/knulli/)", line) + self.assertIn("install with the line above", line) def test_the_faq_answers_why(self): faq = (REPO_ROOT / "wiki" / "faq.md").read_text(encoding="utf-8") diff --git a/tests/test_site_bootstrap.py b/tests/test_site_bootstrap.py index 3b736cad1..b4ed3814d 100644 --- a/tests/test_site_bootstrap.py +++ b/tests/test_site_bootstrap.py @@ -271,7 +271,7 @@ class GeneratedSurfaces(unittest.TestCase): def test_the_readme_shows_the_short_form(self): readme = (REPO_ROOT / "README.md").read_text(encoding="utf-8") - quick = readme.split("## Quick install", 1)[1].split("\n## ", 1)[0] + quick = readme.split("## Install in one line", 1)[1].split("\n## ", 1)[0] self.assertIn(f"\n{install_command('sh')}\n", quick) self.assertIn(f"\n{install_command('powershell')}\n", quick) self.assertNotIn("raw.githubusercontent.com", quick) diff --git a/tests/test_site_demo.py b/tests/test_site_demo.py index 3d653e213..f8d79333d 100644 --- a/tests/test_site_demo.py +++ b/tests/test_site_demo.py @@ -84,8 +84,8 @@ class TheReadmeShowsTheGif(unittest.TestCase): readme = (ROOT / "README.md").read_text(encoding="utf-8") line = f"![{generate_readme.demo_description()}]({generate_readme.DEMO_GIF})" self.assertIn(line, readme) - self.assertLess(readme.index("## Quick install"), readme.index(line)) - self.assertLess(readme.index(line), readme.index("## Download BIOS packs")) + self.assertLess(readme.index("## Install in one line"), readme.index(line)) + self.assertLess(readme.index(line), readme.index("## Or download a ZIP")) def test_the_description_names_what_the_recording_measured(self): facts = _facts() diff --git a/tests/test_site_integration.py b/tests/test_site_integration.py index d2f58137c..c1cfd155a 100644 --- a/tests/test_site_integration.py +++ b/tests/test_site_integration.py @@ -237,7 +237,7 @@ class FaqInstallsFromWhatYouHold(unittest.TestCase): word = rule.name.split()[0] with self.subTest(share=rule.name): self.assertIn(word, section) - self.assertRegex(readme, rf"# SD card mounted on a PC: .*\b{word}\b") + self.assertRegex(readme, rf"\b{word}\b[^.]*SD card plugged into the computer is found by itself") # The label the first screen gives a card found: "Onion SD card". self.assertEqual(install._card_word(("retroarch", Path("/x/BIOS"), "Onion")), "SD card") self.assertEqual(install._card_word(("batocera", Path("/x/bios"), "Batocera")), From 77fef7289f96ae5693c172ac0e00ee27b980024c Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:26:20 +0100 Subject: [PATCH 2/6] 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. --- docs_assets/demo/demo.json | 28 +- docs_assets/demo/install-handheld.mp4 | Bin 0 -> 54586 bytes docs_assets/demo/install-handheld.png | Bin 0 -> 46454 bytes docs_assets/demo/install-handheld.tape | 43 +++ docs_assets/demo/install-handheld.webm | Bin 0 -> 79849 bytes docs_assets/demo/install.gif | Bin 253310 -> 238679 bytes docs_assets/demo/install.mp4 | Bin 79426 -> 79342 bytes docs_assets/demo/install.webm | Bin 109616 -> 111394 bytes platforms/_guides.yml | 12 +- scripts/generate_readme.py | 16 +- scripts/generate_site.py | 23 +- scripts/make_demo.py | 374 +++++++++++++++++------ scripts/siteguides.py | 9 +- scripts/sitesteps.py | 269 ++++++++++++++++ tests/test_site_demo.py | 181 ++++++++--- tests/test_site_steps.py | 94 ++++++ website/src/components/InstallDemo.astro | 27 +- wiki/testing-guide.md | 2 +- wiki/tools.md | 2 +- 19 files changed, 908 insertions(+), 172 deletions(-) create mode 100644 docs_assets/demo/install-handheld.mp4 create mode 100644 docs_assets/demo/install-handheld.png create mode 100644 docs_assets/demo/install-handheld.tape create mode 100644 docs_assets/demo/install-handheld.webm create mode 100644 scripts/sitesteps.py create mode 100644 tests/test_site_steps.py diff --git a/docs_assets/demo/demo.json b/docs_assets/demo/demo.json index 4c62cb74c..f551f79c2 100644 --- a/docs_assets/demo/demo.json +++ b/docs_assets/demo/demo.json @@ -1,9 +1,23 @@ { - "width": 800, - "height": 460, - "setup": "ArkOS", - "games": 6, - "systems": 6, - "files": 43, - "size": "15.1 MB" + "default": { + "width": 800, + "height": 460, + "setup": "ArkOS", + "games": 6, + "systems": 6, + "files": 43, + "size": "15.1 MB", + "alt": "Recording of the one-line command in a terminal. The installer finds an ArkOS SD card with 6 games, plans 43 BIOS files (15.1 MB) for them, installs them and shows the summary." + }, + "handheld": { + "width": 640, + "height": 480, + "setup": "ArkOS", + "games": 6, + "systems": 6, + "files": 43, + "size": "15.1 MB", + "pad": "gptokeyb", + "alt": "Recording of the full-screen installer on the 640 by 480 screen of a handheld, started from the Tools menu of ArkOS. It finds the 6 games on the card, plans 43 BIOS files (15.1 MB) for them, installs them and shows the summary. The A button chooses, and the bottom line names the buttons." + } } diff --git a/docs_assets/demo/install-handheld.mp4 b/docs_assets/demo/install-handheld.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..7128c36ccf9a347de8ea669a34c80520c2c16671 GIT binary patch literal 54586 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 literal 0 HcmV?d00001 diff --git a/docs_assets/demo/install-handheld.png b/docs_assets/demo/install-handheld.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed8def307afbb36f1034e1fe36799c09510697a GIT binary patch literal 46454 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 literal 0 HcmV?d00001 diff --git a/docs_assets/demo/install-handheld.tape b/docs_assets/demo/install-handheld.tape new file mode 100644 index 000000000..9bde16879 --- /dev/null +++ b/docs_assets/demo/install-handheld.tape @@ -0,0 +1,43 @@ +# The installer demo of the "On the device" tab: the full-screen interface +# on ArkOS, at the 640x480 screen of an R36S, as the Tools menu launcher +# starts it. Run scripts/make_demo.py --variant handheld, which builds the +# card and ArkOS's root, serves the repository on loopback, starts VHS on +# this file from the repository root and encodes what it writes. Enter is +# what gptokeyb sends for A (ports/shared/retrobios.gptk). + +Output tmp/demo/recorded-handheld.mp4 + +Set Shell "bash" +Set FontFamily "DejaVu Sans Mono" +Set FontSize 16 +Set LineHeight 1.15 +Set Width 640 +Set Height 480 +Set Padding 8 +Set Framerate 25 +Set TypingSpeed 35ms +Set CursorBlink false +Set Theme { "name": "RetroBIOS", "background": "#12131c", "foreground": "#e6e6f0", "cursor": "#aebcff", "selection": "#3a3d52", "black": "#12131c", "red": "#ef9a9a", "green": "#a5d6a7", "yellow": "#ffcc80", "blue": "#90caf9", "magenta": "#aebcff", "cyan": "#aebcff", "white": "#cfd8dc", "brightBlack": "#7c82a3", "brightRed": "#ef9a9a", "brightGreen": "#a5d6a7", "brightYellow": "#ffcc80", "brightBlue": "#90caf9", "brightMagenta": "#c9d2ff", "brightCyan": "#c9d2ff", "brightWhite": "#e6e6f0" } + +# ArkOS's root, the card at /roms, the interface started. +Hide +Type 'exec "$RETROBIOS_DEMO_SESSION"' +Enter +Wait+Screen@60s /A Continue/ +Sleep 300ms +Show + +# The first screen: the system found, its BIOS folder. +Sleep 300ms +Screenshot tmp/demo/poster-handheld.png +Sleep 2500ms +Enter + +# A: the plan, only the files the games on the card need. +Wait+Screen@60s /A Install/ +Sleep 4500ms +Enter + +# A: install. The progress, then the summary. +Wait+Screen@60s /RetroBIOS: Done/ +Sleep 4500ms diff --git a/docs_assets/demo/install-handheld.webm b/docs_assets/demo/install-handheld.webm new file mode 100644 index 0000000000000000000000000000000000000000..6614dd89cd387f1e4d9fadc56b09810c7eda99e6 GIT binary patch literal 79849 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