3 points par GN⁺ 2024-05-09 | 1 commentaires | Partager sur WhatsApp

Nouveau code découvert dans NES Tetris

  • Des hackers ont découvert un moyen de reprogrammer NES Tetris depuis l’intérieur même du jeu
  • Cette méthode pourrait aider les chasseurs de high score à éviter le crash de fin de partie

Méthode d’exécution du code

  • En exploitant le "kill screen" de NES Tetris, il est possible de coder de nouveaux comportements dans la version de Tetris qui tourne sur du matériel et des cartouches non modifiés, via une méthode complexe de manipulation de la mémoire
  • Des glitches similaires d’"exécution de code arbitraire" ont déjà été découverts dans des jeux comme Super Mario World, Paper Mario et The Legend of Zelda: Ocarina of Time
  • La méthode de base pour introduire du code externe dans NES Tetris est théorisée publiquement au moins depuis 2021
  • Cette méthode explique en détail comment amener Tetris à commencer à lire sa table des meilleurs scores comme des instructions en code machine

S’amuser avec le port manette

  • Le crash de NES Tetris se produit lorsque le gestionnaire de score du jeu met trop de temps à calculer un nouveau score entre deux frames
  • Quand ce délai se produit, une partie du code de contrôle est interrompue par la routine d’écriture de la nouvelle frame et saute vers une zone non prévue de la RAM pour y chercher la prochaine instruction
  • Grâce à la manière dont Tetris traite les entrées potentielles lorsqu’il tourne sur une Famicom, la console japonaise, le joueur peut manipuler ce saut

Coder dans la table des meilleurs scores

  • Pour la méthode de contrôle du saut de Displaced Gamers, le joueur doit maintenir "haut" sur la troisième manette, et droite, gauche et bas sur la quatrième
  • Cela envoie le code de saut vers la zone de RAM qui stocke les noms et les scores de la liste des meilleurs scores du jeu, offrant au joueur une surface mémoire plus large qu’il peut manipuler directement
  • En plaçant "(G" dans la partie visée de la table des meilleurs scores, on peut forcer le jeu à sauter vers une autre zone de cette même table
  • À partir de là, les noms et les scores sont lus séquentiellement comme des opcodes pour le CPU de la NES
  • Cependant, comme la zone de saisie des noms ne propose que 43 symboles et que seules 10 chiffres peuvent faire partie d’un high score, seule une partie des instructions opcode disponibles sur NES peut être "codée" dans la table des meilleurs scores
  • Comme il n’y a pas de système de sauvegarde sur batterie, les hackers doivent atteindre manuellement ces scores et saisir ces noms complexes à chaque lancement de Tetris

L’avis de GN⁺

  • Il est surprenant qu’une telle fonction cachée ait existé dans la version NES de Tetris. Elle ne semble pas avoir été découverte à l’époque, et le fait qu’elle ne le soit que maintenant, plusieurs décennies plus tard, est fascinant.
  • Il est également intéressant qu’un tel hack soit possible en exploitant le port d’extension de la Famicom. Ce n’était sans doute pas une fonction voulue par Nintendo, mais cela montre bien que la Famicom était plus riche en possibilités que la NES.
  • L’idée d’utiliser ce bug pour injecter du code qui évite justement le crash est aussi très ingénieuse. En théorie, cela pourrait permettre de continuer à jouer et serait d’une grande aide pour les tentatives de high score.
  • En revanche, le fait qu’il faille refaire toute cette configuration complexe à chaque démarrage du jeu semble peu pratique. Pour un usage réel, il faudrait sans doute trouver un moyen de l’automatiser davantage.
  • Cette méthode semble de toute façon surtout susceptible d’intéresser les passionnés de high score ou les personnes curieuses de programmation, plutôt que le grand public venu simplement jouer.

1 commentaires

 
GN⁺ 2024-05-09
Commentaires sur Hacker News

Résumé :

  • Cela rappelle un exploit évoquant la réplique du roman Accelerando de Stross selon laquelle le but ultime du hacking est de « pirater la structure de l’espace-temps pour découvrir ce qu’il y a en dessous ».
  • J’ai honte de ne pas avoir cet esprit hacker qui consiste à faire quelque chose juste pour le plaisir, sans aucune utilité pratique.
  • Les cartouches NES fonctionnent depuis une ROM, mais cet exploit amène le CPU à sauter vers la RAM utilisée pour stocker la table des meilleurs scores.
  • Quelqu’un se demande combien de temps il faudra avant que quelqu’un fasse tourner Doom dans Tetris.
  • J’aimerais construire un ordinateur géant avec des convoyeurs dans Factorio, provoquer une segfault et sortir du jeu.
  • Je trouve que c’est une excellente façon de perdre son temps.
  • La découverte d’une ACE dans un vieux jeu est extrêmement intéressante. J’ai vu cela dans Super Mario World il y a quelques années et j’étais obsédé par la manière dont c’était possible.
  • C’est agréable de voir des gens vraiment brillants consacrer énormément de temps et d’efforts à quelque chose de totalement inutile.
  • Il n’y a sans doute aucune raison immédiate d’injecter du code dans Tetris sur NES, mais ce n’est pas le sujet. L’intérêt est de découvrir ce qui est possible et ce qu’on peut faire faire à un vieux code et à des ordinateurs primitifs.
  • Il est surprenant qu’il ait fallu aussi longtemps pour casser Tetris de cette manière. Cela annonce une nouvelle ère de runs any% visant à lancer la fin du jeu / le générique le plus vite possible.
  • Ocarina of Time dispose d’exploits ACE depuis des années. Le jeu a été tellement brisé qu’on peut le « terminer » en quelques minutes en manipulant la mémoire du jeu et en modifiant certains warps d’entrée.
  • Le plus impressionnant, c’est que des gens éditent la mémoire à la main en n’utilisant que quelques boutons et un joystick analogique.
  • Le fait de parvenir à l’exécution de code arbitraire est toujours plus intéressant que ce qu’on choisit d’en faire ensuite.
  • Démonter le jeu pour déterminer quand et où faire tout cela, puis où l’on peut manipuler les choses afin d’injecter l’instruction suivante, témoigne d’un niveau de dévouement admirable.
  • Passer du temps sur la NES/SNES en 2024 me semble être la preuve que Nintendo a employé sur les enfants des techniques de contrôle mental / de manipulation psychologique contraires à l’éthique.
  • Ces gens ont du talent, et il ne semble y avoir aucune raison rationnelle pour qu’ils aient choisi ce projet.