mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
feat: publish source coverage beyond shipped cores
This commit is contained in:
1 parent
09c43be11a
commit
3a4f8a5111
3 files changed
+39
-24
No files matched your search
@@ -9,7 +9,7 @@
|
||||
|
||||
Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
|
||||
|
||||
**7,652** verified files across **396** systems, ready to extract into your emulator's BIOS directory.
|
||||
Pick your platform below and extract the pack: it carries every file its emulators load, read from their source code. Nothing to configure, nothing to hunt down.
|
||||
|
||||
## Quick Install
|
||||
|
||||
@@ -56,12 +56,13 @@ The RetroDECK pack already contains its own `bios/` folder, so it extracts into
|
||||
BIOS, firmware, and system files for consoles from Atari to PlayStation 3.
|
||||
Every file passes its platform's own verification; where an emulator profile exists, the expected hashes and sizes are read from the emulator's source code (the Source-backed column below).
|
||||
|
||||
- **0 files missing** from the packs: every file the platforms' emulators load is in the collection. Files needed only by emulators no platform ships yet are counted in the [gap analysis](https://abdess.github.io/retrobios/gaps/)
|
||||
- **12 platforms** supported with platform-specific verification
|
||||
- **321 emulators** profiled from source (RetroArch cores + standalone)
|
||||
- **322 emulators** profiled from source (RetroArch cores + standalone)
|
||||
- **396 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
||||
- **7,652 files** indexed with SHA1, MD5, SHA256 and CRC32 checksums: 2,366 system files, 2,747 arcade ROM sets, 2,539 game and engine data files
|
||||
- **527 files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC)
|
||||
- **9832 MB** total collection size
|
||||
- **7,723 files** indexed with SHA1, MD5, SHA256 and CRC32 checksums: 2,438 system files, 2,746 arcade ROM sets, 2,539 game and engine data files
|
||||
- **542 files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC)
|
||||
- **9843 MB** total collection size
|
||||
|
||||
## Supported systems
|
||||
|
||||
@@ -73,16 +74,16 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
|
||||
|
||||
| Platform | Files in pack | Still missing | Verified by |
|
||||
|----------|--------------:|--------------:|-------------|
|
||||
| Batocera | 1,601 | 0 | MD5 hash |
|
||||
| BizHawk | 539 | 0 | SHA1 hash |
|
||||
| Batocera | 1,600 | 0 | MD5 hash |
|
||||
| BizHawk | 538 | 0 | SHA1 hash |
|
||||
| EmuDeck | 525 | 0 | MD5 hash |
|
||||
| Lakka | 1,631 | 0 | file presence |
|
||||
| Lakka | 1,630 | 0 | file presence |
|
||||
| MiSTer FPGA | 65 | 0 | MD5 hash |
|
||||
| ROCKNIX | 1,496 | 0 | MD5 hash |
|
||||
| ROCKNIX | 1,495 | 0 | MD5 hash |
|
||||
| Recalbox | 1,184 | 0 | MD5 hash |
|
||||
| RetroArch | 1,631 | 0 | file presence |
|
||||
| RetroBat | 1,235 | 0 | MD5 hash |
|
||||
| RetroDECK | 3,266 | 0 | MD5 hash |
|
||||
| RetroArch | 1,630 | 0 | file presence |
|
||||
| RetroBat | 1,234 | 0 | MD5 hash |
|
||||
| RetroDECK | 3,265 | 0 | MD5 hash |
|
||||
| RetroPie * | 1,678 | 0 | file presence |
|
||||
| RomM | 543 | 0 | MD5 hash |
|
||||
|
||||
@@ -124,7 +125,7 @@ The [documentation site](https://abdess.github.io/retrobios/) provides:
|
||||
- **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 12 platforms and 321 emulators
|
||||
- **Cross-reference** mapping files across 12 platforms and 322 emulators
|
||||
|
||||
## How it works
|
||||
|
||||
@@ -161,4 +162,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.
|
||||
The legal reasoning is laid out in the [FAQ](https://abdess.github.io/retrobios/wiki/faq/#is-this-legal).
|
||||
|
||||
*Auto-generated on 2026-08-08T04:18:10Z*
|
||||
*Auto-generated on 2026-08-08T04:58:16Z*
|
||||
@@ -205,8 +205,9 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
|
||||
'platform'
|
||||
])[-1]['platform']}.",
|
||||
"",
|
||||
f"**{total_files:,}** verified files across **{len(system_ids)}** systems,"
|
||||
f" ready to extract into your emulator's BIOS directory.",
|
||||
f"Pick your platform below and extract the pack: it carries every file"
|
||||
f" its emulators load, read from their source code. Nothing to"
|
||||
f" configure, nothing to hunt down.",
|
||||
"",
|
||||
"## Quick Install",
|
||||
"",
|
||||
@@ -289,6 +290,10 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
|
||||
" profile exists, the expected hashes and sizes are read from the"
|
||||
" emulator's source code (the Source-backed column below).",
|
||||
"",
|
||||
f"- **{sum(c['total_missing'] for c in coverages.values())} files missing**"
|
||||
f" from the packs: every file the platforms' emulators load is in the"
|
||||
f" collection. Files needed only by emulators no platform ships yet"
|
||||
f" are counted in the [gap analysis]({SITE_URL}gaps/)",
|
||||
f"- **{len(coverages)} platforms** supported with platform-specific verification",
|
||||
f"- **{emulator_count} emulators** profiled from source (RetroArch cores + standalone)",
|
||||
f"- **{len(system_ids)} systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)",
|
||||
|
||||
@@ -1348,6 +1348,7 @@ def generate_emulator_page(
|
||||
return True
|
||||
src = _resolve_source(
|
||||
fname, by_name, by_name_lower, data_names, by_path_suffix,
|
||||
f, db_files,
|
||||
)
|
||||
if src is not None:
|
||||
return True
|
||||
@@ -1355,7 +1356,7 @@ def generate_emulator_page(
|
||||
if path_field and path_field != fname:
|
||||
src = _resolve_source(
|
||||
path_field, by_name, by_name_lower, data_names,
|
||||
by_path_suffix,
|
||||
by_path_suffix, f, db_files,
|
||||
)
|
||||
if src is not None:
|
||||
return True
|
||||
@@ -1969,20 +1970,20 @@ def generate_gap_analysis(
|
||||
for _name, cov in coverages.items():
|
||||
matched = resolve_platform_cores(cov["config"], unique_profiles)
|
||||
relevant_set.update(matched)
|
||||
active_profiles = {
|
||||
k: v for k, v in unique_profiles.items() if k in relevant_set
|
||||
}
|
||||
|
||||
report = run_cross_reference(
|
||||
active_profiles, declared, db,
|
||||
# One pass over every profile, read twice: the packs' scope (emulators a
|
||||
# platform ships) and the whole profiled corpus, so the two views cannot
|
||||
# drift apart.
|
||||
report_all = run_cross_reference(
|
||||
unique_profiles, declared, db,
|
||||
data_names=data_names, all_declared=all_declared,
|
||||
)
|
||||
report = {k: v for k, v in report_all.items() if k in relevant_set}
|
||||
|
||||
src_totals: dict[str, int] = {"bios": 0, "data": 0, "large_file": 0, "missing": 0}
|
||||
total_undeclared = 0
|
||||
emulator_gaps = []
|
||||
|
||||
for emu_name, data in sorted(report.items()):
|
||||
for emu_name, data in sorted(report_all.items()):
|
||||
if data["gaps"] == 0:
|
||||
continue
|
||||
total_undeclared += data["gaps"]
|
||||
@@ -1990,6 +1991,8 @@ def generate_gap_analysis(
|
||||
src_totals[key] += data.get(f"gap_{key}", 0)
|
||||
emulator_gaps.append((emu_name, data))
|
||||
|
||||
shipped_missing = sum(d["gap_missing"] for d in report.values())
|
||||
|
||||
if total_undeclared > 0:
|
||||
total_available = (
|
||||
src_totals["bios"] + src_totals["data"] + src_totals["large_file"]
|
||||
@@ -2008,6 +2011,12 @@ def generate_gap_analysis(
|
||||
f"{total_available:,} available ({pct_available}), "
|
||||
f"{src_totals['missing']} to source.",
|
||||
"",
|
||||
f"This counts every profiled emulator, including those no platform "
|
||||
f"ships yet. Restricted to the emulators the platforms above do "
|
||||
f"ship, {shipped_missing} of these files are absent, which is why "
|
||||
f"the packs report no missing file. The rest are acquisition "
|
||||
f"targets, named per emulator below.",
|
||||
"",
|
||||
"### Provenance",
|
||||
"",
|
||||
"| Source | Count | Description |",
|
||||
|
||||
Reference in new issue
Block a user