Dans cet article Dans cet article
En 2019, une poignée de développeurs s’est lancée dans un chantier hors normes : reconstituer, fonction par fonction, l’intégralité du code de GTA San Andreas, un des jeux les plus modés de l’histoire. Six ans plus tard, le projet plafonnait encore autour de 60 % de son objectif. Puis un passionné, qui ne sait pas écrire une ligne de code, s’en est emparé et l’a bouclé en deux mois en pilotant des agents d’intelligence artificielle.
La rétro-ingénierie, ou reverse engineering, consiste à partir d’un programme compilé pour en retrouver le code source d’origine. L’image la plus parlante est celle du gâteau : on goûte le résultat fini, le binaire, et on tente d’en reconstituer la recette à l’identique. Une fois cette recette en main, plus rien ne s’oppose aux modifications, là où un éditeur comme Rockstar verrouille soigneusement l’accès à ses jeux.
L’épisode pose une question qui dépasse le cas d’un vieux jeu PlayStation 2 : si une machine accomplit en quelques semaines ce que des experts n’avaient pas fini en six ans, que reste-t-il vraiment d’inaccessible dans nos logiciels ?
Reconstituer la recette d’un binaire
Repartir d’un binaire ne se fait pas à mains nues. Les développeurs s’appuient sur des désassembleurs comme Ghidra, l’outil publié en open source par la NSA en 2019, qui traduit le fichier exécutable en code assembleur et propose un pseudo-code à analyser. L’assembleur tient lieu de référence absolue, seule transcription fidèle de ce que fait la machine.
Le travail consiste ensuite à cartographier le binaire, fonction après fonction, puis à le réécrire au propre dans un langage lisible. Pour GTA San Andreas, l’ampleur de la tâche donne le vertige : entre 12 000 et 15 000 fonctions à identifier et réimplémenter une à une, jusqu’à ce que le code recompilé colle au jeu original. Un tel chantier se compte donc en années.
Six ans de travail humain, puis deux mois
Le projet de rétro-ingénierie de GTA San Andreas, baptisé gta-reversed, a démarré en 2019 sur GitHub. Porté par une communauté de bénévoles, il avait atteint environ 60 % du jeu quand un nouveau venu s’y est intéressé. Son profil détonne : il n’a aucune formation de développeur et dit ne pas savoir taper une ligne de HTML.
Sa porte d’entrée a été les agents d’IA de codage, qu’il manipulait depuis plus d’un an sur des serveurs de jeu communautaires. Branchés sur le binaire et sur Ghidra, ils ont reversé d’abord des fonctions simples, puis des pans entiers du moteur. Le reste du chemin, soit près de 40 % du jeu encore à décortiquer, a été parcouru en deux mois, comme il le raconte en détail dans cet entretien vidéo.
Le récit illustre un basculement : le goulet d’étranglement n’est plus la capacité à lire l’assembleur, mais la manière d’orchestrer correctement plusieurs agents autour d’un problème. C’est là que tout se joue.
Quand des agents d’IA s’orchestrent entre eux
Les débuts ont été artisanaux. Pour chaque fonction, il fallait copier l’assembleur, le coller dans l’agent, recevoir une proposition, repartir chercher une fonction appelante, recommencer. Des centaines d’allers-retours manuels pour quelques fonctions simples, vite insuffisants dès que la complexité montait, autour des caméras ou de la physique.
Le vrai gain est venu de l’automatisation de cette boucle, à mesure que les modèles d’IA spécialisés dans le code gagnaient en fiabilité. Le pilotage est confié à un agent chef d’orchestre qui répartit le travail entre plusieurs sous-agents : l’un choisit la prochaine fonction, un autre récupère l’assembleur et le pseudo-code, un troisième propose la réécriture, un dernier compare le résultat à l’assembleur, seule source de vérité testable. Les agents échangent jusqu’à un consensus avant de passer la main.
Reste un maillon que la machine ne couvre pas encore : le test en jeu. C’est l’humain qui doit relancer le jeu pour vérifier qu’une fonction reversée se comporte comme l’originale. Ce contrôle final ralentit l’ensemble, mais la cadence reste frappante : certaines nuits, près de 200 fonctions étaient reversées d’un coup, un volume qui aurait représenté des mois de travail manuel. Programmer revient d’ailleurs de plus en plus à décrire une intention en langage courant.
Le nouveau langage de programmation le plus en vogue, c’est l’anglais.
Andrej Karpathy, cofondateur d’OpenAI, sur X (janvier 2023)
Si une intention exprimée en français ou en anglais suffit à reconstruire un moteur de jeu, c’est tout le rapport au code qui se déplace, et avec lui la frontière entre développeur et simple utilisateur.
Ce que le code source rouvre dans le jeu
Disposer du code source, et plus seulement des fichiers de données, change la nature même du modding. On ne bricole plus en surface, on touche directement à la logique du moteur. Plusieurs réalisations rendues possibles par cette rétro-ingénierie montrent jusqu’où la communauté peut désormais aller :
- de nouvelles missions complètes écrites dans le langage de script maison de Rockstar, le GTA3 script, lui-même reversé pour être réutilisé ;
- un système multi-protagoniste resté caché dans le code de San Andreas, proche de celui popularisé bien plus tard par GTA V, et réactivable d’un simple bouton ;
- un mode où l’on lance GTA III ou Vice City sur la télévision de l’appartement de CJ, les deux jeux tournant dans le même moteur ;
- un éditeur de carte complet et un générateur d’animations qui transforme une vidéo de danse en mouvement jouable, là où il fallait auparavant des logiciels 3D dédiés.
Aucune de ces possibilités n’était réellement ouverte tant qu’on ignorait comment le moteur gérait les missions, la physique ou les véhicules. Le paradoxe est saisissant pour un des titres les plus modés de tous les temps, longtemps bridé par la seule méconnaissance de ses entrailles, quand d’autres studios fournissent désormais leurs propres outils de modding.
Un mouvement amorcé par d’autres décompilations
La rétro-ingénierie de jeux complets n’est pas née avec GTA. Plusieurs titres cultes ont déjà été reconstruits intégralement, ouvrant la voie à des portages natifs et à des créations dérivées. Le tableau ci-dessous resitue les jalons qui ont popularisé la démarche :
| Jeu | Aboutissement | Ce que ça a débloqué |
|---|---|---|
| Super Mario 64 | Reverse complet vers 2019 | Portages natifs PC, Mac, Linux et même 3DS |
| Pokémon (rouge, bleu, émeraude, cristal) | Décompilations de l’équipe pret | Romhacks ambitieux comme Pokémon Unbound |
| GTA III et Vice City | Projets re3 et reVC | Portages multiplateformes, puis retrait sur plainte |
Le cas de Super Mario 64 fait figure de déclencheur : une fois le code reconstitué, le jeu a pu tourner nativement sur PC, sans émuler la Nintendo 64. La communauté Pokémon, elle, s’en est servie pour fabriquer des jeux entiers à partir des mécaniques d’origine, loin du simple échange de textures.
Le couperet juridique et l’après
Sur le papier, ce code n’appartient qu’à son auteur : pas une ligne n’est copiée depuis Rockstar, tout est reconstruit à partir du binaire. Dans les faits, l’éditeur Take-Two ne laisse rien passer. Les projets re3 et reVC, qui reconstruisaient GTA III et Vice City, ont été frappés par une plainte dès 2021 et retirés, leurs auteurs renonçant à toucher aux produits Rockstar dans le cadre d’un accord.
Cette épée de Damoclès explique pourquoi les versions complètes circulent prudemment, un dépôt public ne survivant parfois pas une semaine. Le savoir, lui, ne disparaît pas : une fois le jeu décortiqué, chaque mod gagne en profondeur, et de nouveaux projets voient le jour, à l’image d’une ville inédite greffée sur le moteur de San Andreas, alors même que les équipes de Rockstar restent mobilisées sur le prochain GTA.
L’accélération apportée par l’IA déplace surtout la question. Si reverser un jeu de 15 000 fonctions devient l’affaire de quelques semaines, la préservation du patrimoine vidéoludique et la tension avec les ayants droit vont se poser à une échelle bien plus large, sur des logiciels autrement plus sensibles qu’un jeu de 2004.


