# 🎼 Retro Game Sets Xtra (RGSX) ## SUPPORT / HELP : https://discord.gg/Vph9jwg3VV RGSX est une application dĂ©veloppĂ©e en Python basĂ©e sur Pygame pour la partie graphique pour la communautĂ© par RetroGameSets. Elle est entiĂšrement gratuite. L'application prend en charge plusieurs sources comme myrient, 1fichier. Ces sources pourront ĂȘtre mises Ă  jour frĂ©quemment. --- ## 🧰 Utilisation en ligne de commande (CLI) RGSX propose aussi une interface en ligne de commande (sans interface graphique) pour lister les plateformes/jeux et tĂ©lĂ©charger des ROMs : - Guide FR: voir `https://github.com/RetroGameSets/RGSX/blob/main/README_CLI.md` --- ## ✹ FonctionnalitĂ©s - **TĂ©lĂ©chargement de jeux** : Prise en charge des fichiers ZIP et gestion des extensions non supportĂ©es Ă  partir du fichier `es_systems.cfg` d'EmulationStation (et des `es_systems_*.cfg` personnalisĂ©s sur Batocera). RGSX lit les extensions autorisĂ©es par systĂšme depuis ces configurations et extrait automatiquement les archives si le systĂšme ne les supporte pas. - Les tĂ©lĂ©chargements ne nĂ©cessitent aucune authentification ni compte pour la plupart. - Les systĂšmes notĂ©s `(1fichier)` dans le nom ne seront accessibles que si vous renseignez votre clĂ© API 1fichier (voir plus bas). - **Historique des tĂ©lĂ©chargements** : Consultez et retĂ©lĂ©chargez les anciens fichiers. - **TĂ©lĂ©chargements multi-sĂ©lection** : Marquez plusieurs jeux dans la liste avec la touche associĂ©e Ă  Vider Historique (par dĂ©faut X) pour prĂ©parer un lot. Appuyez ensuite sur Confirmer pour lancer les tĂ©lĂ©chargements en sĂ©quence. - **Personnalisation des contrĂŽles** : Remappez les touches du clavier ou de la manette Ă  votre convenance avec dĂ©tection automatique des noms de boutons depuis EmulationStation(beta). - **Grille des plateformes** : changez la disposition de la grille (3x3, 3x4, 4x3, 4x4) depuis le menu Affichage. - **Afficher/Masquer plateformes non supportĂ©es** : masquage automatique des systĂšmes dont le dossier ROM est absent selon `es_systems.cfg`, avec un interrupteur dans le menu Affichage. - **Images systĂšme plus intelligentes** : prioritĂ© Ă  l’image explicite `platform_image` issue du JSON des systĂšmes avant les fallback `.png` ou dossier. - **Changement de taille de police** : Si vous trouvez les Ă©critures trop petites/trop grosses, vous pouvez le changer dans le menu. - **Mode recherche** : Filtrez les jeux par nom pour une navigation rapide avec clavier virtuel sur manette. - **Support multilingue** : Interface disponible en plusieurs langues. Vous pourrez choisir la langue dans le menu. - **Gestion des erreurs** avec messages informatifs et fichier de LOG. - **Interface adaptative** : L'interface s'adapte Ă  toutes rĂ©solutions de 800x600 Ă  4K (non testĂ© au-delĂ  de 1920x1080). - **Mise Ă  jour automatique** : l'application doit ĂȘtre relancĂ©e aprĂšs une mise Ă  jour. - **Cache des extensions supportĂ©es** : Ă  la premiĂšre utilisation, RGSX lit `es_systems.cfg` (RetroBat/Batocera) et gĂ©nĂšre `/saves/ports/rgsx/rom_extensions.json` avec les extensions autorisĂ©es par systĂšme. - **Mise Ă  jour automatique de la gamelist (Retrobat)** : sur Retrobat, le `gamelist.xml` Windows est mis Ă  jour automatiquement au lancement pour afficher les images/vidĂ©os dans EmulationStation. --- ## đŸ–„ïž PrĂ©requis ### SystĂšme d'exploitation - Batocera / Knulli ou Retrobat ### MatĂ©riel - PC, Raspberry, console portable... - Manette (optionnelle, mais recommandĂ©e pour une expĂ©rience optimale) ou Clavier. - Connexion internet active ### Espace disque - 100 Mo pour l'application. --- ## 🚀 Installation ### MĂ©thode 1 : Installation automatique en ligne de commande pour Batocera/Knulli - Sur batocera x86 PC accĂ©der Ă  F1>Applications>xTERM ou - Depuis un autre PC sur le rĂ©seau avec application Putty, powershell SSH ou autre Entrez la commande : ## `curl -L bit.ly/rgsx-install | sh` Patientez et regardez le retour Ă  l'Ă©cran ou sur la commande (Ă  amĂ©liorer). Mettez Ă  jour la liste des jeux via : `Menu > ParamĂštres de jeux > Mettre Ă  jour la liste des jeux`. Vous trouverez RGSX dans le systĂšme "PORTS" ou "Jeux Amateurs et portages" et dans `/roms/ports/RGSX` --- ### MĂ©thode 2 : Copie manuelle (MĂ©thode obligatoire sur retrobat) - TĂ©lĂ©chargez le contenu du dĂ©pĂŽt en zip : https://github.com/RetroGameSets/RGSX/archive/refs/heads/main.zip - Extrayez le fichier zip dans le dossier ROMS (pour Batocera, seul le dossier PORTS sera utilisĂ© pour Retrobat il faudra extraire PORTS et WINDOWS) - Mettez Ă  jour la liste des jeux via le menu : `ParamĂštres de jeux > Mettre Ă  jour la liste`. ## 🏁 Premier dĂ©marrage --- > ## IMPORTANT > Si vous avez une clĂ© API 1Fichier, vous devez la renseigner dans > `/saves/ports/rgsx/1FichierAPI.txt` > si vous souhaitez tĂ©lĂ©charger depuis des liens 1Fichier. --- - Lancez RGSX depuis ports sur batocera, depuis Windows sur Retrobat. - Au premier lancement, l'application importera automatiquement la configuration des contrĂŽles depuis EmulationStation si disponible. - Configurez les contrĂŽles si nĂ©cessaire. Ils pourront ĂȘtre reconfigurĂ©s via le menu pause par la suite. - Supprimez le fichier `/saves/ports/rgsx/controls.json` en cas de problĂšme puis relancez l'application. - L'application tĂ©lĂ©chargera toutes les donnĂ©es nĂ©cessaires automatiquement ensuite. INFO : pour retrobat au premier lancement, l'application tĂ©lĂ©chargera Python dans le dossier /system/tools/python qui est nĂ©cessaire pour faire fonctionner l'application. Le fichier fait environ 50 Mo et va assez vite Ă  tĂ©lĂ©charger mais il n'y a aucun retour visuel Ă  l'Ă©cran, qui va rester figĂ© sur le chargement de RGSX pendant quelques secondes. --- ## đŸ•č Utilisation ### Navigation dans les menus - Utilisez les touches directionnelles (D-Pad, flĂšches du clavier) pour naviguer entre les plateformes, jeux et options. - Appuyez sur la touche configurĂ©e comme start (par dĂ©faut, **P** ou bouton Start sur la manette) pour ouvrir le menu pause. - Depuis le menu pause, accĂ©dez Ă  l'historique, Ă  l'aide des contrĂŽles (l'affichage des contrĂŽles change suivant le menu oĂč vous ĂȘtes) ou Ă  la reconfiguration des touches, des langues, de la taille de la police. - Vous pouvez aussi, depuis le menu, rĂ©gĂ©nĂ©rer le cache de la liste des systĂšmes/jeux/images pour ĂȘtre sĂ»r d'avoir les derniĂšres mises Ă  jour. #### Menu Affichage - Disposition: basculez la grille des plateformes entre 3x3, 3x4, 4x3, 4x4. - Taille de police: ajustez l’échelle du texte (accessibilitĂ©). - Afficher plateformes non supportĂ©es: afficher/masquer les systĂšmes dont le dossier ROM est absent. - Filtrer les systĂšmes: afficher/masquer rapidement des plateformes par nom (persistant). --- ### TĂ©lĂ©chargement - SĂ©lectionnez une plateforme, puis un jeu. - Appuyez sur la touche configurĂ©e confirm (par dĂ©faut, **EntrĂ©e** ou bouton **A**) pour lancer le tĂ©lĂ©chargement. - Option : appuyez sur la touche Vider Historique (par dĂ©faut **X**) sur plusieurs jeux pour activer/dĂ©sactiver leur sĂ©lection (marqueur [X]). Puis validez pour lancer un lot de tĂ©lĂ©chargements. - Suivez la progression dans le menu `HISTORIQUE`. --- ### Personnalisation des contrĂŽles - Dans le menu pause, sĂ©lectionnez **Reconfigurer controls**. - Suivez les instructions Ă  l'Ă©cran pour mapper chaque action en maintenant la touche ou le bouton pendant 3 secondes. - Les noms des boutons s'affichent automatiquement selon votre manette (A, B, X, Y, LB, RB, LT, RT, etc.). - La configuration est compatible avec toutes les manettes supportĂ©es par EmulationStation. - En cas de problĂšme de contrĂŽles ou configuration corrompue, supprimez le fichier : `/saves/ports/rgsx/controls.json` puis redĂ©marrez l'application (il sera recréé automatiquement). --- ### Historique - AccĂ©dez Ă  l'historique des tĂ©lĂ©chargements via le menu pause ou en appuyant sur la touche historique (par dĂ©faut, **H**). - SĂ©lectionnez un jeu pour le retĂ©lĂ©charger si nĂ©cessaire en cas d'erreur ou annulation. - Videz tout l'historique via le bouton **EFFACER** dans le menu historique. Les jeux ne sont pas effacĂ©s seulement la liste. - Annulez un tĂ©lĂ©chargement avec le bouton **RETOUR** --- ### Logs Les logs sont enregistrĂ©s dans `roms/ports/RGSX/logs/RGSX.log` sur batocera et sur Retrobat pour diagnostiquer les problĂšmes et seront Ă  partager pour tout support. --- ## 🔄 Journal des modifications ### 2.1.0.0 (2025-09-09) - Retrobat : mise Ă  jour automatique de `gamelist.xml` au lancement pour afficher immĂ©diatement les images/vidĂ©os dans ES. - Chargement des images systĂšmes : prioritĂ© Ă  `platform_image` dĂ©fini dans le JSON des systĂšmes. - DĂ©tection automatique des extensions supportĂ©es via `es_systems.cfg`; gĂ©nĂ©ration et cache dans `/saves/ports/rgsx/rom_extensions.json`. - Masquage automatique des plateformes non supportĂ©es (dossier ROM manquant selon `es_systems.cfg`) avec interrupteur dans le menu Affichage. - Nouveau rĂ©glage dans Affichage pour changer la grille des plateformes (3x3, 3x4, 4x3, 4x4). - RĂ©organisation du menu pause pour mettre en avant les options courantes. - Traductions mises Ă  jour. - Corrections visuelles mineures et ajustements d’espacements. ### 2.0.0.0 (2025-09-05) - Refonte complĂšte du systĂšme de sources : gestion centralisĂ©e via `/saves/ports/rgsx/systems_list.json` (ordre conservĂ©), ajout automatique d’une plateforme en dĂ©posant son fichier JSON dans `/saves/ports/rgsx/games/` (crĂ©ation si absente) — pensez ensuite Ă  Ă©diter le champ "dossier" gĂ©nĂ©rĂ© pour qu’il corresponde Ă  votre organisation de tĂ©lĂ©chargements. - Nouveau menu de filtrage des systĂšmes (afficher/masquer plateformes avec persistance dans les paramĂštres) - En-tĂȘte de la liste des jeux (Nom / Taille) traduit - DĂ©tection automatique de l'ancien fichier sources.json → purge sĂ©curisĂ©e du cache + popup de redĂ©marrage (aucune migration) - FiabilitĂ© amĂ©liorĂ©e des tĂ©lĂ©chargements Archive.org : stratĂ©gie de retry multi-entĂȘtes + prĂ©chargement mĂ©tadonnĂ©es - Synchronisation des traductions (FR/EN/ES/DE/PT) et complĂ©tion des clĂ©s manquantes - Refactors internes : early-return unifiĂ© dans load_sources, reconstruction de cache plus sĂ»re ### 1.9.9.4 (2025-09-03) - Bascule Source des jeux (RGSX / PersonnalisĂ©e) + popups - Pas de fallback si source personnalisĂ©e invalide (liste vide + message) - RĂ©organisation menu pause (Source avant Mise Ă  jour) - Messages d’état symlink + traductions mineures - Correction minuterie popup et placeholders de chemin ### 1.9.9.3 - Ajout option symlink (dossiers plateformes imbriquĂ©s) - Persistance et traductions symlink ### 1.9.9.2 - Fichier unifiĂ© rgsx_settings.json (langue, musique, accessibilitĂ©, symlink, sources) - Migration automatique anciens JSON ### 1.9.9.1 - TĂ©lĂ©chargements multi-sĂ©lection & historique amĂ©liorĂ© - Gestion archives + meilleures popups d’erreur ### 1.9.9.0 - Taille de police (accessibilitĂ©), sĂ©lection langue, aide contrĂŽles, systĂšme de mise Ă  jour ### 1.9.8.x - FonctionnalitĂ©s initiales publiques (tĂ©lĂ©chargements, remapping manette, interface adaptative, logs) --- ## 🌐 Sources de jeux personnalisĂ©es Vous pouvez changer la source dans le menu pause (Source des jeux : RGSX / PersonnalisĂ©e). Le mode personnalisĂ© attend une URL ZIP (HTTP/HTTPS) pointant vers une archive des sources avec la mĂȘme structure que celle par dĂ©faut. À configurer dans : `{chemin rgsx_settings}` → clĂ© : `sources.custom_url` Comportement : - Si mode personnalisĂ© sĂ©lectionnĂ© et URL vide/invalide → liste vide + popup (aucun fallback) - Corrigez l’URL puis utilisez "Mettre Ă  jour la liste des jeux" et redĂ©marrez si nĂ©cessaire Exemple dans rgsx_settings.json : ```json "sources": { "mode": "custom", "custom_url": "https://exemple.com/mes-sources.zip" } ``` Revenez au mode RGSX Ă  tout moment via le menu pause. --- ## 📁 Structure du projet ``` /roms/windows/RGSX │ ├── RGSX Retrobat.bat # Raccourci pour lancer l'application RGSX pour retrobat uniquement, non nĂ©cessaire pour batocera/knulli /roms/ports/ RGSX-INSTALL.log # LOG d'installation uniquement pour une premiĂšre installation en ligne de commande. RGSX/ │ ├── __main__.py # Point d'entrĂ©e principal de l'application. ├── controls.py # Gestion des Ă©vĂ©nements clavier/manette/souris et navigation dans les menus. ├── controls_mapper.py # Configuration des contrĂŽles avec dĂ©tection automatique des noms de boutons. ├── display.py # Rendu des interfaces graphiques avec Pygame. ├── config.py # Configuration globale (chemins, paramĂštres, etc.). ├── rgsx_settings.py # Gestion unifiĂ©e des paramĂštres de l'application. ├── network.py # Gestion des tĂ©lĂ©chargements de jeux. ├── history.py # Gestion de l'historique des tĂ©lĂ©chargements. ├── language.py # Gestion du support multilingue. ├── accessibility.py # Gestion des paramĂštres d'accessibilitĂ©. ├── utils.py # Fonctions utilitaires (wrap du texte, troncage etc.). ├── update_gamelist.py # Mise Ă  jour de la liste des jeux (Batocera/Knulli). ├── update_gamelist_windows.py # SpĂ©cifique Retrobat : mise Ă  jour auto de gamelist.xml au lancement. ├── assets/ # Ressources de l'application (polices, exĂ©cutables, musique). ├── languages/ # Fichiers de traduction. └── logs/ └── RGSX.log # Fichier de logs. /saves/ports/RGSX/ │ ├── systems_list.json # Liste des systĂšmes ├── games/ # Liens des systĂšmes ├── images/ # Images des systĂšmes. ├── rgsx_settings.json # Fichier de configuration unifiĂ© (paramĂštres, accessibilitĂ©, langue, musique, symlinks). ├── controls.json # Fichier de mappage des contrĂŽles (gĂ©nĂ©rĂ© aprĂšs le premier dĂ©marrage). ├── history.json # Base de donnĂ©es de l'historique de tĂ©lĂ©chargements (gĂ©nĂ©rĂ© aprĂšs le premier tĂ©lĂ©chargement). ├── rom_extensions.json # GĂ©nĂ©rĂ© depuis es_systems.cfg : cache des extensions autorisĂ©es par systĂšme. └── 1FichierAPI.txt # ClĂ© API 1fichier (compte premium et + uniquement) (vide par dĂ©faut). ``` --- ## đŸ€ Contribution ### Signaler un bug 1. Consultez les logs dans `/roms/ports/RGSX/logs/RGSX.log`. 2. Ouvrez une issue sur GitHub avec une description dĂ©taillĂ©e et les logs pertinents. ### Proposer une fonctionnalitĂ© - Soumettez une issue avec une description claire de la fonctionnalitĂ© proposĂ©e. - Expliquez comment elle s'intĂšgre dans l'application. ### Contribuer au code 1. Forkez le dĂ©pĂŽt et crĂ©ez une branche pour votre fonctionnalitĂ© ou correction : ```bash git checkout -b feature/nom-de-votre-fonctionnalitĂ© ``` 2. Testez vos modifications sur Batocera. 3. Soumettez une pull request avec une description dĂ©taillĂ©e. --- ## ⚠ ProblĂšmes connus / À implĂ©menter - (Aucun listĂ© actuellement) --- ## 📝 Licence Ce projet est libre. Vous ĂȘtes libre de l'utiliser, le modifier et le distribuer selon les termes de cette licence. DĂ©veloppĂ© avec ❀ pour les amateurs de jeux rĂ©tro.