Skip to content

Add RetroDECK support - #213

Open
Namaneo wants to merge 14 commits into
rommapp:mainfrom
Namaneo:retrodeck
Open

Add RetroDECK support#213
Namaneo wants to merge 14 commits into
rommapp:mainfrom
Namaneo:retrodeck

Conversation

@Namaneo

@Namaneo Namaneo commented Apr 14, 2026

Copy link
Copy Markdown

Adds initial support for RetroDECK, so it can be added as a non-Steam game.
Feel free to request any change, especially if I forgot something.

This is a follow-up of this issue: #210.

EDIT: Added associated documentation.

EDIT2: Got inspired and added an automatic install script with media, so it looks nice in the Steam game library.

It currently looks fine on Bazzite, but I have an issue with nonsteam not detecting the Steam install on SteamOS. I'll investigate when I have a bit more free time.

@BrandonKowalski BrandonKowalski added this to the v5.0.0.0? milestone Apr 28, 2026
@pawndev pawndev mentioned this pull request May 30, 2026
10 tasks
sdhibit pushed a commit to sdhibit/grout that referenced this pull request Jul 26, 2026
Add a new ESDE CFW target covering EmulationStation Desktop Edition
setups on desktop Linux (Steam Deck, SteamOS, Bazzite): standalone
ES-DE, EmuDeck, and RetroDECK — one binary, with the flavor selected
via a first-run variant wizard and switchable in a new ES-DE Settings
screen.

Directories resolve through a precedence chain: explicit config
override > environment variable > variant discovery > variant default.
Discovery reads EmuDeck's settings.sh (emulationPath), RetroDECK's
retrodeck.json (as requested by the RetroDECK maintainer in rommapp#236), and
ES-DE's es_settings.xml, so relocated/SD-card installs work without
manual configuration. Every directory (base, ROMs, BIOS, saves, ES-DE
data, media) can also be overridden individually in settings.

ES-DE layout differences from Batocera-style ES are handled:
- gamelists are written to <appdata>/gamelists/<system>/gamelist.xml
  with ./-relative game paths (new gamelist.Options hook)
- media is written to <media>/<system>/{covers,marquees,backcovers,
  fanart,screenshots,videos,manuals} matched by ROM basename; a new
  UsesArtSuffixes() predicate disables the -thumb/-marquee/-boxback/
  -fanart filename suffixes for ES-DE
- no ES restart scheduling (grout runs as ES-DE's child); the bezel
  art option is hidden (no such media type in ES-DE)

Grout installs as an ES-DE port in <roms>/ports/. The launcher exports
GROUT_ESDE_ROMS_DIR from its own location so the ROMs dir is correct
for any variant, and carries the Steam Deck input workarounds from
PR rommapp#235 (ignore axis-motion event flooding, suppress Steam keyboard).
The amd64 build now bundles the full SDL library stack for SteamOS's
sealed OS and RetroDECK's flatpak sandbox.

Includes platform table (docs/platforms/ESDE.md) generated into
cfw/esde/data/platforms.json, packaging target (Grout-ESDE.zip), CI
release wiring, in-app updater support, install/settings docs, and
unit tests for path precedence and the three config parsers.

Closes rommapp#210, closes rommapp#238. Builds on rommapp#235, rommapp#236, and rommapp#213.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants