tuts_gba
Thread Id: 9191
Thread Name: R | Gráficos | Cómo substituir la intro por una imagen estática (nivel fácil/medio)
#0
Ray Laé Àlfori 0
RUBY_ENG: Cómo substituir la animación de la intro por una imagen estática (nivel fácil/medio)

Antes de empezar

Introducción


Aunque no se hable mucho de ello, ni (por lo visto) se utilice demasiado, existe la posibilidad de substituir, de forma relativamente fácil, la introducción de Ruby por una imagen estática. El procedimiento es casi el mismo que cambiar la pantalla negra del copyright que sale al principio, o la portada del juego, con la diferencia que aquí entra en juego EliteMap. Muy concretamente, una función específica del EliteMap, que debemos agradecer a Kyoufu Kawa.

Antes de explicar nada, responderé a la pregunta que muchos debéis estaros haciendo: ¿qué diablos quiere decir ésta con "imagen estática"? ¿Qué es lo que vamos a conseguir, exactamente, si seguimos este tutorial? Pues algo parecido a esto:

http://www.youtube.com/watch?v=miBGwG8defE

Uso un vídeo de mi hack en desarrollo, "Pokémon: Viajes por Manht", como ejemplo. La novedad, como podéis ver, es que tras la pantalla del copyright aparece una imagen estática (quieta), que se queda parada hasta que el jugador pulsa cualquier botón: entonces, y sólo entonces, aparecerá la portada del juego.

¿Estáis hartos de ver siempre las mismas hojitas, la misma gota que cae, y el mismo esquema de intro? ¿Queréis una imagen estática personalizada para vuestros hacks? Pongámonos manos a la obra, pues.



¿Qué necesitaremos?




Conocimientos previos "recomendados" para poder entender el tutorial



"CONSEJO" IMPERATIVO: haced una copia de seguridad de vuestra ROM cada vez que acabéis uno de los pasos mostrados en este tutorial.



Primer paso: el diseño


Primero debéis diseñar la imagen estática que queréis que aparezca en el hack. El diseño debe tener el tamaño de una pantalla de GBA, es decir, 240x160 píxeles, y puede tener un máximo de 15 colores más el color de fondo. En mi caso, el diseño sería este:



Recordad que la imagen debe ser "divisible" en tiles de 8x8 píxeles para después poder montar bien el tilemap:



Recomiendo hacer un diseño que tenga una cierta repetición de tiles, para reducir el tamaño del tileset que después elaboraremos.



Segundo paso: montar el tileset


Una vez hecho el diseño, debemos desmontarlo en piezas de 8x8 px, eliminando las piezas repetidas, hasta montar nuestro tileset. En mi caso, quedaría algo así:



Por lo tanto, el tileset final podría ser, por ejemplo, este:



Aunque desaprovecha algo de espacio, es importante mantener un cierto "orden" en el tileset, porque si no después será imposible, o exageradamente difícil, volver a montarlo. Recordad también que, cuando montemos el tileset con NTME, podremos hacer "efecto espejo" de forma tanto horizontal, como vertical, de los tiles.

Aunque no hay un límite claro del tamaño que puede tener el tileset que necesitamos (no tiene un límite de 128x128 px, por ejemplo), es recomendable que sea cuanto más pequeño, mejor. Es posible usar directamente el diseño entero como tileset (un tileset de 240x160 px), aunque malgastemos espacio de la ROM, pero un tileset de tal tamaño causa problemas y errores: yo lo intenté al principio, así que lo sé por experiencia.




Tercer paso: indexar el tileset, prepararlo e insertarlo


A continuación, debemos indexar el tileset con sus 16 colores. El primer color de la paleta que le asignemos será el color de fondo, que yo no he usado en el dibujo (en mi caso, sería el azul claro), aunque, a diferencia de lo que ocurre en la mayoría de sprites del juego, con esta imagen sí que podría usarse el color de fondo y se vería correctamente en el emulador.

A continuación, debemos añadir dos líneas de 8 px (es decir, 16 píxels en total) vacías en la parte superior de nuestro tileset. Es recomendable para evitar problemas más tarde, aunque no sé por qué: sin embargo, Kyoufu Kawa lo dice y yo misma he comprobado que es verdad, así que lo haremos:



(de hecho, Kawa recomienda sólo 8 px, pero a mí me fallaba de ese modo, así que mejor poned 16 px, por si acaso)

Hecho esto, buscad dos espacios libres en la ROM mediante FSF (espacios con "FF FF" si usáis editores hexagesimales): aseguraos de que hay una buena cantidad de espacio libre después de cada dirección... para exagerar un poco, unos 6000 bytes, aunque eso depende del tamaño de vuestra imagen.

