Add Steam Deck EmuDeck ES-DE support - #235
Conversation
|
Sorry for the wall of text but I figured that's easier than having to grok the intent from the code. I'm not sure if this is the right "fix" for the steam deck issue so let me know if you have any ideas on what the root cause would be but this does seem to work on the steam deck. I have not tested this on batocera on steam deck but I did have the exact same issue on steamos as I had on batocera. |
|
hmm i remember doing something to disable some input in Grout for the miyoo flip is it not sufficient ? |
|
@pawndev I still had the same input rubber banding issue on the latest grout version so I don't think that's sufficient. |
|
OK sorry I'm such a flipping noob here, but this is what my agent is saying
I'll test using the miyoo flip workaround though so we can be sure. |
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.
Summary
This PR adds a Steam Deck-focused EmuDeck / ES-DE distribution for Grout. It introduces a new
CFW=ESDEtarget that follows EmuDeck's standard folder layout and packages Grout as an ES-DE Port, so installation is the same style as the Batocera/ROCKNIX packages: unzip the release, then copyGrout.shand theGrout/folder into EmuDeck'sroms/portsdirectory.The new release asset is
Grout-ESDE.zip, intended for Steam Deck users running EmuDeck with ES-DE.What changed
ESDECFW support:<Emulation>/roms<Emulation>/bios<Emulation>/saves<Emulation>/roms/ports/gamelist.xmlscripts/ESDE/Grout.shlauncher and packaging task.Grout-ESDE.zipto release workflow,versions.jsonasset generation, and in-app updater asset lookup.Steam Deck controls note
While testing on a Steam Deck with EmuDeck, SDL/Steam Input emitted a continuous stream of tiny analog-stick axis-motion events. This flooded SDL's event queue and caused controls to feel frozen, delayed, or to suddenly jump around. Ignoring axis-motion events fixed the issue in testing.
This appears related to the behavior reported in #216 (
Steam Deck : Buttons response very weird) for Batocera on Steam Deck. This workaround is a little hacky because it disables analog-stick navigation on ES-DE / Steam Deck hardware, but Grout's UI is fully navigable with D-pad/buttons and this resolves the delayed/jittery control behavior we observed. If disabling axis-motion events is a concern, I am happy to adjust this to be controlled by an environment flag instead.Validation
go test ./...vianix-shell -p pkg-config SDL2 SDL2_image SDL2_ttf SDL2_gfxtask build:amd64task package:esdedist/Grout-ESDE.zipuv run mkdocs build(passes with existing non-strict docs warnings)/run/media/deck/.../Emulation/roms/ports/Agent disclosure
This PR was implemented with assistance from an AI coding agent.