Mode2 escribió:Se agradecería que fueses poniendo información técnica respecto a lo que vayas haciendo, por ejemplo, muy interesado en lo de pillar los gráficos originales y adaptarlos al formato de Gameboy. También en las tareas de programación..
La codificación de los gráficos de máquinas en la ROM se puede ver en el código fuente de MAME buscando el fichero .c de la maquina en el directorio mame/drivers. Para el GnG el fichero es gng.c. Voy a comentar los gráficos de fondo:
Código: Seleccionar todo
static const gfx_layout tilelayout =
{
16,16,
RGN_FRAC(1,3),
3,
{ RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
{ 0, 1, 2, 3, 4, 5, 6, 7,
16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
32*8
};
Esto dice que los bloques son de 16x16 puntos, con 3 bits por punto y que cada bit está en un archivo distinto. La macro RGN_FRAC no sé bien cómo está definida, pero es con la que se da la información de los bits por punto o
planos como se le llama en el argot. Luego hay un vector que dice para cada pixel en horizontal, la posición en bits del mismo. Es decir, que los píxeles 0 al 7 están en un mismo byte y que los píxeles 8 al 15 están en otro byte pero 16 bytes después del primero. El siguiente vector es la posición de cada línea horizontal también en bits. Como va una línea por byte hay *8 en cada sitio. El 32*8 final es el número de bloques en el archivo de la ROM. Es decir, que los bloques son de 16x16 pero están almacenados como si fueran de 8x16. Se encuentran distribuidos en tres ROMs diferentes y cada una contiene un bit del mismo píxel.
Más abajo podéis ver la descripción de qué ficheros tienen los gráficos:
Código: Seleccionar todo
ROM_REGION( 0x18000, "gfx2", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/
ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/
ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/
En otro hilo he puesto un PDF que explica esto para otros tres juegos sin recurrir al MAME.