Es ist möglich, „Tetris“ aus dem Spiel heraus zu hacken


Früher in diesem Jahr, Wir haben die Geschichte geteilt wie ein klassisches NES Tetris Der Spieler traf zum ersten Mal den „Kill Screen“ des Spiels und löste nach einer unglaublichen 40-minütigen Leistung mit 1.511 Zeilen einen Absturz aus. Nun nutzen einige Spieler diesen Kill-Screen – und einige komplizierte Speichermanipulationen, die er ermöglicht –, um neue Verhaltensweisen in Versionen von zu kodieren Tetris läuft auf unveränderter Hardware und Kassetten.

Ähnliche Fehler bei der Ausführung willkürlichen Codes haben wir in behandelt Spiele wie Super Mario Welt, Papier-MarioUnd Die Legende von Zelda: Ocarina of Time in der Vergangenheit. Und die grundlegende Methode zur Einführung von externem Code in NES Tetris ist gewesen seit mindestens 2021 öffentlich theoretisiert als Spieler Nachforschungen anstellten der dekompilierte Code des Spiels. (HydrantDude, wer hat tief gegangen Tetris Abstürze in der VergangenheitAuch sagt Die Community verfügt seit langem über eine privat bekannte Methode, wie sie die volle Kontrolle übernehmen kann Tetris‘ RAM.)

Aber ein aktuelles Video von Displaced Gamers führt die Idee von der privaten Theorie zur öffentlichen Umsetzung und geht dabei bis ins kleinste Detail darauf ein, wie man an NES kommt Tetris um mit dem Lesen der Highscore-Tabellen des Spiels als Maschinencode-Anweisungen zu beginnen.

Spaß mit Controller-Ports

Übernahme einer NES-Kopie Tetris ist vor allem aufgrund der spezifischen Art und Weise, wie das Spiel abstürzt, möglich. Ohne darauf einzugehen zu viele Detailsein Absturz im NES Tetris passiert, wenn der Score-Handler des Spiels zu lange braucht, um einen neuen Score zwischen Frames zu berechnen, was nach Level 155 passieren kann. Wenn diese Verzögerung auftritt, wird ein Teil des Steuercodes durch die neue Frame-Schreibroutine unterbrochen, was dazu führt, dass er zu springt einen unbeabsichtigten Teil des RAM des Spiels, um nach der nächsten Anweisung zu suchen.

Normalerweise führt dieser unerwartete Interrupt dazu, dass der Code an den Anfang des RAM springt, wo Datenmüll als Code gelesen wird und oft zu einem schnellen Absturz führt. Aber Spieler können diesen Sprung dank einer wenig bekannten Launenhaftigkeit manipulieren Tetris verarbeitet potenzielle Eingaben, wenn es auf der japanischen Version der Konsole, dem Famicom, läuft.

Im Gegensatz zum amerikanischen Nintendo Entertainment System verfügte das japanische Famicom über zwei fest mit dem Gerät verbundene Controller. Spieler, die Controller von Drittanbietern verwenden möchten, können diese anschließen ein Erweiterungsport auf der Vorderseite des Systems. Der Tetris Der Spielcode liest die Eingaben von diesem „zusätzlichen“ Controller-Port, der zwei zusätzliche Standard-NES-Controller enthalten kann durch die Verwendung eines Adapters (Dies gilt auch dann, wenn das Famicom Habe eine völlig andere Version davon bekommen Tetris von Bullet-Proof Software).

Zufälligerweise ist der Bereich des RAM das Tetris Der Speicherort, der zur Verarbeitung dieser zusätzlichen Controller-Eingabe verwendet wird, wird auch für den Speicherort der zuvor besprochenen Sprungroutine verwendet. Wenn also diese Sprungroutine durch einen Absturz unterbrochen wird, speichert dieser RAM Daten, die die auf diesen Controllern gedrückten Tasten repräsentieren. Dies gibt Spielern die Möglichkeit, genau zu steuern, wohin der Spielcode geht, nachdem der Absturz ausgelöst wurde.

Codierung in der Highscore-Tabelle

Für die Sprungsteuerungsmethode von Displaced Gamers muss der Spieler „oben“ auf dem dritten Controller und rechts, links und unten auf dem vierten Controller gedrückt halten (die letztere Kombination erfordert etwas Controller-Fummelei, um eine gleichzeitige Richtungseingabe nach links und rechts zu ermöglichen). ). Dadurch wird der Sprungcode an einen RAM-Bereich gesendet, der die Namen und Punkte für die Highscore-Liste des Spiels enthält, wodurch eine noch größere RAM-Oberfläche entsteht, die direkt vom Spieler manipuliert werden kann.

Indem wir „(G“ in den Zielteil der B-Typ-Highscore-Tabelle einfügen, können wir das Spiel dazu zwingen, dorthin zu springen ein anderer Bereich der Highscore-Tabelle, wo die Namen und Punkte der Reihe nach als das gelesen werden, was Displaced Gamers als „Bare-Metal“-Code bezeichnet, wobei die Buchstaben und Zahlen Opcodes für die NES-CPU darstellen.

Leider gibt es nur 43 mögliche Symbole, die im Namenseingabebereich verwendet werden können, und 10 verschiedene Ziffern, die Teil eines Highscores sein können. Das bedeutet nur einen kleinen Teil davon die verfügbaren Opcode-Anweisungen des NES können mithilfe der verfügbaren Angriffsfläche in die Highscore-Tabelle „codiert“ werden.

source-114

Leave a Reply