>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
HTML

Como Organizar BIOS para Dezenas de Emuladores de Uma Vez por Todas

RetroBIOS

Qualquer pessoa que já configurou um combo retrô em um Steam Deck, mini-PC antigo ou Raspberry Pi conhece essa rotina. Você instala o Batocera, EmuDeck ou o RetroArch puro, coloca seus jogos favoritos de PlayStation 2 ou Sega Saturn, inicia a ROM e vê uma tela preta. O log diz que está faltando um arquivo como scph1001.bin ou saturn_bios.bin.

Então começa a busca típica: você vai a um mecanismo de busca, encontra sites duvidosos cheios de anúncios, baixa arquivos de 50 gigabytes com toneladas de duplicatas e sujeira. Metade dos dumps tem erros de digitação nos nomes, os checksums não coincidem e o emulador continua travando. O projeto RetroBIOS resolve esse problema com uma abordagem de engenharia.

Por que a documentação dos emuladores frequentemente mente

O principal problema com arquivos BIOS está na dessincronização. Autores de frontends e shells (por exemplo, Recalbox ou Batocera) escrevem suas listas de arquivos necessários nas wikis. Enquanto isso, desenvolvedores de núcleos de emuladores atualizam suas bases de código, mudam requisitos de nomes de arquivos, adicionam suporte a novas revisões de chips ou modificam algoritmos de inicialização de hardware.

Como resultado, a lista oficial de BIOS de um frontend pode estar desatualizada por anos em relação ao que o binário do emulador realmente solicita na inicialização.

Os criadores do RetroBIOS adotaram uma abordagem diferente. Em vez de ler fóruns e páginas de wiki desatualizados, eles analisam o código-fonte dos emuladores diretamente. Se um núcleo Libretro ou emulador standalone procura um arquivo de tamanho específico com um hash MD5 particular, esse fato é registrado como a única fonte de verdade.

O que há dentro do projeto

O repositório combina um enorme banco de dados de metadados, scripts de verificação e conjuntos de arquivos de sistema prontos para uso para 12 plataformas populares: Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie e RomM.

A escala do trabalho realizado é impressionante pelos números:

  • 436 emuladores analisados a partir do código-fonte
  • 463 sistemas de jogos, desde Atari antigo e ZX Spectrum até PS3 e Nintendo Switch
  • 8.925 arquivos no banco de dados, incluindo firmwares de sistema, ROMs de arcade e fontes de sistema
  • 5 tipos de checksum para cada arquivo (MD5, SHA1, SHA256, CRC32, Adler-32)

Os desenvolvedores do projeto também fazem referência cruzada de dumps de sistema com bancos de dados de preservação digital como No-Intro, Redump e TOSEC.

De particular interesse é a chamada análise de lacunas. A documentação do projeto lista abertamente o que ainda não está no banco de dados: dumps raros que a comunidade ainda não criou fisicamente, ou chaves de criptografia únicas para consoles específicos dos usuários.

Como instalar tudo em um comando

Para configuração rápida, os autores escreveram scripts de instalação. Eles detectam automaticamente seu sistema operacional, verificam hashes dos arquivos que você já tem e baixam apenas o que está faltando.

Para Linux, macOS e Steam Deck, basta executar no terminal:

curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh

No Windows via PowerShell:

irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex

Se você está configurando um cartão SD para um console portátil diretamente do seu computador, pode passar o caminho de destino e a plataforma como argumentos:

curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard

O script verifica os arquivos exatamente da forma que seu shell escolhido faz. Por exemplo, o Batocera verifica o hash MD5 de cada arquivo, o BizHawk depende de SHA1 e o RetroArch apenas verifica a correção do nome do arquivo na pasta system/.

Construindo pacotes personalizados via Python

Se você não quer puxar todo o arquivo de vários gigabytes e está construindo um sistema mínimo para algumas plataformas específicas, o repositório possui ferramentas convenientes de CLI. Elas exigem apenas Python 3 e a biblioteca pyyaml.

Construa um pacote apenas para o emulador Dolphin:

python scripts/generate_pack.py --emulator dolphin

Gere um conjunto de arquivos exclusivamente para PlayStation 2:

python scripts/generate_pack.py --system sony-playstation-2

Veja a lista disponível de plataformas e núcleos:

python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems

Há também um script de validação. Ele verifica seu diretório de BIOS existente e produz um relatório detalhado: quais arquivos estão no lugar, onde o hash está corrompido e quais dumps estão faltando para executar jogos específicos.

python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast

Dados abertos para desenvolvedores

O RetroBIOS é útil não apenas como fonte de arquivos prontos para uso, mas também como um banco de dados estruturado. No site de documentação, os autores publicam exportações em formatos JSON, CSV e SQLite com todos os hashes, caminhos e dependências de emuladores.

Se você está escrevendo seu próprio launcher, gerenciador de ROMs ou configurando uma build Linux personalizada para portáteis, esses arquivos vão poupá-lo de analisar manualmente centenas de fontes de núcleos. A comunidade já começou a construir utilitários baseados nesses dados, como scanners para organizar arquivos caseiros.

Nuances e licenciamento

O código-fonte dos scripts e utilitários de construção são distribuídos sob a licença MIT. Arquivos de sistema e firmwares são software proprietário de terceiros, então são distribuídos sob termos que permitem uso pessoal para backup e compatibilidade. Os autores mantêm uma página NOTICE aberta com um formulário para solicitações de remoção de detentores de direitos.

Arquivos maiores que 2 GB nas releases são divididos em volumes .zip.001 e .zip.002. Você pode extraí-los com 7-Zip ou concatená-los com um simples comando cat Pack.zip.0* > Pack.zip no terminal antes de descompactar.

Vale a pena tentar

Se você tem um console portátil (Anbernic, Miyoo, Steam Deck), uma build retrô em Raspberry Pi, ou simplesmente executa emuladores no seu PC de trabalho, salve este repositório nos favoritos.

Em vez de caçar arquivos em fóruns caóticos, você obtém uma coleção limpa onde cada byte é verificado contra o próprio código-fonte do emulador. O script instala em poucos minutos e economiza horas de manipulação manual de diretórios.

Projetos relacionados