Come organizzare le BIOS per decine di emulatori una volta per tutte
Chiunque abbia mai configurato un combo retro su Steam Deck, un vecchio mini-PC o Raspberry Pi conosce questa routine. Installi Batocera, EmuDeck o semplice RetroArch, inserisci i tuoi giochi preferiti per PlayStation 2 o Sega Saturn, avvii la ROM e vedi una schermata nera. Il log dice che manca un file come scph1001.bin o saturn_bios.bin.
Poi inizia la tipica quest: vai su un motore di ricerca, trovi siti discutibili pieni di annunci, scarichi archivi da 50 gigabyte con tonnellate di duplicati e spazzatura. Metà dei dump hanno errori di battitura nei nomi, i checksum non corrispondono e l'emulatore continua a bloccarsi. Il progetto RetroBIOS risolve questo problema con un approccio ingegneristico.
Perché la documentazione degli emulatori spesso mente
Il problema principale dei file BIOS risiede nel desync. Gli autori di frontend e shell (ad esempio Recalbox o Batocera) scrivono i loro elenchi di file richiesti nei wiki. Nel frattempo, gli sviluppatori dei core degli emulatori aggiornano i loro codebase, cambiano i requisiti dei nomi dei file, aggiungono supporto per nuove revisioni di chip o modificano gli algoritmi di inizializzazione dell'hardware.
Di conseguenza, l'elenco ufficiale delle BIOS per un frontend può essere fuori sincrono per anni con ciò che il binario dell'emulatore richiede effettivamente all'avvio.
I creatori di RetroBIOS hanno adottato un approccio diverso. Invece di leggere forum e pagine wiki obsoleti, analizzano direttamente il codice sorgente degli emulatori. Se un core Libretro o un emulatore standalone cerca un file di una dimensione specifica con un particolare hash MD5, quel fatto viene registrato come unica fonte di verità.
Cosa c'è dentro il progetto
Il repository combina un enorme database di metadati, script di verifica e set di file di sistema pronti all'uso per 12 piattaforme popolari: Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie e RomM.
La portata del lavoro svolto è impressionante nei numeri:
- 436 emulatori analizzati dal codice sorgente
- 463 sistemi di gioco, dall'antico Atari e ZX Spectrum al PS3 e Nintendo Switch
- 8.925 file nel database, incluse firmware di sistema, ROM arcade e font di sistema
- 5 tipi di checksum per ogni file (MD5, SHA1, SHA256, CRC32, Adler-32)
Gli sviluppatori del progetto incrociano anche i dump di sistema con database di preservazione digitale come No-Intro, Redump e TOSEC.
Di particolare interesse è la cosiddetta analisi dei gap. La documentazione del progetto elenca apertamente ciò che non è ancora nel database: dump rari che la comunità non ha ancora creato fisicamente, o chiavi di crittografia uniche per console utente specifiche.
Come installare tutto con un comando
Per una configurazione rapida, gli autori hanno scritto script di installazione. Rilevano automaticamente il sistema operativo, verificano gli hash dei file che hai già e scaricano solo ciò che manca.
Per Linux, macOS e Steam Deck, basta eseguire nel terminale:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
Su Windows tramite PowerShell:
irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
Se stai configurando una scheda SD per una console portatile direttamente dal tuo computer, puoi passare il percorso di destinazione e la piattaforma come argomenti:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard
Lo script verifica i file esattamente come fa la tua shell scelta. Ad esempio, Batocera controlla l'hash MD5 di ogni file, BizHawk si basa su SHA1 e RetroArch verifica solo la correttezza del nome del file nella cartella system/.
Creare pacchetti personalizzati tramite Python
Se non vuoi scaricare l'intero archivio multi-gigabyte e stai costruendo un sistema minimale per un paio di piattaforme specifiche, il repository ha comodi strumenti CLI. Richiedono solo Python 3 e la libreria pyyaml.
Costruisci un pacchetto solo per l'emulatore Dolphin:
python scripts/generate_pack.py --emulator dolphin
Genera un set di file esclusivamente per PlayStation 2:
python scripts/generate_pack.py --system sony-playstation-2
Visualizza l'elenco delle piattaforme e dei core disponibili:
python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems
C'è anche uno script di validazione. Scansiona la tua directory BIOS esistente e produce un report dettagliato: quali file sono presenti, dove l'hash è corrotto e quali dump mancano per eseguire giochi specifici.
python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast
Dati aperti per sviluppatori
RetroBIOS è utile non solo come fonte di file pronti all'uso ma anche come database strutturato. Sul sito della documentazione, gli autori pubblicano esportazioni in formati JSON, CSV e SQLite con tutti gli hash, i percorsi e le dipendenze degli emulatori.
Se stai scrivendo il tuo launcher, un gestore di ROM o configurando una build Linux personalizzata per portatili, questi file ti faranno risparmiare la fatica di analizzare manualmente centinaia di sorgenti di core. La comunità ha già iniziato a costruire utility basate su questi dati, come scanner per l'ordinamento di archivi domestici.
Sfumature e licenziamento
Il codice sorgente degli script e le utility di build sono distribuiti sotto licenza MIT. I file di sistema e i firmware sono software proprietario di terze parti, quindi sono distribuiti sotto termini che consentono l'uso personale per backup e compatibilità. Gli autori mantengono una pagina NOTICE aperta con un modulo per richieste di rimozione da parte dei titolari dei diritti.
Gli archivi più grandi di 2 GB nelle release sono divisi in volumi .zip.001 e .zip.002. Puoi estrarli con 7-Zip o concatenarli con un semplice comando cat Pack.zip.0* > Pack.zip nel terminale prima di decomprimerli.
Vale la pena provare
Se hai una console portatile (Anbernic, Miyoo, Steam Deck), una build retro su Raspberry Pi, o semplicemente esegui emulatori sul tuo PC di lavoro, salva questo repository nei segnalibri.
invece di cercare archivi caotici sui forum, ottieni una collezione pulita dove ogni byte è verificato contro il codice sorgente stesso dell'emulatore. Lo script si installa in un paio di minuti e fa risparmiare ore di gestione manuale delle directory.
Progetti correlati