feat: link each emulator page under a needed file

This commit is contained in:
Abdessamad Derraz committed 2026-11-05 12:11:29 +01:00
1 parent 505cfc044b
commit 860fa575d9
6 files changed
+31 -13

No files matched your search

+1 -1
View File
@@ -16,7 +16,7 @@
# and Invoke-WebRequest throws on a cut transfer before the hash is read:
# the site's build rewrites this line there (scripts/sitebootstrap.py).
$mismatchAdvice = "The download was most likely cut short: try again. Within minutes of an update of this project the two files can come from caches of different ages. Waiting five minutes settles that."
$defaultInstallSha256 = "209c7614ad968cfc1cf30e69048acfb306cf5f8e3b14e3b00a6339699419e08c"
$defaultInstallSha256 = "3eb409c23f487f8b150c02591a33dbd2ea09343516daa388524c1dc66f860ebf"
$maximumInstallerBytes = 2MB
$installerExit = 0
$installer = if ($PSScriptRoot) { Join-Path $PSScriptRoot "install.py" } else { $null }
+9 -2
View File
@@ -6586,17 +6586,24 @@ def _needed_lines(entries: list[dict], heading: str, every: bool = False) -> lis
count = sum(len(names) for names, _cores in by_system.values())
lines = [f" {heading} ({_plural(count, 'file')}):"]
systems = sorted(by_system)
for system in systems if every else systems[:8]:
shown = systems if every else systems[:8]
for system in shown:
names, cores = by_system[system]
readers = f" ({', '.join(sorted(cores))})" if cores else ""
lines.append(f" {system}{readers}: {', '.join(sorted(names))}")
# Each emulator's own page, one click away: the index alone sent the
# user searching several hundred pages for theforceengine.
lines += [f" {SITE_URL}emulators/{core}/" for core in sorted(cores)]
if not every and len(systems) > 8:
# A file several systems share is a group of its own, counted as one.
unit = "groups" if any(", " in system for system in systems) else "systems"
more = len(systems) - 8
lines.append(f" ... and {more} more {unit if more > 1 else unit[:-1]} "
"(--check --verbose lists them all)")
lines.append(f" Each emulator's page says what these files are: {SITE_URL}emulators/")
if all(by_system[system][1] for system in shown):
lines.append(" Each emulator's page, linked above, says what these files are.")
else:
lines.append(f" Each emulator's page says what these files are: {SITE_URL}emulators/")
return lines
+1 -1
View File
@@ -23,7 +23,7 @@ DEFAULT_INSTALL_URL="https://raw.githubusercontent.com/Abdess/retrobios/main/ins
# curl or wget stop on a cut transfer before the hash is read: the site's
# build rewrites this line there (scripts/sitebootstrap.py).
MISMATCH_ADVICE="The download was most likely cut short: try again. Within minutes of an update of this project the two files can come from caches of different ages. Waiting five minutes settles that."
DEFAULT_INSTALL_SHA256="209c7614ad968cfc1cf30e69048acfb306cf5f8e3b14e3b00a6339699419e08c"
DEFAULT_INSTALL_SHA256="3eb409c23f487f8b150c02591a33dbd2ea09343516daa388524c1dc66f860ebf"
MAX_INSTALLER_BYTES=2097152
cleanup() {
+8 -8
View File
@@ -27,8 +27,8 @@
{
"dest": "roms/ports/retrobios/install.py",
"repo_path": "install.py",
"size": 1084827,
"sha256": "209c7614ad968cfc1cf30e69048acfb306cf5f8e3b14e3b00a6339699419e08c",
"size": 1085228,
"sha256": "3eb409c23f487f8b150c02591a33dbd2ea09343516daa388524c1dc66f860ebf",
"executable": false
},
{
@@ -71,8 +71,8 @@
"muos": {
"archive": {
"dest": "ARCHIVE/RetroBIOS.muxapp",
"size": 1138454,
"sha256": "5748eb969c4bebfca1a560e2c4ffcd8507e20b12ea36c4400386e69a260d330d"
"size": 1138855,
"sha256": "373aebd78e83ec88a29e4a14a13c6be8f77d40c2b2f8834543bb40a8c254ec95"
},
"members": [
{
@@ -92,8 +92,8 @@
{
"name": "RetroBIOS/install.py",
"repo_path": "install.py",
"size": 1084827,
"sha256": "209c7614ad968cfc1cf30e69048acfb306cf5f8e3b14e3b00a6339699419e08c",
"size": 1085228,
"sha256": "3eb409c23f487f8b150c02591a33dbd2ea09343516daa388524c1dc66f860ebf",
"executable": false
},
{
@@ -166,8 +166,8 @@
{
"dest": ".config/modules/retrobios/install.py",
"repo_path": "install.py",
"size": 1084827,
"sha256": "209c7614ad968cfc1cf30e69048acfb306cf5f8e3b14e3b00a6339699419e08c",
"size": 1085228,
"sha256": "3eb409c23f487f8b150c02591a33dbd2ea09343516daa388524c1dc66f860ebf",
"executable": false
},
{
+10
View File
@@ -4411,6 +4411,16 @@ class WhatTheCollectionLacksSaysForWhom(unittest.TestCase):
self.assertIn(" dark-forces (theforceengine): DARK.GOB, SOUNDS.GOB", lines)
self.assertIn(" sonic-mania (sonicmania): Data.rsdk", lines)
self.assertIn("(3 files)", lines[0])
# The page of each emulator under its group: the index alone left a
# search over several hundred pages.
self.assertEqual(lines[lines.index(" dark-forces (theforceengine): DARK.GOB, "
"SOUNDS.GOB") + 1],
f" {install.SITE_URL}emulators/theforceengine/")
self.assertIn(f" {install.SITE_URL}emulators/sonicmania/", lines)
self.assertNotIn(f"{install.SITE_URL}emulators/\n", "\n".join(lines) + "\n")
def test_a_group_with_no_emulator_keeps_the_index(self):
lines = install._needed_lines([{"dest": "x.bin", "system": "x"}], "Needed")
self.assertIn(f"{install.SITE_URL}emulators/", lines[-1])
+2 -1
View File
@@ -507,7 +507,8 @@ BIOS folder: /userdata/bios
426 files were not installed: the collection does not hold them, or its copy fails their check.
Needed to start an emulator (1 file):
capcom-cps3 (fbneo): sfiii2a.zip
Each emulator's page says what these files are: https://abdess.github.io/retrobios/emulators/
https://abdess.github.io/retrobios/emulators/fbneo/
Each emulator's page, linked above, says what these files are.
Not available here: DARK.GOB, DARKWAR.RTL, DARKWAR.WAD and 76 more, game data their games read. Copy them from your own copy of the game into /userdata/bios/, /userdata/bios/Source/, /userdata/bios/base/ and 10 more folders.
Game data: files a game or a game engine reads, of no use to the other cores.
To check this later, run the same command with --check.