Doom en galerie d'art, converti en Captcha, interdit par des entreprises, fonctionnant sur des tondeuses à gazon, des briques Lego, le télétexte, et même à l'intérieur de lui-même. Les raisons techniques sont mises de côté, et la seule réponse valable est « parce que nous le pouvons ». Quelle est la suite ? Depuis des années, les utilisateurs ont injecté toutes sortes d'éléments (certains assez malveillants) dans des documents PDF, mais l'utilisateur de GitHub « adding2210 » a créé un port qui présente le Doomguy dans le système PDF de Google Chrome.

Doom dans un PDF ? Oui, Doom dans un PDF
Doom dans un PDF ? Oui, Doom dans un PDF

Quand on pense aux documents PDF, on imagine automatiquement un format rigide, au contenu difficile à modifier sans aide externe. Cependant, tout le monde ne sait pas que le PDF supporte JavaScript. Le seul programme à l'avoir implémenté entièrement a été Adobe Acrobat, avec des fonctions comme le rendu 3D et les requêtes HTTP. En revanche, le support dans les navigateurs comme Chrome et Firefox est beaucoup plus limité (pour des raisons de sécurité)… mais cela ne suffit pas pour arrêter « adding2210 » sur GitHub. Qu'a-t-il fait ? Exécuter Doom dans un PDF.

DoomPDF : « Rip and tear » dans un document PDF

Doom dans un PDF ? Oui, Doom dans un PDF
Une vidéo était disponible, mais elle ne se charge pas correctement. Voici à quoi ressemble Doom dans un PDF sur Chrome/Chromium (ne fonctionne pas avec d'autres lecteurs).

Comment cela fonctionne-t-il exactement ? « adding2210 » explique que le code C peut être compilé pour fonctionner dans un PDF en utilisant une ancienne version d'Emscripten qui cible asm.js au lieu de WebAssembly. Le reste est une question de développement d'un moyen d'enregistrer les commandes d'entrée, et un framebuffer pour la sortie. Les entrées sont simples, car le moteur PDF de Chromium supporte les champs de texte et les boutons. Le framebuffer est une tout autre histoire, mais « adding2210 » a réussi à présenter une sortie monochrome à six tons en pur ASCII, et chaque frame a une latence moyenne de 80 millisecondes.

En résumé, ça rend mal, mais peu importe. La seule façon d'exécuter DoomPDF correctement est d'utiliser une variante de Chromium, et pour contrôler le Doomguy, il faut « écrire » dans une petite section du document. Évidemment, les problèmes de framerate le rendent presque impossible à jouer, mais j'imagine que plus d'un audacieux par le passé a accepté des performances similaires pour « en profiter » sur un 386.

Sites officiels : Ici et ici