LUA Script para 4Gen

Share your research work with the community!
Post Reply
User avatar
ElToby
PokePoints:
Posts: 2
Joined: Sat Jun 13, 2020 2:40 am
Has thanked: 4 times
Been thanked: 2 times

LUA Script para 4Gen

Post by ElToby »

INTRODUCCION

Pues en general he abierto este post para documentar mi progreso en la investigación que estoy realizando respecto a los LUA Script en 4GEN.

Te preguntaras ¿Qué es eso? Para aquellos menos familiarizados en el tema, le puedo decir, que LUA es un lenguaje de programación que se usa normalmente para crear extensiones para programas y juegos, los LUASCRIPT son una extensión del DesMume que te permite ver ciertos datos de la RAM en pleno juego.

En la 5Gen los LuaScript son necesarios para poder Scriptear, o realizar algunas otras cosas, en la 4Gen, la mayoría de los datos que te dan los LuaScript te lo proporciona el SDMSE o algún que otro Pokesav, pero la cuestión es que revisar estos datos quita un poco de tiempo y en mi opinión seria muchísimo mejor tener estos datos de una sola vez en la rom.

Voy a dejar algunos de los datos que se pueden saber con un LuaScript.

- Numero del Mapa
-Coordenadas del Mapa (X,Y,Z)
-Eventos o Overwords del Mapa
-Textos del Mapa.
-Los Pokemon salvajes del mapa.
Esto serian los mas relevantes y hasta cierto punto los mas necesarios a la hora de hacer un Hackrom.

Pues y me preguntaras:
- ¿Toby y para qué me sirve todo esto?
Pues en las Roms de NDS todo esto hay que buscarlo de manera anticuada y tardía, por ejemplo para saber las condenas del mapa, multiplicar 32x32 la matriz, usar Pokesav, ósea, guardamos la partida en el punto que queremos saber las coordenadas, y luego abrimos con un programa que dice las coordenadas.
Todo esto a veces jode mucho, sería mejor saber todo esto de una sola sin tener que abrir y cerrar programas varias veces.

En cuestión, los LuaScripts pueden resultar bastante prácticos a la hora de romahackear en NDS.

-Okey Toby, y donde descargo esta maravillosa extensión para el DesMume
Pues déjame decirte, que por desgracia, los LuaScripts en roms de 4Gen en español, NO EXISTEN, en 5Gen si existen y los podemos encontrar con una búsqueda rápida en Google.

-Entonces ¿Por qué carajos nos cuentas todo esto si no se puede usar?
Pues como dije, no existen en Roms españolas, pero si existen en ROMS inglesas, gracias a esto, podemos fijarnos en los LUA ingleses y crear LUA españoles en base a esta información.

Pero aun así, los Lúa Ingleses solo nos dan las coordenadas del mapa, inclusive hay uno por allí que da el número del mapa, pero al parecer no funciona siempre.

Aquí es donde aparezco yo. Con ayuda de Mikelan y de Bag pude hace un tempo buscar valores en la RAM, pude portear los LuaScripts de Diamond y Platinum a su equivalente en español (Diamante y Platino), pero estos solamente proporcionan los datos de las coordenadas.

Ósea aún están bastante incompletos en comparación a los de 5Gen.

INVESTIGACIÓN

Creo que ya di bastante introducción, voy ahora con lo práctico.

En Diamante

Pues viendo el LuaScript inglés, notaremos que los valores de X y Y se guardan en 0x0226E758 y 0x0226E75C respectivamente, si buscamos esto en la RAM veremos que no encontraremos nada xD.

¿Por qué?

Porque al parecer el LuaScript de Diamond esta hecho en base a valores que cambian su posición, así que no siempre los datos se encontraran en el mismo lugar.

Así que después de confirmar esto, decidí dejarlo para después e intentarlo con Platino.


En Platino

Los Offset en la RAM de los valores de X y Y son 0x021C5CCE y 0x021C5CEE respectivamente, este LuaScript si está bien creado, me ubique en el punto donde se empieza el juego, que sería Mapa 415 X:04 Y:06, así que lo que hice fue ir a las direcciones mencionadas anteriormente en medio del juego con la opción View Memory del DesMume desde 0x021C5CCE a 0x021C5CEE encontré esta cadena de Bytes :

04 00 8E DD 4A 00 B1 32 45 00 00 00 00 00 00 10 00 00 00 00 00 00 00 80 04 00 00 00 00 00 00 80 06

Y luego procedí a buscar esta cadena en la RAM de Platino español, y para mi felicidad encontré la cadena exactamente igual, ¿Coincidencia?, Lo dudo mucho.

Esta cadena se encontraba en los Offset 0x021C5ECE(X) 0x021C5EEE (Y). Así que edite el LuaScripts Ingles, remplazando los Offset de las Rom Inglesas con los de la Rom española, y pues funciono perfectamente, inclusive no me la creí en el momento.

Image

En la pantalla inferior, en la esquina superior izquierda se pueden ver los unos numeritos. Esas son las cordenadas donde se encuentra el Player.

Otra Vez Diamante

Luego volví de nuevo a Diamante, esta vez me ubique en donde empiezas el juego y busque la misma cadena que en Platino, y para más sorpresa, la volví a encontrar, esta vez en los Offset 0x021CF0FA a 0x021CF11A, así que remplace los Offset del LuaScripts inglés a los de la española y también funciono de maravilla

Image

CONCLUSIÓN

Pues y hasta aquí dejo esto por el momento, mi objetivo es crear unos LuaScripts en 4Gen tan completos como los de 5Gen, pero como notaran, esto seria los que pude obtener con la información que ya tenía, además aún me falta explicar como los podría conseguir en HGSS, pero Mikelan ya lo hizo hace un tiempo atras, asi que seria una perdida de tiempo hacerlo

Pronto haré un tutorial de como activar los LuaScript en DesMume, pero creo que no sería necesario, ya que si buscamos por Google como activar los LuaScript en DesMume conseguiremos un monto de Tutoriales.

Sin más que decir me despido por hoy ^^

Casi se me olvida.
El Link de los Lua por si alguien los necesita.
https://mega.nz/#!X5YUVCZR!sdNDA5xgh5HQ ... 9n9XuXOrWI

Post Reply