tuts_gba
Thread Id: 29409
Thread Name: FR|Scripting&ASM| Expansion y Personalizacion de Fondos de Batalla
#0
G0LD_ZTHVARD0X! 27515
Expansion de fondos de batalla
Por Karatekid552 y reescrito por mi


Todos sabemos ya como insertar tus fondos de batalla, estos nos dan nuevos aires y un mejor aspecto grafico, pero pasa que a veces queremos que un entrenador eapecial o zona muestre un fondo personalizado, por ejemplo en una ruta nevada queremos ver un fondo nevado, pero ¿como?

Gracias a Karatekid552 es posible, ya que ha desarrollado un parche que mueve la tabla de punteros a los fondos a la direccion 0xF10000, con este espacio tenemos la posibiladad de tener hasta xFFFF fondos (unos 65,000 fondos en total)

Pero primero conozcamos la estructura de la tabla de punteros y su respectiva offset:



Esa es la documentacion de los fondos y su ubicacion original de cada tabla de punteros:



Para expandir la tabla no se requiere gran ciencia, solo aplica el parche que esta al final del tema y vete al final de la nueva tabla de fondos, no borres ningun dato si no estas seguro que estas haciendo (es obvio, pero uno nunca sabe que locuras puede hacer la gente)


Ahora expandamos, pero ¿y ahora que?

Aunque creeras que hay que ser pro para esto, es falso, solo hay que tener conocimientos en hexadecimal e inserccion de datos comprimidos sin repunteo (despues hago un tuto explicando esto, es sencillo)

si recuerdas, dije que habían 20 fondos usables, curiosamete se enumeran en sistema decimal, partiendo del número 0, entonces siguiendo esa numeración asumimos que los fondos del 0 al 19 estan llenos. entonces, insertare sin repuntear dos fondos extra, uno para rutas nevadas, el otro para la batalla contra el campeón, y luego haré un repunteo manual al final de la nueva tabla ubicada en 0xF10000 usando el formato mencionado antes.

El código interno del juego no nos permite tocar ni expandir esta tabla, pero este parche modifica esa rutina ASM no solo moviendola de lugar, sino haciendola dependiente a la varable 0x40F7. lo cual hace que si comprueba que el valor de esa variable es 0, el juego sigue la rutina. común, pero si encuentra un valor distinto a ese, el juego cargará el número de fondo del valor de la variable.

En resumen, si fijamos el valor de la variable 0x40F7 a 20, el juego cargará el fondo número 20, si no hay fondo 20 el juego se crasheara, pero como inserte mi fondo nevado entonces el fondo nevado es el número 20, por lo tanto al fijar en 20 su valor el juego cargará el fondo número 20

Sencillo ¿No? pero para hacerlo funcional y que se cargue el fondo nevado en una ruta especifica pues solo haremos un script de nivel 02, en el cual debe ser agregado esto (mira el macrotutorial de Javi para hwcer scripts de nivel):

Setvar 0x40F7 0x20

Al hacer esto automaticamente al pisar la ruta se cargará ese fondo, pero ¡al salir de esa ruta se sigue cargando ese fondo! pues la unica solucion que encontre es que crees otro script de nivel en los mapas que interconectan esa ruta, poniendo esto:

setvar 0x40F7 0x0

eso hara que la variable vuelva a tener 0 como valor, con lo cual la rutina seguirá normal.


Ahora para la batalla del campeón solo tendremos que hacer casi lo mismo, ahora el fondo de campeón lo inserté despues del nevado, por lo cual es el fondo 21, para ello haremos lo mismo, solo que en vez de hacer un script de nivel se lo asignaremos al script del npc (algo asi era el trainerbattle)


setvar 0x40F7 0x21
trainerbattle 0x1B0 0x200 @puto @quien @lea @esto


#org @esto
msgbox @texto 0x6
setvar 0x40F7 0x0
end
el script esta mal hecho, pero como para hacer esto debes saber de scripteo medio pues sabras que los setvar van antes de la trainer battle y al final del script.

Entonces ¿Es dificil? un poco quizás, para mi es sencillo, pero para ustedes quizas no, recordad que con esto podemos hacer que cada mapa tenga su propio fondo de batalla.

ahora si el link del parche de la rutina:
Battle Background Hack.ips



El parche es compatible con el JPAN hacked engine, el 649 patch de Jambo51, el Decapitalization patch de MrDollSteak, y el 870 parch de Jonkane.


En caso de tener ya usada la direccion 0xF00000 aqui se incluye la rutina sin compilar

Battle BG Hack Source Code

Creditos: a Karatekid552 por la rutina ASM y por el metodo de hacer esto, pero que yo amplié e hice mas entendible

A la vez el agradece a Driver, Jambo51, Darthatron, Mat, Tajaros, Narutoactor y Drfuji.
#1
Dani_SR_17 28493
Muy útil, me viene genial, necesitaba bastantes fondos, la pega, es que la variable que usa, ya la tengo usada en mi hack..., creo que toca modificar algún script.

Aunque si pudieras subir algunas scans, quedaría mucho mejor.
#2
Megascep_9 Kuchiki 28187
¡Jajajajajajajajajaja, esto es una broma, cierto?!...ya veo que no XD.

Es una de las cosas más geniales que he visto en vida, espero
no tener ocupada esa dirección, porque no sabría que hacer con
la rutina sin compilar :s

Gracias por este tuto :D

PD: ¿Y si aplico el parche a una rom limpia de fire red y con el HxD voy a la dirección F10000, copio la rutina y la pego en el lugar que yo quiera de mi hack, funcionaría?

PDD: creo que no, porque no movería la tabla de punteros a los fondos, pero quiero salir de dudas.
#3
Powergirl 28584
¿Pero porqué hay solamente 2 comentarios?
es incomprensible! PEEEEEEEDAAZO DE APORTE, me ha molado cuanto menos, está super chulo, sencillo y bien explicado, que mal que no te pueda dar repu, pero aun asi, Gracias ;)