Jaizu
Usuario mítico
ESTE TUTORIAL ESTÁ DESACTUALIZADO, SEGUID EL COMENTARIO DE XIROS: ENLACE AQUÍ
¿No ves nada raro en esa imagen? Deja que abra Porymap y te enseñe un poco...
¿Ahora más claro no? Todos sabemos que a la hora de montar nuestro popio tileset solo tenemos dos capas de tiles por bloque. Hace mucho, una user llamada Sierra (antes conocida como diegoisawesome) hizo este maravilloso hack para binario. Obviamente, ahora que estamos en decomp, no nos vamos a quedar por detrás de binario, eso sería muy rústico para mi gusto.Implementar esto es bastante sencillo, solo tenemos que ir al archivo src/field_camera.c y buscamos:
Código:
static void DrawMetatile(s32 metatileLayerType, u16 *metatiles, u16 offset)
{
switch (metatileLayerType)
{
case 2: // LAYER_TYPE_
// Draw metatile's bottom layer to the bottom background layer.
gBGTilemapBuffers3[offset] = metatiles[0];
gBGTilemapBuffers3[offset + 1] = metatiles[1];
gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
Código:
case 3: // LAYER_TYPE_TRIPLE
// Draw metatile's bottom layer to the bottom background layer.
gBGTilemapBuffers3[offset] = metatiles[0];
gBGTilemapBuffers3[offset + 1] = metatiles[1];
gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
// Draw metatile's top layer to the middle background layer.
gBGTilemapBuffers1[offset] = metatiles[4];
gBGTilemapBuffers1[offset + 1] = metatiles[5];
gBGTilemapBuffers1[offset + 0x20] = metatiles[6];
gBGTilemapBuffers1[offset + 0x21] = metatiles[7];
// Draw next metatile's top layer to the top background layer
gBGTilemapBuffers2[offset] = metatiles[12];
gBGTilemapBuffers2[offset + 1] = metatiles[13];
gBGTilemapBuffers2[offset + 0x20] = metatiles[14];
gBGTilemapBuffers2[offset + 0x21] = metatiles[15];
break;
Y con eso ya tendríamos el hack en nuestro proyecto, sencillo.
Ahora viene la parte más tediosa o complicada... ¿Cómo lo inserto?
Pues, como dicen por aquí, tienes varias maneras; aunque yo recomiendo la más directa, que es buildear Porymap tu mismo editando el programa para que detecte la triple capa.
No creo que sea viable decirle a todo el mundo que se baje el código fuente de Porymap, lo editen y lo compilen, así que lo he hecho yo.
Descarga de Porymap 4.0 con soporte para bloques triple capa
Ahora que ya tenemos el código en nuestro proyecto y la herramienta adaptada vamos a implemetarlo.
Lo primero que tenemos que hacer es coger un bloque cualquiera con dos capas. Este bloque puede tener el Metatile Behavior que queráis, pero siempre estará por debajo de la tercera capa.
Y donde pone Layer Type, escogemos Triple - Bottom/Middle/Top, tal que así:
Ahora, en el bloque siguiente a ese pondremos la capa que queramos en la segunda parte del bloque, en total nos quedaría tal que así:
Aquí os dejo un ejemplo de cómo quedan en mi tileset dos bloques con triple capa.
Para mapear tenemos que seleccionar el bloque de la izquierda.
Y ale, todo listo, fácil.