Source: http://devel.archefire.org/docs/programming/graphics/gff2/_/fmt_Atari_ST.html
Timestamp: 2019-02-22 09:30:29+00:00

Document:
﻿ Enciclopedia de Formatos de Archivo Gráficos — Formato de Archivo: Atari ST
NOMBRE: Formatos de archivo gráficos de Atari ST
TAMBIÉN CONOCIDO COMO: .ANI, .ANM, .CE1, .CE2, .CE3, .FLM, .UC1, .UC2, .UC3., NEO, .PAC, .PC1, .PC2, .PC3, PC3, .PI1, .PI2, .PI3, .RGB, .SEQ, .TNY, .TN1, .TN2, .TN3
TIPO: Mapa de bits y animación
COLORES: Típicamente 16
COMPRESIÓN: Ninguno y RLE
TAMAÑO MÁXIMO DE IMAGEN: Típicamente 320x200 pixeles
MÚLTIPLES IMÁGENES POR ARCHIVO: Sí (solo formatos de animación)
FORMATO NUMÉRICO: Big Endian
ORIGINADOR: Varios desarrolladores de Atari ST
APLICACIONES SOPORTADAS: Muchas
MIRA TAMBIÉN: IFF
UTILIZACIÓN: Todos estos formatos son usados por paquetes de dibujo y animación encontrados en el Atari ST.
COMENTARIOS: El Atari ST, con sus capacidades gráficas superiores, era una plataforma natural para el desarrollo de multimedia, tanto que los desarrollos multimedia de hoy en día están basados en estos formatos.
La computadora Atari ST es el hogar de muchos formatos de archivo de imagen escasamente documentados. Muchos de estos formatos son usados específicamente para almacenar imágenes de animación y contenidos (dumps) de imágenes desplegadas en la pantalla. Si bien el formato IFF de Electronic Arts se usa por la mayoría de programas de dibujo y animación del Atari ST, muchos desarrolladores de software han vislumbrado sus propios formatos de propósito especial para llenar sus necesidades.
Organización del Archivo y Detalles
Esta sección contiene una descripción breve de cada uno de los formatos de archivo gráficos del Atari ST; cada formato tiene su propia extensión de archivo.
Formato de Filme Animático (.FLM)
El formato de archivo Animatic Film (extensión de archivo .FLM) almacena una secuencia de imágenes de 16 colores de baja resolución, las cuales se despliegan como una animación. Los archivos en el formato .FLM se almacenan como una cabecera seguida por uno o más cuadros (frames) de datos de imagen. La cabecera tiene 26 bytes de longitud y tiene el siguiente formato:
ypedef struct _AnimaticFilmHeader
WORD NumberOfFrames;      /* Número de cuadros en la animación */
WORD Palette[16];         /* Paleta de color */
WORD FilmSpeed;           /* Velocidad de reproducción */
WORD PlayDirection;       /* Dirección de la reproducción */
WORD EndAction;           /* Acción a tomar después del último cuadro */
WORD FrameWidth;          /* Anchura del cuadro en pixeles */
WORD FrameHeight;         /* Altura del cuadro en pixeles */
WORD MajorVersionNumber;  /* Número de versión mayor animática */
WORD MinorVersionNumber;  /* Número de versión menor animática */
LONG MagicNumber;         /* Número de ID (siempre 27182818h) */
LONG Reserved[3];         /* Sin usar (todos ceros) */
} ANIMATICFILMHEADER;
NumberOfFrames especifica el número total de cuadros en la animación.
Palette es la paleta de color para la animación, almacenada como un arreglo de 16 valores WORD.
FilmSpeed es el número de cuadros de demora (vblank) a desplegar entre cada cuadro de animación. El valor de este campo puede estar en el rango 0 a 99.
PlayDirection es la dirección de la animación reproducida. Los valores para este camposon 00h para adelante y 01h para atrás.
EndAction especifica la acción a tomar cuando se alcanza el último cuadro de la animación durante la reproducción. Un valor de 00h indica que el reproductor debería pausar y luego repetir la animación desde el inicio. Un valor de 01h indica que la animación debería repetirse inmediatamente desde el inicio (ciclo). Un valor de 03h indica que la reproducción debería repetirse en la dirección inversa.
FrameHeight y FrameHeight son el tamaño del cuadro de animación en pixeles.
MajorVersionNumber y MinorVersionNumber contienen el número de versión del software Animatic que creó la animación.
MagicNumber contiene un valor de identificación para archivos Animatic Film. Este valor es siempre 27182818h.
Reserved tiene 12 bytes de espacio reservado para campos de cabecera futuros. Todos los bytes en este campo tienen el valor 00h.
Formato de Datos Crudos ComputerEyes (.CE1 y .CE2)
El ComputerEyes Raw Data Format se encuentra en un formato de baja resolución (extensión de archivo. CE1) y una resolución media (extensíón de archivo .CE2). La cabecera tiene 10 bytes de longitud y tiene el siguiente formato:
typedef struct _ComputerEyesHeader
LONG Id;          /* Valor de identificación (siempre 45594553h) */
WORD Resolution;  /* Resolución de datos de imagen */
BYTE Reserved[8]; /* Datos misceláneos */
} COMPUTEREYESHEAD;
Id es un valor usado para identificar un archivo que contiene datos en formato ComputerEyes. El valor de este campo es siempre 45594553h o "EYES" como una cadena ASCII.
La resolución es la resolución de los datos de imagen almacenados en el archivo. Este valor es 00h para datos de baja resolución y 01 para datos de alta resolución.
Reserved tiene ocho bytes de información adicional, los cuales no se necesitan para decodificar los datos de imagen.
Si el valor del campo Resolution es 00 (baja resolución), entonces los datos de imagen se dividirán en tres planos de 320x220 RGB. Cada plano tiene 64,000 bytes de tamaño y se almacena en orden rojo, verde, azul. Los datos de imagen almacenan un pixel por byte, y solo los seis bits de menor peso de cada byte son usados. Los datos de imagen de baja resolución se almacenan verticalmente, así que los datos de fila se leen a lo largo del eje Y y no a lo largo del eje Y como en la mayoría de los otros formatos.
Si el campo Resolution es 01h (alta resolución), entonces los datos de imagen están almacenados en un único plano de 640x480, el cual tiene siempre 256,000 de tamaño. Los datos de imagen almacenan un pixel por WORD, con el valor rojo almacenado en los bits 0 a 4, el verde en los bits 5 a 9, y el azul en los bits 10 a 14. El bit 15 no se usa. Los datos de imagen de alta resolución también se almacenan a lo largo del eje vertical, en lugar del horizontal, del mapa de bits.
Formato de Secuencia de Cyber Paint (.SEQ)
EL formato de archivo Cyber Paint Sequence (extensión de archivo .SEQ) se usa para almacenar secuencias de imágenes de baja resolución de 16 colores utilizadas en animaciones. Cyber Paint también soporta una forma eficiente de compresión de datos delta-codificada.
typedef struct _CyberPaintHeader
WORD MagicNumber;                   /* Número de identificación */
WORD VersionNumber;                 /* Número de versión */
LONG NumberOfFrames;                /* Número total de cuadros */
WORD DisplayRate;                   /* Velocidad de pantalla */
BYTE Reserved[118];                 /* Sin usar */
LONG FrameOffsets[NumberOfFrames];  /* Arreglo de offsets de cuadro */
} CUVERPAINTHEAD;
MagicNumber es un número de identificación usado para indicar que el archivo contiene datos de Cyber Paint Sequence. Este valor es típicamente FEDBh o FEDCh.
VersionNumber es el número de versión del formato.
NumberOfFrames especifica el número de cuadros de datos almacenados.
DisplayRate es el número de cuadros de demora (vblank) a desplegar entre cada cuadro de animación.
Reserved es un campo de 118 bytes reservado para futuros campos de cabecera. Este campo está configurado a un valor de 00h.
FrameOffsets es un arreglo de offsets LONG con un número de elementos igual al valor almacenado en el campo NumberOfFrames. Cada valor de offset indica la posición inicial de cada cuadro, calculado desde el inicio del archivo.
Cada cuadro contiene una cabecera de información descriptiva en el siguiente formato:
typedef struct _CyberPaintFrame
WORD Type;            /* Tipo de cuadro */
WORD Resolution;      /* Resolución de cuadro */
WORD Palette[16];     /* Paleta de color */
BYTE FileName[12];    /* Nombre del archivo de datos de cuadro */
WORD Limits;          /* Límites de animación de color */
WORD Speed;           /* Velocidad de la animación de color y dirección */
WORD NumberOfSteps;   /* Número de pasos de color */
WORD XOffset;         /* Posición izquierda del cuadro en pantalla */
WORD YOffset;         /* Posición superior del cuadro en pantalla */
WORD FrameWidth;      /* Anchura del cuadro en pixeles */
WORD FrameHeight;     /* Altura del cuadro en pixeles */
BYTE Operation;       /* Operación gráfica */
BYTE Compression;     /* Método de almacenamiento de datos */
LONG DataSize;        /* Longitud de los datos del cuadro en bytes */
BYTE Reserved[60];    /* Sin usar */
} CYBERPAINTFRAME;
Type es un valor de identificación que identifica que la cabecera pertenece a un cuadro.
Resolution es la resolución de los datos del cuadro y usualmente es 00h.
Palette es un arreglo de valores para la paleta de 16 colores para este cuadro.
FileName almacena el nombre del archivo de disco en el cual se almacenan los datos de cuadro. Por defecto la cadena almacenada en este campo es " . " (8.3 espacios en blanco), lo cual indica ningún nombre de archivo.
Limits son los límites de animación de color del cuadro.
Speed especifica la velocidad y dirección de la reproducción.
NumberOfSteps es el número de pasos de color en los datos de imagen.
XOffset es la posición horizontal desde la izquierda del cuadro en la pantalla. Este valor puede estar en el rango de 0 a 319.
YOffset es la posición superior del cuadro en la pantalla. Este valor puede estar en el rango de 0 a 199.
FrameWidth y FrameHeight son el tamaño del cuadro en pixeles.
Operation es la operación gráfica a efectuar en los datos del cuadro. Un valor de 00h indica copia, y un valor de 01h indica un OR exclusivo.
Composition indica si los datos del cuadro están comprimidos (un valor de 01h) o descomprimidos (un valor de 00h).
DataSize es el tamaño actual de los datos (comprimidos o descomprimidos) almacenados en el cuadro.
Reserved es un campo de 60 bytes reservado para futuros campos de cabecera. Todos los bytes en este campo tienen el valor 00h.
Los datos de cuadro almacenados en un archivo de Secuencia siempre son de 320x200 pixeles. Los datos del cuadro se almacenan como cuatro planos de bits, con un pixel almacenado por WORD. Los pixeles siempre se almacenan a lo largo del eje vertical (Y) del mapa de bits. Por lo tanto, los primeros 200 bytes de datos de cuadro son los primeros pixeles del primer plano de bits del cuadro, y así sucesivamente.
Los datos de cuadro pueden estar comprimidos usando un algoritmo de delta-codificación. Usando esta técnica, solo se codifican los cambios entre cuadros. Los datos entre cuadros que no cambian no son guardados.
El prirmer cuadro en una secuancia siempre se almacena en su totalidad. Tienes que comenzar en algún lugar. Cada cuadro subsecuente se compara al cuadro anterior, y solo las coordenadas X y Y de regiones rectangulares de valores de pixeles (llamadas cajas de cambio) que han cambiado son guardadas. Solo se almacena una caja de cambio por cuadro.
Cada caja de cambio puede almacenarse en una de cinco diferentes variaciones, siempre usando la variación que produce la mejor compresión para una caja de cambio particular. Estas variaciones son:
Copia Descomprimida, en donde los datos del cuadro están sin comprimir y simplemente se copian en la pantalla a las coordenadas especificadas en los campos de cabecera XOffset y YOffset.
EOR Descomprimido, en donde a los datos se les aplica OR exclusivo con los datos que ya están en XOffset,YOffset.
Los datos del cuadro se comprimen y deben descomprimirse antes de copiar a la pantalla.
EOR Comprimido, en donde los datos del cuadro deben descomprimirse antes de aplicárseles OR exclusivo con los datos de pantalla.
Cuadro nulo, el cual no contiene datos (la altura y anchura son 00h) y se tratan como el cuadro anterior.
Los datos comprimidos contienen una secuencia de WORDs de control (WORDs de 16 bits coin signo) y datos. Un WORD de control con un valor entre 1 y 32767 indica que el siguiente WORD ha de repetirse un número de veces igual al valor del valor del WORS de control. Un WORD con un valor negativo indica que una corrida de bytes igual al valor absoluto del valor del WORD de control ha de ser leído desde los datos comprimidos.
Formato DEGAS (.PI1, .PI2, .PI3, .PC1, .PC2, .PC3)
El formato de archivo de animación DEGAS realmente aparece en tres variaciones diferentes. Los formatos DEGAS y DEGAS Elite soportan datos gráficos de resolución baja, media y alta (los archivos tienen la extensión .PI1, .PI2 y .PI3 respectivamente). El formato DEGAS Elite Comprimido soporta datos gráficos de resolución baja, media y alta (los archivos tienen la extensión .PC1, .PC2 y .PC3 respectivamente), y también soportan compresión de datos.
El formato DEGAS solo almacena una única imagen de pantalla. La cabecera tiene 34 bytes de tamaño y es seguida por 32,000 bytes de datos de imagen:
typedef struct _DegasHeader
WORD Resolution;      /* Resolución de imagen */
} DEGASHEAD;
Resolution es la resolución de los datos de imagen almacenados como un campo de bits. Los valores válidos son:
02h Izquierda
Palette es un arreglo de 16 valores WORD que contienen la paleta de color de la imagen.
El formato DEGAS Elite contiene los mismos datos de cabecera y estructura de datos de imagen que el formato DEGAS. Difiere del formato DEGAS en que tiene un pie de 32 bytes que contiene información adicional:
typedef struct _DegasEliteFooter
WORD LeftColor[4];    /* Tabla de límite de animación de color horizontal izquierda */
WORD RightColor[4];   /* Tabla de límite de animación de color horizontal derecha */
WORD Direction[4];    /* Bandera de dirección de canal de animación */
WORD Delay[4];        /* Demora de canal de animación */
} DEGASELITEFOOT;
LeftColor almacena la tabla de límite de animación de color izquierda que contiene los números de color iniciales para la animación.
RightColor almacena el límite de animación de color derecha que contiene los números finales de color para la animación.
Direction contiene la dirección de la bandera de dirección del canal de animació. Los valores válidos son:
Delay es la tasa de demora del canal de animación entre cuadros. Este valor está medido en 1/60 de un segundo y se resta de la constante 128 para calcular este valor.
El formato DEGAS Elite Comprimido contiene la misma cabecera y pie que el formato DEGAS Elite, con una variación en los datos de cabecera.
El campo Resolution usa los siguientes valores de bits para indicar la resolución de los datos de imagen:
8002h Baja resolución
El algoritmo de compresión usado es idéntico al esquema RLE encontrado en el Formato de Intercambio de Archivos (IFF); mira el artículo sobre dicho formato para más detalles.
Formato Intermedio RGB (.RGB)
El RGB Intermediate Format (extensión de archivo .RGB) realmente son tres archivo DEGAS .PI1 de baja resolución concatenados en un único archivo. Los datos de pixeles en cada plano contienen un valor de canal de color rojo, verde o azul en cuestión en lugar de un índice dentro de una paleta de 16 colores. En el Atari ST, hay solo tres bits por canal de color. El Atari ST con la paleta de color extendida usa cuatro bits por canal de color.
La estructura de un archivo RGB entero se muestra aquí:
struct _RgbFile
WORD RedResolution;     /* Resolución del plano rojo (ignorado) */
WORD RedPalette[16];    /* Paleta del plano rojo (ignorado) */
WORD RedPlane[16000];   /* Datos del plano rojo */
WORD GreenResolution    /* Resolución del plano verde (ignorado) */
WORD GreenPalette       /* Paleta del plano verde (ignorado) */
WORD GreenPlane[16000]; /* Datos del plano verde */
WORD BlueResolution;    /* Resolución del plano azul (ignorado) */
WORD BluePalette;       /* Paleta del plano azul (ignorado) */
WORD BluePlane[16000];  /* Datos del plano azul */
Formato Imagic Film/Picture Format (.IC1, .IC2, .IC3)
El Formato Imagic almacena datos de imagen de baja, media y alta resolución usando las extensiones de archivo .IC1, .IC2 e .IC3, respectivamente. La cabecera tiene 49 bytes de tamaño y su formato es como se muestra a continuación:
typedef struct _ImagicHeader
BYTE Id[4];             /* Valor de identificación del archivo */
WORD Resolution;        /* Resolución de imagen */
WORD Palette[16];       /* Paleta de color */
WORD Date;              /* Marca de fecha */
WORD Time;              /* Marca de hora */
BYTE Name[8];           /* Nombre de archivo base */
WORD Length;            /* Longitud de datos */
LONG Registration;      /* Número de registro */
BYTE Reserved[8];       /* Sin usar */
BYTE Compression;       /* Bandera de compresión de datos */
} IMAGICHEAD;
Id es el valor de identificación para este formato y contiene los caracteres IMDC.
Resolution especifica la resolución de los datos de imagen. Los valores son:
02h Baja resolución
Palette es un arreglo de 16 elementos que almacenan la paleta de color para esta imagen.
Date y Time contienen una marca de fecha y hora que indica cuándo se creó el archivo. Estas marcas están en formato GEMDOS (el sistema operativo nativo de Atari).
Name es el nombre de archivo base del archivo de imagen.
Length es la longitud de los datos de imagen almacenados en el archivo.
Registration es el número de registro del programa de aplicación Imagic el cual creó el archivo de imagen.
Reserved es un campo de 8 bits que no está usado y está puesto a un valor de 00h.
Compression indica si los datos de la imagen están comprimidos. Un valor de 00h indica que no hay compresión, mientras que un valor de 01h indica que los datos de imagen están comprimidos.
Los datos de imagen pueden estar codificados con run-length (RLE) o delta-comprimidos. La compresión delta resulta en archivos de animación más pequeños que RLE, aunque en imágenes complejas RLE funciona mejor.
Formato NEOchrome (.NEO)
Los archivos de imagen NEOchrome tienen la extensión de archivo .NEO y contienen una cabecera de 79 bytes seguida por 16,000 bytes de datos de imagen. El formato de la cabecera es como se muestra a continuación:
typedef struct _NeochromeHeader
WORD Flag;             /* Byte de bandera (siempre 00h) */
WORD Resolution;       /* Resolución de imagen */
WORD Palette[16];      /* Paleta de color */
CHAR FileName[12];     /* Nombre del archivo de imagen */
WORD Limits;           /* Límites de animación de color */
WORD Speed;            /* Velocidad y dirección de animación de color */
WORD NumberOfSteps;    /* Número de colores en pasos */
WORD XOffset;          /* Offset X de imagen (siempre 00h) */
WORD YOffset;          /* Offset Y de imagen (siempre 00h) */
WORD Width;            /* Anchura de imagen (siempre 320) */
WORD Height;           /* Altura de imagen (siempre 200) */
WORD Reserved[33];     /* Reservado (siempre 00h) */
} NEOCHROMEHEAD;
Flag es una colección de bits de bandera y siempre está puesto a un valor de 00h.
Palette es la paleta de color para esta imagen, almacenada como un arreglo de 16 valores WORD.
FileName es el nombre del archivo de imagen. La cadena por defecto de este campo es " . ".
Limits especifica los límites de animación de color de la imagen. Los bits 0 a 3 especifican el valor del límite superior derecho, y los bits 4 a 7 especifican el valor del límite inferior izquierdo. El bit 15 está a 1 si los datos de animación son válidos.
Speed especifica la velocidad de la animación de color y la dirección. Los bits 0 a 7 especifican la velocidad de la reproducción en número de cuadros en blanco desplegados por cuadro de animación. El bit 15 indica la dirección de la reproducción. Un valor de 0 indica normal y un valor de 1 indica revertida.
NumberOfSteps es el número de cuadros en la animación.
XOffset y YOffset son las coordenadas iniciales de la imagen en la pantalla. Estos valores siempre son 00h.
Width es la anchura de la imagen en pixeles. Este valor siempre es 320.
Height es la altura de la imagen en pixeles. Este valor siempre es 200.
Reserved es un campo de 33 bytes reservado para campos adicionales de cabecera. Todos los bytes en este campo están a 00h.
Formato de Animación NEOchrome (.ANI)
Los archivos NEOchrome tienen la extensión .ANI y contienen una cabecera seguida por una secuencia de uno o más cuadros de datos de animación almacenados en su orden de reproducción. La cabecera tiene 22 bytes y está formateada de la siguiente forma:
typedef struct _NewchromeAniHeader
LONG MagicNumber;      /* Valor de ID (siempre BABEEBEAh) */
WORD Width;            /* Anchura de imagen en bytes */
WORD Height;           /* Altura de imagen en scan lines */
WORD Size;             /* Tamaño de la imagen en bytes + 10 */
WORD XCoord;           /* Coordenada X de la imagen */
WORD YCoord;           /* Coordenada Y de la imagen - 1 */
WORD NumberOfFrames;   /* Número total de cuadros */
WORD Speed;            /* Velocidad de reproducción de la animación */
LONG Reserved;         /* Reservado (siempre 00h) */
} NEWCHROMEANIHEAD;
MagicNumber es el valor de identificación para los archivos de animación de Neochrome. Este valor siempre es BABEEBEAh.
Width es la anchura de la animación en pixeles. Este valor siempre debe ser divisible entre 8.
Height es la altura de los cuadros de animación en pixeles (scan lines).
Size es el tamaño total de un cuadro en bytes, más 10.
XCoord especifica la posición izquierda de la imagen en pixele, menos uno.
YCoord especifica la posición superior de la imagen en pixeles, menos uno.
Speed especifica la velocidad de reproducción de la animación en número de cuadros en blanco desplegados por cuadros de imagen.
Reserved es un campo sin usar, que está a 00h.
Formato STAD (.PAC)
El formato de archivo STAD tiene la extensión de archivo .PAC. Contiene una cabecera seguida por un bloque individual de datos de imagen comprimidos con RLE. La cabecera tiene siete bytes de tamaño y solo contiene información necesaria para descomprimir los datos de imagen. El formato de la cabecera es como se muestra a continuación:
typedef struct _StadHeader
CHAR Packed[4];       /* Orientación de empacado de los datos de imagen */
BYTE IdByte;          /* Valor ID RLE de una corrida 'PackByte' */
BYTE PackByte;        /* El valor de una corrida 'PackByte' */
BYTE SpecialByte;     /* Valor ID RLE de una corrida que no es 'PackByte' */
} STADHEADER;
Packed contiene los caracteres pM86 si los datos de imagen en el archivo están empacados verticalmente, o pM85 si están empacados horizontalmente.
IdByte es un valor usado para indicar una corrida de bytes RLE que usa el valor PackByte.
PackByte es el valor de byte que ocurre más frecuentemente en los datos de imagen.
SpecialByte es un valor usado para indicar una corrida de byte RLE usando un valor almacenado en los datos de imagen.
Los datos de imagen en un archivo STAD siempre están comprimidos usando un algoritmo RLE simple. STAD es un poco único en que permite la opción de empacar los datos de imagen ya sea horizontalmente a lo largo del mapa de bits (con las scan lines), o verticalmente hacia abajo del mapa de bits (a lo largo de los scan lines). La dirección de la codificación se especifica en el campo Packed en la cabecera.
El valor de byte que ocurre más frecuentemente en los datos de imagen se almacena en el campo PackedByte de la cabecera. Esto reduce el tamaño de los datos comprimidos al no requerir que este valor sea almacenado de manera redundante en los datos de imagen en cuestión.
El algoritmo STAD RLE usa tres tipos de paquetes:
El primer tipo de paquete tiene dos bytes de longitud y contiene un valor Id y un valor de cuenta de corrida. Si el ID concuerda con el valor almacenado en el campo IdByte de la cabecera, entonces el valor en la cabecera PackByte se repite "cuenta de corrida + 1" veces. Este paquete solo se usa para codificar corridas de byte del valor almacenado en el campo de cabecera PackByte.
El segundo tipo de paquete tiene tres bytes de longitud y se usa para almacenar una corrida de un valor diferente al del campo PackByte. El primer byte es un ID que concuerda con el campo SpecialByte en la cabecera. El segundo byte es el valor de la corrida, y el tercer byte es el número de bytes en la corrida.
El tercer tipo de paquete es un byte literal individual. Si se lee un byte de ID, y si no concuerda con el valor de IdByte ni de SpecialByte, entonces este byte simplemente se escribe literalmente a la salida.
A continuación está una descripción simple de pseudocódigo del proceso de decodificación de RLE:
Leer un byte
Si el byte es el valor IdByte
Leer un byte (el RunCount, o cuenta de corrida)
Repetir el valor de PackByte RunCount + 1 veces; sino
Si el byte es el valor SpecialByte
Leer un byte (el RunValue, o valor de corrida)
Repetir el RunValue RunCount veces
Usar el valor del byte literalmente.
Formato Minúsculo (.TNY, .TN1, .TN2, .TN3)
El formato Tiny es similar a los formatos NEOchrome. Los archivos Tiny pueden contener datos de imagen de resolución baja (.TN1), media (.TN2) o alta (.TN3).
Los archivos Tiny pueden tener uno de dos formatos de cabecera diferentes. El más común tiene 37 bytes de tamaño y tiene el siguiente formato:
typedef struct _TinyHeader
BYTE Resolution;        /* Resolución de los datos de imagen */
WORD ControlBytes;      /* Número de bytes de control */
WORD DataWords;         /* Número de palabras de datos */
} TINYHEAD;
La resolución especifica la resolución de los datos de imagen. Los valores son:
Palette es la paleta de 16 colores de los datos de imagen.
ControlBytes es el número de bytes de control encontrados en los datos de imagen. Este valor está en el rango de 3 a 10,667.
DataWords es el número de WORDs de datos de imagen almacenados en el archivo. Este valor está en el rango de 1 a 16,000.
Si el valor del campo Resolution es 03h o superior, la cabecera Tiny tiene el siguiente formato:
BYTE Resolution;        /* Resolución de datos de imagen */
BYTE Limits;            /* Límites de animación de colores */
BYTE Speed;             /* Velocidad y dirección de reproducción */
WORD Duration;          /* Duración de rotación de color */
WORD DataWords;         /* Números de palabras de datos */
Limits especifica los límites de animación de color de izquierda y derecha. Los bits 0 a 3 almacenan el valor de límite derecho (final), y los bits 4 a 7 almacenan el valor de límite izquierdo (inicio).
Speed especifica la velocidad y dirección de la reproducción de la animación. Un valor negativo indica reproducción a la izquierda, y un valor positivo indica reproducción a la derecha. El valor absoluto es la velocidad (demora entre cuadros) en incrementos de 1/60 de un segundo.
Duration especifica la duración de rotación del color (número de iteraciones).
ControlBytes especifica el tamaño de un arreglo de BYTE que sigue a la cabecera. Este arreglo contiene valores de control usados para especificar cómo descomprimir los datos de imagen Tiny.
Si un valor de control es negativo, entonces el valor absoluto del valor de control indica el número de WORDs a leer literalmente de los datos comprimidos. Si un valor de control es igual a cero, se lee otro valor de control, y su valor (128 a 32767) se usa para especificar el número de veces a repetir el siguiente WORD de datos. Si un valor de control es igual a uno, se lee otro valor de control y su valor (128 a 32767) se usa para especificar el número de WORDs literales a leer de la sección de datos. Y un valor de control más grande que uno especifica el número de veces a repetir el siguiente WORD leído de la sección de datos (2 a 127).
Los datos de imagen descomprimidos se almacenan a lo largo de su eje Y de manera idéntica a muchos otros formatos de archivo de imagen de Atari.
Si bien no hemos podido obtener un documento de especificación oficial de Atari, el artículo incluido en el CD-ROM que acompaña este libro contiene información detallada sobre los formatos de archivo gráficos de Atari ST. Mira lo siguiente:
Baggett, David M., Atari ST Picture Formats.
El autor también ha permitido amablemente ser una fuente de información sobre los formatos de archivo de Atari ST. Contacta:
Email: dmb@ai.mit.edu
También puedes encontrar información de Atari en:
http://newton.ex.ac.uk/general/ug/jones/
Dan's Atari ST web pages
http://www.smartpages.com/faqs/csas-faq/top.html

References: resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 resolución

 resolución 
 Resolución 
 Resolución 
 Resolución 
 resolución 
 Resolución 
 resolución 
 resolución

 Resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 Resolución