Cómo los speedrunners de Zelda: Ocarina of Time rompen el N64 de formas nuevas e increíbles
ReSpec normalmente es una columna sobre el maravilloso mundo técnico de los juegos de PC, pero ocasionalmente hay temas que son demasiado buenos para dejarlos pasar. The Legend of Zelda: Ocarina of Time es universalmente aclamado como uno de los mejores juegos de Nintendo 64 jamás creados, y aunque no es un título para PC, los speedruns más técnicos y de más alto nivel exponen cómo funcionan los juegos en un nivel fundamental. Más importante aún, estas hazañas increíbles solo son posibles con mucho esfuerzo de la comunidad.
Ocarina of Time es un juego que a un jugador normal le llevaría alrededor de 30 horas completar; los corredores de velocidad más habilidosos, que buscan jugar el juego lo más rápido posible, pueden vencerlo en alrededor de tres horas y 40 minutos sin fallas. Pero la categoría Any% del juego, que asigna a los jugadores la tarea de completar el juego independientemente de los métodos utilizados, se redujo a tres minutos, 54 segundos y 566 milisegundos. Y sí, esos milisegundos importan. El poseedor del récord del segundo lugar está a menos de un segundo completo del récord mundial.
A pesar de ser una hazaña tan notable, eso no es todo lo que los speedruns de Ocarina of Time aportan. En Summer Games Done Quick 2022, un maratón semestral de carreras de velocidad con fines benéficos, hubo una exhibición que destacó a un grupo de corredores de velocidad que reprogramaron el juego sobre la marcha para mostrar nuevos gráficos, reproducir música nueva e incluso ejecutar una superposición de chat de Twitch. Y todo eso se hizo en una copia de stock del juego sin programación previa.
La comunidad de corredores de velocidad de Ocarina of Time ha seguido rompiendo el juego de maneras aparentemente imposibles. Me puse en contacto con dos de las mentes líderes de la comunidad para averiguar qué es lo que hace que el juego clásico de Nintendo 64 funcione, y todo se reduce a una vulnerabilidad: la ejecución de código arbitrario.
Lejos de arbitrario
La ejecución de código arbitrario, o ACE, suena mucho más intimidante de lo que realmente es. Es un término usado en ciberseguridad que básicamente significa ejecutar código (o un programa) que no debe ejecutarse. Así es como dannyb, un velocista de Ocarina of Time que tiene el récord de segundo lugar en la categoría Any%, describió ACE en Ocarina of Time: "La ejecución de código arbitrario en OoT es un exploit mediante el cual un jugador puede usar acciones en el juego para organizar un montón de datos en la memoria para imitar el código del juego, y luego manipular la ubicación donde el juego busca ejecutar el código para que sea el lugar donde acabamos de hacer ese arreglo”.
Con las acciones correctas, dannyb dice que los jugadores pueden "básicamente ejecutar cualquier código que deseen desde dentro del juego y hacer que el juego haga cosas para las que no estaba programado". Estas acciones incluyen cosas tan aparentemente inútiles como el nombre que ingresas cuando inicias el juego. Esa es exactamente la acción que ha permitido que Ocarina of Time sea derrotado tan rápido.
En un juego como Ocarina of Time, el juego verifica su memoria para cumplir con un cierto requisito para poder ganar el juego. El objetivo de un speedrun Any% es reorganizar la memoria para ver el nombre de tu personaje en lugar de donde normalmente se vería. Esto se llama manipulación de referencia obsoleta, o SRM, y dannyb dice que el exploit es lo que abrió los speedruns de Ocarina of Time de una manera importante.
“ACE en cualquier videojuego siempre necesita esas dos cosas: un control preciso sobre alguna región de la memoria de modo que el jugador pueda hacer que los datos imiten el código y la capacidad de cambiar la ubicación de la ejecución del código para que sea el lugar donde se encuentra el código personalizado. mentiras. En 2019, se descubrió un problema técnico llamado Manipulación de referencia obsoleta en OoT, que abrió el segundo requisito a lo grande”, dijo dannyb.
En el caso de una ejecución normal de Ocarina of Time , las acciones aparentemente aleatorias se suman para engañar al juego para que verifique las áreas (como el nombre de tu personaje) para los requisitos de finalización cuando no deberían. Es un proceso de dos partes. Cree una carga útil de datos, como el nombre de su personaje, y manipule la memoria con SRM para apuntar hacia esa carga útil.
Hackear sobre la marcha
Así es como los speedrunners vencieron a Ocarina of Time en solo unos minutos, pero no explica por completo cómo el escaparate Triforce%, cariñosamente llamado, pudo agregar nuevas texturas, modelos, música, código e incluso una superposición de Twitch al juego sin ninguna modificación del cartucho. Savestate, una de las mentes detrás de este proyecto de un año, explicó que se trata de preparar la consola Nintendo 64 para que entienda los datos del controlador como datos del juego.
Es un escaparate que solo es posible gracias a TASBot, que puede ejecutar entradas a velocidades inhumanas. Como explica Savestate, “Modificamos una instrucción en la memoria para comenzar a leer los datos del controlador como instrucciones N64. Normalmente, esto fallaría, pero gracias a TASBot, puede simular controladores y manipularlos a velocidades inhumanas para que parezcan instrucciones N64 para que el juego ejecute los datos del controlador como un conjunto de instrucciones predeterminadas”.
En resumen, el escaparate Triforce% usa ACE y SRM como un speedrun normal de Ocarina of Time , pero está cambiando específicamente la forma en que la consola Nintendo 64 entiende las instrucciones. Con esa configuración, los corredores pueden agregar cualquier código que deseen al juego solo a través de las entradas del controlador. Savestate continuó: “No hay modificación del cartucho del juego. Para obtener datos personalizados en la memoria, usamos una falla que nos permite comenzar a agregar y modificar cosas en la memoria con la ayuda de TASBot mientras solo interactuamos con la consola N64 a través de sus puertos de control”.
Estos exploits tampoco se descubren al azar. Savestate explicó que la comunidad de Ocarina of Time ha desarrollado herramientas para observar cómo se organiza la memoria en el juego, así como programas para simular diferentes arreglos de memoria. Los emuladores como Project64 ayudan mucho, ya que permiten a los corredores y desarrolladores de herramientas explicar cómo el juego ejecuta el código paso a paso.
Ocarina of Time es uno de los juegos más icónicos jamás creados, y la sólida y dedicada comunidad de corredores de velocidad ha permitido que el juego prospere con nuevos desarrollos durante décadas después de su lanzamiento original. Exploits como el que impulsa los speedruns más rápidos de Ocarina of Time trivializan el desafío normalmente asociado con ganar un juego lo más rápido posible, pero también resaltan la increíble experiencia técnica y el esfuerzo de la comunidad que se dedica a diseccionar y analizar juegos amados.
La comunidad también es consciente de este equilibrio, según dannyb: “La categoría Any% speedrun de OoT es la única en nuestras tablas de clasificación principales que permite que ACE sea una forma válida de completar el objetivo. Para todo lo demás, prohibimos ACE para preservar la singularidad que dio vida a esas categorías en primer lugar”.
Este artículo es parte de ReSpec , una columna quincenal continua que incluye discusiones, consejos e informes detallados sobre la tecnología detrás de los juegos de PC.