Super Mario World Speedrun hack lleva arriba abajo abajo izquierda derecha izquierda derecha B A al siguiente nivel

Super Mario World se convierte en Pong, a través de ingenioso exploit de código arbitrario

Durante la última semana, Awesome Games Done Quick 2014 recaudó más de $ 1 millón para organizaciones benéficas mediante la transmisión en vivo de algunos de los mejores speedruns de videojuegos del mundo. Si bien la mayoría de estos speedruns se realizaron en vivo y sin la ayuda de jugadores hábiles, unos pocos fueron speedruns asistidos por herramientas, o TAS para abreviar. Mi favorito, de lejos, era un TAS de Masterjun que usaba una combinación exacta de movimientos acrobáticos de Yoshi para explotar El mundo de Super Mario en SNES, lo que le permite ejecutar código arbitrario que se carga en la consola a través de los puertos de su controlador. Momentos después de que se ejecuta el exploit de 'control total', Super Mario World es reemplazado por un juego de Pong que usa la cabeza de Mario como una pelota. En este punto, realmente debería ver el video a continuación.





Al final de la historia, hay otro video incrustado que incluye una discusión sobre cómo se logró el exploit. También se encuentra disponible un video de mayor calidad, además de una discusión por parte de los desarrolladores, en la página de AGDQ Twitch .





Fallo en Super Mario World para ejecutar código arbitrarioTodavía estoy tratando de entender el truco, así que perdóname si no entiendo esto al 100%. En primer lugar, los parámetros: Masterjun usa una consola SNES real, con un cartucho de Super Mario World real. Sin embargo, ahí es donde terminan las cosas 'reales'. El juego real se lleva a cabo mediante una PC que está conectada directamente a los puertos del controlador de SNES. Ahí es donde entra en la ecuación el bit 'asistido por herramientas' del speedrun.

Los primeros 100 segundos del juego, según tengo entendido, están construyendo el exploit. Básicamente, el número de identificación de cada sprite (objeto) en pantalla se almacena en la memoria de atributos de objetos (OAM) de SNES. Los primeros 100 segundos de juego llenan el OAM con una secuencia muy exacta de ID de sprites. Por lo que puedo decir, cuando finalmente se ejecuta el exploit (asombroso un bloque de signo de interrogación volador), estas ID de sprites se ejecutan como si fueran un programa escrito en lenguaje ensamblador. El sprite final, el interruptor P, cuando se convierte en lenguaje ensamblador, le dice al SNES que salte al búfer del controlador.



El SNES OAM, lleno de códigos de sprites

El SNES OAM, lleno de códigos de sprites



En este punto, SNES continuará ejecutando cualquier código arbitrario que se ingrese a través de los puertos del controlador. A la 1:38 en el video, cuando ves un derroche de letras en el lado derecho, ese es el código de carga de la computadora al SNES. Mediante el uso de un par de conectores especiales de múltiples pulsaciones, que permiten enchufar cuatro controladores en un solo puerto de controlador SNES, Masterjun puede cargar una gran cantidad de código muy rápidamente.

Un par de segundos después, Super Mario World es reemplazado por un menú, lo que permite al corredor de velocidad jugar Pong, Snake o saltar a los créditos finales de Super Mario World. En teoría, Masterjun podría haber subido cualquier cosa al SNES, pero Pong y Snake son un buen punto de partida. En general, es un truco asombroso e ingenioso, y realmente, es una locura que SNES siga recibiendo tanta atención casi 23 años después de su lanzamiento en América del Norte. Dado que el truco se realiza a través de los puertos del controlador, casi se podría decir que este es el último homenaje al código de trucos de Konami (arriba arriba abajo abajo izquierda derecha izquierda derecha B A).



La falla, que es disponible para descargar desde el sitio web de TASVideos , se demostró por primera vez en Awesome Games Done Quick 2014. En el transcurso de una semana, varios corredores de velocidad completaron 155 juegos en tiempos récord para la caridad. Todo el evento se transmitió en vivo en Twitch, donde 18312 donantes recaudaron más de $ 1 millón, un poco más que el total de $ 50,000 del año pasado. El mejor evento aparentemente fue un speedrun Super Metroid de cuatro vías, en el que los cuatro corredores de velocidad más rápidos del mundo competían entre sí en la misma sala.