diff --git a/install.ps1 b/install.ps1 index 0108187fd..1c80b3ab1 100644 --- a/install.ps1 +++ b/install.ps1 @@ -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 } diff --git a/install.py b/install.py index 0482c2aa5..00d54382b 100644 --- a/install.py +++ b/install.py @@ -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 diff --git a/install.sh b/install.sh index 3246396a6..f6681af45 100755 --- a/install.sh +++ b/install.sh @@ -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() { diff --git a/install/launchers/index.json b/install/launchers/index.json index 374f7c557..4c9547932 100644 --- a/install/launchers/index.json +++ b/install/launchers/index.json @@ -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 }, { diff --git a/tests/test_install.py b/tests/test_install.py index d0e9260df..6fb058ad4 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -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]) diff --git a/wiki/installer.md b/wiki/installer.md index cf7f3f600..71a289f59 100644 --- a/wiki/installer.md +++ b/wiki/installer.md @@ -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.