Especificación del formato FGC (Fenix Graphics Collection)

Un fichero FGC contiene un conjunto de gráficos FBM, cada uno de ellos
identificado por un índice entre 0 y 999. El máximo de gráficos FBM
soportado dentro de un FGC es por lo tanto de 1000.

Esta sección describe el contenido de un fichero FGC. No es necesario conocer
estos detalles simplemente para programar juegos, pero serán de utilidad a
quien quiera realizar utilidades en lenguajes externos que lean o escriban
ficheros FGC.

Un fichero FGC no incluye compresión. Fenix soporta de forma transparente el
uso de compresión GZIP en los ficheros, sin necesidad de marcarlos
especialmente con extensión .gz. Normalmente un fichero FGC se guarda en disco
comprimido de esta manera, pero en el resto del fichero asumiremos que el
fichero FGC no está comprimido.

En la descripción siguiente, DWORD identifica un número entero de 4 bytes sin
signo mientras INT indica entero de 4 bytes con signo. Estos valores se guardan
siguiendo la codificación Intel de bytes en memoria, así que hay que darles
la vuelta al leer o escribir el fichero en otras plataformas.

Cabecera

Un fichero FGC comienza con la siguiente cabecera:
 ____________________________________________________________________________
|Nombre_____|Tamaño________|Descripción______________________________________|
|           |              |Cadena de caracteres de identificación del       |
|           |              |fichero. Debe contener exactamente "FenixLibrary"|
|           |              |y, a continuación, los cuatro bytes 1Ah, 0Dh, 0Ah|
|MAGIC      |16 bytes      |y 00h. Esta terminación indica, en un fichero MS-|
|           |              |DOS, final de fichero. Gracias a ella un comando |
|           |              |TYPE en MS-DOS no mostraría los datos binarios   |
|           |              |del fichero. En este formato se conserva por     |
|___________|______________|razones_puramente_nostálgicas.___________________|
|           |              |Código de versión. Se compone de un número       |
|           |              |mayor de 16 bits y un número menor de 16 bits.   |
|           |              |Actualmente es 0x0100. Si el formato se          |
|VERSION    |DWORD         |modificase en el futuro pero de manera que los   |
|           |              |ficheros fuesen compatibles con el formato       |
|           |              |actual, se incrementaría el número menor. Las    |
|           |              |rutinas de carga deben rechazar un fichero FGC   |
|___________|______________|sólo_si_el_número_mayor_no_es_01.________________|
|           |              |Cadena ASCIIZ con el nombre de la librería       |
|NOMBRE     |64 bytes      |(opcional). El nombre puede ocupar exactamente 64|
|           |              |caracteres, con lo que sólo en ese caso no se    |
|___________|______________|guardará_el_0_terminal.__________________________|
|           |              |Bits por pixel de las imágenes. Actualmente sólo |
|PROFUNDIDAD|DWORD         |son válidos 1, 8 ó 16. Todas las imágenes        |
|           |              |dentro del mismo fichero FGC deben, forzadamente,|
|___________|______________|ser_del_mismo_número_de_colores._________________|
|TOTAL      |DWORD         |Número de gráficos que contiene este fichero     |
|___________|______________|FGC._____________________________________________|
|           |              |Offset de la paleta dentro del fichero, si se    |
|PALETA     |DWORD         |encuentra. Sólo un fichero FGC de 8 bits contiene|
|___________|______________|una_paleta_de_colores.___________________________|
|           |              |Offsets en el fichero de cada uno de los gráficos|
|           |              |que aparecen dentro del FGC. Hay tantos valores  |
|           |              |tipo DWORD como gráficos haya en el FGC. Las     |
|           |              |siguientes condiciones deben cumplirse:          |
|           |              |    * Todos estos offsets deben ser mayores que  |
|           |              |      el de la paleta de colores, si ésta está   |
|           |              |      presente.                                  |
|OFFSETS    |"TOTAL" DWORDS|    * El offset de un gráfico debe ser siempre   |
|           |              |      mayor que el offset del gráfico            |
|           |              |      inmediatamente anterior en esta tabla      |
|           |              |Los offsets permiten a las rutinas de lectura    |
|           |              |"saltarse" secciones adicionales de información  |
|           |              |que no pueden interpretar, entre gráfico y       |
|           |              |gráfico. Esto abre las puertas a futuras         |
|           |              |expansiones del formato sin perder compatibilidad|
|___________|______________|hacia_atrás._____________________________________|

Paleta de colores

A continuación, si el FGC es de 8 bits (tal como indica la cabecera del
fichero) y sólo en ese caso, habrán 768 bytes con la paleta de colores. Cada
color ocupa tres bytes en orden RGB (rojo, verde y azul) y con un rango para
cada componente de color de 0 a 255.

Datos de cada gráfico

Cada gráfico dentro del fichero FGC se guarda en formato FBM , a partir del
offset indicado en la cabecera. Sin embargo, el formato FBM utilizado tiene dos
variantes respecto al formato FBM estándar descrito aquí:

    * No contiene cabecera. El gráfico empieza directamente con el descriptor
      FBM justo en el offset indicado en la cabecera del FGC. La profundidad de
      color se recoge también de la cabecera del FGC, ya que no está presente
      en dicho descriptor.

    * No contiene paleta de colores, incluso aunque sea un gráfico de 8 bits.
      Todos los gráficos dentro del FGC comparten la misma paleta de colores,
      guardada en el FGC justo antes que los datos de los gráficos.

NOTAS

Esta es una versión temporal de este formato de fichero. Los gráficos con
profundidad de color de 24 bits se soportarán próximamente en los ficheros
FBM. Esta es una versión temporal de este formato de fichero. Es posible que
en versiones posteriores se soporten paletas indexadas con mayor resolucion de
color con intencion de reducir el tamaño necesario para almacenar gráficos en
formatos de alta densidad de color (16, 24 y 32 bpp) .

Obtenido de http://fenixworld.se32.com/fenixwiki/
Disponible bajo los términos de la GNU Free Documentation License 1.2
