Hola. En este post vamos a ver como programar scripts en Lua para alterar juegos tan míticos como el Legend of Zelda.
En el primer post (0x00) ya hablamos de como se puede montar el tinglado para poder comenzar con estos «trasteos». Concretamente aquí: 56k.es/fanta/fceux-0x00-compilar-la-ultima-version/
Vamos al turrón.
Mostrar en pantalla la posición de Link
Link es el nombre del Heroe. Zelda es la princesa.
Una forma de hacer esto es ejecutar fceux y cargar la rom (el zip). Luego cargar el script lua y mover a link por el escenario.
Tendriamos que ver en pantalla como la posición cambia cuando vamos desplazandonos.
$ wget -q "http://fanta.56k.es/00-Games/03-Nes/Legend_of_Zelda-English.nes" -O Zelda-The_legend_of_Zelda-English.zip
$ touch Zelda-The_legend_of_Zelda-English.lua
while true do
link = {}
link.x = memory.readbyte("0x0070"); -- Link posición x
link.y = memory.readbyte("0x0084"); -- Link posicion y
gui.text(10,10,"x: " .. link.x .. " y: " .. link.y);
-- print("x: " .. link.x .. " y: " .. link.y);
emu.frameadvance();
end
Esto nos permite por ejemplo poder mover a Link de forma automatizada.
Moviendo a Link por zonas en las que no es posible
Podemos cargar un script como este para que se mueva.
while true do
link = {}
link.x = memory.readbyte("0x0070"); -- Link posición x
link.y = memory.readbyte("0x0084"); -- Link posicion y
gui.text(10,10,"x: " .. link.x .. " y: " .. link.y);
memory.writebyte("0x0070",(link.x - 1))
memory.writebyte("0x0084",(link.y + 1))
emu.frameadvance();
end
Es un ejemplo amigo de modo que relaja la paja un poco si no le ves el sentido.
Y eso es por tanto un ejemplo de cosas que podemos hacer con este «emulador».
En futuros fascículos veremos como hacer más cosas y con otros juegos.
Espero que esto le gustase.
Saludos cordiales.
Un lujazo de artículo como siempre 🙂
Lo de moverlo por encima de cualquier cosa me recuerda a cuando en un juego descubrieron la manera de hacer que el personaje se pudiera meter dentro de las paredes en un mapa y seguir jugando como si nada (aunque como era un juego online lo arreglaron muy rápido, creo que al día siguiente).