Registrarse

[GBA-FR] Investigación - Insertar la paleta de un BG adecuadamente

Dani_SR_17

¡Pokémon LionHeart!
Gracias a @CompuMax por pasarme el siguiente link, podéis ir a la 2º parte del tutorial para ver como insertar la paleta adecuadamente (e incluso añadir nuevas animaciones).


Antes de nada, decir que este tutorial (hagamos el primer parón, iba a comenzar como tutorial, pero dado que han surgido problemas y claramente no entiendo 100% porque de todo prefiero moverlo a Investigaciones) es para configurar adecuadamente la paleta de un BG que añadamos a la tabla de los BG, por lo que es necesario haber realizado previamente este tutorial y tener el sistema de BG dinámicos.
Decir que si hay algún tutorial bien explicado de esto agradecería que se dijera, ya que al menos yo no he encontrado nada y esto es lo mejor que he podido sacar por mi propia cuenta.

Dicho explico el asunto, porque más de uno se estará riendo de que no es tan dificil insertar una paleta, el problema viene de que en realidad no es una paleta, sino que son más, son "3" paletas, y lo pongo entre comillas porque no tienen 16 colores cada una.
Con este tutorial pretendo ayudar a configurar adecuadamente la paleta para no joder la paleta de la breve animación que sale junto a la carga del BG, que es la que se va al garete si se inserta la paleta tal cual.


Para este tutorial voy a dar por supuesto que ya se ha insertado el BG, su raw y su paleta (aunque esta en realidad se puede borrar, ya que como he comentado no sirve).
El que tenga dudas puede revisar este tutorial de como hacer lo anterior.

Lo primero de todo, he añadido mi tabla de los BG mi fondo de batalla (1), con su raw (2), con el animación que deseo que tenga (3), su respectiva raw (4) y la paleta de mi BG (5). Tal y como podéis ver en la siguiente imagen.

El resultado es el siguiente, como podéis ver la animación de las barritas horizontales se ve de color negro, mientras que deberían ser azules.

Ahora viene la parte tediosa, si lo siguiente sigue algún tipo de estructura muy concreta la desconozco, pese a que veo ciertos patrones soy incapaz de decir el porque de cada cosa, así que simplemente lo haremos al modo "prueba y error", que si se hace con cuidado funciona perfectamente.
Lo primero, colocamos una paleta vanilla que tenga los colores de esa animación, por ejemplo: 24DDF0.

Abrimos la rom con el emulador y cargamos el BG en un combate, como es obvio ahora la paleta no será la del BG, por lo que se verá como el culo, pero si se debería ver bien la animación.

Lo siguiente es analizar un poco la situación, en el emulador iros a "Tools->Pallete viewer...", os debería salir una cosa tal que así:

Como podéis ver, están las 3 paletas anteriormente mencionadas. Pues bien, ahora volveremos a HxD y nos iremos a la dirección de la paleta que le acabamos de asignar.

Ahora toca ir mirando todo con cuidado, una parte de la estructura la tengo más o menos identificada, intentaré explicar mis conclusiones.

Debe comenzar por 10 60 00 00 00.
Luego van los 16 colores de la 1º paleta, pero entre cada 4 colores tiene que ir un 00 (en este caso es 01, no preguntéis la razón, es el 4º BG que inserto y los 3 anteriores eran 00).
Estoy haciendo el tutorial sobre la marcha, y como digo, la estructura no es clara, ya que acabo de encontrarme con algo que en los tres anteriores que he hecho no pasaba, por alguna razón (que espero entender en lo que queda de tutorial) en este caso la primera paleta esta "partida".

Ese primer 00 que he marcado debería ser un 77, y el siguiente 01 debería estar antes de este color.
Al igual que después de esto deberían ir dos colores, que por alguna razón no está correctamente, sin embargo después de esta laguna si sigue con su patrón.

Si seguís mirando el HxD, en este caso busco encontrar "DE 7B", que es el último color de la paleta 1, pero me acabo de dar cuenta de la "razón" de la anterior laguna que he tenido, resulta que en este caso la parte compartida entre las dos primeras paletas es diferente a los anteriores casos que me he enfrentado, ya que precisamente la "unión", no se como llamarlo, entre las paletas es: "80 10 0F", que precisamente está en el anterior parón, en lugar de al final de la primera paleta, como suele estar, os dejo un ejemplo de uno de los casos anteriores:

