Registrarse

LUA Script para 4Gen

Estado
Cerrado para nuevas respuestas.

ElToby

RomHacker de NDS
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 los datos que se pueden averiguar 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.

Y eso serían los datos que se pueden saber con un LuaScript, se pueden saber más datos, de eso no hay duda, pero creo que esto sería lo más relevante.

Pues y me preguntaras

-¿Toby y de que Mierda 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, el mismo Mikelan multiplica 32x32 por la matriz, otros como yo usamos 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 en una aporte que subió nuestro querido Moderador Drive (?)

-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 asi, 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 que me enseño a 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.

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.

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.

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.

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 portear el LuaScript de HGSS, y crear uno para la versión inglesa de diamante el cual no tiene. Contando esto me tendría que poner a investigar en que parte de la RAM se guardan los demás valores, me pondré a hacer esto cuando haiga terminado de portear el de HGSS, mientras prefiero documentar todo esto, así si algún día desaparezco por razones desconocidas, esto estará guardado y alguien podrá continuar lo que empezó.
Pronto hare 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, inclusive la versión Optimizada del DesMume que subí hace tiempo también es compatible con los LuaScripts.
Sin más que decir me despido por hoy ^^


Edit: Pues me meto en Discord, y para mi sorpresa Mikelan ya investigo los offset de las rom de HGSS en español, asi que dejo el link con todos los LUA funcionales hasta el momento y el .dll que hay que meter en la carpeta del Desmume.
https://mega.nz/#!X5YUVCZR!sdNDA5xgh5HQ_J9pPj2ywNQWbrdMjG6d09n9XuXOrWI
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba