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
Commentaires sur Hacker News
Résumé :