>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
HTML

Hoe u BIOS-bestanden voor tientallen emulators definitief organiseert

RetroBIOS

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