Doom foi portado para o Raspberry Pi RP2040

Se você é usuário do Raspberry Pi e curte o game DOOM, a boa notícia é que o Doom foi portado para o Raspberry Pi RP2040.

Doom é um popular videogame retrô que parece não sair de moda, mesmo após 30 anos de sua criação. Ele chegou até mesmo a ganhar um novo nível em apoio à Ucrânia.

O Doom foi portado para todos os tipos de plataformas, incluindo plataformas ESP32 com PSRAM de 4 MB, mas a porta “RP2040 doom” do Doom para o Raspberry Pi RP2040 é mais desafiadora, pois a RAM é limitada aos míseros 264 KB embutidos no microcontrolador e, para placas com apenas 2 MB de flash como o Raspberry Pi Pico, a capacidade de armazenamento se torna um problema.

Mas Graham Sanderson resolveu todos esses problemas comprimindo os dados, alterando o código para usar menos RAM, fazendo pleno uso dos dois núcleos Arm Cortex-M0+, ambos com overclock de 270 MHz, tudo para rodar o Doom (DOOM1.WAD) no Raspberry Pi Pico com resolução de 320 × 240 a 60 fps, e os WADs Ultimate Doom e DOOM II completos esperados para caber em placas Raspberry Pi RP2040 com flash SPI de 8 MB.

Doom foi portado para o Raspberry Pi RP2040

Doom foi portado para o Raspberry Pi RP2040
Doom foi portado para o Raspberry Pi RP2040

Sim. O Doom foi portado para o Raspberry Pi RP2040. O port foi baseada no Chocolate Doom, a emulação OPL2 para suporte de áudio foi derivada do projeto emu8950 e os efeitos sonoros foram compactados usando o codificador ADPCM-XQ IMA-ADPCM. Aqui está o que foi alcançado após seis meses de trabalho (tempo livre):

  • RP2040 com overclock para 270MHz (nota: requer um chip flash que funcione a 135Mhz)
  • DOOM1.WAD completo jogável no Raspberry Pi Pico com 2 MB de flash.
  • Ultimate Doom e Doom II podem ser reproduzidos em dispositivos de 8 MB flash como StackyPi ou UDOO Key
  • Saída VGA de 320×200 @ 60 fps (aumentada para 1280×1024 @ 60Hz).
  • Taxa de quadros de cerca de 30-35+ FPS.
  • Áudio – Som OPL2 de 9 Canais a 49716Hz, Efeitos Sonoros Estéreo de 8 Canais.
  • Rede I2C para até 4 jogadores.
  • Suporte de entrada de teclado USB.
  • Salvar/Carregar jogos, todos os cheats suportados.
  • Todas as cenas finais, intervalos, telas de ajuda são suportadas.

Você pode assistir aos resultados por si mesmo no vídeo abaixo.

O código-fonte, instruções de compilação e firmware UFS podem ser encontrados no Github de Graham Sanderson.

Mas se você quiser entender como isso foi implementado, as técnicas de compressão utilizadas, otimizações do doom port, por exemplo, substituição de variáveis ​​de 32 bits por variáveis ​​de 16 bits para diminuir a memória usada e desafios gerais do projeto, você deve definitivamente leia a longa redação no Github.io.

Doom foi portado para o Raspberry Pi RP2040
Doom foi portado para o Raspberry Pi RP2040

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.