It's Possible to Hack 'Tetris' From Inside the Game Itself

A principios de este año, compartimos la historia de cómo una NES clásica Tetris El jugador llegó a la “pantalla de finalización” del juego por primera vez, activando un bloqueo después de una increíble actuación de 40 minutos y 1.511 líneas. Ahora, algunos jugadores están usando esa pantalla de muerte (y algunas manipulaciones de memoria complicadas que permite) para codificar nuevos comportamientos en versiones de Tetris ejecutándose en hardware y cartuchos no modificados.

Hemos cubierto fallos similares de “ejecución de código arbitrario” en juegos como El mundo de Super Mario, papel marioy La leyenda de Zelda: Ocarina del tiempo en el pasado. Y el método básico para introducir código externo en NES. Tetris ha sido teorizado públicamente desde al menos 2021 cuando los jugadores estaban investigando el código descompilado del juego. (HydrantDude, que tiene profundizado Tetris accidentes en el pasadotambién dice la comunidad ha tenido durante mucho tiempo un método conocido de forma privada para tomar el control total de Tetris‘ RAM.)

Pero un vídeo reciente de jugadores desplazados lleva la idea de la teoría privada a la ejecución pública, entrando en minuciosos detalles sobre cómo obtener NES Tetris para comenzar a leer las tablas de puntuación más alta del juego como instrucciones de código de máquina.

Diversión con los puertos del controlador

Adquirir una copia de NES Tetris Esto es posible principalmente debido a la forma específica en que falla el juego. sin entrar demasiados detallesun accidente en NES Tetris Esto ocurre cuando el controlador de puntuación del juego tarda demasiado en calcular una nueva puntuación entre fotogramas, lo que puede ocurrir después del nivel 155. Cuando se produce este retraso, una parte del código de control es interrumpida por la nueva rutina de escritura de fotogramas, lo que hace que salte a una porción no deseada de la RAM del juego para buscar la siguiente instrucción.

Por lo general, esta interrupción inesperada hace que el código salte para dirigirse al principio de la RAM, donde los datos basura se leen como código y, a menudo, provocan una falla rápida. Pero los jugadores pueden manipular este salto gracias a un capricho poco conocido sobre cómo Tetris maneja entradas potenciales cuando se ejecuta en la versión japonesa de la consola, Famicom.

A diferencia del Nintendo Entertainment System estadounidense, el Famicom japonés presentaba dos controladores conectados a la unidad. Los jugadores que quisieran utilizar controladores de terceros podrían conectarlos a través de un puerto de expansión en la parte frontal del sistema. El Tetris El código del juego lee las entradas de este puerto de controlador “adicional”, que puede incluir dos controladores NES estándar adicionales. mediante el uso de un adaptador (Esto es cierto a pesar de que la Famicom Obtuve una versión completamente diferente de Tetris del software a prueba de balas).

Da la casualidad de que el área de RAM que Tetris utiliza para procesar esta entrada adicional del controlador también se utiliza para la ubicación de memoria de esa rutina de salto que discutimos anteriormente. Por lo tanto, cuando esa rutina de salto se ve interrumpida por un bloqueo, esa RAM contendrá datos que representan los botones que se presionan en esos controladores. Esto brinda a los jugadores una forma potencial de controlar con precisión dónde va el código del juego después de que se activa el bloqueo.

Codificación en la tabla de puntuación más alta

Para el método de control de salto de Displaced Gamers, el jugador debe mantener presionado “arriba” en el tercer controlador y derecha, izquierda y abajo en el cuarto controlador (esta última combinación requiere algo de manipulación del controlador para permitir la entrada direccional izquierda y derecha simultánea ). Al hacerlo, se envía el código de salto a un área de RAM que contiene los nombres y puntuaciones para la lista de puntuaciones más altas del juego, lo que proporciona una superficie de RAM aún mayor que el jugador puede manipular directamente.

Al poner “(G” en la parte específica de la tabla de puntuación más alta del tipo B, podemos forzar que el juego salte a otro área de la tabla de puntuación más alta, donde comenzará a leer los nombres y puntuaciones secuencialmente como lo que Displaced Gamers llama código “bare metal”, donde las letras y los números representan códigos de operación para la CPU de NES.

Desafortunadamente, sólo hay 43 símbolos posibles que se pueden utilizar en el área de entrada de nombres y 10 dígitos diferentes que pueden formar parte de una puntuación alta. Eso significa que sólo una pequeña porción de instrucciones de código de operación disponibles de NES se puede “codificar” en la tabla de puntuación más alta utilizando la superficie de ataque disponible.

Fuente