Evidence: Game Forwarder on the console; README: make a tile in the WebUI

evidence/game-forwarder-webui (tools/evidence.py distil of klog/game-forwarder-webui/
record.txt, game names masked): on the owner's base PS5 (13.40, ShadowMountPlus
1.7-beta5fix1), builds 9adce7a0 (8a31a1f) and 57fc257a (2512f39):
- the routes from the PC: a tile made (PPSA99171, its files and param.json, in
  manual.lst), installed by ShadowMountPlus once RetroArch closed, opened (five
  arguments, "forwarder: /app0/content/snes/<game> with snes9x, closing after it"),
  renamed and re-pictured and the spike's tile deleted while RetroArch ran, both
  finished by the daemon once it closed ("removed", "installed again with its new name
  or icon"; /user/appmeta shows the new name and icon);
- the page in a browser: 33 systems in the picker, each with its icon; a tile made from a
  SNES game's 3D box and one from a Genesis game's logo with the system's icon in the
  corner ("Saving..." while ShadowMountPlus answered); an installed tile deleted ("leaves
  the home screen once RetroArch closes"), uninstalled and its folder gone once RetroArch
  closed; the home screen's icons are byte for byte the PNGs the page drew (512x512);
  the Genesis tile opened its game with genesis_plus_gx and closed after it.
Not checked (human_check): a tile opened on the home screen while RetroArch is open
should bring up the console's prompt to close it; the control payload cannot press the
home screen.

README: "Start a game from a home screen forwarder" opens with "Make a tile in the
WebUI" (the page, ShadowMountPlus 1.7 or later, why changes wait for RetroArch to
close, where games may be); the arguments follow as "Make a forwarder by hand",
unchanged. No line removed.

Gates: format, unit (210 tests), build, integration (210 tests), evidence (138
captures, 0 failed) - PASS.
This commit is contained in:
Mihawk committed 2026-10-18 07:58:19 -04:00
1 parent 2512f39519
commit 001bbcf9d1
3 files changed
+89

No files matched your search

+20
View File
@@ -254,6 +254,26 @@ and **EXTERNAL** (`/mnt`) may be empty.
## <img src="webui/assets/fluent/game-chat.svg" width="26" height="26" alt=""> Start a game from a home screen forwarder
### Make a tile in the WebUI
The WebUI's **Game Forwarder** page makes home screen tiles that each open one game in
RetroArch. Choose a system, then one of its games from your library, the name the home screen
shows, the core (the game's own is chosen for you) and a picture: its box art, 3D box, logo,
cartridge or disc, screenshot, title screen or fan art, filling the square or fitted in it, with
the system's icon in the bottom right corner if you like. A picture the game has no file for
yet is greyed out; **Download Media** can find it. Choose **Create tile**, then close
RetroArch: the tile appears on the home screen. A new name or picture, and a tile you delete,
reach the home screen the same way, once RetroArch closes.
A tile is a small title of its own, `PPSA99170` to `PPSA99269` in `/data/homebrew`, which
[ShadowMountPlus](https://github.com/drakmor/ShadowMountPlus) 1.7 or later installs. The page
needs it loaded with its API on (the default), and says so when it does not answer.
ShadowMountPlus installs and removes nothing while a game runs, and RetroArch counts as one:
that is why changes wait for RetroArch to close. Delete tiles from the page, which also removes
their folder. A tile opens a game in the content folder or on a USB or extended storage drive.
### Make a forwarder by hand
A forwarder is a small app with its own home screen tile that launches `PPSA99169` with
launch arguments. The title then starts that game in RetroArch with the core given, instead of
opening the picker or a frontend.
@@ -0,0 +1,47 @@
{
"step": "game-forwarder-webui",
"recorded": "2026-10-18T11:44:54Z",
"console_run": "",
"revision": "8a31a1f (routes, build 9adce7a0) and 2512f39 (page, build 57fc257a)",
"command": "the WebUI at http://<console>:6769: its /api/forwarders routes from the PC, then the Game Forwarder page in a browser; RetroArch and the tiles started and closed through the control payload",
"raw_capture": "klog/game-forwarder-webui/record.txt",
"raw_lines": 35,
"raw_bytes": 3143,
"lines": [
"==> the WebUI at http://<console>:6769: its /api/forwarders routes from the PC (step 2), then the Game Forwarder page in a browser (step 4); RetroArch and the tiles started and closed through the control payload",
"Console: the owner's base PS5, firmware 13.40, ShadowMountPlus 1.7-beta5fix1, 2026-10-18. Builds 9adce7a0 (8a31a1f, the routes) and 57fc257a (2512f39, the page). Game names are masked.",
"-- the routes (8a31a1f)",
"GET /api/forwarders: shadowmount answers, version 1.7-beta5fix1; PPSA99170 installed (the spike's tile)",
"POST /api/forwarders (a SNES game, core snes9x): 201 {'id': 'PPSA99171'}",
"PPSA99171: eboot.bin, forward.txt, launch.elf 110832 bytes, sce_module/libc.prx, sce_sys/icon0.png, sce_sys/param.json",
"param.json: PPSA99171 99171 UP9000-PPSA99171_00-FORWARDER0099171",
"manual.lst: /data/homebrew/PPSA99170, /data/homebrew/PPSA99171",
"RetroArch closed -> ShadowMountPlus: NOTIFY: installed game PPSA99171",
"tile PPSA99171: launch payload 110832 bytes, 110832 sent to 127.0.0.1:9021 (errno 0)",
"launch PPSA99171: 5 argument(s) from forward.txt",
"forwarder: /app0/content/snes/<game> with /app0/cores/snes9x_libretro.so, closing after it",
"PPSA99171 renamed and given a new icon: state updating; PPSA99170 deleted: {\"state\":\"pending\"}, manual list empty",
"RetroArch closed -> daemon: forwarder PPSA99170: removed",
"RetroArch closed -> daemon: forwarder PPSA99171: installed again with its new name or icon",
"/user/appmeta/PPSA99171 titleName: Forwarder renamed; icon0.png the new one (first pixel 20 60 d0)",
"/user/appmeta/PPSA99170 and /data/homebrew/PPSA99170: 550 No such file or directory",
"-- the page (2512f39)",
"page: 33 systems in the picker, each with its icon",
"page: a SNES game, picture 3D box (fitted): Tile created. It appears on the home screen once RetroArch closes. (PPSA99170)",
"page: a second waiting tile, made by a repeated test click (PPSA99172): Tile removed.",
"page: Sega - Mega Drive - Genesis, a game, picture logo (fitted), system icon in the corner, core genesis_plus_gx prefilled: Saving... then Tile created (PPSA99172 again)",
"page: PPSA99171 (installed) deleted: The tile leaves the home screen once RetroArch closes.",
"API: PPSA99170 waiting, PPSA99171 removing, PPSA99172 waiting; manual.lst /data/homebrew/PPSA99170, /data/homebrew/PPSA99172",
"RetroArch closed -> ShadowMountPlus: NOTIFY: installed game PPSA99170; NOTIFY: installed game PPSA99172",
"RetroArch closed -> daemon: forwarder PPSA99170: launch.elf brought up to this build",
"RetroArch closed -> daemon: forwarder PPSA99171: removed",
"ShadowMountPlus: [API] uninstall requested: title=PPSA99171",
"/user/appmeta/PPSA99171, /user/app/PPSA99171 and /data/homebrew/PPSA99171: 550 No such file or directory",
"/user/appmeta/PPSA99170 icon0.png: 408809 bytes, 512x512, the tile's own: True",
"/user/appmeta/PPSA99172 icon0.png: 71761 bytes, 512x512, the tile's own: True",
"tile PPSA99172: launch payload 110832 bytes, 110832 sent to 127.0.0.1:9021 (errno 0)",
"launch PPSA99172: 5 argument(s) from forward.txt",
"forwarder: /app0/content/genesis/<game> with /app0/cores/genesis_plus_gx_libretro.so, closing after it",
"Left on the console: PPSA99170 and PPSA99172 on the home screen, made by the page."
]
}
@@ -0,0 +1,22 @@
{
"step": "game-forwarder-webui",
"note": "Game Forwarder on the console: tiles made, renamed, given a picture and deleted through the WebUI; ShadowMountPlus installs and uninstalls them once RetroArch closes, the WebUI's daemon finishes what waited; a tile opens its game in RetroArch with its core and closes after it; the home screen shows the picture the page drew, the system's icon in its corner.",
"must_contain": [
"shadowmount answers, version 1.7-beta5fix1",
"NOTIFY: installed game PPSA99171",
"launch PPSA99171: 5 argument(s) from forward.txt",
"forwarder: /app0/content/snes/<game> with /app0/cores/snes9x_libretro.so, closing after it",
"daemon: forwarder PPSA99170: removed",
"forwarder PPSA99171: installed again with its new name or icon",
"titleName: Forwarder renamed",
"33 systems in the picker, each with its icon",
"Tile created. It appears on the home screen once RetroArch closes.",
"The tile leaves the home screen once RetroArch closes.",
"daemon: forwarder PPSA99171: removed",
"[API] uninstall requested: title=PPSA99171",
"icon0.png: 71761 bytes, 512x512, the tile's own: True",
"forwarder: /app0/content/genesis/<game> with /app0/cores/genesis_plus_gx_libretro.so, closing after it"
],
"must_not_contain": [],
"human_check": "The owner opens a tile on the home screen while RetroArch is open: the console asks to close RetroArch first, then the game starts. Not checked here: the control payload cannot press the home screen."
}