Gamepad Arduino Nano Matter : 27 FPS pour Quake

Arduino Nano Matter gamepad board

Le monde de la programmation et du hardware continue de surprendre avec des projets innovants, et l’une des dernières réalisations remarquable provient de Nicola Wrachien, architecte chez Silicon Labs. Ce talentueux développeur a créé un gamepad Arduino Nano Matter capable de faire tourner Quake, un jeu emblématique de tir à la première personne. De l’embarquation à la performance, ce projet ne cesse d’étonner et ouvre des portes à d’autres exploitations créatives.

Un challenge technique relevé avec brio

Wrachien précédemment avait déjà réussi à porter Doom sur un Sparkfun Thing Plus Matter, mais il a voulu aller au-delà en défiant les limites de l’architecture. Le MGM240SD22VNA MCU, utilisé pour créer ce gamepad, n’a que 256 Ko de RAM, bien inférieur aux 8 Mo de RAM requis par Quake à l’origine. Il a donc conçu un PCB personnalisé pour intégrer boutons, joysticks et un écran LCD de 320×240 pixels, démontrant une réelle ingéniosité.

Pour porter le logiciel, le code de SDLQuake1.09 a été utilisé, permettant de développer sur un ordinateur classique. Les constantes ont été stockées dans la mémoire flash, libérant ainsi de l’espace sur la RAM. Bien que l’accès aux données via la mémoire flash SPI soit lent, Wrachien a utilisé l’astuce de l’overclocking à 136 MHz pour compenser, incorporant plusieurs techniques d’optimisation pour des performances fluides.

Arduino Nano Matter gamepad board

Une expérience de jeu réinventée

Le résultat surprenant de ce projet est une expérience de jeu complète. Non seulement l’intelligence artificielle des ennemis fonctionne, mais aussi la logique du jeu ainsi que les comportements des monstres. L’implémentation d’un moteur 3D avec lumière dynamique et surfaces d’eau tourbillonnantes donne vie au jeu, apportant une nouveauté par rapport aux adaptations précédentes. De plus, un audio stéréo enrichi accompagne l’expérience, y compris des sons ambiants et dynamiques.

En termes de fonctionnalités, une console intégrée permet d’activer des cheats, de sauvegarder l’état du jeu et de personnaliser les contrôles. Les paramètres comme les mappages de touches, la luminosité et le volume sonore sont gravés en mémoire non volatile, garantissant une expérience utilisateur optimisée. En moyenne, le jeu tourne à 27 images par seconde, fluctuant entre 17 et 45 FPS, tout en maintenant une résolution de 320×200 pixels.

Backside of the Arduino Nano Matter gamepad board

Ce gamepad utilise intelligemment les 256 Ko de RAM, avec des composants conçus pour une assemblage simple. Deux puces flash SPI de 16 Mo permettent de stocker les données du jeu, qui sont chargées depuis une carte SD. Des haut-parleurs stéréo et un connecteur jack de 3,5 mm pour écouteurs complètent l’assemblage, rendant ce projet à la fois pratique et ludique.

Quake dynamic and static lighting and 3D textured

L’achievement de Wrachien montre que même les jeux classiques comme Quake peuvent trouver une nouvelle vie sur du matériel modeste. La communauté continue d’explorer ces défis, réinventant des valeurs nostalgiques avec des approches innovantes. Pour plus de détails sur ce projet, des ressources supplémentaires sont accessibles sur GitHub et d’autres plateformes dédiées.

YouTube video