Aller au contenu
InYourGeek
visiteur@inyourgeek — console
compléter historique ouvrirhelp
EN
Dev· 4 min de lecture

Un jeu Amiga de 1993 porté vers Godot par un LLM lisant l'assembleur

L'auteur de Babylonian Twins raconte comment il a fait porter vers Godot les 72 758 lignes d'assembleur 68000 de son jeu Amiga de 1993. Le modèle a lu le code ; c'est l'humain qui a dû dire si le saut sonnait juste.

Illustration sombre d'un atelier nocturne : un ordinateur familial beige des années 1990 ouvert, carte électronique apparente, relié par des nappes à un écran plat moderne à la lueur bleue. Entre les deux, une disquette se désagrège en particules ambrées qui se reforment en blocs de pixels sur l'écran récent. Au premier plan, un joystick usé et l'ombre d'une main qui s'en approche.

Bagdad, 1993, 512 Ko

Babylonian Twins a été écrit sur un Amiga 500 : 512 Ko de RAM, pas de disque dur, branché sur une télévision. Assembleur 68000 intégral, chaque sprite et chaque ligne de balayage à la main, par un étudiant en ingénierie d’une vingtaine d’années — Murtadha Salman aux graphismes, Mahir AlSalman à la musique. Sous sanctions : pas d’internet, aucune ressource sur le développement de jeux, un seul exemplaire du Amiga Hardware Reference Manual, l’électricité quelques heures par jour. Les étés à 50 °C ont tué le lecteur de disquettes trois fois.

« À la main » veut dire quelque chose de précis : au démarrage, le jeu sauvegarde les vecteurs d’interruption, coupe celles du système et prend la machine entière. Le commentaire d’époque, resté dans le code, dit « Get the system from the AMIGA ». L’affichage passe ensuite par la copper list du jeu, réécrite à la volée ; les tuiles bougent en écrivant directement dans les registres du blitter ; le bouton de tir est une broche sur une puce CIA.

Premier jeu commercial produit en Irak, et longtemps un jeu que presque personne n’a pu jouer : Commodore s’effondre, les sanctions font fuir les éditeurs, le jeu terminé reste sur une étagère jusqu’à ce qu’un forum Amiga retrouve son auteur en 2008, à partir des vidéos YouTube de son frère. En 2010, la même équipe le reconstruit à la main pour l’iPhone, sur un moteur maison d’environ 34 000 lignes de C++. Apple et Google le mettent en avant, plus de deux millions de téléchargements.

Trois demandes empilées sur un week-end

Le récit du portage, publié le 3 septembre 2026 et remonté sur Hacker News, décrit un test délibéré. Un an plus tôt, un modèle antérieur avait fini par comprendre les cartes de niveaux binaires, mais en plusieurs tours et avec beaucoup d’indices. L’auteur a redonné les mêmes fichiers à Claude Fable 5, en pariant qu’il existe peu d’assembleur Amiga dans les corpus d’entraînement : si le modèle raisonne au lieu de réciter, c’est là que ça se voit.

Trois étapes pour le week-end du 4 juillet, chacune conditionnée à la précédente. La sûre : porter le moteur C++ de 2010 vers Godot 4. L’injuste : reconstruire dans Godot les 72 758 lignes d’assembleur 68000 d’origine, quasiment sans commentaires, à la fréquence d’époque de 50 Hz. La gourmande : glisser la seconde dans la première, pour que l’achat du jeu moderne donne accès à l’original de 1993. Les trois ont fonctionné, et le format de niveau qui avait demandé plusieurs allers-retours un an plus tôt est sorti en un seul passage, sans indice.

Tout s’est passé dans Claude Code, avec un terminal et le système de fichiers : éditer, assembler avec vasm, construire, lancer le jeu, lire ce qui revient, booter le résultat Amiga dans FS-UAE. Surtout, le modèle s’est fabriqué ses propres yeux : des options en ligne de commande ajoutées très tôt — --level pour charger un niveau, --pose pour placer les jumeaux à une position exacte, --drive pour appuyer sur les boutons image par image, --probe pour vider l’état des interrupteurs, portes et clés, --screenshot pour rendre une image et quitter. « Est-ce que le saut est bon ? » devient une ligne lisible par une machine, du genre pos=(25.44, 24.04) vel=(0.00, -14.51) ground=false. Redoutablement pratique. Ça ne répond pas tout à fait à la question posée.

Le feeling ne se rend pas en assertion

Car la question est restée humaine. L’auteur explique qu’il n’a pas fait ce portage : il l’a demandé, a joué le résultat tous les soirs, a dit ce qui sonnait faux, et a tranché les rares décisions qui exigeaient quelqu’un qui était là en 1993. Les formats de fichiers, la lecture de l’assembleur et les choix de transposition du code trentenaire étaient du côté de la machine — et c’est allé plus vite qu’il ne pouvait suivre.

D’où la partie la moins confortable du billet : en se rasseyant des semaines plus tard pour lire ce qui avait été fait à son propre jeu, il y a trouvé des choses fausses qu’il n’avait pas vues passer.

Le modèle a relu 72 758 lignes d’assembleur sans broncher. Il a juste fallu, à côté, quelqu’un qui se souvienne de ce que ça faisait d’appuyer sur le bouton en 1993.

Sources (1)

PartagerXLinkedInFacebookBluesky

Article rédigé avec l'assistance d'une IA à partir des sources citées, puis relu et validé avant publication par Sébastien Soulier.