On passe souvent par les builds ESP32 sur ce site au profit du Raspberry Pi (s’ouvre dans un nouvel onglet) ou RP2040 (s’ouvre dans un nouvel onglet)à base de tranches de génie, mais nous ne pouvions pas laisser passer celle-ci. L’idée originale de Jeroen Domburg de spritesmods.com (s’ouvre dans un nouvel onglet) et porté à notre attention par Hackaday (s’ouvre dans un nouvel onglet)le minuscule microcontrôleur à l’intérieur de ce flipper imprimé en 3D s’avère être capable de faire plus que lancer quelques boules de métal.
C’est parce qu’il exécute un émulateur X86 suffisamment puissant pour mettre en mouvement le classique Pinball Fantasies DOS de 1992 de Digital Illusions. La partie programmation de la construction semble assez délicate, car Domburg était confronté à un code contenant des commentaires en trois langues, des blagues et des lacunes.
« Pinball Fantasies a été entièrement écrit en assemblage x86 codé à la main », écrit Domburg dans son article exceptionnellement détaillé. (s’ouvre dans un nouvel onglet) du projet. « Comme je l’avais prévu [to] utiliser un ESP32S3 comme esprit de la petite table de flipper, je ne pouvais pas l’utiliser directement ; le noyau Xtensa de cette puce ne sait pas quoi penser des instructions x86. Donc, mon idée initiale était de convertir lentement le code en C : assembler les fichiers d’assemblage x86, les lier à un cadre de fichiers C, puis convertir lentement les routines de l’assemblage en C jusqu’à ce que tout soit converti et qu’il ne me reste plus que du C propre code. »
Bien sûr, cela n’a pas fonctionné, alors Domburg a changé de tactique, interprétant le code comme s’il était écrit pour une machine virtuelle particulière, puis émulant cette machine. À l’aide d’un émulateur 8086 écrit en C, il a ajouté les graphismes, les appels IO et DOS que le jeu utilise et rien de plus. Domburg a découvert en cours de route que même s’il n’affiche qu’une partie de la table où se trouve la balle, l’ensemble du jeu de flipper est conservé en mémoire, ce qui signifie qu’il peut être modifié pour afficher toute la table si vous le souhaitez.
Le matériel comprenait un ESP32-S3, qui arbore un processeur double cœur Xtensa LX7 à 240 MHz, un demi-még de RAM et est livré avec une interface LCD parallèle intégrée utile. Cet écran est un écran LCD 320×640, plus un petit ampli et un haut-parleur pour l’audio et quelques boutons pour fournir une entrée. Les extras en option incluent un deuxième écran LCD et un piston pour donner le mouvement de démarrage authentique du flipper. Le boîtier est imprimé en 3D, et si vous voulez essayer d’en construire un, vous trouverez encore plus d’informations sur le Github de Domburg (s’ouvre dans un nouvel onglet).