[ad_1]

Je peux voir le code qui contrôle le Tetri-verse !
Agrandir / Je peux voir le code qui contrôle le Tetri-verse !

Aurich Lawson

Plus tôt cette année, nous avons partagé l'histoire de la façon dont une NES classique Tétris Le joueur a atteint « l'écran d'arrêt » du jeu pour la première fois, activant un crash après une incroyable performance de 40 minutes et 1 511 lignes. Désormais, certains joueurs utilisent cet écran d'arrêt (et certaines manipulations complexes de la mémoire qu'il permet) pour coder de nouveaux comportements dans des versions de Tétris fonctionnant sur du matériel et des cartouches non modifiés. Nous avons couvert des problèmes similaires d'« exécution de code arbitraire » dans des jeux comme Super Mario Monde, Mario en papieret La Légende de Zelda : Ocarina of Time dans le passé. Et la méthode de base pour introduire du code extérieur dans NES Tétris a été théorisé publiquement depuis au moins 2021 quand les joueurs enquêtaient le code décompilé du jeu (HydrantDude, qui a allé profondément Tétris des accidents dans le passéaussi dit la communauté dispose depuis longtemps d'une méthode connue en privé pour prendre le contrôle total de Tétris' RAM).

Publicité
YouTube video

Displaced Gamers explique comment reprogrammer la NES Tétris dans le jeu.

Mais une vidéo récente de Displaced Gamers fait passer l'idée de la théorie privée à l'exécution publique, en détaillant minutieusement comment obtenir la NES Tétris pour commencer à lire les tableaux des meilleurs scores du jeu sous forme d'instructions de code machine.

Amusez-vous avec les ports de contrôleur

Reprendre une copie de NES Tétris est possible principalement en raison de la manière spécifique dont le jeu plante. Sans entrer dans trop de détailsun crash sur NES Tétris se produit lorsque le gestionnaire de score du jeu prend trop de temps pour calculer un nouveau score entre les images, ce qui peut se produire après le niveau 155. Lorsque ce délai se produit, une partie du code de contrôle est interrompue par la nouvelle routine d'écriture d'image, le faisant passer à une partie involontaire de la RAM du jeu pour rechercher l'instruction suivante.

Habituellement, cette interruption inattendue amène le code à sauter au tout début de la RAM, où les données inutiles sont lues sous forme de code et entraînent souvent un crash rapide. Mais les joueurs peuvent manipuler ce saut grâce à un caprice peu connu de la façon dont Tétris gère les entrées potentielles lors de l'exécution sur la version japonaise de la console, la Famicom.

Le port d'extension Famicom qui est essentiel au bon fonctionnement de ce hack.
Agrandir / Le port d'extension Famicom qui est essentiel au bon fonctionnement de ce hack.

Contrairement à la Nintendo Entertainment System américaine, la Famicom japonaise comportait deux contrôleurs câblés à l'unité. Les joueurs souhaitant utiliser des contrôleurs tiers pouvaient les brancher via un port d'extension à l'avant du système. Le Tétris le code du jeu lit les entrées de ce port de contrôleur « supplémentaire », qui peut inclure deux contrôleurs NES standard supplémentaires grâce à l'utilisation d'un adaptateur (c'est vrai même si la Famicom j'ai une version complètement différente de Tétris du logiciel Bullet-Proof).

Il se trouve que la zone de RAM qui Tétris utilisé pour traiter cette entrée supplémentaire du contrôleur est également utilisé pour l'emplacement mémoire de cette routine de saut dont nous avons parlé plus tôt. Ainsi, lorsque cette routine de saut est interrompue par un crash, cette RAM contiendra des données représentant les boutons enfoncés sur ces contrôleurs. Cela donne aux joueurs un moyen potentiel de contrôler précisément où va le code du jeu après le déclenchement du crash.

Codage dans le tableau des meilleurs scores

Pour la méthode de contrôle de saut de Displaced Gamers, le joueur doit maintenir « haut » sur le troisième contrôleur et droite, gauche et bas sur le quatrième contrôleur (cette dernière combinaison nécessite quelques manipulations du contrôleur pour permettre une entrée directionnelle simultanée gauche et droite. ). Cela envoie le code de saut à une zone de RAM qui contient les noms et les scores de la liste des meilleurs scores du jeu, donnant une surface de RAM encore plus grande qui peut être manipulée directement par le joueur.

En mettant « (G » dans la partie ciblée du tableau des meilleurs scores de type B, nous pouvons forcer le jeu à passer à un autre zone du tableau des meilleurs scores, où il commencera à lire les noms et les scores de manière séquentielle comme ce que Displaced Gamers appelle le code « bare metal », les lettres et les chiffres représentant les opcodes du processeur NES.

Cette combinaison très spécifique de nom et de score est en fait lue sous forme de code dans la preuve de concept de Displaced Gamers.
Agrandir / Cette combinaison très spécifique de nom et de score est en fait lue sous forme de code dans la preuve de concept de Displaced Gamers.

Malheureusement, il n'y a que 43 symboles possibles pouvant être utilisés dans la zone de saisie du nom et 10 chiffres différents pouvant faire partie d'un score élevé. Cela signifie seulement une petite partie de les instructions d'opcode disponibles sur la NES peut être « codé » dans le tableau des meilleurs scores en utilisant la surface d'attaque disponible.

Malgré ces restrictions, Displaced Gamers a pu coder un court extrait de code de validation de principe qui peut être traduit en données de tableau des meilleurs scores. (A name of '))"-P)' et un score de deuxième place de 8 575 dans le jeu A-Type est un facteur important, au cas où vous vous poseriez la question). Cette routine simple met deux zéros dans les chiffres supérieurs du score du jeu, réduisant ainsi le temps de traitement du score qui autrement provoquerait un crash (bien que le score finisse par atteindre la « zone de danger » pour un crash à nouveau, avec la poursuite du jeu).

Bien entendu, l’absence d’un système de sauvegarde alimenté par batterie signifie que les pirates doivent atteindre ces scores élevés manuellement (et saisir ces noms compliqués) à chaque mise sous tension. Tétris sur un stock NES. L'espace limité dans le tableau des meilleurs scores ne laisse pas non plus beaucoup de place au codage direct de programmes complexes par-dessus Tétrisle code réel. Mais il existe des moyens de contourner cette limitation ; Bouche d'incendieMec écrit d'un ensemble spécifique de noms et de chiffres de haut score qui « construisent[s] un autre bootstrapper qui construit un autre bootstrapper qui accorde un contrôle total sur toute la RAM. »

Avec ce genre de contrôle total, un joueur de haut niveau pourrait théoriquement recoder la NES Tétris pour corriger complètement les bugs de crash. Cela pourrait être extrêmement utile pour les joueurs qui sont j'ai du mal à dépasser le niveau 255où le jeu revient à la tranquillité du niveau 0. En attendant, je suppose que vous pouvez toujours simplement suivre l'exemple de Super Mario Monde coureurs de vitesse et transformer Tétris dans Oiseau Flappy.

[ad_2]

5/5 - (117 votes)
Publicité
Article précédentParticipez au concours Elden Ring Shadow of Erdtree Return to Grace
Article suivantChewbacca dans Fortnite | Comment le trouver et le sauver pour obtenir un bowcaster

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici