, 29 tweets, 12 min read Read on Twitter
Así que quieres hackear juegos de NES? Bien, en ese caso descarga un emulador que tenga opciones de depuración (por ejemplo, FCEUX) una rom del Super Mario World, y sigue leyendo...
Abrimos el mario en el emulador y comprobamos que se pueda jugar sin problemas. Todo bien? Ok, ve al menu de Tools y elige "RAM Search"
Sabemos que un programa guarda toda la información temporal en la RAM del sistema, y en el caso de una NES, al tener recursos limitados, es muy fácil realizar búsquedas. Por eso es una plataforma ideal para aprender los fundamentos.
Vamos a empezar con algo fácil, vamos a modificar las vidas de Mario! Sabemos que empieza con 3 vidas, y que cuando muere debería restar 1 al valor actual. Asi que vamos a buscar todas las posiciones que valgan 2 y matarnos para ver cual se decrementa...
Espera, 2 en vez de 3??? Pues si amigos, si os fijáis la lógica del programa resta vidas pero lo que muestra al usuario es siempre las vidas actuales + 1. De esta forma cuando ya no nos quedan vidas extra al usuario le dice que le queda una vida.
Bueno, como ya hemos visto, una de las posiciones de memoria ha pasado de 2 a 1... vamos a añadir un watch, y volvemos a matarnos para confirmar nuestras sospechas. Aquí podéis ver mejor lo de que cuando ya no quedan vidas, el juego dice que nos queda una, la última
Ahora que ya hemos cazado la posición de memoria que almacena la vida de mario, vamos a crear nuestro cheat. Clickeamos en Add Cheat y abrimos la ventana de Cheats (en Tools)
Le ponemos un nombre descriptivo y ponemos un valor que estará forzando continuamente, en este caso 8 (el juego mostrará 9 por lo que comentaba). Clickeamos en update y vamos a jugar a ver si funciona...
Pues yo diría que sí. Ahora podemos morir las veces que queramos, que siempre tendremos el mismo número de vidas.
Vamos a por más? Ok! Una de las partes importantes en el mario es conseguir power ups que nos ayuden durante la aventura. Imaginad si pudiésemos ponernos una flor de fuego siempre... os parece buena idea? vamos a ver donde guarda el juego esa información!
Hacemos lo siguiente, según empieza la partida reseteamos el contador de cambios, cogemos una seta para que mario cambie a grande y hacemos una búsqueda de 1 cambio. Salen varios candidatos, pues nos matamos y seguimos viendo los que cuadran, ahora cogemos otra seta y confirmamos
Vamos a ver si hemos acertado, creamos un cheat y le ponemos un valor loco a ver que hace nuestro mario. Pues con valor 3 resulta que podemos lanzar bolas de fuego aunque seamos mario pequeño!
De hecho, ironicamente si un enemigo nos golpea el juego comprueba el valor y decide ponernos a mario grande, que es lo que haria en condiciones normales. Pero como nosotros volvemos a poner el valor a 3, podemos lanzar bolas de fuego igualmente XD
A estas alturas estaréis hartos del tiempo del juego... por que no metemos un cheat también y así podemos hacer trampas a gusto? Esta vez el valor sabemos que es mayor que un byte, por lo que ajustamos a 2 bytes y le damos a buscar Less Than Previous Value
Será este el tiempo? Vamos a añadir un cheat y lo sabremos! Pues al añadirlo el tiempo mágicamente se ha quedado congelado. Si no funcionase, pues a seguir buscando mediante deducción y condiciones lógicas, no pasa nada
Probando con los cheats, nos damos cuenta que realmente con el byte que controla la cuenta de 10 a 0 nos vale para dejar paralizado el contador, pues lo ponemos al valor que nos de la rabia, borramos el otro por innecesario y ya tenemos nuestro cheat de tiempo
Es divertido explorar como reacciona el juego a nuestros cheats, por ejemplo aunque vamos con mario pequeño, ya que la variable de power up activo dice que tenemos la flor, ahora al golpear bloques de power up salen flores y no setas!
Ahora podemos empezar a probar hacer todo tipo de locuras, por ejemplo al coger una estrella buscar variables que cambien de valor, yo he encontrado esta, que parece estar relacionada con el timer del estado de la estrella, hace que mario ponga su animación, pero seré invencible?
pues si! los enemigos al chocar conmigo mueren, curiosamente la musica de la estrella no suena, eso debe controlarlo otra variable, pero a efectos de ser invencible, funciona totalmente XD
Bueno ya tenemos una buena colección de cheats pero espera... llegamos al final de fase y el contador de puntuación se vuelve loco! no para de subir!!!
SI recordais en mario al finalizar nos dan puntuación adicional por todo el tiempo que nos quedase, como tenemos tiempo infinito, el score sube eternamente. Desactivamos temporalmente el cheat y listo, alguna vez visteis a mario estrella en esta cinemática? XD
Vamos a ver si podemos hackear el salto, ya que es lo fundamental en este juego, presionamos el boton de saltar mientras filtramos por variables que cambien en ese momento y cazamos una... que hará exactamente?
Leñe, parece controlar la gravedad de mario!!
Al poner de valor -1 mario salio flotando arriba y ahora podemos movernos sin que nada ni nadie nos moleste... Tener a mario flotando es MUY divertido, imaginad las locuras que se pueden hacer con esto
Quien no odiaba a este tío?? decidle adiós XD
He saltado la bandera y ahora puedo moverme fuera del mundo, sigo a la derecha??? Si continuamos, solo veremos el ultimo bloque del mapa repetirse infinitamente
Si seguimos buscando estados, podemos encontrar la variable que dice cuando mario está nadando, activarla y... nadar en el aire xD ahora olvidaros de saltos, podemos nadar el juego entero!
Aquí tenéis el resultado, nuestro mario chetao. Todo lo que hemos aprendido aplica a cualquier juego y cualquier plataforma, obviamente en otras situaciones las herramientas de filtrado y modificación de memoria igual toca hacérselas una misma, pero eso significa más diversión!
Bonus track: os acordáis de la game genie? Qué es lo que hacía? Pues cada código era una posición de memoria en 15 bits y el valor en 8 bits (1 byte). Cuando el juego intentaba leer la memoria el genie devolvía siempre el mismo valor.
Básicamente lo que acabamos de hacer.
Significa eso que podemos llevarnos los cheats que hemos sacado a una game genie? Por supuesto 😋
De hecho el FCEUX ya trae un conversor al formato de los códigos de GG, así da gusto!
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Cristina Ramos
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!