Cómo organizar las BIOS de docenas de emuladores de una vez por todas
Cualquiera que haya configurado una configuración retro en una Steam Deck, un mini-PC antiguo o una Raspberry Pi conoce esta rutina. Instalas Batocera, EmuDeck o simplemente RetroArch, colocas tus juegos favoritos de PlayStation 2 o Sega Saturn, ejecutas la ROM y ves una pantalla negra. El registro indica que falta un archivo como scph1001.bin o saturn_bios.bin.
Entonces comienza la búsqueda típica: vas a un motor de búsqueda, encuentras sitios dudosos llenos de anuncios, descargas archivos de 50 gigabytes con un montón de duplicados y basura. La mitad de los dumps tienen errores tipográficos en sus nombres, las sumas de verificación no coinciden y el emulador sigue fallando. El proyecto RetroBIOS resuelve este problema con un enfoque de ingeniería.
Por qué la documentación de los emuladores a menudo miente
El problema principal con los archivos BIOS radica en la desincronización. Los autores de frontends y shells (por ejemplo, Recalbox o Batocera) escriben sus listas de archivos requeridos en wikis. Mientras tanto, los desarrolladores de núcleos de emuladores actualizan sus bases de código, cambian los requisitos de nombres de archivos, agregan soporte para nuevas revisiones de chips o modifican algoritmos de inicialización de hardware.
Como resultado, la lista oficial de BIOS de un frontend puede estar desincronizada durante años con lo que el binario del emulador realmente solicita al inicio.
Los creadores de RetroBIOS tomaron un enfoque diferente. En lugar de leer foros obsoletos y páginas wiki, analizan el código fuente de los emuladores directamente. Si un núcleo Libretro o emulador independiente busca un archivo de un tamaño específico con un hash MD5 particular, ese hecho se registra como la única fuente de verdad.
Qué hay dentro del proyecto
El repositorio combina una enorme base de datos de metadatos, scripts de verificación y conjuntos de archivos de sistema listos para usar para 12 plataformas populares: Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie y RomM.
La escala del trabajo realizado es impresionante en números:
- 436 emuladores analizados desde el código fuente
- 463 sistemas de juegos, desde Atari antiguo y ZX Spectrum hasta PS3 y Nintendo Switch
- 8.925 archivos en la base de datos, incluyendo firmwares de sistema, ROMs de arcade y fuentes del sistema
- 5 tipos de suma de verificación para cada archivo (MD5, SHA1, SHA256, CRC32, Adler-32)
Los desarrolladores del proyecto también cruzan los dumps de sistemas con bases de datos de preservación digital como No-Intro, Redump y TOSEC.
De particular interés es el llamado análisis de brechas. La documentación del proyecto lista abiertamente lo que aún no está en la base de datos: dumps raros que la comunidad aún no ha creado físicamente, o claves de encriptación únicas para consolas de usuarios específicas.
Cómo instalar todo en un comando
Para una configuración rápida, los autores escribieron scripts de instalación. Estos detectan automáticamente tu sistema operativo, verifican los hashes de los archivos que ya tienes y descargan solo lo que falta.
Para Linux, macOS y Steam Deck, simplemente ejecuta en la terminal:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
En Windows a través de PowerShell:
irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
Si estás configurando una tarjeta SD para una consola portátil directamente desde tu computadora, puedes pasar la ruta de destino y la plataforma como argumentos:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard
El script verifica los archivos exactamente de la manera en que lo hace tu shell elegido. Por ejemplo, Batocera verifica el hash MD5 de cada archivo, BizHawk se basa en SHA1 y RetroArch solo verifica la corrección del nombre del archivo en la carpeta system/.
Construyendo paquetes personalizados a través de Python
Si no quieres descargar todo el archivo de varios gigabytes y estás construyendo un sistema mínimo para un par de plataformas específicas, el repositorio tiene herramientas convenientes de CLI. Solo requieren Python 3 y la biblioteca pyyaml.
Construye un paquete solo para el emulador Dolphin:
python scripts/generate_pack.py --emulator dolphin
Genera un conjunto de archivos exclusivamente para PlayStation 2:
python scripts/generate_pack.py --system sony-playstation-2
Verifica la lista disponible de plataformas y núcleos:
python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems
También hay un script de validación. Escanea tu directorio de BIOS existente y produce un informe detallado: qué archivos están en su lugar, dónde el hash está corrupto y qué dumps faltan para ejecutar juegos específicos.
python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast
Datos abiertos para desarrolladores
RetroBIOS es útil no solo como fuente de archivos listos para usar, sino también como base de datos estructurada. En el sitio de documentación, los autores publican exportaciones en formatos JSON, CSV y SQLite con todos los hashes, rutas y dependencias de emuladores.
Si estás escribiendo tu propio lanzador, administrador de ROMs o configurando una compilación personalizada de Linux para portátiles, estos archivos te ahorrarán analizar manualmente cientos de fuentes de núcleos. La comunidad ya ha comenzado a construir utilidades basadas en estos datos, como escáneres para ordenar archivos domésticos.
Matices y licenciamiento
El código fuente de los scripts y las utilidades de compilación se distribuyen bajo la licencia MIT. Los archivos de sistema y firmwares son software propietario de terceros, por lo que se distribuyen bajo términos que permiten el uso de respaldo personal y compatibilidad. Los autores mantienen una página NOTICE abierta con un formulario para solicitudes de eliminación de los titulares de derechos.
Los archivos mayores de 2 GB en las releases se dividen en volúmenes .zip.001 y .zip.002. Puedes extraerlos con 7-Zip o concatenarlos con un simple comando cat Pack.zip.0* > Pack.zip en la terminal antes de descomprimir.
¿Vale la pena probar?
Si tienes una consola portátil (Anbernic, Miyoo, Steam Deck), una configuración retro en Raspberry Pi, o simplemente ejecutas emuladores en tu PC de trabajo, marca este repositorio.
En lugar de buscar archivos en foros caóticos, obtienes una colección limpia donde cada byte se verifica contra el código fuente del propio emulador. El script se instala en un par de minutos y ahorra horas de trabajo manual en directorios.
Proyectos relacionados