Comment organiser les BIOS pour des dizaines d'émulateurs une bonne fois pour toutes
Quiconque a déjà configuré un combo rétro sur un Steam Deck, un mini-PC ancien ou un Raspberry Pi connaît cette routine. Vous installez Batocera, EmuDeck ou simplement RetroArch, déposez vos jeux préférés pour PlayStation 2 ou Sega Saturn, lancez la ROM, et vous voyez un écran noir. Le journal indique qu'il manque un fichier comme scph1001.bin ou saturn_bios.bin.
Puis commence la quête typique : vous allez sur un moteur de recherche, trouvez des sites douteux remplis de publicités, téléchargez des archives de 50 gigaoctets avec des tas de doublons et de cochonneries. La moitié des dumps ont des fautes de frappe dans leurs noms, les sommes de contrôle ne correspondent pas, et l'émulateur continue de planter. Le projet RetroBIOS résout ce problème avec une approche d'ingénierie.
Pourquoi la documentation des émulateurs ment souvent
Le problème principal avec les fichiers BIOS réside dans le désynchronisation. Les auteurs de frontends et de shells (par exemple, Recalbox ou Batocera) écrivent leurs listes de fichiers requis dans des wikis. Pendant ce temps, les développeurs de cores d'émulateurs mettent à jour leurs bases de code, changent les exigences de noms de fichiers, ajoutent la prise en charge de nouvelles révisions de puces, ou modifient les algorithmes d'initialisation du matériel.
En conséquence, la liste officielle des BIOS pour un frontend peut être désynchronisée depuis des années avec ce que le binaire de l'émulateur demande réellement au démarrage.
Les créateurs de RetroBIOS ont adopté une approche différente. Au lieu de lire des forums et des pages de wiki obsolètes, ils analysent directement le code source des émulateurs. Si un core Libretro ou un émulateur autonome recherche un fichier d'une taille spécifique avec un hash MD5 particulier, ce fait est enregistré comme la seule source de vérité.
Ce qu'il y a à l'intérieur du projet
Le dépôt combine une immense base de données de métadonnées, des scripts de vérification et des ensembles de fichiers système prêts à l'emploi pour 12 plateformes populaires : Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie et RomM.
L'ampleur du travail accompli est impressionnante par les chiffres :
- 436 émulateurs analysés depuis le code source
- 463 systèmes de jeu, des anciens Atari et ZX Spectrum jusqu'à la PS3 et la Nintendo Switch
- 8 925 fichiers dans la base de données, incluant des firmwares système, des ROMs d'arcade et des polices système
- 5 types de sommes de contrôle pour chaque fichier (MD5, SHA1, SHA256, CRC32, Adler-32)
Les développeurs du projet croisent également les dumps système avec des bases de données de préservation numérique comme No-Intro, Redump et TOSEC.
Particulièrement intéressant est la soi-disant analyse des lacunes. La documentation du projet liste ouvertement ce qui n'est pas encore dans la base de données : des dumps rares que la communauté n'a pas encore physiquement créés, ou des clés de chiffrement uniques pour des consoles utilisateur spécifiques.
Comment tout installer en une seule commande
Pour une configuration rapide, les auteurs ont écrit des scripts d'installation. Ils détectent automatiquement votre système d'exploitation, vérifient les hashages des fichiers que vous avez déjà, et téléchargent uniquement ce qui manque.
Pour Linux, macOS et Steam Deck, exécutez simplement dans le terminal :
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
Sur Windows via PowerShell :
irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
Si vous configurez une carte SD pour une console portable directement depuis votre ordinateur, vous pouvez passer le chemin cible et la plateforme en arguments :
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard
Le script vérifie les fichiers exactement de la façon dont votre shell choisi le fait. Par exemple, Batocera vérifie le hash MD5 de chaque fichier, BizHawk s'appuie sur SHA1, et RetroArch ne vérifie que l'exactitude du nom de fichier dans le dossier system/.
Construire des packs personnalisés via Python
Si vous ne voulez pas tirer l'archive entière de plusieurs gigaoctets et que vous construisez un système minimal pour quelques plateformes spécifiques, le dépôt dispose d'outils CLI pratiques. Ils nécessitent uniquement Python 3 et la bibliothèque pyyaml.
Construisez un package uniquement pour l'émulateur Dolphin :
python scripts/generate_pack.py --emulator dolphin
Générez un ensemble de fichiers exclusivement pour PlayStation 2 :
python scripts/generate_pack.py --system sony-playstation-2
Affichez la liste des plateformes et des cores disponibles :
python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems
Il y a aussi un script de validation. Il analyse votre répertoire BIOS existant et produit un rapport détaillé : quels fichiers sont en place, où le hashage est corrompu, et quels dumps manquent pour exécuter des jeux spécifiques.
python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast
Données ouvertes pour les développeurs
RetroBIOS est utile non seulement comme source de fichiers prêts à l'emploi, mais aussi comme base de données structurée. Sur le site de documentation, les auteurs publient des exports en formats JSON, CSV et SQLite avec tous les hashages, chemins et dépendances des émulateurs.
Si vous écrivez votre propre lanceur, gestionnaire de ROM ou configurez une build Linux personnalisée pour des portables, ces fichiers vous éviteront d'analyser manuellement des centaines de sources de cores. La communauté a déjà commencé à construire des utilitaires basés sur ces données, comme des scanners pour trier les archives personnelles.
Nuances et licensing
Le code source des scripts et les utilitaires de construction sont distribués sous licence MIT. Les fichiers système et les firmwares sont des logiciels propriétaires tiers, ils sont donc distribués sous des conditions permettant l'utilisation personnelle de sauvegarde et de compatibilité. Les auteurs maintiennent une page NOTICE ouverte avec un formulaire pour les demandes de retrait des détenteurs de droits.
Les archives de plus de 2 Go dans les releases sont divisées en volumes .zip.001 et .zip.002. Vous pouvez les extraire avec 7-Zip ou les concaténer avec une simple commande cat Pack.zip.0* > Pack.zip dans le terminal avant de les décompresser.
Cela vaut-il le coup d'essayer
Si vous avez une console portable (Anbernic, Miyoo, Steam Deck), une build rétro sur Raspberry Pi, ou si vous exécutez simplement des émulateurs sur votre PC de travail, marquez ce dépôt en favori.
Au lieu de chasser des archives de forums chaotiques, vous obtenez une collection propre où chaque octet est vérifié par rapport au code source propre de l'émulateur. Le script s'installe en quelques minutes et fait gagner des heures de manipulation manuelle de répertoires.
Projets similaires