Add RetroDECK Platform Support#36
Merged
Merged
Conversation
Closed
Owner
|
Really nice work on this. The scraper follows the BaseScraper pattern well, the SYSTEM_SLUG_MAP is thorough, and the dual remote/local mode is a great touch. I've been doing a lot of refactoring on the pipeline side lately and things are moving fast right now. Rather than have you chase a moving target with rebases, I'll take it from here and adapt it to the new architecture. Mostly small adjustments, the core of your work stays as is. Thanks again, this is a big plus for the project and it's always a pleasure to get contributions. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add RetroDECK platform support
What this PR adds
A new platform configuration for RetroDECK — a Flatpak-based all-in-one retrogaming platform for Steam Deck and Linux desktops. This PR introduces:
platforms/retrodeck.yml— BIOS declarations for all RetroDECK componentsscripts/scraper/retrodeck_scraper.py— automated scraper to regenerate the platform config from upstreamretrodeckentry inplatforms/_registry.ymlSource architecture
RetroDECK's BIOS requirements are declared in
component_manifest.jsonfiles, one per emulator component. These are distributed as individual.tar.gzrelease assets from theRetroDECK/componentsrepository (a separate repo from the mainRetroDECK/RetroDECKapplication).The scraper uses GitHub's releases API to enumerate all
.tar.gzassets in the latest components release, then streams each tarball to extract only thecomponent_manifest.json— no full downloads required. It also supports a--manifests-dirflag for use against a local RetroDECK install, which is useful for verification and development.Design decisions
base_destination: bios— Standard. RetroDECK's primary BIOS directory is~/retrodeck/bios/.$roms_pathentries — A small number of BIOS files (e.g.neogeo.zip) live in RetroDECK'sroms/folder rather thanbios/. These are included with aroms/prefix in theirdestinationfield, consistent with Batocera's convention of encoding the real filesystem path in the destination string (e.g.saves/dolphin-emu/Triforce/segaboot.gcm).$saves_pathentries — Excluded. These are empty directory placeholders for memory card locations (Dolphin GC memory cards etc.), not BIOS files.schedule: monthly— RetroDECK releases components on an approximately monthly cadence, slower than RetroArch or Batocera.System slug mapping — RetroDECK uses its own system ID scheme. The scraper contains a
SYSTEM_SLUG_MAPdict that maps all known RetroDECK IDs to retrobios slugs. Unknown IDs pass through unchanged. Two IDs (wii,atari2600) have no corresponding retrobios slug yet as neither system requires a BIOS file in any existing platform config — if RetroDECK manifests declare BIOS entries for them they will appear with the passthrough ID.Data directories
RetroDECK uses the same libretro cores as RetroArch for Dolphin, PPSSPP, and blueMSX. The destination paths for their
data_directoriesentries need verification against a live RetroDECK install before being added — it's possible they match the RetroArch destinations exactly (dolphin-emu/Sys,PPSSPP,Databases,Machines), but this should be confirmed. This is noted as a TODO inplatforms/retrodeck.yml.How to update
The platform config regenerates automatically once the scraper is wired into
watch.yml. To add it, append the following block to the regeneration step in.github/workflows/watch.yml:To regenerate manually:
Verification checklist
schemas/platform.schema.jsondata_directoriesentries for Dolphin, PPSSPP, blueMSX added and destinations verifiedroms/prefixed destinations reviewed — confirm acceptable under project conventions_registry.ymlentry addedwatch.ymlupdated to include RetroDECK in weekly sync