Wie Zelda: Ocarina of Time Speedrunner den N64 auf unglaubliche neue Weise brechen
ReSpec ist normalerweise eine Kolumne über die wunderbare, technische Welt der PC-Spiele, aber gelegentlich gibt es Themen, die zu gut sind, um sie zu ignorieren. The Legend of Zelda: Ocarina of Time wird allgemein als eines der besten Nintendo 64-Spiele aller Zeiten gefeiert, und obwohl es kein PC-Titel ist, zeigen die technisch anspruchsvollsten Speedruns des Spiels, wie Spiele auf grundlegender Ebene funktionieren. Noch wichtiger ist, dass diese unglaublichen Leistungen nur mit viel Gemeinschaftsaufwand möglich sind.
Ocarina of Time ist ein Spiel, für das ein normaler Spieler etwa 30 Stunden brauchen würde; Die erfahrensten Speedrunner, die das Spiel so schnell wie möglich spielen möchten, können es in etwa drei Stunden und 40 Minuten ohne Störungen meistern. Aber die Any%-Kategorie des Spiels, die Spieler dazu auffordert, das Spiel unabhängig von den verwendeten Methoden zu beenden, ist auf drei Minuten, 54 Sekunden und 566 Millisekunden reduziert. Und ja, diese Millisekunden sind wichtig. Der zweitplatzierte Rekordhalter liegt weniger als eine volle Sekunde hinter dem Weltrekord.
Auch wenn es sich um eine so bemerkenswerte Leistung handelt, ist das nicht alles, was Speedruns von Ocarina of Time auf den Tisch bringen. Bei den Summer Games Done Quick 2022, einem halbjährlichen Speedrunning-Marathon für wohltätige Zwecke, gab es einen Showcase, der eine Gruppe von Speedrunnern hervorhob, die das Spiel spontan umprogrammierten, um neue Grafiken anzuzeigen, neue Musik zu spielen und sogar ein Twitch-Chat-Overlay auszuführen. Und all das wurde auf einer Lagerkopie des Spiels ohne Vorprogrammierung gemacht.
Die Speedrunning-Community von Ocarina of Time hat das Spiel weiterhin auf scheinbar unmögliche Weise gebrochen. Ich habe mich an zwei der führenden Köpfe in der Community gewandt, um herauszufinden, was das klassische Nintendo 64-Spiel ausmacht, und es läuft alles auf einen Exploit hinaus: Arbitrary Code Execution.
Weit entfernt von Beliebigkeit
Arbitrary Code Execution oder ACE klingt viel einschüchternder, als es tatsächlich ist. Es ist ein Begriff, der in der Cybersicherheit herumgeworfen wird und im Grunde bedeutet, Code (oder ein Programm) auszuführen, der nicht ausgeführt werden sollte. So beschrieb Dannyb, ein Speedrunner für Ocarina of Time , der den zweiten Platz in der Kategorie Any% hält, ACE in Ocarina of Time: „Arbitrary Code Execution in OoT ist ein Exploit, bei dem ein Spieler In-Game-Aktionen zum Arrangieren verwenden kann eine Reihe von Daten im Speicher, um den Spielcode nachzuahmen, und dann den Ort zu manipulieren, an dem das Spiel Code ausführen möchte, um der Ort zu sein, an dem wir gerade diese Anordnung vorgenommen haben.
Mit den richtigen Aktionen, sagt Dannyb, können die Spieler „im Wesentlichen jeden beliebigen Code innerhalb des Spiels ausführen und das Spiel dazu bringen, Dinge zu tun, für die es nicht programmiert wurde“. Zu diesen Aktionen gehören Dinge, die so scheinbar nutzlos sind wie der Name, den Sie eingeben, wenn Sie das Spiel starten. Das ist genau die Aktion, die es Ocarina of Time ermöglicht hat, so schnell geschlagen zu werden.
In einem Spiel wie Ocarina of Time überprüft das Spiel seinen Speicher auf eine bestimmte Anforderung, die erfüllt werden muss, um das Spiel zu schlagen. Das Ziel in einem Any%-Speedrun ist es, den Speicher neu anzuordnen, um den Namen Ihres Charakters zu sehen, anstatt dort, wo er normalerweise aussehen würde. Dies wird als Stale Reference Manipulation oder SRM bezeichnet, und dannyb sagt, dass der Exploit das ist, was gecrackte Ocarina of Time -Speedruns in großem Maße öffnet.
„ACE benötigt in jedem Videospiel immer diese beiden Dinge: eine fein abgestimmte Kontrolle über einen bestimmten Speicherbereich, damit der Spieler die Daten dort nachahmen kann, und die Möglichkeit, den Ort der Codeausführung so zu ändern, dass er der Ort ist, an dem sich der benutzerdefinierte Code befindet Lügen. Im Jahr 2019 wurde in OoT ein Fehler namens Stale Reference Manipulation entdeckt, der die zweite Anforderung in großem Maße eröffnete“, sagte dannyb.
Im Fall eines normalen Ocarina of Time -Laufs summieren sich scheinbar zufällige Aktionen, um das Spiel dazu zu bringen, Bereiche (wie den Namen Ihres Charakters) auf Abschlussanforderungen zu überprüfen, wenn dies nicht der Fall sein sollte. Es ist ein zweiteiliger Prozess. Erstellen Sie eine Datennutzlast, z. B. den Namen Ihres Charakters, und manipulieren Sie den Speicher mit SRM, um auf diese Nutzlast zu verweisen.
Hacken im laufenden Betrieb
So schlagen Speedrunner Ocarina of Time in nur wenigen Minuten, aber es erklärt nicht vollständig, wie das liebevoll benannte Triforce%-Showcase dem Spiel neue Texturen, Modelle, Musik, Code und sogar ein Twitch-Overlay hinzufügen konnte, ohne dass dies der Fall war Modifikation der Kartusche. Savestate, einer der Köpfe hinter diesem jahrelangen Projekt, erklärte, dass es darum geht, die Nintendo 64-Konsole darauf vorzubereiten, Controller-Daten als Spieldaten zu verstehen.
Es ist ein Schaufenster, das nur durch TASBot möglich ist, der Eingaben mit unmenschlicher Geschwindigkeit ausführen kann. Wie Savestate erklärt: „Wir modifizieren eine Anweisung im Speicher, um mit dem Lesen von Steuerungsdaten als N64-Anweisungen zu beginnen. Normalerweise würde dies abstürzen, aber dank TASBot ist er in der Lage, Controller zu simulieren und sie mit unmenschlicher Geschwindigkeit so zu manipulieren, dass sie wie N64-Anweisungen aussehen, sodass das Spiel die Controller-Daten als eine Reihe von vorgegebenen Anweisungen ausführt.“
Kurz gesagt, das Triforce%-Showcase verwendet ACE und SRM wie ein normaler Ocarina of Time- Speedrun, aber es ändert speziell, wie die Nintendo 64-Konsole Anweisungen versteht. Mit diesem Setup können die Läufer dem Spiel jeden beliebigen Code hinzufügen, indem sie einfach die Controller-Eingaben eingeben. Savestate fuhr fort: „Es gibt keine Modifikation der Spielkassette. Um benutzerdefinierte Daten in den Speicher zu bekommen, verwenden wir einen Glitch, der es uns ermöglicht, mit Hilfe von TASBot Dinge im Speicher hinzuzufügen und zu ändern, während wir nur über die Controller-Ports mit der N64-Konsole verbunden sind.“
Diese Exploits werden auch nicht zufällig entdeckt. Savestate erklärte, dass die Ocarina of Time- Community Tools entwickelt hat, um zu untersuchen, wie der Speicher im Spiel angeordnet ist, sowie Programme, um verschiedene Speicheranordnungen zu simulieren. Emulatoren wie Project64 helfen sehr, da sie es Runnern und Tool-Entwicklern ermöglichen, Schritt für Schritt durchzugehen, wie das Spiel Code ausführt.
Ocarina of Time ist eines der legendärsten Spiele aller Zeiten, und die robuste, engagierte Speedrunning-Community hat es dem Spiel ermöglicht, Jahrzehnte nach seiner ursprünglichen Veröffentlichung mit neuen Entwicklungen zu gedeihen. Exploits wie der, der die schnellsten Ocarina of Time -Speedruns antreibt, trivialisieren die Herausforderung, die normalerweise damit verbunden ist, ein Spiel so schnell wie möglich zu schlagen, aber sie heben auch das unglaubliche technische Know-how und die Bemühungen der Community hervor, die in das Sezieren und Analysieren beliebter Spiele fließen.
Laut dannyb ist sich auch die Community dieser Ausgewogenheit bewusst: „Die Any%-Speedrun-Kategorie von OoT ist die einzige in unseren Hauptbestenlisten, die ACE als gültigen Weg zum Erreichen des Ziels zulässt. Für alles andere verbieten wir ACE, um die Einzigartigkeit zu bewahren, die diese Kategorien überhaupt erst zum Leben erweckt hat.“
Dieser Artikel ist Teil von ReSpec – einer fortlaufenden zweiwöchentlichen Kolumne, die Diskussionen, Ratschläge und ausführliche Berichte über die Technologie hinter PC-Spielen enthält.