From c1a942ad3173e8489085eebfc87f161e2e95b5a0 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Fri, 23 Oct 2026 18:53:55 +0200 Subject: [PATCH] feat: cite a folder for every handheld row Allium, JELOS, KOLOS and MiyooCFW folders come from their own trees at the revision the installer reads. Rows with no cited folder point at RetroArch's System/BIOS setting, and a folder only Linux reads says so. KNULLI's SAMBA switch is linked, AmberELEC's roms share is named, the MinUI family says the command makes each folder, and an iPhone and iPad tile joins the handheld group. --- platforms/_guides.yml | 31 ++++++++++++++++++++++++++++--- scripts/siteguides.py | 7 ++++++- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/platforms/_guides.yml b/platforms/_guides.yml index c9eec77c..0cf62299 100644 --- a/platforms/_guides.yml +++ b/platforms/_guides.yml @@ -74,6 +74,11 @@ device_groups: - name: Linux handhelds text: ArkOS, muOS, Onion, spruceOS link: platforms/linux-handhelds.md + # No terminal runs there: the files are copied in, each app its own way + # (which-pack.md, section iPhone and iPad, each step cited). + - name: iPhone and iPad + text: RetroArch, Delta, Provenance + link: which-pack.md#iphone-and-ipad fpga: label: MiSTer FPGA description: >- @@ -130,7 +135,8 @@ terminals: # A folder is the one seen on the card from a computer, and a device list the # one the system's own site, wiki or README gives. Each is written only with # the first-party page that states it (`*_source`), and left out when no such -# page states it: the row then says the command finds the folder. +# page states it: the row then says where RetroArch shows the folder. +# `linux_only` marks a folder on a part of the card only Linux reads. handheld_guide: page: linux-handhelds title: Linux handhelds @@ -162,12 +168,15 @@ handheld_guide: TrimUI Smart Pro, TrimUI Brick, Anbernic RG35XX Plus, RG40XX H, Powkiddy RGB30] devices_source: https://github.com/spruceUI/spruceOS/wiki/Supported-Devices - name: Allium + folder: '`BIOS` at the root of the card' + folder_source: https://github.com/goweiwen/Allium/tree/ee0dda979bc02649fdda48b277eaa60938273465/static/BIOS devices: [Miyoo Mini, Miyoo Mini Plus, Miyoo Mini Flip] devices_source: https://github.com/goweiwen/Allium - name: Anbernic stock firmware - name: ArchR - folder: '`/storage/roms/bios`, on a part Windows and macOS cannot open' + folder: '`/storage/roms/bios`, on a part only Linux can open' folder_source: https://arch-r.io/docs/roms/ + linux_only: true devices: [R36S, R33S, R36S Soysauce, Odroid Go Advance, Odroid Go Super, RG351V, RG351M, GameForce Chi, MagicX XU10, Powkiddy RGB10, Powkiddy RGB10X, K36] devices_source: https://github.com/archr-linux/Arch-R @@ -182,7 +191,11 @@ handheld_guide: devices: [Odroid Go Advance, RGB10, RG351MP, G350] devices_source: https://github.com/christianhaitian/dArkOS/wiki - name: JELOS + folder: '`roms/bios` on the games card' + folder_source: https://github.com/JustEnoughLinuxOS/distribution/blob/7b2e116ce6996d56e642a0e2a07288c926db926b/packages/emulators/standalone/retroarch/sources/RK3566/retroarch.cfg#L716 - name: KOLOS + folder: '`roms/bios` on the games card' + folder_source: https://github.com/AnonLinuxOS/KOLOS/blob/7daf5950ae79bb8775f129468164f730dbc32298/packages/emulators/standalone/retroarch/sources/RK3566/retroarch.cfg#L716 devices: [RG353P, RG353M, RG353V, RG353VS, RG503, Powkiddy RK2023, RGB30, RGB10 Max 3] devices_source: https://github.com/AnonLinuxOS/KOLOS - name: Koriki @@ -191,6 +204,9 @@ handheld_guide: devices: [Miyoo Mini] devices_source: https://github.com/Rparadise-Team/Koriki - name: MiyooCFW + folder: '`.retroarch/system`, hidden, on the **MAIN** part, which only Linux can open' + folder_source: https://github.com/MiyooCFW/buildroot/blob/d5912eeb7b636810bafaa34eb0517fd599a0fc71/board/miyoo/rootfs/etc/main#L164-L170 + linux_only: true devices: [BittBoy, Pocket Go, PowKiddy Q90, PowKiddy V90, PowKiddy Q20 Mini, Sup M3, XYC Q8] devices_source: https://github.com/MiyooCFW/docs/blob/main/docs/index.md - name: plumOS @@ -521,6 +537,11 @@ guides: runs_on: Anbernic RG351 and RG552 folders: - where: On AmberELEC + # AmberELEC 5a3882cb packages/network/samba/config/smb.conf:59-60 shares + # /storage/roms as "roms". smbd runs unless samba.disabled exists + # (system.d.opt/smbd.service:5). + - where: From Windows, over your home network + path: '`\\AmberELEC\roms\`' run: [device] # amberelec.org/guides/getting-to-know-amberelec.html: host AmberELEC, root, amberelec. terminal: >- @@ -569,7 +590,8 @@ guides: run: [device] notes: - >- - For the network folder, turn on **SAMBA** in **System Settings > Services**. + For the network folder, turn on **SAMBA** in **System Settings > Services** + ([KNULLI docs](https://github.com/knulli-cfw/knulli.org/blob/314b26f1822c8531bed8a9cea72028b229b4436e/docs/play/add-games/network-transfer.md?plain=1#L20-L24)). # knulli.org/configure/ssh: SSH in System Settings > Services, root, password linux. terminal: >- Turn on **SSH**, a terminal over the network, in **System Settings > Services**. From @@ -687,6 +709,7 @@ guides: - >- Each console has its own folder, named after the tag in its Roms folder. `Roms/Sony PlayStation (PS)/` uses `Bios/PS/`. + - The command makes each console's folder for you. on_card: true reference_notes: - >- @@ -711,6 +734,7 @@ guides: - >- Each console has its own folder, named after the tag in its Roms folder. `Roms/Sony PlayStation (PS)/` uses `Bios/PS/`. + - The command makes each console's folder for you. on_card: true reference_notes: - >- @@ -730,6 +754,7 @@ guides: - >- Each console has its own folder, named after the tag in its Roms folder. `Roms/Sony PlayStation (PS)/` uses `Bios/PS/`. + - The command makes each console's folder for you. on_card: true reference_notes: - >- diff --git a/scripts/siteguides.py b/scripts/siteguides.py index c8bbe383..59c98491 100644 --- a/scripts/siteguides.py +++ b/scripts/siteguides.py @@ -91,6 +91,7 @@ class HandheldSystem: folder_source: str = "" devices: tuple[str, ...] = () devices_source: str = "" + linux_only: bool = False @dataclass(frozen=True) @@ -125,7 +126,7 @@ _GROUP_KEYS = {"label", "description", "anchor", "also_runs", "tiles"} _ALSO_KEYS = ("setup", "summary", "uses", "runs_on", "folder") _TILE_KEYS = ("name", "text", "link") _HANDHELD_KEYS = {"page", "title", "summary", "uses", "systems"} -_SYSTEM_KEYS = {"name", "folder", "folder_source", "devices", "devices_source"} +_SYSTEM_KEYS = {"name", "folder", "folder_source", "devices", "devices_source", "linux_only"} _SOURCE = re.compile(r"https://\S+") _TERMINAL_KEYS = ("label", "how", "shell") @@ -239,6 +240,10 @@ def _handheld_system(data: object, where: str) -> HandheldSystem: values[value] = (_texts(data[value], f"{where}.{value}") if value == "devices" else _text(data[value], f"{where}.{value}")) values[source] = _source(data[source], f"{where}.{source}") + if "linux_only" in data: + if not isinstance(data["linux_only"], bool) or "folder" not in data: + raise GuideError(f"{where}.linux_only: expected true or false, with a folder") + values["linux_only"] = data["linux_only"] return HandheldSystem(**values)