Como podéis ver, en el caso anterior comienza también por 10 60 00 00 00, cada 4 colores hay un 00 y la primera paleta acaba con el 80 10 0F.
Como podéis ver, esta es la parte que menos entiendo, así que voy a dejar de intentar explicar algo que no termino de comprender y voy a comenzar con el método "prueba y error". Voy a buscar donde está el último color de la tercera paleta, generalmente seguido de un 00 00.

Como veis se repite la super clara, concisa y entendible estructura de este sistema, por alguna razón el último color está "partido" por la mitad, pero claramente es ese.
Ahora sencillamente copiamos desde el principio hasta aquí y nos lo llevamos a donde queramos insertar la paleta, yo para este ejemplo voy a dejarla tras la tabla (niños, no hagáis esto en casa) para ahorrarme el ir saltando de un lado a otro en el tutorial.

Ahora nos vamos a la dirección donde insertamos la paleta y la copiamos, omitiendo el 10 20 00 00 00 del comienzo (como veis la paleta está dividida en 4, con un 00 entre cada 4 colores).


Voy a hacer una pausa, como he dicho, aquí comienza el modo prueba y error, y efectivamente, estoy probando una y otra vez porque coincide que he ido a explicar un ejemplo que no era como los demás, así que se sale de lo que he conseguido entender.
Explico por encima como he hecho el resto y a la que consiga hacer que este funcione os digo el como.

Para el resto el proceso ha sido el mismo, los primeros pasos similares, la diferencia ha sido que tras ir a la dirección de la paleta vanilla todo era mucho más fácil que en este caso.
Simplemente iba a esa dirección, copiaba lo que había hasta el último color de la 3º paleta, que suele ser fácil de encontrar. Una vez copiado esto me lo llevaba a donde quisiera insertar la paleta y la insertaba con cuidado siguiendo la norma de los 00 cada 4 colores.

Con lo anterior simplemente iba a la tabla de los BG, colocaba en su sitio el puntero a esta nueva paleta y todo perfecto. En este tipo de animaciones no hay problema.


Ahora bien, en este caso todo se me ha torcido, he conseguido "arreglarlo", según parece la estructura de que usa para dar los "saltos", si 00, 01 u otro byte lo define de alguna forma que aún desconozco.
Así que en este caso he probado a hacer lo siguiente, sencillamente copiar la estructura del caso del mar (ya que usa más colores que por ejemplo la de la hierba) y la he pegado con la paleta de este BG, ¿el resultado? Lo siguiente:

Como veis todo perfecto (salvo esa tira azul que no entiendo de donde ha salido), solo que está usando los colores de la animación de la ola (que no quedan del todo mal la verdad) y yo quiero que tenga los colores que tiene que tener.

Como podéis ver en la anterior scan, identifico el primer color y ahora voy a cambiarlos por los colores que tenía antes la animación, ¿el problema? Ahora lo vais a ver.

Aquí tenemos los 5 colores de la paleta, solo que se nos ha colado un 10 y un 01, a lo cual yo digo, "bueno, da igual, lo omito y meto los colores tal cual", pero...


Por ahora dejo aquí la investigación, como digo, en los otros 3 casos que he probado (animación de mar, de arena y de rocas) ha funcionado todo perfectamente y sin complicaciones, el problema viene con esta última.
Voy a descansar un rato y luego seguiré investigando y pondré mis conclusiones por aquí.
 
Última edición:

CompuMax

Discord: CompuMax#0425
Wow!

No sé como has logrado hacer un post tan extenso (y como me lo he leído casi todo). Pero me parece excelente que aún se hagan investigaciones en la GBA. Hace poco @hacanoca me vino con esa misma inquietud por Discord y le expliqué a que se debía el problema de la imagen de entrada. Incluso publicó un tutorial donde explica correctamente lo que le dije en ese momento:

FR-ASM-Expansión BG e imágenes de entrada

En la Parte 2 del tutorial podrás encontrar toda la información referente a las imágenes de entrada.

Saludos y espero haberte ayudado!
 

Dionen

