- Refactored menu states from "redownload_game_cache" to "reload_games_data". - Added Xbox Elite controller configuration file.
🎮 Retro Game Sets Xtra (RGSX)
SUPPORT / HELP : https://discord.gg/Vph9jwg3VV
LISEZ-MOI EN FRANCAIS : https://github.com/RetroGameSets/RGSX/blob/main/README_FR.md
RGSX is a Python application developed using Pygame for graphics, created for the community by RetroGameSets. It is completely free.
The application supports multiple sources like myrient and 1fichier (with optional AllDebrid unlocking fallback). These sources can be updated frequently.
🧰 Command-line usage (CLI)
RGSX also offers a headless command-line interface to list platforms/games and download ROMs:
- English guide: see
https://github.com/RetroGameSets/RGSX/blob/main/README_CLI.md
✨ Features
- Game downloads : Support for ZIP files and handling of unsupported extensions based on EmulationStation's
es_systems.cfg(and customes_systems_*.cfgon Batocera). RGSX reads allowed extensions per system from these configs and will automatically extract archives when a system doesn't support them.- Downloads require no authentication or account for most sources.
- Systems marked
(1fichier)in the name will only be accessible if you provide either your 1Fichier API key or an AllDebrid API key (see below).
- Download history : View and re-download previous files.
- Multi-select downloads : Mark multiple games in the game list with the key mapped to Clear History (default X) to enqueue several downloads in one batch. Press Confirm to start batch.
- Control customization : Remap keyboard or controller keys to your preference with automatic button name detection from EmulationStation (beta).
- Systems grid layout: Change the platforms grid (3x3, 3x4, 4x3, 4x4) from the Display menu.
- Show/hide unsupported systems: Auto-hide platforms whose ROM folder is missing according to
es_systems.cfg, with a toggle in the Display menu. - Smarter system images: Image loading prioritizes explicit
platform_imagefrom your systems list JSON before falling back to<platform_name>.pngor folder images. - Font size adjustment : If you find the text too small/too large, you can change it in the menu.
- Search mode : Filter games by name for quick navigation with virtual keyboard on controller.
- Multilingual support : Interface available in multiple languages. You can choose the language in the menu.
- Error handling with informative messages and LOG file.
- Adaptive interface : The interface adapts to all resolutions from 800x600 to 4K (not tested beyond 1920x1080).
- Automatic updates : the application must be restarted after an update.
- Automatic supported extensions cache: On first use, RGSX reads
es_systems.cfg(RetroBat/Batocera) and generates/saves/ports/rgsx/rom_extensions.jsonwith allowed extensions per system. - Retrobat gamelist auto-update: On Retrobat, the Windows
gamelist.xmlis updated automatically at launch so your images/videos appear in EmulationStation.
🖥️ Requirements
Operating System
- Batocera / Knulli or Retrobat
Hardware
- PC, Raspberry Pi, handheld console...
- Controller (optional, but recommended for optimal experience) or Keyboard.
- Active internet connection
Disk Space
- 100 MB for the application.
🚀 Installation
Method 1: Automatic command line installation for Batocera/Knulli
- On batocera x86 PC access F1>Applications>xTERM or
- From another PC on the network with Putty, powershell SSH or other application
Enter the command:
curl -L bit.ly/rgsx-install | sh
Wait and watch the return on screen or on the command (to be improved).
Update the game list via: Menu > Game Settings > Update game list.
You will find RGSX in the "PORTS" system or "Homebrew and ports" and in /roms/ports/RGSX
Method 2: Manual copy (Mandatory method on retrobat)
- Download the repository content as zip: https://github.com/RetroGameSets/RGSX/archive/refs/heads/main.zip
- Extract the zip file into the ROMS folder (for Batocera, only the PORTS folder will be used, for Retrobat you will need to extract PORTS and WINDOWS)
- Update the game list via the menu:
Game Settings > Update list.
🏁 First startup
IMPORTANT (1Fichier / AllDebrid)
To download from 1Fichier links, you can use either your 1Fichier API key or an AllDebrid API key (automatic fallback if 1Fichier is missing).
Where to paste your API key (file should contain the key only):
/saves/ports/rgsx/1FichierAPI.txt(1Fichier API key)/saves/ports/rgsx/AllDebridAPI.txt(AllDebrid API key)Do NOT create these files manually. Start a 1Fichier download once: RGSX will auto-create empty files if missing. Then open the appropriate file and paste your key.
- Launch RGSX from ports on batocera, from Windows on Retrobat.
- On first launch, the application will automatically import the control configuration from EmulationStation if available.
- Configure controls if necessary. They can be reconfigured via the pause menu later.
- Delete the
/saves/ports/rgsx/controls.jsonfile in case of problems then restart the application. - The application will then automatically download all necessary data.
INFO: for retrobat on first launch, the application will download Python in the /system/tools/python folder which is necessary to run the application. The file is about 50MB and downloads quite quickly but there is no visual feedback on screen, which will remain frozen on the RGSX loading for a few seconds.
🕹️ Usage
Menu navigation
- Use the directional keys (D-Pad, keyboard arrows) to navigate between platforms, games and options.
- Press the key configured as start (default, P or Start button on controller) to open the pause menu.
- From the pause menu, access history, control help (control display changes depending on which menu you're in) or reconfiguration of keys, languages, font size.
- You can also, from the menu, regenerate the cache of the systems/games/images list to be sure to have the latest updates.
Display menu
- Layout: switch platforms grid between 3x3, 3x4, 4x3, 4x4.
- Font size: adjust text scale (accessibility).
- Show unsupported systems: toggle visibility for platforms whose ROM folder is missing.
- Filter systems: quickly show/hide platforms by name (persistent).
Download
- Select a platform, then a game.
- Press the confirm key (default, Enter or A button) to start the download.
- Optional: Press the key mapped to Clear History (default X) on several games to toggle multi-selection ([X] marker). Then press Confirm to launch a sequential batch download.
- Follow the progress in the
HISTORYmenu.
Control customization
- In the pause menu, select Reconfigure controls.
- Follow the on-screen instructions to map each action by holding the key or button for 3 seconds.
- Button names are automatically displayed according to your controller (A, B, X, Y, LB, RB, LT, RT, etc.).
- The configuration is compatible with all controllers supported by EmulationStation.
- If controls behave incorrectly or mapping is corrupted, delete the file:
/saves/ports/rgsx/controls.jsonthen restart the application (it will be recreated).
History
- Access download history via the pause menu or by pressing the history key (default, H).
- Select a game to re-download it if necessary in case of error or cancellation.
- Clear all history via the CLEAR button in the history menu. Games are not deleted, only the list.
- Cancel a download with the BACK button.
Logs
Logs are saved in roms/ports/RGSX/logs/RGSX.log on batocera and on Retrobat to diagnose problems and should be shared for any support.
📁 Project structure
/roms/windows/RGSX
│
├── RGSX Retrobat.bat # Shortcut to launch RGSX application for retrobat only, not necessary for batocera/knulli
/roms/ports/
RGSX-INSTALL.log # Installation LOG only for a first command line installation.
RGSX/
│
├── __main__.py # Main entry point of the application.
├── controls.py # Keyboard/controller/mouse event handling and menu navigation.
├── controls_mapper.py # Control configuration with automatic button name detection.
├── display.py # Pygame graphics interface rendering.
├── config.py # Global configuration (paths, parameters, etc.).
├── rgsx_settings.py # Unified application settings management.
├── network.py # Game download management.
├── history.py # Download history management.
├── language.py # Multilingual support management.
├── accessibility.py # Accessibility settings management.
├── utils.py # Utility functions (text wrap, truncation etc.).
├── update_gamelist.py # Game list update (Batocera/Knulli).
├── update_gamelist_windows.py # Retrobat-only: auto-update ES gamelist.xml on launch.
├── assets/ # Application resources (fonts, executables, music).
├── languages/ # Translation files.
└── logs/
└── RGSX.log # Log file.
/saves/ports/RGSX/
│
├── systems_list.json # Available Systems names / folders / images
├── games/ # Links for games.
├── images/ # System images.
├── rgsx_settings.json # Unified configuration file (settings, accessibility, language, music, symlinks).
├── controls.json # Control mapping file (generated after first startup).
├── history.json # Download history database (generated after first download).
├── rom_extensions.json # Generated from es_systems.cfg: per-system allowed ROM extensions cache.
├── 1FichierAPI.txt # 1fichier API key (premium account and + only) (empty by default).
└── AllDebridAPI.txt # AllDebrid API key (optional, fallback for 1Fichier links) (empty by default).
🤝 Contributing
Report a bug
- Check the logs in
/roms/ports/RGSX/logs/RGSX.log. - Open an issue on GitHub with a detailed description and relevant logs.
Propose a feature
- Submit an issue with a clear description of the proposed feature.
- Explain how it integrates into the application.
Contribute to the code
- Fork the repository and create a branch for your feature or fix:
git checkout -b feature/your-feature-name
- Test your changes on Batocera.
- Submit a pull request with a detailed description.
⚠️ Known issues / To implement
- (None currently listed)
📝 License
This project is free. You are free to use, modify and distribute it under the terms of this license.
Developed with ❤️ for retro gaming enthusiasts.
🔄 Changelog
All informations are on the discord server
🌐 Custom Game Sources
You can switch source mode in the pause menu (Game Source: RGSX / Custom).
Custom mode expects a ZIP URL (HTTP/HTTPS) pointing to a sources archive with the same structure as the default. Configure it in:
{rgsx_settings path} → key: sources.custom_url
Behavior:
- If custom mode selected and URL missing/invalid → empty list + popup (no fallback)
- Fix the URL then use "Update games list" and restart if required
Example snippet in rgsx_settings.json:
"sources": {
"mode": "custom",
"custom_url": "https://example.com/my-sources.zip"
}
Switch back to RGSX mode anytime via pause menu.