mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-06 01:53:56 -06:00
chore: merge accepted cores and one tick list
This commit is contained in:
commit
081a1c24e5
48 files changed
+2266
-1099
No files matched your search
+1
-1
@@ -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 = "403b6e8a7efcd24858b0f46ffa19c2b9012cdeef149768729d8e48d0b68a296a"
|
||||
$defaultInstallSha256 = "5b8bd7b486d236ee1d00439b2bdd4f6fefcf20112abe3b0f1037e38426d80c15"
|
||||
$maximumInstallerBytes = 2MB
|
||||
$installerExit = 0
|
||||
$installer = if ($PSScriptRoot) { Join-Path $PSScriptRoot "install.py" } else { $null }
|
||||
|
||||
+580
-336
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -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="403b6e8a7efcd24858b0f46ffa19c2b9012cdeef149768729d8e48d0b68a296a"
|
||||
DEFAULT_INSTALL_SHA256="5b8bd7b486d236ee1d00439b2bdd4f6fefcf20112abe3b0f1037e38426d80c15"
|
||||
MAX_INSTALLER_BYTES=2097152
|
||||
|
||||
cleanup() {
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
{
|
||||
"dest": "roms/ports/retrobios/install.py",
|
||||
"repo_path": "install.py",
|
||||
"size": 984900,
|
||||
"sha256": "403b6e8a7efcd24858b0f46ffa19c2b9012cdeef149768729d8e48d0b68a296a",
|
||||
"size": 996397,
|
||||
"sha256": "5b8bd7b486d236ee1d00439b2bdd4f6fefcf20112abe3b0f1037e38426d80c15",
|
||||
"executable": false
|
||||
},
|
||||
{
|
||||
@@ -71,8 +71,8 @@
|
||||
"muos": {
|
||||
"archive": {
|
||||
"dest": "ARCHIVE/RetroBIOS.muxapp",
|
||||
"size": 1038077,
|
||||
"sha256": "49b9de6afa23afda4f6c786fa0968c36af1bd2ec9b52cb0927df4c527dcc701c"
|
||||
"size": 1049574,
|
||||
"sha256": "30bbe8a0f78cc7b6bb37b9290c69e2244e0b9217339d9ea695f45c0d7815a263"
|
||||
},
|
||||
"members": [
|
||||
{
|
||||
@@ -92,8 +92,8 @@
|
||||
{
|
||||
"name": "RetroBIOS/install.py",
|
||||
"repo_path": "install.py",
|
||||
"size": 984900,
|
||||
"sha256": "403b6e8a7efcd24858b0f46ffa19c2b9012cdeef149768729d8e48d0b68a296a",
|
||||
"size": 996397,
|
||||
"sha256": "5b8bd7b486d236ee1d00439b2bdd4f6fefcf20112abe3b0f1037e38426d80c15",
|
||||
"executable": false
|
||||
},
|
||||
{
|
||||
@@ -166,8 +166,8 @@
|
||||
{
|
||||
"dest": ".config/modules/retrobios/install.py",
|
||||
"repo_path": "install.py",
|
||||
"size": 984900,
|
||||
"sha256": "403b6e8a7efcd24858b0f46ffa19c2b9012cdeef149768729d8e48d0b68a296a",
|
||||
"size": 996397,
|
||||
"sha256": "5b8bd7b486d236ee1d00439b2bdd4f6fefcf20112abe3b0f1037e38426d80c15",
|
||||
"executable": false
|
||||
},
|
||||
{
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
"scanned",
|
||||
"version",
|
||||
"choices",
|
||||
"set_aside",
|
||||
"file",
|
||||
"system",
|
||||
"checking",
|
||||
@@ -58,6 +59,9 @@
|
||||
{
|
||||
"$ref": "#/$defs/choices"
|
||||
},
|
||||
{
|
||||
"$ref": "#/$defs/set_aside"
|
||||
},
|
||||
{
|
||||
"$ref": "#/$defs/file"
|
||||
},
|
||||
@@ -299,6 +303,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"set_aside": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"event",
|
||||
"platform",
|
||||
"dests"
|
||||
],
|
||||
"properties": {
|
||||
"event": {
|
||||
"const": "set_aside"
|
||||
},
|
||||
"platform": {
|
||||
"type": "string"
|
||||
},
|
||||
"dests": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"file": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
|
||||
@@ -14,12 +14,15 @@ install.py gains has no prose yet: the generator names it and writes nothing,
|
||||
and the row is added by hand inside the markers, its first cell holding the
|
||||
option, kind, code or value alone.
|
||||
|
||||
The run samples (a dry run, a first install, a later check) are printed by
|
||||
install.py itself, run in its own process against the committed
|
||||
install/<platform>.json served on the loopback, from a home and a card made
|
||||
under tmp/ and shown as /home/me and /userdata. Only the transport and the
|
||||
machine are stood in for, see _child. Each is dated by the `generated` field
|
||||
of its list, so a rendering is the same from one day to the next.
|
||||
The run samples (a dry run, a first install, a later check, the reasons a
|
||||
file is refused, a run copying from an old card) are printed by install.py
|
||||
itself, run in its own process against the committed install/<platform>.json
|
||||
served on the loopback, from a home and a card made under tmp/ and shown as
|
||||
/home/me and /userdata. The reasons and the copy are read from a four-file
|
||||
list laid out in that home (SMALL_LIST), whose files are written there. Only
|
||||
the transport and the machine are stood in for, see _child. Each is dated by
|
||||
the `generated` field of its list, so a rendering is the same from one day
|
||||
to the next.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -33,10 +36,12 @@ import json
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import socketserver
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import threading
|
||||
import zipfile
|
||||
from pathlib import Path, PurePosixPath
|
||||
from typing import Callable
|
||||
|
||||
@@ -282,6 +287,44 @@ class _ListHandler(http.server.SimpleHTTPRequestHandler):
|
||||
return
|
||||
|
||||
|
||||
class _LoopbackServer(http.server.ThreadingHTTPServer):
|
||||
"""The list server, named by its number: HTTPServer.server_bind looks
|
||||
127.0.0.1 up with socket.getfqdn, a DNS query wherever /etc/hosts does
|
||||
not name it (code_audit_24 P3-12)."""
|
||||
|
||||
def server_bind(self) -> None:
|
||||
socketserver.TCPServer.server_bind(self)
|
||||
host, port = self.server_address[:2]
|
||||
self.server_name, self.server_port = host, port
|
||||
|
||||
|
||||
# The list the reasons and the copy are shown with: four files, each with
|
||||
# the contents its name says, read as RetroArch's.
|
||||
SMALL_LIST = {
|
||||
"scph5500.bin": (b"J" * 64, ["sony-playstation"], ["japan"], None),
|
||||
"scph5501.bin": (b"U" * 64, ["sony-playstation"], ["north-america"],
|
||||
["beetle_psx", "pcsx_rearmed"]),
|
||||
"gba_bios.bin": (b"G" * 32, ["nintendo-gba"], None, ["mgba"]),
|
||||
"pcsx/extra.bin": (b"E" * 8, ["sony-playstation"], None, ["pcsx_rearmed"]),
|
||||
}
|
||||
|
||||
|
||||
def write_small_list(path: Path) -> None:
|
||||
import hashlib # noqa: PLC0415
|
||||
|
||||
files = []
|
||||
for dest, (data, systems, regions, cores) in SMALL_LIST.items():
|
||||
files.append({"dest": dest, "size": len(data), "sha1": hashlib.sha1(data).hexdigest(),
|
||||
"sha256": hashlib.sha256(data).hexdigest(),
|
||||
"md5": hashlib.md5(data).hexdigest(), "systems": systems,
|
||||
"cores": cores, "repo_path": f"bios/{dest}",
|
||||
**({"regions": regions} if regions else {})})
|
||||
path.write_text(json.dumps({
|
||||
"manifest_version": 2, "platform": "retroarch", "display_name": "RetroArch",
|
||||
"base_destination": "system", "files": files, "total_files": len(files),
|
||||
"total_size": sum(entry["size"] for entry in files)}), encoding="utf-8")
|
||||
|
||||
|
||||
def _child(spec: dict) -> int:
|
||||
"""install.main() as the sample runs it, in its own process. Only the
|
||||
transport and the machine are stood in for: no connection leaves the
|
||||
@@ -300,8 +343,13 @@ def _child(spec: dict) -> int:
|
||||
raise OSError(f"the sample makes no request to {address[0]}")
|
||||
return real_connect(address, *args, **kwargs)
|
||||
|
||||
def landed(f: dict, _bios: Path, _verbose: bool = False, progress: object = None,
|
||||
_copy: object = None) -> tuple[str, bool, str]:
|
||||
real_download = _install._download_one
|
||||
|
||||
def landed(f: dict, bios: Path, verbose: bool = False, progress: object = None,
|
||||
copy: object = None) -> tuple[str, bool, str]:
|
||||
if copy is not None:
|
||||
# A copy from this machine is made for real: it is local.
|
||||
return real_download(f, bios, verbose, progress, copy)
|
||||
if progress is not None:
|
||||
progress.add(f["size"])
|
||||
return f["dest"], True, ""
|
||||
@@ -353,7 +401,7 @@ class Sandbox:
|
||||
config = self.home / ".config" / "retroarch" / "retroarch.cfg"
|
||||
config.parent.mkdir(parents=True)
|
||||
config.write_text(RETROARCH_CFG, encoding="utf-8")
|
||||
self.server = http.server.ThreadingHTTPServer(("127.0.0.1", 0), _ListHandler)
|
||||
self.server = _LoopbackServer(("127.0.0.1", 0), _ListHandler)
|
||||
threading.Thread(target=self.server.serve_forever, daemon=True).start()
|
||||
return self
|
||||
|
||||
@@ -362,26 +410,55 @@ class Sandbox:
|
||||
self.server.server_close()
|
||||
shutil.rmtree(self.root)
|
||||
|
||||
def small(self, kind: str) -> str:
|
||||
"""A run over SMALL_LIST in a home of its own: "refused", a --check
|
||||
of a folder holding a copy of each kind a check names, or "from", a
|
||||
run copying from an old card what it holds and downloading the rest."""
|
||||
home = self.root / kind
|
||||
system = home / ".config" / "retroarch" / "system"
|
||||
system.mkdir(parents=True)
|
||||
(system.parent / "retroarch.cfg").write_text(RETROARCH_CFG, encoding="utf-8")
|
||||
listed = home / "list.json"
|
||||
write_small_list(listed)
|
||||
data = {dest: entry[0] for dest, entry in SMALL_LIST.items()}
|
||||
if kind == "refused":
|
||||
(system / "scph5500.bin").write_bytes(data["scph5500.bin"])
|
||||
(system / "scph5501.bin").write_bytes(data["scph5500.bin"])
|
||||
(system / "system").mkdir()
|
||||
(system / "system" / "gba_bios.bin").write_bytes(data["gba_bios.bin"])
|
||||
with zipfile.ZipFile(system / "PSX BIOS.zip", "w") as archive:
|
||||
archive.writestr("extra.bin", data["pcsx/extra.bin"])
|
||||
# A check that flags a file ends on 1, as documented.
|
||||
return self.run("retroarch", "--check", "--manifest", str(listed), home=home,
|
||||
codes=(1,))
|
||||
old = home / "old"
|
||||
old.mkdir()
|
||||
for dest in ("scph5500.bin", "scph5501.bin"):
|
||||
(old / dest).write_bytes(data[dest])
|
||||
return self.run("retroarch", "--yes", "--manifest", str(listed), "--from", str(old),
|
||||
home=home, landed=True)
|
||||
|
||||
def run(self, platform: str, *argv: str, landed: bool = False,
|
||||
held: bool = False) -> str:
|
||||
held: bool = False, home: Path | None = None, codes: tuple = (0,)) -> str:
|
||||
"""What install.py prints for the run, the sandbox read as a user's
|
||||
home and card."""
|
||||
home = home or self.home
|
||||
card = self.card / "userdata" / "bios" if platform != "retroarch" else None
|
||||
if card is not None:
|
||||
card.mkdir(parents=True, exist_ok=True)
|
||||
spec = {"platform": platform, "argv": ["--plain", "--platform", platform, *argv],
|
||||
"card": str(card) if card else None, "landed": landed, "held": held}
|
||||
env = {"PATH": os.environ.get("PATH", ""), "HOME": str(self.home),
|
||||
env = {"PATH": os.environ.get("PATH", ""), "HOME": str(home),
|
||||
"RETROBIOS_OS": "linux", "LANG": "C.UTF-8",
|
||||
"RETROBIOS_BASE_URL": f"http://127.0.0.1:{self.server.server_address[1]}"}
|
||||
done = subprocess.run(
|
||||
[sys.executable, "-s", "-c", CHILD, json.dumps(spec)],
|
||||
cwd=ROOT, env=env, stdin=subprocess.DEVNULL, capture_output=True, text=True,
|
||||
check=False)
|
||||
if done.returncode != 0:
|
||||
if done.returncode not in codes:
|
||||
raise SampleFailed(f"install.py {' '.join(spec['argv'])} exited "
|
||||
f"{done.returncode}: {done.stderr.strip()[-2000:]}")
|
||||
return done.stdout.replace(str(self.home), SHOWN_HOME).replace(str(self.card), SHOWN_CARD)
|
||||
return done.stdout.replace(str(home), SHOWN_HOME).replace(str(self.card), SHOWN_CARD)
|
||||
|
||||
|
||||
# The runs printed in this process, by what they read: the page is rendered
|
||||
@@ -411,6 +488,14 @@ class _LazySandbox:
|
||||
_RUNS[key] = self.box.run(platform, *argv, **kinds)
|
||||
return _RUNS[key]
|
||||
|
||||
def small(self, kind: str) -> str:
|
||||
key = ("small", kind, _stamp("retroarch"))
|
||||
if key not in _RUNS:
|
||||
if self.box is None:
|
||||
self.box = self.stack.enter_context(Sandbox())
|
||||
_RUNS[key] = self.box.small(kind)
|
||||
return _RUNS[key]
|
||||
|
||||
|
||||
class SampleFailed(Exception):
|
||||
"""A run sample install.py could not print."""
|
||||
@@ -487,9 +572,23 @@ def sample_writers(box: Sandbox) -> dict[str, Callable[[str], str]]:
|
||||
+ _fenced([_bulk_line(box)])),
|
||||
"run-check": lambda _body: _fenced(
|
||||
_lines_from(check_run(), "Checking existing files", " Everything is in place")),
|
||||
"check-refused": lambda _body: _fenced(_refused_lines(box.small("refused"))),
|
||||
"from-run": lambda _body: _fenced(
|
||||
_lines_from(box.small("from"), "Done.", count=2)),
|
||||
}
|
||||
|
||||
|
||||
def _refused_lines(text: str) -> list[str]:
|
||||
"""The files a check flags, each with its reason and where its cores read it."""
|
||||
lines = text.splitlines()
|
||||
start = next((i for i, line in enumerate(lines)
|
||||
if re.fullmatch(r" \d+ files? [a-z ]+:", line)), None)
|
||||
if start is None:
|
||||
raise SampleFailed("the check printed no files not in place")
|
||||
end = max(i for i, line in enumerate(lines) if line.lstrip().startswith("read by "))
|
||||
return lines[start:end + 1]
|
||||
|
||||
|
||||
def render(page: str) -> str:
|
||||
"""The page with each marked table and run sample written from install.py."""
|
||||
writers = {
|
||||
|
||||
@@ -3943,8 +3943,10 @@ def first_screen_words() -> list[str]:
|
||||
# The screen it opens first: the setup found, or the list when none
|
||||
# is. Install comes on the next one, Choose systems beside it and named
|
||||
# above on the page (tui_audit_16 P3-10).
|
||||
return [f"It asks **{installer.TUI_FOUND_TITLE}** (or **{installer.TUI_CHOOSE_TITLE}**), "
|
||||
f"then offers **{installer.TUI_INSTALL_ROW}**."]
|
||||
# Nothing found, the folder comes before Install: which-pack left it
|
||||
# out (tui_audit_17 P3-9).
|
||||
return [f"It asks **{installer.TUI_FOUND_TITLE}** (or **{installer.TUI_CHOOSE_TITLE}** "
|
||||
f"and **{installer.TUI_FOLDER_TITLE}**), then offers **{installer.TUI_INSTALL_ROW}**."]
|
||||
|
||||
|
||||
def check_pass_line() -> str:
|
||||
@@ -4113,8 +4115,7 @@ def only_some_consoles(name: str, prefix: str = "") -> list[str]:
|
||||
"""The way to a smaller download, in the words Get your files uses."""
|
||||
return [
|
||||
f"Only some consoles? [Pick them]({prefix}which-pack.md?platform={name}"
|
||||
f"#only-some-consoles), or choose **{_installer().TUI_SYSTEMS_ROW}** in the "
|
||||
"command.",
|
||||
f"#only-some-consoles), or the command's **{_installer().TUI_SYSTEMS_ROW}**.",
|
||||
"",
|
||||
]
|
||||
|
||||
@@ -11411,8 +11412,8 @@ def generate_which_pack() -> str:
|
||||
"",
|
||||
"## Only some consoles?",
|
||||
"",
|
||||
"Pick them here, and get the files and the command. Or run the command "
|
||||
f"below and choose **{_installer().TUI_SYSTEMS_ROW}**.",
|
||||
"Pick them here, and get the files and the command. Or use the command's "
|
||||
f"**{_installer().TUI_SYSTEMS_ROW}**.",
|
||||
"",
|
||||
"<FilePicker />",
|
||||
"",
|
||||
|
||||
Vendored
+18
-18
@@ -373,6 +373,7 @@
|
||||
^[[0;1m ^[[0;1;32mEverything is in place^[[0m
|
||||
BIOS folder: ^[[0;1m~/.config/retroarch/system^[[0m
|
||||
^[[0;32m5 in place^[[0m, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
^[[0;7;35m > Close^[[0m
|
||||
@@ -404,20 +405,19 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
^[[0;1;35mA/Enter^[[0m Close ^[[0;2mB/Esc^[[0m Back ^[[0;2mY/o^[[0m Options ^[[0;2m?^[[0m Help
|
||||
=== systems
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Choose systems^[[0m
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
^[[0;7;35m > [ ] nintendo-famicom-disk (ファミコン) in place^[[0m
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
^[[0;7;35m > [x] nintendo-gba (gba) 1 file, 16.0 KB^[[0m
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
^[[0;2m [ ] nintendo-famicom-disk (ファミコン) in place^[[0m
|
||||
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
|
||||
@@ -448,7 +448,7 @@
|
||||
|
||||
|
||||
^[[0;1m ^[[0;1;35m2^[[0;1m of ^[[0;1;35m3^[[0;1m systems: ^[[0;1;35m4^[[0;1m files, ^[[0;1;35m1.0 MB^[[0m
|
||||
^[[0;1;35mA/Enter^[[0m Continue ^[[0;2mB/Esc^[[0m Back ^[[0;2mX/Space^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
^[[0;1;35mA/Enter^[[0m Tick ^[[0;2mB/Esc^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== options
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Options^[[0m
|
||||
|
||||
@@ -498,8 +498,8 @@
|
||||
|
||||
^[[0;7;35m > [1] North America^[[0m
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
|
||||
@@ -534,14 +534,15 @@
|
||||
=== cores
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Cores^[[0m
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use: the platform's own
|
||||
files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and a core with no
|
||||
extra file reads only those.
|
||||
|
||||
^[[0;7;35m > All^[[0m
|
||||
^[[0;7;35m > Filter (/ to type)^[[0m
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
|
||||
@@ -570,8 +571,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
^[[0;1;35mA/Enter^[[0m Tick all ^[[0;2mB/Esc^[[0m Back ^[[0;2mX/Space^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
^[[0;1;35mA/Enter^[[0m Filter ^[[0;2mB/Esc^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== preview
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Preview^[[0m
|
||||
|
||||
@@ -742,6 +742,7 @@
|
||||
^[[0;1m ^[[0;1;32m3 installed^[[0;1m, ^[[0;1;31m1 failed^[[0;1m.^[[0m
|
||||
BIOS folder: ^[[0;1m/home/user/.config/retroarch/system^[[0m
|
||||
^[[0;1;31mfailed:^[[0m scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in /home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
--restore /home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
@@ -773,7 +774,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
^[[0;1;35mA/Enter^[[0m Exit
|
||||
|
||||
Vendored
+22
-22
@@ -122,25 +122,25 @@
|
||||
BIOS folder:
|
||||
^[[0;1m~/.config/retroarch/system^[[0m
|
||||
^[[0;32m5 in place^[[0m, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
^[[0;7;35m > Close^[[0m
|
||||
Options
|
||||
|
||||
^[[0;1;35mA^[[0m Close ^[[0;2mB^[[0m Back ^[[0;2mY^[[0m Options ^[[0;2m?^[[0m Help
|
||||
=== systems
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Choose systems^[[0m
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
^[[0;7;35m > [ ] nintendo-famicom-disk in place^[[0m
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
^[[0;7;35m > [x] nintendo-gba (gba) 16.0 KB^[[0m
|
||||
[x] sony-playstation 1.0 MB
|
||||
^[[0;2m [ ] nintendo-famicom-disk in place^[[0m
|
||||
|
||||
|
||||
^[[0;2m 1-3 of 3^[[0m
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
^[[0;1m ^[[0;1;35m2^[[0;1m of ^[[0;1;35m3^[[0;1m systems: ^[[0;1;35m4^[[0;1m files, ^[[0;1;35m1.0 MB^[[0m
|
||||
^[[0;1;35mA^[[0m Continue ^[[0;2mB^[[0m Back ^[[0;2mX^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
^[[0;1;35mA^[[0m Tick ^[[0;2mB^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== options
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Options^[[0m
|
||||
|
||||
@@ -165,21 +165,21 @@
|
||||
|
||||
^[[0;7;35m > [1] North America^[[0m
|
||||
[ ] Japan
|
||||
|
||||
^[[0;2m 1-2 of 2^[[0m
|
||||
^[[0;1;35mA^[[0m Tick ^[[0;2mB^[[0m Done ^[[0;2m<>^[[0m Order ^[[0;2m?^[[0m Help
|
||||
=== cores
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Cores^[[0m
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
^[[0;7;35m > All^[[0m
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
^[[0;1;35mA^[[0m Tick all ^[[0;2mB^[[0m Back ^[[0;2mX^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
^[[0;7;35m > Filter (/ to type)^[[0m
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
^[[0;2m 1-2 of 2^[[0m
|
||||
^[[0;1;35mA^[[0m Filter ^[[0;2mB^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== preview
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Preview^[[0m
|
||||
|
||||
@@ -239,11 +239,11 @@
|
||||
BIOS folder:
|
||||
^[[0;1m/home/user/.config/retroarch/system^[[0m
|
||||
^[[0;1;31mfailed:^[[0m scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
^[[0;2m 1-8 of 16^[[0m
|
||||
^[[0;2m 1-8 of 17^[[0m
|
||||
^[[0;1;35mA^[[0m Exit ^[[0;2m^v^[[0m Scroll
|
||||
=== error
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: ^[[0;1;31mSomething went wrong^[[0m
|
||||
|
||||
Vendored
+24
-24
@@ -149,31 +149,31 @@
|
||||
BIOS folder:
|
||||
^[[0;1m~/.config/retroarch/system^[[0m
|
||||
^[[0;32m5 in place^[[0m, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
^[[0;7;35m > Close^[[0m
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
^[[0;1;35mA^[[0m Close ^[[0;2mB^[[0m Back ^[[0;2mY^[[0m Options ^[[0;2m?^[[0m Help
|
||||
=== systems
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Choose systems^[[0m
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
^[[0;7;35m > [ ] nintendo-famicom-disk in place^[[0m
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
^[[0;7;35m > [x] nintendo-gba (gba) 16.0 KB^[[0m
|
||||
[x] sony-playstation 1.0 MB
|
||||
^[[0;2m [ ] nintendo-famicom-disk in place^[[0m
|
||||
|
||||
|
||||
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
^[[0;1m ^[[0;1;35m2^[[0;1m of ^[[0;1;35m3^[[0;1m systems: ^[[0;1;35m4^[[0;1m files, ^[[0;1;35m1.0 MB^[[0m
|
||||
^[[0;1;35mA^[[0m Continue ^[[0;2mB^[[0m Back ^[[0;2mX^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
^[[0;1;35mA^[[0m Tick ^[[0;2mB^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== options
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Options^[[0m
|
||||
|
||||
@@ -201,27 +201,27 @@
|
||||
|
||||
^[[0;7;35m > [1] North America^[[0m
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
^[[0;1;35mA^[[0m Tick ^[[0;2mB^[[0m Done ^[[0;2m<>^[[0m Order ^[[0;2m?^[[0m Help
|
||||
=== cores
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Cores^[[0m
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
^[[0;7;35m > All^[[0m
|
||||
^[[0;7;35m > Filter (/ to type)^[[0m
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
^[[0;1;35mA^[[0m Tick all ^[[0;2mB^[[0m Back ^[[0;2mX^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
^[[0;1;35mA^[[0m Filter ^[[0;2mB^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== preview
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Preview^[[0m
|
||||
|
||||
@@ -293,14 +293,14 @@
|
||||
BIOS folder:
|
||||
^[[0;1m/home/user/.config/retroarch/system^[[0m
|
||||
^[[0;1;31mfailed:^[[0m scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
--restore .../2026-10-23_1200
|
||||
^[[0;2m Shortened to fit this window.^[[0m
|
||||
Same choice without questions:
|
||||
^[[0;2m 1-11 of 16^[[0m
|
||||
^[[0;2m 1-11 of 17^[[0m
|
||||
^[[0;1;35mA^[[0m Exit ^[[0;2m^v^[[0m Scroll
|
||||
=== error
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: ^[[0;1;31mSomething went wrong^[[0m
|
||||
|
||||
Vendored
+18
-18
@@ -229,6 +229,7 @@
|
||||
^[[0;1m ^[[0;1;32mEverything is in place^[[0m
|
||||
BIOS folder: ^[[0;1m~/.config/retroarch/system^[[0m
|
||||
^[[0;32m5 in place^[[0m, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
^[[0;7;35m > Close^[[0m
|
||||
@@ -246,18 +247,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
^[[0;1;35mA/Enter^[[0m Close ^[[0;2mB/Esc^[[0m Back ^[[0;2mY/o^[[0m Options ^[[0;2m?^[[0m Help
|
||||
=== systems
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Choose systems^[[0m
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
^[[0;7;35m > [ ] nintendo-famicom-disk (ファミコン) in place^[[0m
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
^[[0;7;35m > [x] nintendo-gba (gba) 1 file, 16.0 KB^[[0m
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
^[[0;2m [ ] nintendo-famicom-disk (ファミコン) in place^[[0m
|
||||
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
|
||||
|
||||
^[[0;1m ^[[0;1;35m2^[[0;1m of ^[[0;1;35m3^[[0;1m systems: ^[[0;1;35m4^[[0;1m files, ^[[0;1;35m1.0 MB^[[0m
|
||||
^[[0;1;35mA/Enter^[[0m Continue ^[[0;2mB/Esc^[[0m Back ^[[0;2mX/Space^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
^[[0;1;35mA/Enter^[[0m Tick ^[[0;2mB/Esc^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== options
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Options^[[0m
|
||||
|
||||
@@ -307,8 +307,8 @@
|
||||
|
||||
^[[0;7;35m > [1] North America^[[0m
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
|
||||
@@ -326,14 +326,15 @@
|
||||
=== cores
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Cores^[[0m
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
^[[0;7;35m > All^[[0m
|
||||
^[[0;7;35m > Filter (/ to type)^[[0m
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
^[[0;32mDone^[[0m
|
||||
|
||||
|
||||
|
||||
@@ -346,8 +347,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
^[[0;1;35mA/Enter^[[0m Tick all ^[[0;2mB/Esc^[[0m Back ^[[0;2mX/Space^[[0m Tick ^[[0;2m?^[[0m Help
|
||||
^[[0;1;35mA/Enter^[[0m Filter ^[[0;2mB/Esc^[[0m Done ^[[0;2m?^[[0m Help
|
||||
=== preview
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: Preview^[[0m
|
||||
|
||||
@@ -454,6 +454,7 @@
|
||||
^[[0;1m ^[[0;1;32m3 installed^[[0;1m, ^[[0;1;31m1 failed^[[0;1m.^[[0m
|
||||
BIOS folder: ^[[0;1m/home/user/.config/retroarch/system^[[0m
|
||||
^[[0;1;31mfailed:^[[0m scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
@@ -471,7 +472,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
^[[0;1;35mA/Enter^[[0m Exit
|
||||
=== error
|
||||
^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: ^[[0;1;31mSomething went wrong^[[0m
|
||||
|
||||
Vendored
+8
-8
@@ -1,13 +1,14 @@
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use: the platform's own
|
||||
files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and a core with no
|
||||
extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (/ to type)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -36,5 +37,4 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A/Enter Tick all B/Esc Back X/Space Tick ? Help
|
||||
A/Enter Filter B/Esc Done ? Help
|
||||
Vendored
+10
-10
@@ -1,12 +1,12 @@
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
> All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
A Tick all B Back X Tick ? Help
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> Filter (/ to type)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
1-2 of 2
|
||||
A Filter B Done ? Help
|
||||
Vendored
+10
-10
@@ -1,15 +1,15 @@
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> All
|
||||
> Filter (/ to type)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
A Tick all B Back X Tick ? Help
|
||||
A Filter B Done ? Help
|
||||
Vendored
+8
-8
@@ -1,13 +1,14 @@
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (/ to type)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -20,5 +21,4 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A/Enter Tick all B/Esc Back X/Space Tick ? Help
|
||||
A/Enter Filter B/Esc Done ? Help
|
||||
+1
-1
@@ -3,6 +3,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -34,7 +35,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
A/Enter Close B/Esc Back Y/o Options ? Help
|
||||
+2
-2
@@ -4,9 +4,9 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
A Close B Back Y Options ? Help
|
||||
+2
-2
@@ -4,12 +4,12 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
A Close B Back Y Options ? Help
|
||||
+1
-1
@@ -3,6 +3,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -20,5 +21,4 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A/Enter Close B/Esc Back Y/o Options ? Help
|
||||
+2
-2
@@ -5,8 +5,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -8,5 +8,5 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
1-2 of 2
|
||||
A Tick B Done <> Order ? Help
|
||||
Vendored
+2
-2
@@ -8,8 +8,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
A Tick B Done <> Order ? Help
|
||||
Vendored
+2
-2
@@ -6,8 +6,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -3,6 +3,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in /home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
--restore /home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
@@ -34,7 +35,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
A/Enter Exit
|
||||
Vendored
+2
-2
@@ -4,9 +4,9 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
1-8 of 16
|
||||
1-8 of 17
|
||||
A Exit ^v Scroll
|
||||
Vendored
+2
-2
@@ -4,12 +4,12 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
--restore .../2026-10-23_1200
|
||||
Shortened to fit this window.
|
||||
Same choice without questions:
|
||||
1-11 of 16
|
||||
1-11 of 17
|
||||
A Exit ^v Scroll
|
||||
Vendored
+1
-1
@@ -3,6 +3,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
@@ -20,5 +21,4 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A/Enter Exit
|
||||
Vendored
+62
-62
@@ -462,11 +462,11 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
A Close B Back Y Options
|
||||
=== plan-in-place 40x15
|
||||
RetroBIOS: RetroArch
|
||||
@@ -475,14 +475,14 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
A Close B Back Y Options
|
||||
=== plan-in-place 80x24
|
||||
RetroBIOS: RetroArch
|
||||
@@ -490,6 +490,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -507,47 +508,46 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Close B Back Y Options
|
||||
=== systems 40x12
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
1-3 of 3
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== systems 40x15
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
|
||||
Done
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== systems 80x24
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -562,7 +562,7 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== options 40x12
|
||||
RetroBIOS: Options
|
||||
|
||||
@@ -628,7 +628,7 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
1-2 of 2
|
||||
A Tick B Done <> Order
|
||||
=== regions 40x15
|
||||
RetroBIOS: Preferred regions
|
||||
@@ -641,8 +641,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
A Tick B Done <> Order
|
||||
@@ -655,8 +655,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -674,43 +674,44 @@
|
||||
=== cores 40x12
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
> All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
A Tick all B Back X Tick
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
1-2 of 2
|
||||
A Filter B Done
|
||||
=== cores 40x15
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
A Tick all B Back X Tick
|
||||
A Filter B Done
|
||||
=== cores 80x24
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -723,8 +724,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Tick all B Back X Tick
|
||||
A Filter B Done
|
||||
=== preview 80x24
|
||||
RetroBIOS: Preview
|
||||
|
||||
@@ -890,11 +890,11 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
|
||||
A Exit
|
||||
=== result 40x15
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -903,6 +903,7 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
@@ -910,7 +911,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== result 80x24
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -918,6 +918,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
@@ -935,7 +936,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== error 40x12
|
||||
RetroBIOS: Something went wrong
|
||||
|
||||
+62
-62
@@ -462,11 +462,11 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
A Close B Back Y Options
|
||||
=== plan-in-place 40x15
|
||||
RetroBIOS: RetroArch
|
||||
@@ -475,14 +475,14 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
A Close B Back Y Options
|
||||
=== plan-in-place 80x24
|
||||
RetroBIOS: RetroArch
|
||||
@@ -490,6 +490,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -507,47 +508,46 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Close B Back Y Options
|
||||
=== systems 40x12
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
1-3 of 3
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== systems 40x15
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
|
||||
Done
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== systems 80x24
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -562,7 +562,7 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== options 40x12
|
||||
RetroBIOS: Options
|
||||
|
||||
@@ -628,7 +628,7 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
1-2 of 2
|
||||
A Tick B Done <> Order
|
||||
=== regions 40x15
|
||||
RetroBIOS: Preferred regions
|
||||
@@ -641,8 +641,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
A Tick B Done <> Order
|
||||
@@ -655,8 +655,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -674,43 +674,44 @@
|
||||
=== cores 40x12
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
> All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
A Tick all B Back X Tick
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
1-2 of 2
|
||||
A Filter B Done
|
||||
=== cores 40x15
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
A Tick all B Back X Tick
|
||||
A Filter B Done
|
||||
=== cores 80x24
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -723,8 +724,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Tick all B Back X Tick
|
||||
A Filter B Done
|
||||
=== preview 80x24
|
||||
RetroBIOS: Preview
|
||||
|
||||
@@ -890,11 +890,11 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
|
||||
A Exit
|
||||
=== result 40x15
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -903,6 +903,7 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
@@ -910,7 +911,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== result 80x24
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -918,6 +918,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
@@ -935,7 +936,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== error 40x12
|
||||
RetroBIOS: Something went wrong
|
||||
|
||||
+62
-62
@@ -462,11 +462,11 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
A Close B Back Y Options
|
||||
=== plan-in-place 40x15
|
||||
RetroBIOS: RetroArch
|
||||
@@ -475,14 +475,14 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
A Close B Back Y Options
|
||||
=== plan-in-place 80x24
|
||||
RetroBIOS: RetroArch
|
||||
@@ -490,6 +490,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -507,47 +508,46 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Close B Back Y Options
|
||||
=== systems 40x12
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
1-3 of 3
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== systems 40x15
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
|
||||
Done
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== systems 80x24
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -562,7 +562,7 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick
|
||||
A Tick B Done
|
||||
=== options 40x12
|
||||
RetroBIOS: Options
|
||||
|
||||
@@ -628,7 +628,7 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
1-2 of 2
|
||||
A Tick B Done <> Order
|
||||
=== regions 40x15
|
||||
RetroBIOS: Preferred regions
|
||||
@@ -641,8 +641,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
A Tick B Done <> Order
|
||||
@@ -655,8 +655,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -674,43 +674,44 @@
|
||||
=== cores 40x12
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
> All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
A Tick all B Back X Tick
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
1-2 of 2
|
||||
A Filter B Done
|
||||
=== cores 40x15
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
A Tick all B Back X Tick
|
||||
A Filter B Done
|
||||
=== cores 80x24
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -723,8 +724,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Tick all B Back X Tick
|
||||
A Filter B Done
|
||||
=== preview 80x24
|
||||
RetroBIOS: Preview
|
||||
|
||||
@@ -890,11 +890,11 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
|
||||
A Exit
|
||||
=== result 40x15
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -903,6 +903,7 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
@@ -910,7 +911,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== result 80x24
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -918,6 +918,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
@@ -935,7 +936,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== error 40x12
|
||||
RetroBIOS: Something went wrong
|
||||
|
||||
Vendored
+64
-64
@@ -437,11 +437,11 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
Enter Close Esc Back o Options
|
||||
=== plan-in-place 40x15
|
||||
RetroBIOS: RetroArch
|
||||
@@ -450,14 +450,14 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
Enter Close Esc Back o Options
|
||||
=== plan-in-place 80x24
|
||||
RetroBIOS: RetroArch
|
||||
@@ -465,6 +465,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -482,47 +483,46 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Enter Close Esc Back o Options ? Help
|
||||
=== systems 40x12
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
1-3 of 3
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Enter Continue Esc Back Space Tick
|
||||
Enter Tick Esc Done ? Help
|
||||
=== systems 40x15
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
|
||||
Done
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Enter Continue Esc Back Space Tick
|
||||
Enter Tick Esc Done ? Help
|
||||
=== systems 80x24
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -537,7 +537,7 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Enter Continue Esc Back Space Tick ? Help
|
||||
Enter Tick Esc Done ? Help
|
||||
=== options 40x12
|
||||
RetroBIOS: Options
|
||||
|
||||
@@ -603,7 +603,7 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
1-2 of 2
|
||||
Enter Tick Esc Done <> Order ? Help
|
||||
=== regions 40x15
|
||||
RetroBIOS: Preferred regions
|
||||
@@ -616,8 +616,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
Enter Tick Esc Done <> Order ? Help
|
||||
@@ -630,8 +630,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -649,43 +649,44 @@
|
||||
=== cores 40x12
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
> All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Enter Tick all Esc Back Space Tick
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> Filter (/ to type)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
1-2 of 2
|
||||
Enter Filter Esc Done ? Help
|
||||
=== cores 40x15
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> All
|
||||
> Filter (/ to type)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
Enter Tick all Esc Back Space Tick
|
||||
Enter Filter Esc Done ? Help
|
||||
=== cores 80x24
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (/ to type)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -698,8 +699,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Enter Tick all Esc Back Space Tick ? Help
|
||||
Enter Filter Esc Done ? Help
|
||||
=== preview 40x12
|
||||
RetroBIOS: Preview
|
||||
|
||||
@@ -923,11 +923,11 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
1-8 of 16
|
||||
1-8 of 17
|
||||
Enter Exit ^v Scroll
|
||||
=== result 40x15
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -936,14 +936,14 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
--restore .../2026-10-23_1200
|
||||
Shortened to fit this window.
|
||||
Same choice without questions:
|
||||
1-11 of 16
|
||||
1-11 of 17
|
||||
Enter Exit ^v Scroll
|
||||
=== result 80x24
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -951,6 +951,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
To put them back: python3 install.py \
|
||||
@@ -968,7 +969,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Enter Exit
|
||||
=== error 40x12
|
||||
RetroBIOS: Something went wrong
|
||||
|
||||
Vendored
+62
-62
@@ -491,11 +491,11 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
A Close R2 Back L2 Options
|
||||
=== plan-in-place 40x15
|
||||
RetroBIOS: RetroArch
|
||||
@@ -504,14 +504,14 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
A Close R2 Back L2 Options
|
||||
=== plan-in-place 80x24
|
||||
RetroBIOS: RetroArch
|
||||
@@ -519,6 +519,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -536,47 +537,46 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Close R2 Back L2 Options
|
||||
=== systems 40x12
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
1-3 of 3
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Start Continue A Tick R2 Back
|
||||
A Tick R2 Done
|
||||
=== systems 40x15
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
|
||||
Done
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Start Continue A Tick R2 Back
|
||||
A Tick R2 Done
|
||||
=== systems 80x24
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (with a keyboard)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Start Continue A Tick R2 Back
|
||||
A Tick R2 Done
|
||||
=== options 40x12
|
||||
RetroBIOS: Options
|
||||
|
||||
@@ -657,7 +657,7 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
1-2 of 2
|
||||
A Tick R2 Done <> Order
|
||||
=== regions 40x15
|
||||
RetroBIOS: Preferred regions
|
||||
@@ -670,8 +670,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
A Tick R2 Done <> Order
|
||||
@@ -684,8 +684,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -703,43 +703,44 @@
|
||||
=== cores 40x12
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
> All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
A Tick all R2 Back
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
1-2 of 2
|
||||
A Filter R2 Done
|
||||
=== cores 40x15
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
A Tick all R2 Back
|
||||
A Filter R2 Done
|
||||
=== cores 80x24
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (with a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (with a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -752,8 +753,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Tick all R2 Back
|
||||
A Filter R2 Done
|
||||
=== preview 80x24
|
||||
RetroBIOS: Preview
|
||||
|
||||
@@ -919,11 +919,11 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
|
||||
A Exit
|
||||
=== result 40x15
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -932,6 +932,7 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
@@ -939,7 +940,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== result 80x24
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -947,6 +947,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
@@ -964,7 +965,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
A Exit
|
||||
=== error 40x12
|
||||
RetroBIOS: Something went wrong
|
||||
|
||||
Vendored
+62
-62
@@ -491,11 +491,11 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
Start Close B Back
|
||||
=== plan-in-place 40x15
|
||||
RetroBIOS: RetroArch
|
||||
@@ -504,14 +504,14 @@
|
||||
BIOS folder:
|
||||
~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced,
|
||||
the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
Options
|
||||
|
||||
|
||||
|
||||
|
||||
Start Close B Back
|
||||
=== plan-in-place 80x24
|
||||
RetroBIOS: RetroArch
|
||||
@@ -519,6 +519,7 @@
|
||||
Everything is in place
|
||||
BIOS folder: ~/.config/retroarch/system
|
||||
5 in place, 0 missing, 0 wrong copies
|
||||
1 of the 0 wrong copies is replaced, the old one kept in a backup folder.
|
||||
Free space: 50.0 GB
|
||||
|
||||
> Close
|
||||
@@ -536,47 +537,46 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Start Close B Back
|
||||
=== systems 40x12
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (Select shows a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
1-3 of 3
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Start Continue B Back Y Tick
|
||||
Start Tick B Done
|
||||
=== systems 40x15
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (Select shows a keyboard)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (Select shows a keyboard)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
|
||||
Done
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Start Continue B Back Y Tick
|
||||
Start Tick B Done
|
||||
=== systems 80x24
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (Select shows a keyboard)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (Select shows a keyboard)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
Start Continue B Back Y Tick
|
||||
Start Tick B Done
|
||||
=== options 40x12
|
||||
RetroBIOS: Options
|
||||
|
||||
@@ -657,7 +657,7 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
1-2 of 2
|
||||
Start Tick B Done <> Order
|
||||
=== regions 40x15
|
||||
RetroBIOS: Preferred regions
|
||||
@@ -670,8 +670,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
Start Tick B Done <> Order
|
||||
@@ -684,8 +684,8 @@
|
||||
|
||||
> [1] North America
|
||||
[ ] Japan
|
||||
|
||||
|
||||
None
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -703,43 +703,44 @@
|
||||
=== cores 40x12
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
> All
|
||||
None
|
||||
Filter (Select shows a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Start Tick all B Back Y Tick
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> Filter (Select shows a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
1-2 of 2
|
||||
Start Filter B Done
|
||||
=== cores 40x15
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's
|
||||
files. Untick the cores you do not
|
||||
use: the platform's own files are
|
||||
always kept.
|
||||
Untick the cores you do not use: the
|
||||
platform's own files are always
|
||||
kept, and a core with no extra file
|
||||
reads only those.
|
||||
|
||||
> All
|
||||
> Filter (Select shows a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (Select shows a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
Start Tick all B Back Y Tick
|
||||
Start Filter B Done
|
||||
=== cores 80x24
|
||||
RetroBIOS: Cores
|
||||
|
||||
Every core ticked keeps every core's files. Untick the cores you do not use:
|
||||
the platform's own files are always kept.
|
||||
Untick the cores you do not use: the platform's own files are always kept, and
|
||||
a core with no extra file reads only those.
|
||||
|
||||
> All
|
||||
> Filter (Select shows a keyboard)
|
||||
[ ] mesen 1 file, 8.0 KB
|
||||
[x] pcsx_rearmed 1 file, 4 B
|
||||
All
|
||||
None
|
||||
Filter (Select shows a keyboard)
|
||||
[ ] mesen
|
||||
[x] pcsx_rearmed
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -752,8 +753,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Start Tick all B Back Y Tick
|
||||
Start Filter B Done
|
||||
=== preview 40x12
|
||||
RetroBIOS: Preview
|
||||
|
||||
@@ -977,11 +977,11 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
|
||||
Start Exit
|
||||
=== result 40x15
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -990,6 +990,7 @@
|
||||
BIOS folder:
|
||||
/home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/
|
||||
retrobios-backup/2026-10-23_1200
|
||||
@@ -997,7 +998,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Start Exit
|
||||
=== result 80x24
|
||||
RetroBIOS: Finished with errors
|
||||
@@ -1005,6 +1005,7 @@
|
||||
3 installed, 1 failed.
|
||||
BIOS folder: /home/user/.config/retroarch/system
|
||||
failed: scph5500.bin (HTTP 404)
|
||||
Run it again to retry only those.
|
||||
The files it replaced are kept in
|
||||
/home/user/.config/retroarch/retrobios-backup/2026-10-23_1200
|
||||
Details: /tmp/retrobios-x/install.log
|
||||
@@ -1022,7 +1023,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Start Exit
|
||||
=== error 40x12
|
||||
RetroBIOS: Something went wrong
|
||||
|
||||
+6
-6
@@ -1,12 +1,12 @@
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -37,4 +37,4 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A/Enter Continue B/Esc Back X/Space Tick ? Help
|
||||
A/Enter Tick B/Esc Done ? Help
|
||||
Vendored
+7
-7
@@ -1,12 +1,12 @@
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
1-3 of 3
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick ? Help
|
||||
A Tick B Done ? Help
|
||||
Vendored
+8
-8
@@ -1,15 +1,15 @@
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
> [ ] nintendo-famicom-disk in place
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
> [x] nintendo-gba (gba) 16.0 KB
|
||||
[x] sony-playstation 1.0 MB
|
||||
[ ] nintendo-famicom-disk in place
|
||||
|
||||
|
||||
|
||||
Done
|
||||
|
||||
|
||||
nintendo-famicom-disk (ファミコン): in
|
||||
place
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A Continue B Back X Tick ? Help
|
||||
A Tick B Done ? Help
|
||||
Vendored
+6
-6
@@ -1,12 +1,12 @@
|
||||
RetroBIOS: Choose systems
|
||||
|
||||
Filter (/ to type)
|
||||
[x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
> [ ] nintendo-famicom-disk (ファミコン) in place
|
||||
All
|
||||
None
|
||||
Filter (/ to type)
|
||||
> [x] nintendo-gba (gba) 1 file, 16.0 KB
|
||||
[x] sony-playstation 3 files, 1.0 MB
|
||||
[ ] nintendo-famicom-disk (ファミコン) in place
|
||||
|
||||
Done
|
||||
|
||||
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
|
||||
|
||||
2 of 3 systems: 4 files, 1.0 MB
|
||||
A/Enter Continue B/Esc Back X/Space Tick ? Help
|
||||
A/Enter Tick B/Esc Done ? Help
|
||||
@@ -0,0 +1,33 @@
|
||||
"""The guard a test module turns on for itself and the Python it starts
|
||||
(sitecustomize). module_guard() gives the setUpModule and tearDownModule
|
||||
pair: the module fails at its end when anything tried to leave the loopback."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Callable
|
||||
|
||||
from .sitecustomize import disable, enable, refused
|
||||
|
||||
__all__ = ["module_guard", "enable", "disable", "refused"]
|
||||
|
||||
|
||||
def module_guard(name: str) -> tuple[Callable[[], None], Callable[[], None]]:
|
||||
log = Path(__file__).resolve().parents[2] / "tmp" / "tests" / f"netlog-{name}-{os.getpid()}"
|
||||
state: dict = {}
|
||||
|
||||
def set_up() -> None:
|
||||
log.parent.mkdir(parents=True, exist_ok=True)
|
||||
state["before"] = enable(str(log))
|
||||
|
||||
def tear_down() -> None:
|
||||
disable(state.pop("before", {}))
|
||||
tried = refused(str(log))
|
||||
log.unlink(missing_ok=True)
|
||||
if tried:
|
||||
raise AssertionError(
|
||||
f"{len(tried)} connections off the loopback during {name} (pid host): "
|
||||
+ ", ".join(tried[:10]))
|
||||
|
||||
return set_up, tear_down
|
||||
@@ -0,0 +1,135 @@
|
||||
"""The machine running the installer tests, kept out of them.
|
||||
|
||||
Python imports this module at start in every process a test starts with
|
||||
tests/netguard on PYTHONPATH (enable), and the test module
|
||||
calls guard() for its own process. Two things the host has never reach a
|
||||
test: a connection off the loopback, which is refused (OSError, as a network
|
||||
that is down) and written to RETROBIOS_TEST_NETLOG, and the cards and drives
|
||||
mounted under /media, /run/media, /mnt and /Volumes, which read as folders
|
||||
no drive is mounted on. A test module passed on a machine with no network
|
||||
and no card, and failed with an AmberELEC card in the reader, while 261
|
||||
connections to GitHub left the module in a run (code_audit_24 P3-13).
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import errno
|
||||
import os
|
||||
import socket
|
||||
import sys
|
||||
|
||||
LOOPBACK = frozenset({"127.0.0.1", "::1", "localhost", "0.0.0.0", ""})
|
||||
MOUNT_ROOTS = ("/media", "/run/media", "/mnt", "/Volumes")
|
||||
NETLOG = "RETROBIOS_TEST_NETLOG"
|
||||
# What guard() replaced, for unguard().
|
||||
_SAVED: dict = {}
|
||||
|
||||
|
||||
def _refuse(host: object) -> None:
|
||||
where = os.environ.get(NETLOG)
|
||||
# A name under .invalid never resolves (RFC 2606): a test names one to
|
||||
# fail on purpose, refused here before its DNS query leaves.
|
||||
if where and not str(host).endswith(".invalid"):
|
||||
with open(where, "a", encoding="utf-8") as log:
|
||||
log.write(f"{os.getpid()} {host} {' '.join(sys.argv)[:300]}\n")
|
||||
raise OSError(errno.ENETUNREACH, f"a test makes no request to {host}")
|
||||
|
||||
|
||||
def guard() -> None:
|
||||
"""Refuse every connection off the loopback, hide the host's mounts."""
|
||||
if _SAVED:
|
||||
return
|
||||
_SAVED.update(connect=socket.socket.__dict__.get("connect"),
|
||||
connect_ex=socket.socket.__dict__.get("connect_ex"),
|
||||
getaddrinfo=socket.getaddrinfo, ismount=os.path.ismount)
|
||||
connect = socket.socket.connect
|
||||
connect_ex = socket.socket.connect_ex
|
||||
getaddrinfo = socket.getaddrinfo
|
||||
|
||||
def host_of(address: object) -> object:
|
||||
return address[0] if isinstance(address, tuple) and address else None
|
||||
|
||||
def checked(sock: socket.socket, address: object) -> None:
|
||||
if sock.family in (socket.AF_INET, socket.AF_INET6) and \
|
||||
host_of(address) not in LOOPBACK:
|
||||
_refuse(host_of(address))
|
||||
|
||||
def guarded_connect(self: socket.socket, address: object) -> None:
|
||||
checked(self, address)
|
||||
return connect(self, address)
|
||||
|
||||
def guarded_connect_ex(self: socket.socket, address: object) -> int:
|
||||
checked(self, address)
|
||||
return connect_ex(self, address)
|
||||
|
||||
def guarded_getaddrinfo(host: object, *args: object, **kwargs: object) -> list:
|
||||
if host is not None and str(host) not in LOOPBACK:
|
||||
_refuse(host)
|
||||
return getaddrinfo(host, *args, **kwargs)
|
||||
|
||||
socket.socket.connect = guarded_connect # type: ignore[method-assign]
|
||||
socket.socket.connect_ex = guarded_connect_ex # type: ignore[method-assign]
|
||||
socket.getaddrinfo = guarded_getaddrinfo # type: ignore[assignment]
|
||||
|
||||
ismount = os.path.ismount
|
||||
|
||||
def guarded_ismount(path: object) -> bool:
|
||||
text = os.fspath(path) if not isinstance(path, str) else path
|
||||
if isinstance(text, bytes):
|
||||
text = text.decode(errors="replace")
|
||||
if any(text == root or text.startswith(root + "/") for root in MOUNT_ROOTS):
|
||||
return False
|
||||
return ismount(path)
|
||||
|
||||
os.path.ismount = guarded_ismount # type: ignore[assignment]
|
||||
|
||||
|
||||
def unguard() -> None:
|
||||
"""The process as it was before guard()."""
|
||||
if not _SAVED:
|
||||
return
|
||||
for name in ("connect", "connect_ex"):
|
||||
if _SAVED[name] is None:
|
||||
delattr(socket.socket, name)
|
||||
else:
|
||||
setattr(socket.socket, name, _SAVED[name])
|
||||
socket.getaddrinfo = _SAVED["getaddrinfo"]
|
||||
os.path.ismount = _SAVED["ismount"]
|
||||
_SAVED.clear()
|
||||
|
||||
|
||||
def enable(log: str) -> dict:
|
||||
"""Guard this process and every Python it starts, the refusals written
|
||||
to log. Returns the variables it changed, for disable()."""
|
||||
before = {name: os.environ.get(name) for name in ("PYTHONPATH", NETLOG)}
|
||||
here = os.path.dirname(os.path.abspath(__file__))
|
||||
paths = [here, *[p for p in os.environ.get("PYTHONPATH", "").split(os.pathsep) if p]]
|
||||
os.environ["PYTHONPATH"] = os.pathsep.join(dict.fromkeys(paths))
|
||||
os.environ[NETLOG] = log
|
||||
with open(log, "w", encoding="utf-8"):
|
||||
pass
|
||||
guard()
|
||||
return before
|
||||
|
||||
|
||||
def disable(before: dict) -> None:
|
||||
"""This process and the Python it starts as before enable()."""
|
||||
unguard()
|
||||
for name, value in before.items():
|
||||
if value is None:
|
||||
os.environ.pop(name, None)
|
||||
else:
|
||||
os.environ[name] = value
|
||||
|
||||
|
||||
def refused(log: str) -> list[str]:
|
||||
"""The connections refused since enable(log), one line each."""
|
||||
try:
|
||||
with open(log, encoding="utf-8") as text:
|
||||
return [line.strip() for line in text if line.strip()]
|
||||
except OSError:
|
||||
return []
|
||||
|
||||
|
||||
if os.environ.get(NETLOG):
|
||||
guard()
|
||||
@@ -175,6 +175,59 @@ class InstallerOutputExample(unittest.TestCase):
|
||||
self.assertLessEqual(abs(added - float(total) * units[unit]), 0.15 * units[unit])
|
||||
|
||||
|
||||
class InstallerSamplesSayWhatTheCodePrints(unittest.TestCase):
|
||||
"""code_audit_24 P3-8 to P3-12: samples typed by hand outside the
|
||||
generated blocks, a sentence on a log read as the terminal's, pages that
|
||||
described the generator as tables alone, and a sandbox that asked DNS."""
|
||||
|
||||
def test_the_refused_and_from_samples_are_generated(self):
|
||||
import install
|
||||
|
||||
page = _page("installer.md")
|
||||
refused = _generated(page, "check-refused")
|
||||
self.assertRegex(refused, r"\n \d+ files? [a-z ]+:\n")
|
||||
self.assertIn("read by beetle_psx, pcsx_rearmed at", refused)
|
||||
self.assertNotRegex(page, r"opened at /\S+ by ")
|
||||
self.assertIn('"read by ', inspect.getsource(install.opened_line))
|
||||
ending = _generated(page, "from-run")
|
||||
self.assertRegex(ending, r"Done\. \d+ files installed\.\n \d+ files copied from ")
|
||||
self.assertNotIn("a line under\n`Done`", page)
|
||||
self.assertNotIn("38 files copied from E:\\, 4 downloaded", page)
|
||||
|
||||
def test_one_line_per_file_is_said_of_a_log(self):
|
||||
page = _page("installer.md")
|
||||
at = page.index("<!-- generated: run-download -->")
|
||||
before = page[page.rindex("\n\n", 0, at - 2):at]
|
||||
self.assertIn("At a terminal one progress line", before)
|
||||
self.assertIn("A pipe or a log gets one line per file", before)
|
||||
|
||||
def test_the_generator_pages_name_the_run_samples_and_step_7(self):
|
||||
tools = _page("tools.md")
|
||||
row = next(line for line in tools.splitlines()
|
||||
if line.startswith("| `generate_installer_doc.py`"))
|
||||
self.assertIn("run samples", row)
|
||||
self.assertIn("generate_installer_doc.py", next(
|
||||
line for line in tools.splitlines() if line.startswith("| 7 |")))
|
||||
self.assertIn("run samples", _page("installer.md").split(
|
||||
"The tables of options, events, exit codes, keys and card markers", 1)[1][:600])
|
||||
self.assertIn("generate_installer_doc.py", next(
|
||||
line for line in _page("adding-a-platform.md").splitlines()
|
||||
if line.startswith("7. ")))
|
||||
|
||||
def test_the_sandbox_looks_nothing_up(self):
|
||||
import socket
|
||||
from unittest import mock
|
||||
|
||||
import generate_installer_doc
|
||||
|
||||
def no_lookup(*_args: object) -> str:
|
||||
raise AssertionError("the sandbox asked for a name")
|
||||
|
||||
with mock.patch.object(socket, "getfqdn", no_lookup), \
|
||||
generate_installer_doc.Sandbox() as box:
|
||||
self.assertEqual(box.server.server_name, "127.0.0.1")
|
||||
|
||||
|
||||
class OneResolutionChain(unittest.TestCase):
|
||||
"""architecture.md drew path_suffix as the first step, before SHA1, while
|
||||
the code and verification-modes.md try it after every hash."""
|
||||
|
||||
+34
-6
@@ -10,6 +10,7 @@ import io
|
||||
import json
|
||||
import os
|
||||
import stat
|
||||
import select
|
||||
import shlex
|
||||
import re
|
||||
import shutil
|
||||
@@ -31,6 +32,13 @@ _spec = importlib.util.spec_from_file_location("install", REPO_ROOT / "install.p
|
||||
install = importlib.util.module_from_spec(_spec)
|
||||
_spec.loader.exec_module(install)
|
||||
|
||||
sys.path.insert(0, str(REPO_ROOT / "tests"))
|
||||
from netguard import module_guard # noqa: E402
|
||||
|
||||
# No connection off the loopback and no card of the host reaches a test
|
||||
# (code_audit_24 P3-13): the module fails at its end otherwise.
|
||||
setUpModule, tearDownModule = module_guard("test_install")
|
||||
|
||||
|
||||
def _tempdir(test: unittest.TestCase) -> str:
|
||||
"""A scratch directory under the repository's tmp/, removed after the test.
|
||||
@@ -4175,17 +4183,35 @@ class AQuestionLeftWithCtrlDOrCtrlCIsAStop(unittest.TestCase):
|
||||
|
||||
home = Path(_tempdir(self))
|
||||
master, slave = pty.openpty()
|
||||
# Its output on the terminal too: piped, nothing is asked, and the
|
||||
# test skipped on every machine.
|
||||
proc = subprocess.Popen(
|
||||
[sys.executable, "install.py"], cwd=REPO_ROOT, stdin=slave,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True,
|
||||
env={**os.environ, "HOME": str(home), "RETROBIOS_OS": "linux"},
|
||||
[sys.executable, "install.py", "--plain"], cwd=REPO_ROOT, stdin=slave,
|
||||
stdout=slave, stderr=slave,
|
||||
# No request leaves the machine: the standalone emulators' lists
|
||||
# come from the network (code_audit_24 P3-13).
|
||||
env={**os.environ, "HOME": str(home), "RETROBIOS_OS": "linux",
|
||||
"RETROBIOS_INSTALL_OFFLINE": "1"},
|
||||
)
|
||||
os.close(slave)
|
||||
self.addCleanup(os.close, master)
|
||||
time.sleep(3)
|
||||
out = ""
|
||||
deadline = time.monotonic() + 60
|
||||
while "Which setup?" not in out and proc.poll() is None \
|
||||
and time.monotonic() < deadline:
|
||||
if select.select([master], [], [], 0.2)[0]:
|
||||
out += os.read(master, 65536).decode("utf-8", "replace")
|
||||
os.write(master, b"\x04")
|
||||
out, _ = proc.communicate(timeout=60)
|
||||
if "Choose the platform" not in out:
|
||||
proc.wait(timeout=60)
|
||||
while select.select([master], [], [], 0.2)[0]:
|
||||
try:
|
||||
chunk = os.read(master, 65536)
|
||||
except OSError:
|
||||
break
|
||||
if not chunk:
|
||||
break
|
||||
out += chunk.decode("utf-8", "replace")
|
||||
if "Which setup?" not in out:
|
||||
self.skipTest("a platform was detected on this machine")
|
||||
self.assertEqual(proc.returncode, 130, out)
|
||||
self.assertIn("Stopped", out)
|
||||
@@ -5204,6 +5230,8 @@ class EventsDescribeTheRun(unittest.TestCase, _SyntheticTree):
|
||||
# The systems Choose systems lists, before the files are read.
|
||||
{"event": "choices", "platform": "retroarch",
|
||||
"systems": ["sys-a", "sys-b", "other"]},
|
||||
# Nothing set aside before the choice (code_audit_24 P3-3).
|
||||
{"event": "set_aside", "platform": "retroarch", "dests": []},
|
||||
# a.bin and b.bin are in place: the first read and the last.
|
||||
{"event": "checking", "files_done": 1, "files_total": 2},
|
||||
{"event": "checking", "files_done": 2, "files_total": 2},
|
||||
|
||||
@@ -1632,10 +1632,12 @@ class SomethingElseAtADestination(unittest.TestCase):
|
||||
proc = repo.run("--yes")
|
||||
self.assertEqual(proc.returncode, 1, proc.stderr)
|
||||
self.assertNotIn("Traceback", proc.stderr)
|
||||
self.assertIn("failed: scph5500.bin (a folder sits where this file goes",
|
||||
# Each failure named once, on its FAILED line (tui_audit_17 P3-7).
|
||||
self.assertIn("FAILED scph5500.bin (a folder sits where this file goes",
|
||||
proc.stdout)
|
||||
self.assertIn("failed: scph5501.bin (file in place could not be kept aside",
|
||||
self.assertIn("FAILED scph5501.bin (file in place could not be kept aside",
|
||||
proc.stdout)
|
||||
self.assertEqual(proc.stdout.count("scph5500.bin ("), 1, proc.stdout)
|
||||
self.assertTrue((repo.dest / "scph5500.bin").is_dir())
|
||||
self.assertIn("gba_bios.bin", repo.installed())
|
||||
|
||||
|
||||
+685
-165
File diff suppressed because it is too large.
Load diff
@@ -160,7 +160,9 @@ class SetupPagesOfferPartOfThePack(unittest.TestCase):
|
||||
self.assertIn(f"/retrobios/which-pack/?platform={key}#only-some-consoles", text)
|
||||
# The screen's own row: the line menu's c is not what the
|
||||
# one-liner opens.
|
||||
self.assertIn("or choose **Choose systems** in the command.", text)
|
||||
self.assertIn("or the command's **Choose systems**.", text)
|
||||
# Never "choose **Choose systems**" (tui_audit_17 P3-9).
|
||||
self.assertNotIn("choose **Choose systems**", text)
|
||||
|
||||
def test_the_anchor_exists(self):
|
||||
self.assertIn("## Only some consoles?", _page("which-pack.md"))
|
||||
|
||||
@@ -279,6 +279,7 @@ class EveryTestDependencyIsInstalledInCi(unittest.TestCase):
|
||||
{p.stem for p in (root / "scripts").rglob("*.py")}
|
||||
| {p.name for p in (root / "scripts").iterdir() if p.is_dir()}
|
||||
| {p.stem for p in (root / "tests").glob("*.py")}
|
||||
| {p.name for p in (root / "tests").iterdir() if p.is_dir()}
|
||||
| {"scripts", "tests", "install"}
|
||||
)
|
||||
imported: set[str] = set()
|
||||
|
||||
@@ -675,7 +675,7 @@ This executes in sequence:
|
||||
4. `generate_pack.py --all` - build ZIP packs + install and target manifests
|
||||
5. Consistency check: verify and the pack agree on counts and on the paths each archive holds
|
||||
6. Pack integrity - extract ZIPs and verify hashes per platform mode
|
||||
7. `generate_readme.py` - regenerate README and CONTRIBUTING
|
||||
7. `generate_readme.py` - regenerate README and CONTRIBUTING, then `generate_installer_doc.py` rewrites the tables and run samples of `wiki/installer.md` from the new lists
|
||||
8. `generate_site.py` - regenerate the documentation site and its navigation
|
||||
|
||||
A new platform is archived-by-default nowhere: `status: active` puts it in
|
||||
|
||||
+41
-19
@@ -480,7 +480,9 @@ On a first install nothing is in place. On a later run the line counts what
|
||||
is already there, and only the rest is downloaded. A download of 1 GB or more
|
||||
is confirmed first, the size and the folder in the question.
|
||||
|
||||
The second phase downloads what is missing, one line per file:
|
||||
The second phase downloads what is missing. At a terminal one progress line
|
||||
moves with the count and the size. A pipe or a log gets one line per file,
|
||||
as the log of the run below:
|
||||
|
||||
<!-- generated: run-download -->
|
||||
|
||||
@@ -525,9 +527,10 @@ RetroArch with `--system sony-playstation`, from the list of 2026-10-27:
|
||||
|
||||
`--dry-run` prints the same line under its plan.
|
||||
|
||||
When some files came from this machine rather than the network, a line under
|
||||
`Done` says where each came from (`38 files copied from E:\, 3 copied from
|
||||
the wrong place in the BIOS folder, 4 downloaded.`). See
|
||||
When some files came from this machine rather than the network, the run says
|
||||
where each came from: on the `Done` line when all came from one place
|
||||
(`Done. 22 files copied from /home/me/old.`), on a line under it otherwise
|
||||
(`2 files copied from /home/me/old, 2 downloaded.`). See
|
||||
[Copy from an old card](#copy-from-an-old-card).
|
||||
|
||||
The word `Done` and the BIOS folder are the confirmation. Any other ending
|
||||
@@ -565,20 +568,27 @@ replaces it and keeps the old one, see
|
||||
### Why a file is refused { #why-a-file-is-refused }
|
||||
|
||||
Each file `--check` flags comes with the reason it found and the place each
|
||||
core opens it:
|
||||
core reads it. A RetroArch folder holding a copy of each kind, checked
|
||||
against a list of four files:
|
||||
|
||||
<!-- generated: check-refused -->
|
||||
|
||||
```
|
||||
3 files to download:
|
||||
2 of these files are in the BIOS folder in the wrong place: a run without --check copies them where the cores open them, and leaves your copies as they are.
|
||||
wrong copy: scph5501.bin
|
||||
another region: the contents of scph5500.bin (japan)
|
||||
opened at /home/me/.config/retroarch/system/scph5501.bin by beetle_psx, pcsx_rearmed
|
||||
read by beetle_psx, pcsx_rearmed at /home/me/.config/retroarch/system/scph5501.bin
|
||||
missing: gba_bios.bin
|
||||
nested folder: it is at system/system/gba_bios.bin, a system folder inside system
|
||||
opened at /home/me/.config/retroarch/system/gba_bios.bin by mgba
|
||||
a run without --check copies it into place
|
||||
read by mgba at /home/me/.config/retroarch/system/gba_bios.bin
|
||||
missing: pcsx/extra.bin
|
||||
still zipped: it is inside PSX BIOS.zip
|
||||
opened at /home/me/.config/retroarch/system/pcsx/extra.bin by pcsx_rearmed
|
||||
a run without --check copies it into place
|
||||
read by pcsx_rearmed at /home/me/.config/retroarch/system/pcsx/extra.bin
|
||||
```
|
||||
<!-- /generated: check-refused -->
|
||||
|
||||
| Reason | What the folder holds |
|
||||
|--------|-----------------------|
|
||||
@@ -699,12 +709,15 @@ other contents is kept aside first, as a download would replace it (see
|
||||
[Files you already had](#files-you-already-had)). What no folder holds is
|
||||
downloaded as usual, or taken from the pack with `--from-pack`. Several
|
||||
`--from` are read in the order given, and the end of the run says where each
|
||||
file came from:
|
||||
file came from. A run of a list of four files, two of them in `old`:
|
||||
|
||||
<!-- generated: from-run -->
|
||||
|
||||
```
|
||||
Done. 44 files installed.
|
||||
38 files copied from E:\, 4 downloaded, 2 still missing.
|
||||
Done. 4 files installed.
|
||||
2 files copied from /home/me/old, 2 downloaded.
|
||||
```
|
||||
<!-- /generated: from-run -->
|
||||
|
||||
`--check --from FOLDER` writes nothing and says how many files the folder
|
||||
would give (`E:\ holds 38 of these files: a run without --check copies
|
||||
@@ -1056,6 +1069,8 @@ gives for the device, below the card's root instead of its mount point:
|
||||
| `.tmp_update/onionVersion/version.txt` | Onion | `BIOS`, RetroArch's list |
|
||||
| `.allium/` | Allium | `BIOS`, RetroArch's list |
|
||||
| `Koriki/version.txt` | Koriki | `BIOS`, RetroArch's list |
|
||||
| `bgmusic/` beside `bios/`, on a drive that is not a fixed disk | ArkOS | `bios`, RetroArch's list |
|
||||
| `launchimages/` beside `bios/`, on a drive that is not a fixed disk | ArkOS | `bios`, RetroArch's list |
|
||||
| `gamedata/`, `homebrew/` beside `bios/`, on a drive that is not a fixed disk | AmberELEC | `bios`, AmberELEC's list |
|
||||
| `bezels/default.cfg` beside `bios/`, on a drive that is not a fixed disk | EmuELEC | `bios`, EmuELEC's list |
|
||||
| `system/batocera.conf` holding `system.hostname=BATOCERA` or no hostname line, and no KNULLI file above | Batocera SHARE drive | `bios`, Batocera's list |
|
||||
@@ -1635,14 +1650,20 @@ The build scripts need 3.9 and are not bound by this.
|
||||
Every change to `install.py` recomputes the SHA-256 pinned in `install.sh` and
|
||||
`install.ps1` in the same commit. The tests compare the pins with the file.
|
||||
|
||||
The tables of options, events, exit codes and keys on this page sit between
|
||||
`generated` markers and are written from `install.py` by
|
||||
`scripts/generate_installer_doc.py`: the options from its parser, the events
|
||||
from `EVENT_KEYS`, the codes from its `sys.exit` calls, the keys from
|
||||
`TUI_ROUTES`. The prose cells stay as written. A row the code gains stops the
|
||||
script until its text is added inside the markers, and `--check`, which a
|
||||
test runs, fails on a table behind the code. `--page FILE` renders another
|
||||
copy of the page, which the tests use.
|
||||
The tables of options, events, exit codes, keys and card markers, the line
|
||||
menu and the run samples on this page sit between `generated` markers and are
|
||||
written from `install.py` by `scripts/generate_installer_doc.py`: the options
|
||||
from its parser, the events from `EVENT_KEYS`, the codes from its `sys.exit`
|
||||
calls, the keys from `TUI_ROUTES`, the card markers from its card rules. The
|
||||
run samples (a dry run, a first install, a check, the reasons a file is
|
||||
refused, a copy from an old card) are printed by `install.py` itself, in a
|
||||
sandbox under `tmp/` served on the loopback from the committed
|
||||
`install/*.json`. A new list therefore rewrites this page, and `--check`
|
||||
fails until the script has run. Pipeline step 7 runs it after the README.
|
||||
The prose cells stay as written. A row the code gains stops the script until
|
||||
its text is added inside the markers, and `--check`, which a test runs, fails
|
||||
on a table behind the code. `--page FILE` renders another copy of the page,
|
||||
which the tests use.
|
||||
|
||||
The [handheld](#on-a-handheld-the-retrobios-port) archives each carry
|
||||
`install.py`, the one the one-line command of the same commit downloads:
|
||||
@@ -1714,6 +1735,7 @@ other schemas under `api/v1/schemas/`.
|
||||
| `scanned` | `folder`, `files`, `truncated`, `other_drives` | Each folder named with `--from`, once read and before `detect`. `files` counts the files found, `truncated` is true when the search stopped at 200,000 of them, and `other_drives` lists the folders below it on another drive, which were not entered |
|
||||
| `version` | `platform`, `list_version`, `installed_version`, `message` | Before `choices`, when the system here runs another version than the one the list was built for: `list_version` is the list's, `installed_version` the one the system's version file states, and `message` says it and what it means. Not written when either version is unknown. The run goes on |
|
||||
| `choices` | `platform`, `systems` | Before `checking`: the systems the run's list lets one choose among, sorted by id, `other` last for the files no system names. The run's other options apply (`--core`, `--region`, `--no-game-data`, the files left out for an unknown save directory), `--system` does not: these are the systems a screen lists to choose from, and the count a `--system` is out of |
|
||||
| `set_aside` | `platform`, `dests` | Right after `choices`: the files of the list the run sets aside before any choice, in list order, those read from a save directory whose place is not known among them. A screen chooses its cores among the rest, the cores `--core` accepts |
|
||||
| `file` | `platform`, `dest`, `systems`, `size`, `state` | Each file of the list after the check. `state` is `present` (hash verified), `wrong_hash` or `missing` |
|
||||
| `system` | `platform`, `system`, `name`, `files`, `present`, `missing`, `wrong_hash`, `bytes_needed` | Each system, sorted by id, and with `--system` only the systems named. Files with no system count under `other`. `name` is the platform's own name for it |
|
||||
| `checking` | `files_done`, `files_total` | While the files already in the folder are read and hashed, at most every half second and once at the end. `files_total` counts the files found in place |
|
||||
|
||||
+2
-2
@@ -49,7 +49,7 @@ Pipeline steps:
|
||||
| 4d | Collected copies only an emulator install provides (`bundled_only.py --strict`, gates the run) | - |
|
||||
| 5 | Consistency check: counts, paths per archive, every emulator pack | if verify or pack skipped |
|
||||
| 6 | Pack integrity (extract + hash) | `--skip-packs` |
|
||||
| 7 | Generate README | `--skip-docs` |
|
||||
| 7 | Generate README and CONTRIBUTING, then the installer page's tables and run samples (`generate_installer_doc.py`) | `--skip-docs` |
|
||||
| 8 | Generate site | `--skip-docs` |
|
||||
| 8b | Render the site with `npm run build --prefix website`, then `validate_site.py`, as the deploy does | `--skip-docs`, or Node not set up (`npm ci --prefix website`) |
|
||||
|
||||
@@ -1301,7 +1301,7 @@ before a release (wiki/release-process.md). Its lines stay in
|
||||
| `validate_pr.py` | Validate BIOS files in pull requests, post markdown report |
|
||||
| `validate_schemas.py` | Validate the data contracts: schemas and semantic invariants. `--source-only` checks `emulators/` and `platforms/` alone, which is what PR validation runs |
|
||||
| `generate_event_schema.py` | Write `schemas/install-events.schema.json` from `EVENT_KEYS` in `install.py` (`--check` exits 1 when the file is stale, which `validate_schemas.py` also reports) |
|
||||
| `generate_installer_doc.py` | Rewrite the generated tables of `wiki/installer.md` (options, events, exit codes, keys per route) from `install.py` (`--check` exits 1 when a table is stale, `--page FILE` writes another copy of the page) |
|
||||
| `generate_installer_doc.py` | Rewrite the generated blocks of `wiki/installer.md` from `install.py`: the tables (options, events, exit codes, keys per route, card markers), the line menu, and the run samples `install.py` prints in a sandbox against the committed `install/*.json`, so a new list rewrites the page (`--check` exits 1 when a block is stale, `--page FILE` writes another copy of the page). Pipeline step 7 |
|
||||
| `auto_fetch.py` | Fetch missing BIOS files from known sources (4-step pipeline). A download is accepted only when every cryptographic hash the entry declares (sha256, sha1, md5) matches. crc32 and size find a file the database already holds, never accept a download. An entry with no cryptographic hash is reported and not searched |
|
||||
| `list_platforms.py` | List active platforms (`--include-archived` adds the archived ones, used by CI) |
|
||||
| `download.py` | Download a pack from GitHub releases, every part checked (Python, stdlib only) |
|
||||
|
||||
Reference in new issue
Block a user