El Emperador Pálido
I actually did research something like this to figure out my way of inserting battle bgs.
I used a method like this, similar to what u did:

use this template and replace each "++++" and "----" with the colors you want. this will provide us 7 colors on the second paleta.
80101F ++++ ---- ++++ --00-- ++++ ---- ++++ 51B0401FBB00

(this template comes from searching through firered backgrounds, copying from the one that uses most colors, and replacing the colors with + and -)

afer replacing mine looks like this:
80101F E539 894A 0D5B EE0056 515F 9563 FD67 51B0 401FBB00

in a hex editor, go to the offset of you compressed and paste the template after it. done!

for example, the bytes in italic are my first pallet, and the bold ones are the template.

1060 0000 001F 00BF 437F 373E 2B00 2C09 7726 DD22 FF26 009B 22BD 1EDE 229D 1E00 371A 7011 7A1E 7D1E 8010 1FE5 3989 4A0D 5BEE 0056 515F 9563 FD67 51B0 401F BB00

in-game:


differently from yours, this is for adding colors to the second pallet, not third. using this method will mess up the third pal. I don't use the transitions, so its not a problem to me.
i have no idea how this works, but it does. hope it might help with something.

but just like Compumax said you should insert a compressed 48 color pal using nse2.0 that in-game will look like this:

which is much better and easier, jaja. saludos!
 
Última edición:

CompuMax

Discord: CompuMax#0425
I actually did research something like this to figure out my way of inserting battle bgs.
I used a method like this, similar to what u did:

use this template and replace each "++++" and "----" with the colors you want. this will provide us 7 colors on the second paleta.
80101F ++++ ---- ++++ --00-- ++++ ---- ++++ 51B0401FBB00

...
No se si sabrás lo que estás haciendo o te ha funcionado simplemente por casualidad. Pero la platilla que estás compartiendo para "facilitar" la inserción de colores no es más que un desglose de la paleta comprimida en LZ77, uno de los algoritmos de compresión usados en la GBA. Ahora, como ya mencioné no sé si habrá sido suerte de que te funcionara, pues el algoritmo crea una cabecera y utiliza un diccionario para comprimir los datos, obviamente en el caso de las paletas no comprime sino que más bien extiende generalmente el tamaño de los datos debido a la baja redundancia de datos, pero estoy seguro que de haber más de un color igual, ejemplo: cuando dejamos colores en negro por no necesitarlos; la cosa no daría el mismo resultado.

Finalmente yo no dije que la insertara con NSE 2.0, ni mucho menos APE, con el que por cierto no se puede insertar más de 16 colores en una misma paleta comprimida. Yo le expliqué a hacanoca como hacerlo y él hizo el tutorial a su manera y con las herramientas que él suele trabajar. Yo utilizo GBA Graphics Editor para insertar todo tipo de gráficos, desde OBJ, Paletas, Tilesets (imágenes) y Mapas (raws).

¿Qué le he explicado a hacanoca?

Que inserte la paleta con los 48 colores comprimida en LZ77 y que asigne el color de la paleta 0x4 a la imagen de estrada al armar el mapa de dicha imagen de entrada.
 

Dionen

El Emperador Pálido
Finalmente yo no dije que la insertara con NSE 2.0, ni mucho menos APE, con el que por cierto no se puede insertar más de 16 colores en una misma paleta comprimida. Yo le expliqué a hacanoca como hacerlo y él hizo el tutorial a su manera y con las herramientas que él suele trabajar. Yo utilizo GBA Graphics Editor para insertar todo tipo de gráficos, desde OBJ, Paletas, Tilesets (imágenes) y Mapas (raws).

¿Qué le he explicado a hacanoca?

Que inserte la paleta con los 48 colores comprimida en LZ77 y que asigne el color de la paleta 0x4 a la imagen de estrada al armar el mapa de dicha imagen de entrada.
ye ye i just wanted to share that i used to do something similar to what he was doing here. and I just said "compumax said" because i was referring to the tutorial you recommended. "linked" would have been a better choice of word.

also

Que inserte la paleta con los 48 colores comprimida en LZ77
nse 2.0 does this automaically, even if you give it a paleta with more than 16 colors. thats why he uses it in the tutorial.
 
Arriba