docs: one pack per platform, the complete one

This commit is contained in:
Abdessamad Derraz committed 2026-09-04 04:10:15 +02:00
1 parent 26df60db75
commit 7ff6ea20d1
5 files changed
+34 -41

No files matched your search

+3 -3
View File
@@ -29,7 +29,7 @@ The script auto-detects your platform, downloads only missing files, and verifie
## Download BIOS packs
Pick your platform, download the ZIP, extract to the BIOS path.
One pack per platform, and it holds everything the platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. The installer above does the same file by file, and `--target` narrows it to one machine; for a region or a bare minimum, build your own pack below.
The size is what the files occupy once extracted; the ZIP itself downloads smaller, and anything over 2 GB arrives split into `.zip.001`, `.zip.002` volumes. Open the `.001` with 7-Zip or PeaZip, or join them first (`cat Pack.zip.0* > Pack.zip`, or `copy /b Pack.zip.001+Pack.zip.002 Pack.zip` on Windows).
| Platform | Extracted size | Extract to | Download |
@@ -98,7 +98,7 @@ Checked by is the test your platform runs on its own, replicated here from its s
Clone the repo and generate packs for any platform, emulator, or system:
```bash
# Full platform pack
# 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/
@@ -165,4 +165,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 [FAQ](https://abdess.github.io/retrobios/wiki/faq/#is-this-legal).
*Auto-generated on 2026-09-04T01:36:37Z*
*Auto-generated on 2026-09-04T02:08:41Z*
+2 -2
View File
@@ -296,7 +296,7 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
"",
"## Download BIOS packs",
"",
"Pick your platform, download the ZIP, extract to the BIOS path.",
"One pack per platform, and it holds everything the platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. The installer above does the same file by file, and `--target` narrows it to one machine; for a region or a bare minimum, build your own pack below.",
"The size is what the files occupy once extracted; the ZIP itself"
" downloads smaller, and anything over 2 GB arrives split into"
" `.zip.001`, `.zip.002` volumes. Open the `.001` with 7-Zip or"
@@ -490,7 +490,7 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
"Clone the repo and generate packs for any platform, emulator, or system:",
"",
"```bash",
"# Full platform pack",
"# 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/",
"",
+14 -18
View File
@@ -3476,26 +3476,22 @@ extract the whole archive directly. To join the parts manually instead:
---
## Full pack or Platform pack?
## One pack per platform
Each platform has two pack types on the [latest release]({rel}).
The [latest release]({rel}) carries one pack for each platform, and that
pack holds everything the platform runs: the BIOS list it publishes, plus
every file its emulator cores load, read from their source code. There is no
lighter variant to choose, because a pack that leaves out a file a core needs
means a game that does not boot, with no message saying why. It is not a
guarantee either: source profiles can document files nobody has dumped or
that only the user can provide, all of them visible in the
[gap analysis](gaps.md).
**Full pack** (recommended)
Contains the platform's own BIOS list plus all files needed by each
emulator core available on that platform. This covers alternate cores,
optional firmware that improves accuracy, and edge cases. Larger download,
and the best default when storage is not constrained. It is not a guarantee:
source profiles can document missing, user-provided or unsourceable files, all
of which remain visible in the [gap analysis](gaps.md).
**Platform pack**
Contains only the files the platform officially checks for. Much smaller
download. Good for limited storage (SD cards, handhelds) or setups that
only use default cores.
When in doubt, take the full pack and verify it against the platform page.
Want less than everything? The installer takes `--target switch` to install
only what one machine's cores need. From a clone of the repository,
`python scripts/generate_pack.py --platform retroarch --region us` keeps one
BIOS per region and `--required-only` the bare minimum each core needs to
start; `--help` lists every way to build your own.
---
+2 -2
View File
@@ -75,8 +75,8 @@ bash scripts/download.sh --list # show available packs
Packs over 2 GB are split into numbered volumes (`.zip.001`, `.zip.002`).
Download every part and open the `.001` file with 7-Zip or PeaZip, which
extracts the whole set. See [Download](../which-pack.md) for the pack
variants and per-setup instructions.
extracts the whole set. See [Download](../which-pack.md) for the
per-setup instructions.
## BIOS directory by platform
+13 -16
View File
@@ -138,25 +138,20 @@ pipeline runs here, the archives are checked here, and `gh` uploads them.
# 1. Full pipeline, online, so data directories and MAME/FBNeo hashes are fresh
python scripts/pipeline.py
# 2. The platform-only packs, and RetroPie, which is archived but still served
python scripts/generate_pack.py --all --source platform --output-dir dist/
# 2. RetroPie, which is archived but still served
python scripts/generate_pack.py --platform retropie --output-dir dist/
python scripts/generate_pack.py --platform retropie --source platform --output-dir dist/
python scripts/generate_pack.py --platform retropie --verify-packs --output-dir dist/
# 3. The standalone emulators that no frontend bundles
python scripts/generate_pack.py --emulator mesence --output-dir dist/
python scripts/generate_pack.py --emulator lexaloffle --output-dir dist/
# 3. Checksums of the full ZIPs, before splitting
(cd dist && sha256sum *.zip > SHA256SUMS.txt)
# 4. Every archive in dist/ extracted and hashed the way its platform checks it
python scripts/generate_pack.py --all --verify-packs --output-dir dist/
# 5. Split anything over 2 GB (GitHub asset cap); 7-Zip and PeaZip open .001 directly
# 4. Split anything over 2 GB (GitHub asset cap); 7-Zip and PeaZip open .001 directly
for f in dist/*.zip; do
[ "$(stat -c%s "$f")" -gt 2000000000 ] || continue
split --bytes=1900M --numeric-suffixes=1 --suffix-length=3 "$f" "$f." && rm "$f"
done
# 6. Create the release, then keep the three most recent plus large-files
# 5. Create the release, then keep the three most recent plus large-files
DATE=$(date +%Y.%m.%d)
gh release create "v${DATE}" dist/*.zip* dist/SHA256SUMS.txt \
--title "BIOS Pack v${DATE}" --notes-file notes.md --latest
@@ -165,8 +160,10 @@ gh release list --json tagName,createdAt \
| tail -n +4 | while read tag; do gh release delete "$tag" --yes --cleanup-tag; done
```
The release notes follow the previous release: the quick install commands, the
full and platform pack tables with file counts and sizes, the standalone
packs, what changed since the previous tag, and the contributors of the
closed issues. `SHA256SUMS.txt` lists the checksums of the full ZIPs before
splitting.
One pack per platform, the full one: the platform's list plus everything its
cores load. Platform-only and per-emulator packs are build options, not
release assets, since a lighter pack means a core that fails with no message.
The release notes follow the previous release: the quick install commands,
the pack table with file counts and sizes, what changed since the previous
tag, and the contributors of the closed issues. `SHA256SUMS.txt` lists the
checksums of the full ZIPs before splitting.