Doom, le célèbre jeu des années 90, est à l'origine d'une sorte de mème : des développeurs tentent de faire fonctionner le jeu sur tout et n'importe quoi (surtout n'importe quoi). On a vu l'adaptateur Lightning vers HDMI d'Apple, une Freebox, une tondeuse robot ou la Touch Bar. Arin Sarkisian a décidé de lancer le FPS sur des écouteurs Bluetooth, sous le nom DOOMBuds.
Il ne s'agit pas de n'importe quels écouteurs : il a choisi les PineBuds Pro (désolé, pas des AirPods). Ce sont des écouteurs Bluetooth assez classiques sur la forme, des modèles d'entrée de gamme qui valent une centaine de dollars. Mais ils ont une particularité assez rare : la partie logicielle est open source. Il est possible de remplacer le firmware d'origine par n'importe quel programme, et c'est ce qu'Arin a fait.

Techniquement, la plateforme est légère : un processeur ARM Cortex M4 à 300 MHz (deux cœurs), un peu moins de 1 Mo de RAM et 4 Mo de mémoire flash. Le jeu d'origine nécessite un peu plus de stockage et de RAM, ce qui a nécessité quelques ajustements. La version shareware de Doom nécessite un peu plus de 4 Mo1 pour les données du jeu (sans le code exécutable), et il a donc fallu supprimer quelques musiques et animations pour descendre à environ 1,7 Mo. Pour la RAM, le jeu original demande 4 Mo de RAM sur un PC d'époque, mais il a réussi à optimiser le code pour rentrer dans les 992 ko de RAM. Enfin, le processeur fonctionne par défaut à 100 MHz sur les écouteurs, et il a donc fallu désactiver le mode basse consommation pour le passer à sa fréquence nominale (300 MHz). C'est le point le moins bloquant : Doom fonctionne bien sur un 486 à 66 MHz des années 90 et peut se contenter d'un simple 386 si vous acceptez les saccades.
Pas d'écran, mais un serveur web
La partie la plus compliquée est celle liée à l'affichage. Les écouteurs n'ont pas d'écran et donc tout passe par un serveur web. Les images du jeu — en 320 x 200 — sont transmises via un lien série rapide (UART, capable d'atteindre 2,4 Mb/s) et affichée dans une page web. Les écouteurs contiennent un petit serveur, qui va permettre d'afficher le résultat sur un ordinateur, avec une liaison filaire entre le boîtier des écouteurs et un ordinateur. Pour obtenir un rendu (à peu près) fluide, les images sont compressées en MJPEG. C'est un vieux codec vidéo qui compresse indépendamment chaque image en JPEG.

Dans le cas des écouteurs, la liaison permet en théorie entre 22 et 27 images/s grâce au MJPEG2, mais le processeur limite un peu : entre l'exécution du jeu, la gestion du serveur web et la compression en MJPEG, le jeu fonctionne à 18 images/s. Ce n'est pas si mal pour Doom : la version d'origine ne dépassait pas 35 images/s par design et un bon processeur de l'époque était plutôt aux alentours de 20 images/s.
Il était possible de tester
Enfin, il était possible de tester le jeu sans les écouteurs en question. Sur le site doombuds.com, le développeur avait lié ses propres écouteurs à une session en streaming sur Twitch, et n'importe qui pouvait prendre le contrôle du jeu pendant 45 secondes. Pour le moment, cette fonction est désactivée.











