3 puntos por GN⁺ 2024-05-09 | 1 comentarios | Compartir por WhatsApp

Se descubre nuevo código en NES Tetris

  • Hackers descubrieron una forma de reprogramar NES Tetris desde dentro del juego
  • Este método podría ayudar a quienes persiguen puntajes altos a evitar el crash de fin de partida

Cómo ejecutar código

  • Aprovechando la "kill screen" de NES Tetris, es posible programar nuevos comportamientos en la versión de Tetris que corre en hardware y cartuchos sin modificar mediante un método complejo de manipulación de memoria
  • También se han descubierto glitches similares de "ejecución arbitraria de código" en juegos como Super Mario World, Paper Mario y The Legend of Zelda: Ocarina of Time
  • La forma básica de introducir código externo en NES Tetris ha sido teorizada públicamente al menos desde 2021
  • Este método explica en detalle cómo hacer que Tetris empiece a leer su tabla de puntajes altos como instrucciones de código máquina

Diversión usando los puertos del control

  • El crash de NES Tetris ocurre cuando el procesador de puntaje del juego tarda demasiado en calcular una nueva puntuación entre cuadros
  • Cuando ocurre esta demora, parte del código de control es interrumpido por la rutina de escritura del nuevo cuadro y termina saltando a una parte no prevista de la RAM para buscar la siguiente instrucción
  • Gracias a la forma en que Tetris procesa entradas potenciales al ejecutarse en la consola japonesa Famicom, los jugadores pueden manipular ese salto

Programando en la tabla de puntajes altos

  • Para el método de control del salto de Displaced Gamers, el jugador debe mantener presionado "arriba" en el tercer control y derecha, izquierda y abajo en el cuarto control
  • Esto hace que el código de salto sea enviado al área de RAM que guarda los nombres y puntajes de la lista de récords del juego, ofreciendo una superficie de RAM más grande que el jugador puede manipular directamente
  • Colocar "(G" en la parte objetivo de la tabla de puntajes altos puede forzar al juego a saltar a otra zona de esa misma tabla
  • Desde ahí, empieza a leer secuencialmente los nombres y puntajes como opcodes para el CPU del NES
  • Sin embargo, como en el área de ingreso de nombres solo hay 43 símbolos disponibles y solo 10 dígitos pueden formar parte de un puntaje alto, solo una parte de los opcodes disponibles del NES puede "codificarse" en la tabla de puntajes altos
  • Como no existe un sistema de guardado con batería de respaldo, los hackers deben lograr manualmente esos puntajes altos e ingresar nombres complejos cada vez que inician Tetris

Opinión de GN⁺

  • Sorprende que la versión de NES de Tetris tuviera una funcionalidad oculta como esta. Parece que no se descubrió en su época, y resulta increíble que haya salido a la luz recién después de varias décadas.
  • También es interesante que este hack haya sido posible aprovechando el puerto de expansión del Famicom. Aunque seguramente no era una función intencional de Nintendo, deja ver una ventaja del Famicom frente al NES en cuanto a capacidades.
  • La idea de usar este bug para insertar código que evite el crash es bastante ingeniosa. En teoría, permitiría seguir jugando y sería de gran ayuda para intentar conseguir puntajes altos.
  • Aun así, parece incómodo que haya que hacer una configuración compleja cada vez que se inicia el juego. Para usarlo de verdad, haría falta una forma de automatizarlo mejor.
  • En cualquier caso, este método parece más atractivo para entusiastas que buscan récords o personas interesadas en programación que para usuarios comunes que solo quieren jugar. Parece difícil que tenga un uso masivo.

1 comentarios

 
GN⁺ 2024-05-09
Comentarios de Hacker News

Resumen:

  • Esto hace pensar en una línea de la novela Accelerando de Stross, donde se dice que el objetivo último del hacking es "hackear la estructura del espacio-tiempo para descubrir qué hay debajo".
  • Da algo de vergüenza no tener ese espíritu hacker de hacer algo solo por diversión, sin ningún propósito práctico.
  • Los cartuchos de NES se ejecutan desde ROM, pero este exploit hace que la CPU salte a la RAM usada para guardar la tabla de puntuaciones máximas.
  • Alguien se pregunta cuánto tardará alguien en lograr correr Doom dentro de Tetris.
  • Alguien quiere construir una computadora gigantesca con cintas transportadoras dentro de Factorio para provocar un segmentation fault y salirse del juego.
  • Siente que fue tiempo muy bien desperdiciado.
  • Descubrir ACE en juegos viejos resulta fascinante. Hace unos años vio esto en Super Mario World y quedó obsesionado con cómo era posible.
  • Da gusto ver a gente realmente brillante invertir muchísimo tiempo y esfuerzo en algo completamente inútil.
  • Puede que por ahora no haya ninguna razón para inyectar código en NES Tetris, pero ese no es el punto. El punto es descubrir qué es posible y qué se puede hacer con código antiguo y computadoras primitivas.
  • Sorprende que haya tomado tanto tiempo romper Tetris de esta manera. Esto anticipa una nueva era de runs any% cuyo objetivo será ejecutar el final o los créditos lo más rápido posible.
  • Ocarina of Time ha tenido exploits de ACE durante años. Está tan roto que se puede manipular la memoria del juego y editar warps de entrada para "completarlo" en solo unos minutos.
  • Lo más impresionante es que la gente edita la memoria a mano usando solo unos pocos botones y un joystick analógico.
  • La posibilidad de ejecutar código arbitrario siempre resulta más interesante que lo que se haga después con eso.
  • Desensamblar el juego para averiguar cuándo y dónde hacer todo esto, y luego encontrar desde dónde se puede manipular para introducir la siguiente instrucción, demuestra un nivel de dedicación admirable.
  • Dedicar tiempo a NES/SNES en 2024 parece una prueba de que Nintendo usó trucos psicológicos o control mental poco ético con los niños.
  • Estas personas tienen talento, y no parece haber ninguna razón racional para que hayan elegido este proyecto.