Registrarse

[Investigación] - Cambiando la Pokédex [No completada] - [Fire Red]

HelyGP

¡Soy Scripter intermedio en GBA!
Hola chicos, chicas, chiquitos, chicotas :3, xD, bueno esto lo abro para, que me ayuden a investigar, como cambiar la Pokédex, en gráficos y demás en el Rom Hacking, así que bueno, mi pequeño grano de arena, fue que encontré todas las paletas, y esto fue lo que logré, claro esto lo hice así de feo, solo por ser muestra X'D:



Bueno chicos, aquí dejo las paletas, en realidad no tengo la menor idea del funcionamiento de cada una pero aquí están, ayúdenme con está investigación, y así, lograr algo mejor para vuestros hacks, bueno aquí os dejo esto:

Paletas Pokédex

4406E0 en APE, en esta se pueden cambiar, u encontrar la mayoria de los colores de la Pokédex.

F28060 en APE, con Paleta Comprimida (LZ77) esta ni la menor idea.

EBFA8C en APE, con Paleta Comprimida (LZ77) esta ni la menor idea.

440780 en APE esta ni la menor idea, pero creo que es para las flechas, u iconos de la Pokédex.

4407A0 en APE igual que la anterior

4407C0 en APE Ni la menor idea.

4407E0 en APE Ni la menor idea.

8167F4 en APE, con Paleta Comprimida (LZ77) nada se de esta, pero si es de algo de la Pokédex, ya que la encontré en ella.

816C40 en APE, con Paleta Comprimida (LZ77) ni la menor idea.

4408C0 en APE, Paleta de colores de los orifcios de arriba y abajo de la Dex (El ultimo color de la paleta).

Flechas de la Pokédex 463328 en NLZ.

Y bueno, espero podamos crear una buena investigación, les dejo esto aquí, por si lo quieren, y por si me pueden ayudar, cualquier cosa que sea interesante la comentan xD, ¡Chau!

Por cierto, lo que mostré en la imagen de arriba, en el anterior comentario, no lo veo necesario, ya que con los que trabajamos en la investigación:
Kakarotto
VerserkDark
VentZX
Fénicz
ACE10
Scalior72
GoSuTo

hemos estado de acuerdo, con que eso, no suena bien, ya que elimina la mayoria de opciones de la Pokédex, y solo deja dos, y lo que intentamos es mejorar, no empeorar las cosas, y bueno ahora lo nuevo, y a lo que vine:

Los cambios hechos en la imagen de arriba (No recomendados)
------ ---- ID 00000000-00000004 5
451F55 12 No 00000005-0000001B 17
452010 1 No 0000001C-00000021 6
4520C8 1 No 00000022-00000027 6
------ ---- EOF 00000028-0000002A 3

y otra cosa, creo que con lo que llevamos, ya podemos decir que la investigación, está a un 50% con estas cosas:

No pondremos todo lo encontrado, pero igual daremos luz de vida:

no será públicado ni editado de nuevo hasta encontrar completar la investigación

unk_8440124.bin unk_8440274.png unk_84403AC.png unk_84404C8.pal unk_84406E0.pal unk_84408E0.bin unk_8440BD8.bin unk_8440EF0.bin unk_844112C.bin unk_84414BC.bin unk_8441808.bin unk_8441A40.bin unk_8441D54.bin unk_8442004.bin unk_844223C.bin unk_84424E4.bin unk_8442838.bin unk_8442BC0.bin unk_8442EF8.bin unk_844318C.bin unk_8443420.pal unk_8443440.pal unk_8443460.pal unk_8443480.pal unk_84434A0.pal unk_84434C0.pal unk_84434E0.pal unk_8443500.pal unk_8443520.pal unk_8443540.pal unk_8443560.pal unk_8443580.pal unk_84435A0.pal unk_84435C0.pal unk_84435E0.pal unk_8443600.png unk_8443620.bin unk_8443910.bin unk_8443988.bin unk_84439FC.bin unk_8443A78.bin unk_8443AF8.bin unk_8443BB0.bin unk_8443C54.bin unk_8443D00.png unk_845228C.bin unk_8452368.pal

Esto lo encontramos revisando el decomp, nada raro la verdad

