Registrarse

[pokeemerald] Insertar portadas a 256 colores

Dragonite

But where's your heart
Bueno, este tutorial es breve y sencillo, la idea es que se puedan insertar las portadas que quieran, sin limitación de colores (hasta 256) ni tiles (es decir, puedes insertar la imagen entera y no pasará nada)

Yo por ejemplo voy a insertar esta imagen (es de mi proyecto actual. es privada, así que no se puede usar.)



Lo que debemos hacer primero que nada es con Graphics Gale (por comodidad, ya verán luego) agregar 16 pixeles a la derecha de la imagen que vamos a usar de portada.

Esto se hace yendo a "All Frames -> Enlarge Canvas"

Debe quedar tal que así:


Una vez hecho esto, asegúrense de que el primer color es uno que no usemos (yo personalmente usé el típico verde chillón) y con eso rellenamos el espacio que acabamos de dejar. Lo podemos hacer con la herramienta de bote de pintura.



También deben guardar la paleta y guardarla en la misma carpeta con el nombre pokemon_logo.pal

Cuando terminemos, le pondremos de nombre pokemon_logo.png y lo guardaremos en graphics/title_screen. Cuando nos pregunte si queremos reemplazar el archivo original, le ponemos que sí!

Muy bien, ahora falta el tilemap - antes no había herramientas para modificar o crear tilempas, pero ahora está el Tilemap Studio, que es excelente. De todas formas, no hace falta que lo uses para este tutorial, simplemente descarga este archivo y insértalo en graphics/title_screen reemplazando el original (es decir, si te pregunta si quieres reemplazar dale que sí!)

http://www.mediafire.com/file/8exp8msksb3304h/title_screen2.bin/file

Ahora sólo falta hacer unas pequeñas modificaciones al archivo title_screen.c ubicado en la carpeta /src.

Buscamos una línea que empiece así:

Código:
LZ77UnCompVram(gUnknown_08DE0644...
Y la reemplazamos con la siguiente línea.
(esta modificación mueve la imagen en la RAM para que no colisione con otras)

Código:
LZ77UnCompVram(gUnknown_08DE0644, (void *)(VRAM + 0xA000));
Nos vamos dos líneas más abajo, y comentamos (es decir, ponemos // al principio de la línea) esa línea y las dos subsecuentes. Deberían quedar así:
(comentar esto desactiva el "Pokémon Emerald", las nubes y la portada de Rayquaza)

Código:
        //LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(BG_CHAR_ADDR(2)));
        //LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(BG_SCREEN_ADDR(26)));
        //LZ77UnCompVram(sTitleScreenCloudsGfx, (void *)(BG_CHAR_ADDR(3)));
Buscamos una línea que empiece con esto:

Código:
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0)...
Y la reemplazamos con esto:
(esta línea modifica la ubicación en la RAM también para que no colisione con otras imágenes.)

Código:
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_256COLOR | BGCNT_AFF256x256);
Ahora hay que buscar todas las piezas de código que tengan esto:

Código:
DISPCNT_MODE_1
Y reemplazamos el número 1 por un 0. Al día de la fecha hay 3 piezas de código que tengan esto.

Por último, debemos ir a graphics_file_rules.mk y buscar una línea que tiene el siguiente parámetro:

Código:
-num_colors 224
Y reemplazaremos el 224 por 256, tal que así:

Código:
-num_colors 256
¡Y YA ESTÁ! Ahora toca disfrutar nuestra bella portada.

Así debería quedar:



PD: Si necesitas cambiar la portada una segunda vez, sólo necesitarás cambiar la imagen y la paleta. El tilemap será siempre el mismo y las modificaciones sólo las necesitas aplicar una vez.

Gracias a Diegoisawesome por ayudarme con varias cosas: sin él esto no sería posible.

¡Hasta otra!

PD: Si por alguna cuestión ves que los gráficos no cambian cuando los sobreescribes, prueba borrando pokemon_logo.gbapal, pokemon_logo.8bpp y pokemon_logo.8bpp.lz.
 
Última edición:

EuroFer

El Tio Del helix
Miembro del equipo
Moderador/a
Muchas gracias señor Dafting, gracias a tu gran tutorial he conseguido poner la portada, ¡espero ver más tutoriales así!

un saludo! 👌🤟🕷
 

Hoennwalker

Usuario de platino
Hola! Necesito un poco de ayudita. Sigo el tuto al pie de la letra y no dejan de salir en la pantalla "emerald version" y en el caso de la paleta supongo que tengo el problema del color transparente... pero al ponerlo el primero tampoco está resuelto.
 

Hoennwalker

Usuario de platino
Si te refieres a romhacking, tienes un tutorial para poner la title screen en 240 colores. En decompilación esto no sería pokeemerald, sería pokefirered.
 

Felipe

Profesional de WaH
Hola! Necesito un poco de ayudita. Sigo el tuto al pie de la letra y no dejan de salir en la pantalla "emerald version" y en el caso de la paleta supongo que tengo el problema del color transparente... pero al ponerlo el primero tampoco está resuelto.
Podrias probrar editando la imagen de emerald version y dejando solo la imagen con el color transparente
-----------------
El tutorial me a servido un monton, es simple de seguir y cumple lo que promete, gracias.
 

Dark_Tyranitar

Desarrollador Web
Hola! Necesito un poco de ayudita. Sigo el tuto al pie de la letra y no dejan de salir en la pantalla "emerald version" y en el caso de la paleta supongo que tengo el problema del color transparente... pero al ponerlo el primero tampoco está resuelto.
al final como lo arreglaste? estoy con el mismo problema, el de que aprece emerald version probare dejando transparente la imagen, pero tengo el mismo problema dejándolo primero uwu
 

Kaktus

Miembro insignia
Miembro insignia
al final como lo arreglaste? estoy con el mismo problema, el de que aprece emerald version probare dejando transparente la imagen, pero tengo el mismo problema dejándolo primero uwu
Para eso tienes que comentar la línea que carga los sprites de "Emerald Version", y arreglar todo código que dependa de ese gráfico.
 

Kaktus

Miembro insignia
Miembro insignia
Yo preguntaba si servia para otras rom que no fuera de pokemon
No, este tutorial está enfocado a el código fuente de Pokémon Esmeralda, y no hay prácticamente juegos de GBA cuyo código fuente sea público o decompilado, así que no, este tutorial no te sirve para eso.
 

Nexxo

Ahora genero otro tipo de impacto🦢🍂
Holas, vengo a "actualizar" un poquito el tutorial(?
Bueno, tampoco son cambios del otro mundo, pero para los que recién empiezan en esto, puede venirles bien.

el archivo "title_screen2.bin" fue cambiado por "pokemon_logo.bin"

"gUnknown_08DE0644" fue cambiado por "gTitleScreenPokemonLogoTilemap"
el cambio sera el mismo; "LZ77UnCompVram(gTitleScreenPokemonLogoTilemap, (void *)(VRAM + 0xA000));"

luego haremos un nuevo cambio, o, al menos yo tuve que cambiar esto
remplace:
(pueden probar si sin este cambio les funciona bien)
"LoadPalette(gTitleScreenBgPalettes, BG_PLTT_ID(0), 15 * PLTT_SIZE_4BPP);"
por:
"LoadPalette(gTitleScreenBgPalettes, 0, 0x1E0);"

Obviamente el resto del tuto es exactamente igual
 
Arriba