Hoe u BIOS-bestanden voor tientallen emulators definitief organiseert
Iedereen die ooit een retro-combinatie heeft ingesteld op een Steam Deck, oude mini-PC of Raspberry Pi kent deze routine. U installeert Batocera, EmuDeck of plain RetroArch, plaatst uw favoriete games voor PlayStation 2 of Sega Saturn, start de ROM en ziet een zwart scherm. De log zegt dat er een bestand ontbreekt zoals scph1001.bin of saturn_bios.bin.
Dan begint de typische zoektocht: u gaat naar een zoekmachine, vindt twijfelachtige sites vol met advertenties, downloadt 50-gigabyte archieven met tonnen duplicaten en rommel. De helft van de dumps hebben typfouten in hun namen, checksums komen niet overeen en de emulator blijft crashen. Het RetroBIOS-project lost dit probleem op met een technische aanpak.
Waarom emulator-documentatie vaak liegt
Het hoofdprobleem met BIOS-bestanden ligt in de desynchronisatie. Frontend- en shell-auteurs (bijvoorbeeld Recalbox of Batocera) schrijven hun lijsten van vereiste bestanden in wikis. Ondertussen updaten emulator-core-ontwikkelaars hun codebases, wijzigen bestandsnaameisen, voegen ondersteuning toe voor nieuwe chip-revisies of modificeren hardware-initialisatie-algoritmen.
Als gevolg daarvan kan de officiële BIOS-lijst voor een frontend jarenlang uit de pas lopen met wat het emulator-binary daadwerkelijk opstart vraagt.
De RetroBIOS-makers kozen een andere aanpak. In plaats van verouderde forums en wiki-pagina's te lezen, analyseren ze emulator-broncode direct. Als een Libretro-core of standalone emulator zoekt naar een bestand van een specifieke grootte met een bepaalde MD5-hash, wordt dat feit vastgelegd als de enige bron van waarheid.
Wat zit er in het project
De repository combineert een enorme metadata-database, verificatiescripts en kant-en-klare systeembestandssets voor 12 populaire platforms: Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie en RomM.
De omvang van het geleverde werk is indrukwekkend qua cijfers:
- 436 emulators geanalyseerd vanuit broncode
- 463 gaming-systemen, van oude Atari en ZX Spectrum tot PS3 en Nintendo Switch
- 8.925 bestanden in de database, inclusief systeemfirmwares, arcade ROM's en systeemfonts
- 5 checksum-types voor elk bestand (MD5, SHA1, SHA256, CRC32, Adler-32)
De projectontwikkelaars vergelijken systeemdumps ook met digitale preservatiedatabases zoals No-Intro, Redump en TOSEC.
Van bijzonder interesse is de zogenaamde gap-analyse. De projectdocumentatie vermeldt openlijk wat nog niet in de database zit: zeldzame dumps die de community nog niet fysiek heeft gemaakt, of unieke encryptiesleutels voor specifieke gebruikersconsoles.
Hoe u alles in één commando installeert
Voor snelle setup schreven de auteurs installatiescripts. Deze detecteren automatisch uw besturingssysteem, verifiëren hashes van bestanden die u al heeft en downloaden alleen wat ontbreekt.
Voor Linux, macOS en Steam Deck hoeft u alleen maar in de terminal te draaien:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
Op Windows via PowerShell:
irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
Als u een SD-kaart instelt voor een handheld-console direct vanaf uw computer, kunt u het doelpad en platform als argumenten doorgeven:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard
Het script verifieert bestanden exact zoals uw gekozen shell dat doet. Batocera controleert bijvoorbeeld de MD5-hash van elk bestand, BizHawk vertrouwt op SHA1 en RetroArch verifieert alleen de correctheid van de bestandsnaam in de system/-map.
Aangepaste packs bouwen via Python
Als u niet de hele multi-gigabyte archive wilt downloaden en een minimaal systeem bouwt voor een paar specifieke platforms, heeft de repository handige CLI-tools. Deze vereisen alleen Python 3 en de pyyaml-bibliotheek.
Bouw een pakket alleen voor de Dolphin-emulator:
python scripts/generate_pack.py --emulator dolphin
Genereer een bestandsset exclusief voor PlayStation 2:
python scripts/generate_pack.py --system sony-playstation-2
Bekijk de beschikbare lijst van platforms en cores:
python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems
Er is ook een validatiescript. Het scant uw bestaande BIOS-map en produceert een gedetailleerd rapport: welke bestanden aanwezig zijn, waar de hash corrupt is en welke dumps ontbreken om specifieke games te draaien.
python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast
Open data voor ontwikkelaars
RetroBIOS is niet alleen nuttig als bron van kant-en-klare bestanden, maar ook als gestructureerde database. Op de documentatiesite publiceren de auteurs exports in JSON-, CSV- en SQLite-formaten met alle hashes, paden en emulator-afhankelijkheden.
Als u uw eigen launcher, ROM-manager schrijft of een aangepaste Linux-build configureert voor handhelds, zullen deze bestanden u besparen van het handmatig parsen van honderden core-bronnen. De community is al begonnen met het bouwen van hulpprogramma's op basis van deze data, zoals scanners voor het sorteren van thuisarchieven.
Nuances en licentiëring
Script-broncode en build-hulpprogramma's worden gedistribueerd onder de MIT-licentie. Systeembestanden en firmwares zijn van derden en propriëtair, dus ze worden gedistribueerd onder voorwaarden die persoonlijk backup- en compatibiliteitsgebruik toestaan. De auteurs houden een open NOTICE-pagina bij met een formulier voor verwijderingsverzoeken van rechthebbenden.
Archieven groter dan 2 GB in releases zijn opgesplitst in volumes .zip.001 en .zip.002. U kunt ze uitpakken met 7-Zip of ze concatenen met een eenvoudig cat Pack.zip.0* > Pack.zip commando in de terminal voordat u uitpakt.
Is het de moeite waard om te proberen
Als u een handheld-console heeft (Anbernic, Miyoo, Steam Deck), een retro-build op Raspberry Pi, of u draait gewoon emulators op uw werk-PC, bookmark dan deze repository.
In plaats van chaotisch forum-archief zoeken krijgt u een schone collectie waar elke byte is geverifieerd tegen de emulator's eigen broncode. Het script installeert in een paar minuten en bespaart uren van handmatig directory-geweld.
Gerelateerde projecten