ArcheoGamers Forums

Divers => Atomic Bistrot => Discussion démarrée par: LeFauve le Mars 18, 2022, 10:49:41



Titre: Doom sur RP2040
Posté par: LeFauve le Mars 18, 2022, 10:49:41
De nos jours, Doom a été porté sur tout et n'importe quoi (appareil photo, réfrigérateur, ampoule connectée, etc...).

Le portage du jour est sur le dernier micro contrôleur de Raspberry, le Pi Pico RP 2040.

Ce petit bidule à 4$ (à ne pas confondre avec le "Pi tout court" qui est un vrai ordinateur faisant tourner Linux) est une sorte d'Arduino super-vitaminé (avec un Dual-core Arm Cortex-M0@133 MHz et 264KB de RAM).

Ca a l'air suffisant comparé aux PC qui faisaient tourner Doom quand il est sorti, mais il faut considérer que le RP2040 n'a ni carte vidéo, ni carte son, donc en plus de faire tourner le jeu il doit "bit-banger" un signal vidéo VGA ainsi qu'une sortie son stéréo.

Le "bit-banging" consiste à générer un signal de manière totalement logicielle, donc en gros pour le VGA il faut générer des 0 et des 1 sur 18 pins avec un timing suffisamment correct pour qu'un moniteur VGA puisse décoder l'image  (à 60 FPS :o )

En plus, le RP2040 n'a que 2 Mo de stockage, et le fichier contenant les ressources de Doom (DOOM1.WAD) fait 4Mo donc il a fallut tout décompresser en temps réel.

Bref, c'est un bel exploit, surtout quand on regarde le résultat obtenu :

  •     Full DOOM1.WAD playable on Raspberry Pi Pico with 2M flash.
  •     Ultimate Doom and Doom II are playable on 8M devices.
  •     320x200x60 VGA output (really 1280x1024x60).
  •     9 Channel OPL2 Sound at 49716Hz.
  •     8 Channel Stereo Sound Effects.
  •     I2C networking for up to 4 players.
  •     Save/Load of games.
  •     All cheats supported.
  •     Demos from original WADs run correctly.
  •     USB Keyboard Input support.
  •     All end scenes, intermissions, help screens etc. supported.
  •     Good frame rate; generally 30-35+ FPS.
  •     Uses 270Mhz overclock (requires flash chip that will run at 135Mhz).

Toutes les parties intéressantes ont été documentées ici (https://kilograham.github.io/rp2040-doom/) (en Anglais), et le code source se trouve là (https://github.com/kilograham/rp2040-doom)  :-*

Et il y a une petite vidéo ici (https://www.youtube.com/watch?v=eDVazQVycP4).