1024C0:
push lr, {}
bl <007320>
bl <007610>
bl <070474>
pop {r0}
bx r0
1024D4:
push lr, {}
ldr r0, [pc, <102500>]
ldrb r1, [r0, #7]
mov r0, #128
and r0, r1
cmp r0, #0
beq <1024EC>
bl <001960>
lsl r0, r0, #24
cmp r0, #0
beq <102504>
1024EC:
bl <077578>
bl <002DE8>
bl <006B5C>
bl <006BA8>
b <102508>
102500:
.word 02037AB8
102504:
bl <0704D0>
esta es una rutina
y aqui esta la otra
10287C:
push lr, {r4-r5}
sub sp, #2
lsl r0, r0, #24
lsr r5, r0, #24
ldr r1, [pc, <10289C>]
ldr r0, [r1, #0]
ldrb r0, [r0, #1]
mov r4, r1
cmp r0, #9
bls <102892>
b <102C18>
102892:
lsl r0, r0, #2
ldr r1, [pc, <1028A0>]
add r0, r0, r1
ldr r0, [r0, #0]
mov r15, r0
10289C:
.word 0203ACF0

Esto es en C y ASM

al igual que esto:

10287C
void sub_810287C(u8 taskId);
void sub_8102C28(void);
void sub_8102F80(u8 taskId);
void sub_810317C(void);
void sub_8103238(u8 taskId);
void sub_810345C(void);
u16 sub_8103518(u8 a0);
void sub_8103924(const struct ListMenuTemplate * a0, u8 a1);
u8 sub_81039F0(void);
void sub_8103988(u8 a0);
void sub_8103AC8(u8 taskId);
u8 sub_8104234(void);
int sub_8104284(void);
void sub_81042EC(u8 taskId);
bool32 sub_8104664(u8 a0);
void sub_81047B0(u8 *windowId_p);
void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx);
void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y);
u16 sub_8104BBC(u8 caseId, bool8 whichDex);
void sub_8104C2C(const u8 *src);
void sub_8104E90(void);
bool8 sub_8104F0C(bool8 a0);
void sub_8105058(u8 a0);
void sub_8105178(u8 a0, u8 a1, u8 a2);
bool8 sub_81052D0(u8 a0);
void sub_8105594(u8 a0, u8 a1);
void sub_8105E1C(u8 a0);
void sub_8106014(void);
void sub_810603C(void);
bool8 sub_8106838(u8 category, u8 a1);
u8 sub_81068A0(u8 a0);
void sub_810699C(u8 category);
bool8 sub_8106A20(u16 a0);
void sub_81067C0(void);
void sub_81068DC(u8 category, u8 a1);
u8 sub_8106AF8(u16 a0);
void sub_8106B34(void);
void sub_8106E78(const u8 *a0, s32 a1);
1047C8

es lo mismo xD
en decomp
estamos checando
esas 2 rutinas son la regional y nacional
las cuales se conectan
s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID)
{
return sub_8104AB0(nationalDexNo, caseID, 0);
La rutina manda a la modificada
---------------------------------------------------------------------------------------------------
y aqui esta la otra
10287C:
push lr, {r4-r5}
sub sp, #2
lsl r0, r0, #24
lsr r5, r0, #24
ldr r1, [pc, <10289C>]
ldr r0, [r1, #0]
ldrb r0, [r0, #1]
mov r4, r1
cmp r0, #9
bls <102892>
b <102C18>
102892:
lsl r0, r0, #2
ldr r1, [pc, <1028A0>]
add r0, r0, r1
ldr r0, [r0, #0]
mov r15, r0
10289C:
.word 0203ACF0
-------------------------------
en la pokedex existen como capas chicos
cada cosas de ella se dividen
y tiene varias rutinas conectas
1024C0:
push lr, {}
bl <007320>
bl <007610>
bl <070474>
pop {r0}
bx r0
1024D4:
push lr, {}
ldr r0, [pc, <102500>]
ldrb r1, [r0, #7]
mov r0, #128
and r0, r1
cmp r0, #0
beq <1024EC>
bl <001960>
lsl r0, r0, #24
cmp r0, #0
beq <102504>
1024EC:
bl <077578>
bl <002DE8>
bl <006B5C>
bl <006BA8>
b <102508>
102500:
.word 02037AB8
102504:
bl <0704D0>
------------

@ACE10
@Fénicz
@Max_Multi
@ZirusD
@Jolt Steven
@HelyGP

PD: Esto fue gracias, a que mi amigo @ACE10 me motivó, y le doy muchos agradecimientos a el.

PD2: cosa que olvidé mencionar, fue que la ultima paleta, solo cambia el menú cuando ya tienes activada la Pokédex nacional, pero de lo contrario, anda todo bien, y con la Pokédex Regional se cambia el color de arriba de la barra, con uno de los colores de la primera paleta, espero no ser de molestias, aunque mayormente se usa la Pokédex Nacional, así que bueno, es todo.​
 
Última edición:

Versekr Dark

Usuario de Platino
Ojala si acabes la investigación.

Te deseo suerte.

Me gusta! seria bueno saber como cambiar las gráficas y no solo las paletas. Buen aporte!
Con el mismo Logging salen los datos de la imagen y raw, pero todavía no entiendo muy bien el comportamiento de estos, supongo que funcionana como el parche de naming screen que son dos en un solo raw.
 

Jaizu

Decomp user
Si compilas fire red te sale un archivo .map, ahí te da todos los offsets de imágenes y paletas y demás relacionadas a la Pokédex. Si no entiendes algo de cómo funciona siempre puedes mirar el código fuente de fire red.
Creo que aunque no uses decomp deberíais dejar de vivir debajo de las piedras y sacarle la ventaja que ofrece, es estúpido buscar direcciones de paletas con APE cuando un archivo generado al compilar fire red limpio te da todos los offsets de todo.
 

ACE10

Usuario de Bronce
Ojala si acabes la investigación.

Te deseo suerte.



Con el mismo Logging salen los datos de la imagen y raw, pero todavía no entiendo muy bien el comportamiento de estos, supongo que funcionana como el parche de naming screen que son dos en un solo raw.
Ya encontre todos los gráficos de los habitad de cada Pokémon y algunas paletas
pokedex cave.PNGclose pokedex.PNGforrest pokemon.PNGgrassland pokemon.PNGurban pokemon.PNG
y asi seguimos hasta completarlos todos...
También encontramos la de mapa dentro pokedex.PNG el pequeño mapas dentro de la pokedex y de cada linea dentro de este mapa ya que se dividen en los gráficos
 

ACE10

Usuario de Bronce
Si compilas fire red te sale un archivo .map, ahí te da todos los offsets de imágenes y paletas y demás relacionadas a la Pokédex. Si no entiendes algo de cómo funciona siempre puedes mirar el código fuente de fire red.
Creo que aunque no uses decomp deberíais dejar de vivir debajo de las piedras y sacarle la ventaja que ofrece, es estúpido buscar direcciones de paletas con APE cuando un archivo generado al compilar fire red limpio te da todos los offsets de todo.
checamos pokefirere( decomp) y encontramos muchas cosas que nos ayudaran en la investigación además de otras que haremos
 

HelyGP

¡Soy Scripter intermedio en GBA!
Bueno, hoy actualizo, con lo mismo que dijo @ACE10 arriba, aunque encontré algunas cosas más, como el fondo de la Pokédex, Nacional y Regional, y bueno estas son las direcciones nuevas que encontré:

440274 Offset del gráfico de el Fondo de la Pokédex Regional

4403AC Offset del gráfico de el Fondo de la Pokédex Nacional

44223C Offset del gráfico de los números, en el redondo

440124 Offset del gráfico donde aparece el nombre del Pokémon, cuando seleccionas la Pokédex por tipos.

443620 Offset del gráfico del mapa de la Pokédex, pertenece a la paleta 4406E0.

Agradezco todo el apoyo que me están dando desde Discord, @VentZX y @ACE10 XD, pronto tendremos más datos, ya que encontramos como cambiar el orden de las imagenes de la Pokédex, pero andamos buscando más valores en HxD para poder sacar mayor resultado, a esto me refiero:

 

HelyGP

¡Soy Scripter intermedio en GBA!
Por cierto, lo que mostré en la imagen de arriba, en el anterior comentario, no lo veo necesario, ya que con los que trabajamos en la investigación:

Kakarotto
VerserkDark
VentZX
ACE10
Scalior72
GoSuTo
HelyGP (Yo)

hemos estado de acuerdo, con que eso, no suena bien, ya que elimina la mayoria de opciones de la Pokédex, y solo deja dos, y lo que intentamos es mejorar, no empeorar las cosas, y bueno ahora lo nuevo, y a lo que vine:

Los cambios hechos en la imagen de arriba (No recomendados)
------ ---- ID 00000000-00000004 5
451F55 12 No 00000005-0000001B 17
452010 1 No 0000001C-00000021 6
4520C8 1 No 00000022-00000027 6
------ ---- EOF 00000028-0000002A 3

y otra cosa, creo que con lo que llevamos, ya podemos decir que la investigación, está a un 50% con estas cosas:

No pondremos todo lo encontrado, pero igual daremos luz de vida:

no será públicado ni editado de nuevo hasta encontrar completar la investigación

unk_8440124.bin unk_8440274.png unk_84403AC.png unk_84404C8.pal unk_84406E0.pal unk_84408E0.bin unk_8440BD8.bin unk_8440EF0.bin unk_844112C.bin unk_84414BC.bin unk_8441808.bin unk_8441A40.bin unk_8441D54.bin unk_8442004.bin unk_844223C.bin unk_84424E4.bin unk_8442838.bin unk_8442BC0.bin unk_8442EF8.bin unk_844318C.bin unk_8443420.pal unk_8443440.pal unk_8443460.pal unk_8443480.pal unk_84434A0.pal unk_84434C0.pal unk_84434E0.pal unk_8443500.pal unk_8443520.pal unk_8443540.pal unk_8443560.pal unk_8443580.pal unk_84435A0.pal unk_84435C0.pal unk_84435E0.pal unk_8443600.png unk_8443620.bin unk_8443910.bin unk_8443988.bin unk_84439FC.bin unk_8443A78.bin unk_8443AF8.bin unk_8443BB0.bin unk_8443C54.bin unk_8443D00.png unk_845228C.bin unk_8452368.pal

Esto lo encontramos revisando el decomp, nada raro la verdad

1024C0:
push lr, {}
bl <007320>
bl <007610>
bl <070474>
pop {r0}
bx r0
1024D4:
push lr, {}
ldr r0, [pc, <102500>]
ldrb r1, [r0, #7]
mov r0, #128
and r0, r1
cmp r0, #0
beq <1024EC>
bl <001960>
lsl r0, r0, #24
cmp r0, #0
beq <102504>
1024EC:
bl <077578>
bl <002DE8>
bl <006B5C>
bl <006BA8>
b <102508>
102500:
.word 02037AB8
102504:
bl <0704D0>
esta es una rutina
y aqui esta la otra
10287C:
push lr, {r4-r5}
sub sp, #2
lsl r0, r0, #24
lsr r5, r0, #24
ldr r1, [pc, <10289C>]
ldr r0, [r1, #0]
ldrb r0, [r0, #1]
mov r4, r1
cmp r0, #9
bls <102892>
b <102C18>
102892:
lsl r0, r0, #2
ldr r1, [pc, <1028A0>]
add r0, r0, r1
ldr r0, [r0, #0]
mov r15, r0
10289C:
.word 0203ACF0

Esto es en C y ASM

al igual que esto:

10287C
void sub_810287C(u8 taskId);
void sub_8102C28(void);
void sub_8102F80(u8 taskId);
void sub_810317C(void);
void sub_8103238(u8 taskId);
void sub_810345C(void);
u16 sub_8103518(u8 a0);
void sub_8103924(const struct ListMenuTemplate * a0, u8 a1);
u8 sub_81039F0(void);
void sub_8103988(u8 a0);
void sub_8103AC8(u8 taskId);
u8 sub_8104234(void);
int sub_8104284(void);
void sub_81042EC(u8 taskId);
bool32 sub_8104664(u8 a0);
void sub_81047B0(u8 *windowId_p);
void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx);
void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y);
u16 sub_8104BBC(u8 caseId, bool8 whichDex);
void sub_8104C2C(const u8 *src);
void sub_8104E90(void);
bool8 sub_8104F0C(bool8 a0);
void sub_8105058(u8 a0);
void sub_8105178(u8 a0, u8 a1, u8 a2);
bool8 sub_81052D0(u8 a0);
void sub_8105594(u8 a0, u8 a1);
void sub_8105E1C(u8 a0);
void sub_8106014(void);
void sub_810603C(void);
bool8 sub_8106838(u8 category, u8 a1);
u8 sub_81068A0(u8 a0);
void sub_810699C(u8 category);
bool8 sub_8106A20(u16 a0);
void sub_81067C0(void);
void sub_81068DC(u8 category, u8 a1);
u8 sub_8106AF8(u16 a0);
void sub_8106B34(void);
void sub_8106E78(const u8 *a0, s32 a1);
1047C8

es lo mismo xD
en decomp
estamos checando
esas 2 rutinas son la regional y nacional
las cuales se conectan
s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID)
{
return sub_8104AB0(nationalDexNo, caseID, 0);
La rutina manda a la modificada
---------------------------------------------------------------------------------------------------
y aqui esta la otra
10287C:
push lr, {r4-r5}
sub sp, #2
lsl r0, r0, #24
lsr r5, r0, #24
ldr r1, [pc, <10289C>]
ldr r0, [r1, #0]
ldrb r0, [r0, #1]
mov r4, r1
cmp r0, #9
bls <102892>
b <102C18>
102892:
lsl r0, r0, #2
ldr r1, [pc, <1028A0>]
add r0, r0, r1
ldr r0, [r0, #0]
mov r15, r0
10289C:
.word 0203ACF0
-------------------------------
en la pokedex existen como capas chicos
cada cosas de ella se dividen
y tiene varias rutinas conectas
1024C0:
push lr, {}
bl <007320>
bl <007610>
bl <070474>
pop {r0}
bx r0
1024D4:
push lr, {}
ldr r0, [pc, <102500>]
ldrb r1, [r0, #7]
mov r0, #128
and r0, r1
cmp r0, #0
beq <1024EC>
bl <001960>
lsl r0, r0, #24
cmp r0, #0
beq <102504>
1024EC:
bl <077578>
bl <002DE8>
bl <006B5C>
bl <006BA8>
b <102508>
102500:
.word 02037AB8
102504:
bl <0704D0>
 
Última edición:

HelyGP

¡Soy Scripter intermedio en GBA!
en estas pocas ultimas horas, hemos conseguido la forma, de mover la primera pagina de la Pokédex a gusto, y esto es lo que traigo:



Y cada vez que hagamos algo nuevo, seguiremos actualizando.
 

HelyGP

¡Soy Scripter intermedio en GBA!
LoL, 3 actualizaciones el mismo día xD, y bueno que más traigo, encontramos los offset de como están acomodados los datos en la Pokédex, que se supone que son en HxD, y esto lo hicimos:


Luego modificamos lo de los datos del Pokémon, y la lista, logramos trasladar al Pokémon a la lista xD:


claro confirmo que, no está ordenado esto todavía

lo movimos por varios lugares, y le sacamos otro orden a esto:


Ya llevamos mucho en tan solo 2 días, así que esperen un poco más, esto será pronto, cuando lo logremos, subiré un tutorial, y para los nuevos, o los que lo quieran más fácil, les hago un parche xD, pero bueno donde queda todo esto, pues en este post, seguiré investigando con mis compañeros, y lograremos hacer una Pokédex completamente personalizable, y así cualquiera tener una buena Pokédex en su hack, con esto me despido.
 

HelyGP

¡Soy Scripter intermedio en GBA!
ahora, después de tanto tiempo, sin dar más datos de la investigación, llevamos muchos, que todavia no ponemos, hasta no lograr, algo estable con ello, pero ya el fondo y estilo de la Pokédex, es 100% cambiable, solo debes cambiar el fondo de la Pokédex, y no tiene raw, así que para cambiar su forma, y orden, debemos, cambiarla directamente en HxD, pero no tenemos algo estable, de como eso funciona, pero sabemos que todo se puede cambiar de esa manera, y así dejé el fondo yo:



cambiando paletas y el fondo, logré eso, ya sabemos como mover la lista, pero no es estable, del todo, así que seguimos provando, y eso es todo, lo de este mensaje, espero que esperen más...
 

LordBugrhak

Profesional de WaH
La idea es buena, pero la ejecución es mala.
Para que la investigación sea más entendible, os sugiero que vayais posteando también los offsets de aquello que vais modigicando, y especificad que hace cada cosa y en qué falla. De esa manera, más personas podemos contribuir a la investigación partiendo de lo que vosotros ya tenéis.
 
Arriba