Los piratas informáticos descubren cómo reprogramar NES Tetris desde el juego


Agrandar / ¡Puedo ver el código que controla el Tetri-verso!

Aurich Lawson

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 se ha teorizado públicamente desde al menos 2021, cuando los jugadores investigaban el código descompilado del juego (HydrantDude, que ha profundizado en Tetris falla en el pasado, también dice que la comunidad ha tenido durante mucho tiempo un método conocido de forma privada para tomar el control total de Tetris‘ RAM).

Displaced Gamers explica cómo reprogramar NES Tetris dentro del juego.

Pero un video reciente de Displaced Gamers lleva la idea de la teoría privada a la ejecución pública, y detalla minuciosamente 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 en demasiados detalles, un fallo 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.

El puerto de expansión de Famicom que es clave para que este truco funcione.
Agrandar / El puerto de expansión de Famicom que es clave para que este truco funcione.

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 «extra», que puede incluir dos controladores NES estándar adicionales mediante el uso de un adaptador (esto es cierto a pesar de que Famicom obtuvo 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 (esa ú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.

Esta combinación muy específica de nombre y puntuación en realidad se lee como código en la prueba de concepto de Displaced Gamers.
Agrandar / Esta combinación muy específica de nombre y puntuación en realidad se lee como código en la prueba de concepto de Displaced Gamers.

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 parte de las instrucciones de código de operación disponibles de NES pueden «codificarse» en la tabla de puntuación más alta utilizando la superficie de ataque disponible.

A pesar de estas restricciones, Displaced Gamers pudo codificar un breve fragmento de código de prueba de concepto que se puede traducir en datos de tabla de puntuación alta. (A name of '))"-P)', y un puntaje de segundo lugar de 8,575 en el juego A-Type es un factor destacado, en caso de que se lo pregunte). Esta sencilla rutina coloca dos ceros en los dígitos superiores de la puntuación del juego, lo que reduce el tiempo de procesamiento de la puntuación que, de otro modo, causaría un bloqueo (aunque la puntuación eventualmente volverá a alcanzar la «zona de peligro» para un bloqueo, si continúa el juego).

Por supuesto, la falta de un sistema de ahorro respaldado por batería significa que los piratas informáticos deben alcanzar estas puntuaciones altas manualmente (e ingresar estos nombres complicados) cada vez que encienden el dispositivo. Tetris en una NES estándar. El espacio limitado en la tabla de puntuaciones altas tampoco deja mucho espacio para la codificación directa de programas complejos además de Tetris‘código real. Pero hay formas de sortear esta limitación; HydrantDude escribe sobre un conjunto específico de nombres y números de alta puntuación que «construyen[s] otro programa previo que crea otro programa previo que otorga control total sobre toda la RAM».

Con ese tipo de control total, un jugador de alto nivel teóricamente podría recodificar NES. Tetris para corregir los errores de bloqueo por completo. Esto podría ser extremadamente útil para los jugadores que están luchando por pasar el nivel 255, donde el juego regresa a la tranquilidad del Nivel 0. Mientras tanto, supongo que siempre puedes seguir el ejemplo de El mundo de Super Mario corredores de velocidad y transformar Tetris en pájaro flappy.



Source link-49