Author Id: 13374 Author Name: Javi4315♪ Post Content: ¿Qué es esto? Mientras testeaban la beta de Pokémon Inmortal, decidí no continuar hasta solucionar los errores que me reportaran y subiera la beta. Así que inicié un proyecto en Emerald, un rom olvidado que pocos hackean. La verdad es que algunas funciones que tiene son una joya y las animaciones de los sprites son algo genial. Así que como no hay demasiados recursos, he decidido hacer algunas cosas e implementarlas en el rom para crear una rom base. De esta forma espero incentivar a los usuarios valientes, a ver si se atreven a llevar a cabo su proyecto con este juego. De momento sólo he hecho rutinas ASM, aunque es posible que haga otras cosas, como cambiar ciertos gráficos, traducir... Por cierto, de momento, todas las rutinas están escritas por mí. OPERACIONES CON VARIABLES No son las primeras rutinas que implementé pero son las más sencillas, así que las pongo las primeras: [URL=http://www.youtube.com/watch?v=hUhsozhBTUA]YouTube Video[/URL] El funcionamiento es sencillo, se guarda el primer número en la variable 0x8000, el segundo en la variable 0x8001 y devuelve el resultado en la variable 0x8000. Las operaciones que se pueden hacer son las siguientes: [LIST] [*]Suma [*]Resta [*]Multiplicación [*]División [*]XOR [*]ORR [*]AND [/LIST] CAMBIO DE MINISPRITE [URL=http://www.youtube.com/watch?v=rrTDkyUzHjY]YouTube Video[/URL] Con este sistema puedes cambiar a cualquier minisprite de la tabla. Funciona con cuatro variables: [LIST] [*]8004 - Mini normal [*]8005, 8006, 8007 - Bicicleta, pesca y surf (ahora mismo no sé cuál se corresponde con cada una xD) Es necesario pasar por un warp para que se vean los cambios, aunque también se puede hacer mediante una rutina original del juego que muestra instantáneamente los cambios, pero la tengo que buscar aún. [/LIST] CAMBIO DE BACKSPRITE [URL=http://www.youtube.com/watch?v=wnyU64zUAns]YouTube Video[/URL] Esto cambia el backsprite. Los backsprites deben ser puestos en una tabla en la dirección 0x1000000. La estructura de cada set de backsprites es de 40 bytes: (frame1)(frame2)(frame3)(frame4)(paleta) Cada una de 8 bytes. Se explicará más detalladamente en el manual. Respecto al funcionamiento, es sencillo, se pone en la variable 0x8000 el número de back que se utilizará (siendo 0x0 el primero). MULTICHOICES DINÁMICOS ¿Qué quieres decir eso de multichoices dinamicos? Pues que ya no será necesario editar los multichoices para que pongan lo que queramos, porque lo podremos hacer directmente desde XSE con el sistema de multichoices dinámicos: [URL=http://www.youtube.com/watch?v=LclEUWBRSUY]YouTube Video[/URL] Sé que el vídeo no muestra mucho, porque es un simple multichoice, pero bueno, como compensación adjuntaré el script que he utilizado: [spoiler]'--------------- #org 0xF10000 setvar 0x8000 0x0 loadpointer 0x0 0x8F11000 '"Leche" special 0xA setvar 0x8000 0x1 loadpointer 0x0 0x8F12000 '"Azúcar" special 0xA setvar 0x8000 0x2 loadpointer 0x0 0x8F13000 '"Galletas" special 0xA setvar 0x8000 0x3 loadpointer 0x0 0x8F14000 '"Chocolate" special 0xA setvar 0x8000 0x4 loadpointer 0x0 0x8F15000 '"Nata" special 0xA multichoice 0x0 0x0 0x13 0x0 releaseall end '--------- ' Strings '--------- #org 0xF11000 = Leche #org 0xF12000 = Azúcar #org 0xF13000 = Galletas #org 0xF14000 = Chocolate #org 0xF15000 = Nata[/spoiler] Lo que hace es cargar el texto que pongamos en loadpointer para ser mostrado en la opción que pongamos en la variable 0x8000. Los multichoices dinámicos son los siguientes: [LIST] [*]0x10 - 2 opciones [*]0x11 - 3 opciones [*]0x12 - 4 opciones [*]0x13 - 5 opciones [*]0x14 - 6 opciones [*]0x15 - 7 opciones [/LIST] EDITOR POKÉMON Esto tiene varias partes. Hay una rutina que desencripta los datos del pokémon, otra que los encripta y varias que sirven para editar o leer los datos mientras está desencriptado. Para que veáis un ejemplo, voy a editar a mi Torchic macho sin objeto equipado y voy a cambiarle la especie (Gyarados), voy a hacer que cambie a hembra, lo voy a equipar con una Master Ball y lo voy a convertir en Shiny: [URL=http://www.youtube.com/watch?v=gxBdufoiyw4]YouTube Video[/URL] El decripter y el encripter funcionan poniendo en la variable 0x8000 la posición del pokémon en el equipo. Las funciones de edición o lectura funcionan con las variables 0x8002 (si tiene el valor 1, lee los datos y los escribe en la variable 0x8002 para que puedan ser comprobados; si tiene otro valor, entonces se editarán los datos) y la 0x8004 (guarda el nuevo valor a escribir en los datos del pokémon). ¿PUEDES COLABORAR? Claro que puedes colaborar. La mejor forma de hacerlo es sugiriendo cualquier idea que se te ocurra para nuevas funciones. Así podremos seguir aumentando las opciones de esta rom base.