Hecho esto, abrid el UnLZ-GBA (o el programa que sea que uséis), cargad vuestro tileset indexado, dadle a "write to ROM" (no importa en qúe número estéis) y guardad la imagen en una de las direcciones vacías que habéis encontrado y la paleta, en la otra dirección. MUY IMPORTANTE: no olvidéis guardar en un documento de texto, o donde sea, esas dos direcciones, porque las necesitaremos más tarde.






Cuarto paso: montar el tilemap


Abrid el NTME, cargad vuestro tileset y empezad a montar el tilemap. Dejad la configuración que da NTME por defecto (tamaño de mapa 32x21, modo 4pp, etc.): tan sólo añadid un bloque de altura, de esta manera:



Montad el tilemap, tal y como veis en la imagen de arriba, dejando una línia en blanco en la parte de arriba. La opción de seleccionar más de un tile a la vez os facilitará enormemente el trabajo. Podéis seleccionar más o menos tiles a la vez usando la opción que os he marcado con un círculo verde:



Una vez hayáis terminado de montar el tilemap, guardadlo a través del menú "file->save TileMap" y obtendréis un archivo .raw.




Quinto paso: insertar el tilemap


Buscad otro espacio vacío con FSF (aseguraos de que haya mucho espacio, para evitar sobreescribir nada). Entonces volved a abrir el UnLZ (o regresad a él si no lo habíais cerrado xD) e id al menú "file->load raw". Cargad el archivo .raw que habéis creado con NTME, pulsad "write to ROM" y guardad el raw en la dirección vacía que habéis buscado antes. Sólo debéis importar la imagen, no la paleta:



De nuevo, aseguraos de guardar en un archivo de texto el offset (dirección) donde habéis insertado el raw.




Sexto y último paso: aplicar los parches de EliteMap


Hecho todo esto, la ROM ya tiene insertada la imagen, la paleta y el orden de los tiles. Sólo nos queda hacer dos cosas: suprimir la intro y "decirle" al juego que, en lugar de la intro, muestre nuestra imagen, con su paleta y su raw respectivos.

Esta parte sería muy complicada para los que no somos expertos en "descifrar" los numeritos hexagesimales, si no fuera por dos fantásticos parches que incorpora EliteMap. Cargad vuestra ROM con EliteMap e id al apartado "parches":



Como podéis ver, hay dos parches: un primer parche, llamado "No intro", y un segundo parche, llamado "Insert Credit". A partir de este momento, bastaría con seguir las instrucciones que da Kyoufu Kawa, pero para los que no sepáis inglés, os lo explicaré resumidamente:

1) Id al parche "No Intro" y haced click en "Apply". Si abrís ahora vuestra ROM con el emulador, comprobaréis que la intro ha sido eliminada, y que después del copyright del principio sólo sale una pantalla negra.

2) Aplicad el parche "Give credit". El programa os pedirá, en este orden: la dirección de la paleta, la dirección del tilemap (raw) y la dirección del tileset (imagen). Escrivid las direcciones siempre con un "&H" delante.

Una vez hagáis hecho eso, abrid vuestra ROM y, voilà!, ahí está: vuestra imagen estática =) Basta con pulsar cualquier botón y se pasa automáticamente a la portada.



Possibles problemas:




Si tenéis algún otro problema, posteadlo aquí e intentaré buscarle solución (dentro de mis conocimientos limitados xD). Si hace falta, añadiré vuestro problema a la lista de "possibles problemas" para ayudar a más gente.

¿Qué os parece el tutorial? ¿Se entiende? ¿Habíais hecho esto en vuestros hacks, o no sabíais que podía hacerse? Espero que os resulte útil =) Lo descubrí por casualidad y me fue genial.
#1
Cheve_X 15014
Está Muy bien explicado hasta yo lo entiendo se agradece el aporte, nunca había escuchado de que algo así existiera :heart:

Buena Suerte, Gracias y Salu2 ;)
#2
.Jaizu! 0
Bien parece chulo,posiblemente lo haga
Dew

Mensaje corto pero no más ke decir e.e
#3
Rogy 12282
Yo sabía que se podía hacer, pero pensé que no estaba al alcance de cualquiera.
Ahora que lo pienso, KODER y yo podríamos haber hecho un parche antiventa sin créditos (aparte del que hicimos) con ésta opción, :D

¡Gracias!
#4
isael-21 12392
Muy buen tuto, me servirá de mucho cuando me decida a crear mi hack,

Me gustaría cambiar muchas cosas, incluyendo la intro,

Gracias Rayku! =)
#5
polectron_old 14197
Muchas gracias Ray esto me va a ser de gran ayuda. :)
#6
Sr. kaktus 16532
Se agradece enormemente el post
#7
darkhermit89 16701
muchas gracias por el post es muy util:D
solo que mi elite map no tiene el boton de parches
que version es la que lo tiene??o.O