Animator Pro File Formats


This chapter details each of the file formats defined by Animator
Pro.  Formats supported by Animator Pro but defined by another
party, such as GIF and TIFF files, are not described in this
document.

The files created by Autodesk Animator Pro are a superset of
those created by the original Autodesk Animator.  In some cases
the Animator Pro formats are identical with the older Animator
format.  In other cases, new data fields or data compression
techniques have been added to the file.

All two-byte and four-byte data values in Animator Pro files are
stored in Intel-style order, the same as they would appear in
memory on an 80x86 machine.


Common Hierarchial Chunked File Structure


In general, Animator Pro files contain one or more chunks of
information.  Conceptually, a chunk is a combination of control
information and data.  The most common Animator Pro file format
is a header structure followed by hierarchial data chunks.

Every chunk begins with a header of at least 6 bytes. The first
four bytes contain the length of the chunk (including the header
itself, and also including the length of all subordinate chunks,
if any).  The next two bytes are an identifier word which
describes the type of data in the chunk.  Some chunks have
headers longer than six bytes, but the size and identifier fields
always occupy the first six bytes of the header.

The Animator Pro animation file is a good example of a hierarchial 
chunked file structure.  The data in an animation file is arranged 
as follows:

     animation file:
          optional prefix chunk:
               settings chunk
               cel placement chunk
          frame 1 chunk:
               postage stamp chunk:
                    postage stamp data
               color palette chunk
               pixel data chunk
          frame 2 chunk:
               pixel data chunk
          frame 3 chunk:
               color palette chunk
               pixel data chunk
          frame 4 chunk:
               color palette chunk
          ring frame chunk:
               color palette chunk
               pixel data chunk

It is possible that new types of chunks not described in this
document will be added to animation files in the future.  We
recommend that you quietly ignore unknown chunk types you
encounter during animation playback.  The size fields in the
chunk headers make it easy to skip an entire unrecognized chunk.


FLC - Animator Pro Flic Files


This is the main animation file format created by Animator Pro.
The file contains a 128-byte header, followed by an optional
prefix chunk, followed by one or more frame chunks.

The prefix chunk, if present, contains Animator Pro settings
information, CEL placement information, and other auxiliary data.

A frame chunk exists for each frame in the animation. In
addition, a ring frame follows all the animation frames.  Each
frame chunk contains color palette information and/or pixel data.

The ring frame contains delta-compressed information to loop from
the last frame of the flic back to the first.  It can be helpful
to think of the ring frame as a copy of the first frame,
compressed in a different way.  All flic files will contain a
ring frame, including a single-frame flic.


The FLC file header


A FLC file begins with a 128-byte header, described below.  All
lengths and offsets are in bytes.  All values stored in the
header fields are unsigned.

Offset  Length  Name         Description

  0       4     size         The size of the entire animation file,
                             including this file header.

  4       2     magic        File format identifier. Always hex AF12.

  6       2     frames       Number of frames in the flic.  This 
                             count does not include the ring frame.  
                             FLC files have a maximum length of 4000 
                             frames.

  8       2     width        Screen width in pixels.

  10      2     height       Screen height in pixels.

  12      2     depth        Bits per pixel (always 8).

  14      2     flags        Set to hex 0003 after ring frame is 
                             written and flic header is updated.  
                             This indicates that the file was properly
                             finished and closed.

  16      4     speed        Number of milliseconds to delay between 
                             each frame during playback.

  20      2     reserved     Unused word, set to 0.

  22      4     created      The MSDOS-formatted date and time of the
                             file's creation.

  26      4     creator      The serial number of the Animator Pro
                             program used to create the file.  If the 
                             file was created by some other program 
                             using the FlicLib development kit, this 
                             value is hex 464C4942 ("FLIB").

  30      4     updated      The MSDOS-formatted date and time of the
                             file's most recent update.

  34      4     updater      Indicates who last updated the file.  See 
                             the description of creator.

  38      2     aspectx      The x-axis aspect ratio at which the file 
                             was created.

  40      2     aspecty      The y-axis aspect ratio at which the file 
                             was created. Most often, the x:y aspect ratio 
                             will be 1:1.  A 320x200 flic has a ratio of 
                             6:5.

  42      38    reserved     Unused space, set to zeroes.

  80      4     oframe1      Offset from the beginning of the file to the 
                             first animation frame chunk.

  84      4     oframe2      Offset from the beginning of the file to
                             the second animation frame chunk.  This value 
                             is used when looping from the ring frame back 
                             to the second frame during playback.

  88      40    reserved     Unused space, set to zeroes.



The FLC prefix chunk


An optional prefix chunk may immediately follow the animation
file header.  This chunk is used to store auxiliary data which is
not directly involved in the animation playback.  The prefix
chunk starts with a 16-byte header (identical in structure to a
frame header), as follows:

Offset  Length  Name         Description

  0       4     size         The size of the prefix chunk, including 
                             this header and all subordinate chunks 
                             that follow.

  4       2     type         Prefix chunk identifier. Always hex F100.

  6       2     chunks       Number of subordinate chunks in the
                             prefix chunk.

  8       8     reserved     Unused space, set to zeroes.

To determine whether a prefix chunk is present, read the 16-byte
header following the file header.  If the type value is hex F100,
it's a prefix chunk.  If the value is hex F1FA it's the first
frame chunk, and no prefix chunk exists.

Note

Programs other than Animator Pro should never need to create flic
files that contain a prefix chunk.  Programs reading a flic file
should skip the prefix chunk by using the size value in the prefix 
header to read and discard the prefix, or by seeking directly to 
the first frame using the oframe1 field from the file header.


The FLC frame chunks


Frame chunks contain the pixel and color data for the animation.
A frame chunk may contain multiple subordinate chunks, each
containing a different type of data for the current frame.  Each
frame chunk starts with a 16-byte header that describes the contents 
of the frame:

Offset  Length  Name         Description

  0       4     size         The size of the frame chunk, including this
                             header and all subordinate chunks that follow.

  4       2     type         Frame chunk identifier. Always hex F1FA.

  6       2     chunks       Number of subordinate chunks in the
                             frame chunk.

  8       8     reserved     Unused space, set to zeroes.


Immediately following the frame header are the frame's subordinate 
data chunks.  When the chunks count in the frame header is zero, it 
indicates that this frame is identical to the previous frame.  This 
implies that no change is made to the screen or color palette, but 
the appropriate delay is still inserted during playback.

Each data chunk within a frame chunk is formatted as follows:

Offset  Length  Name         Description

  0       4     size         The size of the chunk, including this header.

  4       2     type         Data type identifier.

  6    (size-6) data         The color or pixel data.


The type values in the chunk headers indicate what type of graphics 
data the chunk contains and which compression method was used to 
encode the data.  The following values (and their associated mnemonic 
names) are currently found in frame data chunks:

Value     Name        Description

  4    FLI_COLOR256   256-level color palette info
  7    FLI_SS2        Word-oriented delta compression
  11   FLI_COLOR      64-level color palette info
  12   FLI_LC         Byte-oriented delta compression
  13   FLI_BLACK      Entire frame is color index 0
  15   FLI_BRUN       Byte run length compression
  16   FLI_COPY       No compression
  18   FLI_PSTAMP     Postage stamp sized image

The following sections describe each of these data encoding methods 
in detail.


Chunk Type  4 (FLI_COLOR256) - 256-Level Color


The data in this chunk is organized in packets.  The first word
following the chunk header is a count of the number of packets in
the chunk.  Each packet consists of a one-byte color index skip
count, a one-byte color count and three bytes of color information 
for each color defined.

At the start of the chunk, the color index is assumed to be zero.
Before processing any colors in a packet, the color index skip
count is added to the current color index.  The number of colors
defined in the packet is retrieved.  A zero in this byte indicates 
256 colors follow.  The three bytes for each color define the red, 
green, and blue components of the color in that order. Each 
component can range from 0 (off) to 255 (full on).  The data to 
change colors 2,7,8, and 9 would appear as follows:

     2                      ; two packets
     2,1,r,g,b              ; skip 2, change 1
     4,3,r,g,b,r,g,b,r,g,b  ; skip 4, change 3


Chunk Type 11 (FLI_COLOR) - 64-Level Color

This chunk is identical to FLI_COLOR256 except that the values 
for the red, green and blue components are in the range of 0-63
instead of 0-255.


Chunk Type 13 (FLI_BLACK) - No Data

This chunk has no data following the header.  All pixels in the
frame are set to color index 0.


Chunk Type 16 (FLI_COPY) - No Compression

This chunk contains an uncompressed image of the frame. The 
number of pixels following the chunk header is exactly the width
of the animation times the height of the animation.  The data
starts in the upper left corner with pixels copied from left to
right and then top to bottom.  This type of chunk is created when
the preferred compression method (SS2 or BRUN) generates more
data than the uncompressed frame image; a relatively rare 
situation.


Chunk Type 15 (FLI_BRUN) - Byte Run Length Compression

This chunk contains the entire image in a compressed format.
Usually this chunk is used in the first frame of an animation, or
within a postage stamp image chunk.

The data is organized in lines.  Each line contains packets of
compressed pixels.  The first line is at the top of the animation, 
followed by subsequent lines moving downward.  The number of lines 
in this chunk is given by the height of the animation.

The first byte of each line is a count of packets in the line.
This value is ignored, it is a holdover from the original Animator.  
It is possible to generate more than 255 packets on a line.  The 
width of the animation is now used to drive the decoding of packets 
on a line; continue reading and processing packets until width 
pixels have been processed, then proceed to the next line.

Each packet consist of a type/size byte, followed by one or more
pixels.  If the packet type is negative it is a count of pixels
to be copied from the packet to the animation image.  If the packet 
type is positive it contains a single pixel which is to be 
replicated; the absolute value of the packet type is the number
of times the pixel is to be replicated.


Chunk Type 12 (FLI_LC) - Byte Aligned Delta Compression

This chunk contains the differences between the previous frame
and this frame.  This compression method was used by the original
Animator, but is not created by Animator Pro.  This type of chunk
can appear in an Animator Pro file, however, if the file was
originally created by Animator, then some (but not all) frames
were modified using Animator Pro.

The first 16-bit word following the chunk header contains the
position of the first line in the chunk. This is a count of lines
(down from the top of the image) which are unchanged from the
prior frame.  The second 16-bit word contains the number of lines
in the chunk.  The data for the lines follows these two words.

Each line begins with two bytes.  The first byte contains the
starting x position of the data on the line, and the second byte
the number of packets for the line.  Unlike BRUN compression, the
packet count is significant (because this compression method is
only used on 320x200 flics).

Each packet consists of a single byte column skip, followed by a
packet type/size byte.  If the packet type is positive it is a
count of pixels to be copied from the packet to the animation
image.  If the packet type is negative it contains a single pixel
which is to be replicated; the absolute value of the packet type
gives the number of times the pixel is to be replicated.

Note

The negative/positive meaning of the packet type bytes in LC
compression is reversed from that used in BRUN compression.  This
gives better performance during playback.


Chunk Type  7 (FLI_SS2) - Word Aligned Delta Compression

This format contains the differences between consecutive frames.
This is the format most often used by Animator Pro for frames
other than the first frame of an animation.  It is similar to the
line coded delta (LC) compression, but is word oriented instead
of byte oriented.  The data is organized into lines and each line
is organized into packets.

The first word in the data following the chunk header contains
the number of lines in the chunk.  Each line can begin with some
optional words that are used to skip lines and set the last byte
in the line for animations with odd widths.  These optional words
are followed by a count of the packets in the line.  The line
count does not include skipped lines.


The high order two bits of the word is used to determine the
contents of the word.

     Bit 15  Bit 14       Meaning

       0      0           The word contains the packet count.  The
                          packets follow this word.  The packet count 
                          can be zero; this occurs when only the last 
                          pixel on a line changes.

       1      0           The low order byte is to be stored in the 
                          last byte of the current line.  The packet 
                          count always follows this word.

       1      1           The word contains a line skip count.  The 
                          number of lines skipped is given by the 
                          absolute value of the word.  This word can 
                          be followed by more skip counts, by a last 
                          byte word, or by the packet count.

The packets in each line are similar to the packets for the line
coded chunk.  The first byte of each packet is a column skip count.  
The second byte is a packet type. If the packet type is positive, 
the packet type is a count of words to be copied from the packet to 
the animation image.  If the packet type is negative, the packet 
contains one more word which is to be replicated. The absolute value 
of the packet type gives the number of times the word is to be 
replicated.  The high and low order byte in the replicated word do 
not necessarily have the same value.


Chunk Type 18 (FLI_PSTAMP) - Postage Stamp Image

This chunk type holds a postage stamp -- a reduced-size image --
of the frame.  It generally appears only in the first frame chunk
within a flic file.

When creating a postage stamp, Animator Pro considers the ideal
size to be 100x63 pixels.  The actual size will vary as needed to
maintain the same aspect ratio as the original.

The pixels in a postage stamp image are mapped into a six-cube
color space, regardless of the color palette settings for the
full frame image.  A six-cube color space is formed as follows:

     start at palette entry 0
     for red = 0 thru 5
          for green = 0 thru 5
               for blue = 0 thru 5
                    palette_red   = (red   * 256)/6
                    palette_green = (green * 256)/6
                    palette_blue  = (blue  * 256)/6
                    move to next palette entry
               end for blue
          end for green
     end for red

Any arbitrary rgb value (where each component is in the range of
0-255) can be mapped into the six-cube space using the formula:

  ((6*red)/256)*36 + ((6*green)/256)*6 + ((6*blue)/256)

When a frame data chunk has been identified as a postage stamp,
the header for the chunk contains more fields than just size and
type.  The full postage stamp chunk header is defined as follows:

Offset  Length  Name         Description

  0       4     size         The size of the postage stamp chunk,
                             including this header.

  4       2     type         Postage stamp identifier; always 18.

  6       2     height       Height of the postage stamp image, in
                             pixels.

  8       2     width        Width of the postage stamp image, in
                             pixels.

  10      2     xlate        Color translation type; always 1,
                             indicating six-cube color space.

Immediately following this header is the postage stamp data.  The
data is formatted as a chunk with standard size/type header.  The
type will be one of:

     Value    Name           Description

     15     FPS_BRUN         Byte run length compression
     16     FPS_COPY         No compression
     18     FPS_XLAT256      Six-cube color xlate table

The FPS_BRUN and FPS_COPY types are identical to the FLI_BRUN and
FLI_COPY encoding methods described above.

The FPS_XLAT256 type indicates that the chunk contains a 256-byte
color translation table instead of pixel data.  To process this
type of postage stamp, read the pixel data for the full-sized 
frame image, and translate its pixels into six-cube space using a 
lookup in the 256-byte color translation table.  This type of 
postage stamp appears when the size of the animation frames is 
smaller than the standard 100x63 postage stamp size.


FLI - Original Animator Flic Files


This animation file format is limited to 320x200 resolution.  It
is the main animation file format of the original Animator, and
is still used by Animator Pro for creating 320x200 animations.
The file structure is very similar to that of a FLC file.  A FLI
file does not contain a prefix chunk, and does not use FLI_PSTAMP
or FLI_SS2 data encoding in the frame chunks.


The FLI file header


The file header for a FLI file is a subset of the FLC file
header.  It is defined as follows:

Offset  Length  Name         Description

  0       4     size         The size of the entire animation file,
                             including this file header.

  4       2     magic        File format identifier. Always hex AF11.

  6       2     frames       Number of frames in the flic. This count
                             does not include the ring frame.  FLI files 
                             have a maximum length of 4000 frames.

  8       2     width        Screen width in pixels. This is always
                             320 in a FLI file.

  10      2     height       Screen height in pixels. This is always
                             200 in a FLI file.

  12      2     depth        Bits per pixel (always 8).

  14      2     flags        Always zero in a FLI file.

  16      2     speed        Number of jiffies to delay between each
                             frame during playback.  A jiffy is 1/70 
                             of a second.

  18      110   reserved     Unused space, set to zeroes.


The FLI frame chunks


One or more frame chunks immediately follow the FLI file header.
The frame chunks in a FLI file are identical to those in a FLC
file, except that postage stamp image (FLI_PSTAMP) and
word-runlength-compression (FLI_SS2) data chunks never appear in
FLI files.


CEL - Animation Cel Files


CEL files contain one or more frames of image data. Both Animator
Pro and the original Animator produce CEL files, but each uses a
different file format.

To process a CEL file for input, read the first 2 bytes of the
file.  If they are hex 9119, the file is an original Animator CEL
file.  If the first two bytes are not 9119, it is an Animator Pro
CEL file.


Animator Pro CEL Files


An Animator Pro CEL file is identical to a FLC file in all
respects.  A CEL file should have a Celdata chunk in the file
prefix chunk which describes the x,y placement of the CEL.  If
the Celdata placement chunk is not present, assume a placement of
0,0.


Original Animator CEL Files


The original Animator also produced CEL files.  These were
still-picture files, not the multi-frame files Animator Pro now
uses.  A CEL file from the original Animator is identical to a
PIC file from the original Animator in all respects.


PIC - Picture Files


PIC files contain still images in an uncompressed format.  Both
the original Animator and Animator Pro produce PIC files.  The
file formats are different; Animator Pro produces a hierarchial
chunked file, while the original Animator file is a simpler fixed
format. These formats are detailed in the following sections.

To process a PIC file for input, read the first 2 bytes of the
file.  If they are hex 9119, the file is an original Animator PIC
format file.  If the first two bytes are not 9119, it is an
Animator Pro PIC file.


Animator Pro PIC Files


Animator Pro uses this format to store a single-frame picture
image or bitmap.  This format description applies to both PIC and
MSK files.  The file begins with a 64-byte header defined as
follows:

Offset  Length  Name         Description

  0       4     size         The size of the file, including this header.

  4       2     magic        File format identifier. Always hex 9500.

  6       2     width        The width of the image, in pixels.

  8       2     height       The height of the image, in pixels.

  10      2     xcoord       The X coordinate; typically zero.  (See
                             note below).

  12      2     ycoord       The Y coordinate; typically zero.  (See
                             note below).

  14      4     userid       An arbitrary 4-byte value; generally
                             zero.  Do not count on any particular 
                             value in this field.  Set this field to 
                             zero when creating a file.

  18      1     depth        The number of bits per pixel. This is 8
                             for PIC files and 1 for MSK files.

  19      45    reserved     Unused space; set to zeroes.


Note

The xcoord and ycoord values in a PIC file header will typically
be zero.  Non-zero values indicate that the file contains a
rectangle from within a larger picture.  In this case, the xcoord
and ycoord values represent the relation of the saved rectangle
to the full image.  These values can be safely ignored for most
purposes.

Following the file header are the data chunks for the image.
Each data chunk within a PIC or MSK file is formatted as follows:

Offset  Length  Name         Description

  0       4     size         The size of the chunk, including this header.

  4       2     type         Data type identifier.

  6    (size-6) data         The color or pixel data.

The type values in the chunk headers indicate what type of 
graphics data the chunk contains.  The following values (and 
their associated mnemonic names) are currently found in PIC/MSK 
data chunks:

     Value    Name            Description

     0    PIC_CMAP            Color palette info
     1    PIC_BYTEPIXELS      Byte-per-pixel image data
     2    PIC_BITPIXELS       Bit-per-pixel mask data

In a PIC_CMAP chunk, the first 2-byte word is a version code; 
currently this is set to zero.  Following the version word are
all 256 palette entries in rgbrgb... order.  Each of the r, g,
and b components is a single byte in the range of 0-255.  This
type of chunk appears in PIC files; there will generally be no
color map chunk in a MSK file.

In a PIC_BYTEPIXELS chunk, the image data appears immediately
following the 6-byte chunk header.  The data is stored as one
byte per pixel, in left-to-right, topD to-bottom sequence.  This
type of chunk appears in PIC files.

In a PIC_BITPIXELS chunk, the bitmap data appears immediately
following the 6-byte chunk header.  The data is stored as bits
packed into bytes such that the leftmost bits appear in the
high-order positions of each byte.  The bits are stored in
left-to-right, top-toD bottom sequence.  When the width of the
bitmap is not a multiple of 8, there will be unused bits in the
lowD order positions of the last byte on each line.  The number
of bytes per line is ((width+7)/8).  This type of chunk appears
in MSK files.


Original Animator PIC Files


The original Animator uses this format to store a single-frame
picture image.  This format description applies to both PIC and
CEL files.  The file begins with a 32 byte header, as follows:

Offset  Length  Name         Description

  0       2     type         File type identifier.  Always hex 9119.

  2       2     width        Width of image.  Always 320 in a PIC
                             file; may be any value in a CEL file.

  4       2     height       Height of image.  Always 200 in a PIC
                             file; may be any value in a CEL file.

  6       2     xcoord       X coordinate for upper left corner of
                             the image.  Always zero in a PIC file; 
                             may be non-zero in a CEL file.

  8       2     ycoord       Y coordinate for upper left corner of
                             the image.  Always zero in a PIC file; 
                             may be non-zero in a CEL file.

  10      1     depth        Number of bits per pixel; always 8.

  11      1     compress     Compression flag; always zero.

  12      4     datasize     Size of the image data in bytes.

  16      16    reserved     Unused space; set to zeroes.

Immediately following the header is the color map.  It contains
all 256 palette entries in rgbrgb... order. Each of the r, g, and
b components is a single byte in the range of 0-63.  Following
the color palette is the image data, one byte per pixel.  The
image data is stored in left-to-right, top-to-bottom sequence.


MSK - Mask Data Files


MSK files contain a bitmap image.  Both Animator Pro and the
original Animator produce MSK files, but the formats are
different.

To process a MSK file for input, check the file size. If it is
exactly 8000 bytes, the file is an original Animator MSK file.
If the file is any other size, it is an Animator Pro MSK file.


Animator Pro MSK Files


An Animator Pro MSK file is identical to an Animator Pro PIC
file.  It will have a pixel depth of 1.


Original Animator MSK Files


A MSK file created by the original Animator is exactly 8000 bytes
long.  There is no file header or other control information in
the file.  It contains the image bit map, 1 bit per pixel, with
the leftmost pixels packed into the high order bits of each byte.
The size of the image is fixed at 320x200.  The image is stored
left-to-right, top-to-bottom.


COL - Color Map Files


A COL file stores the rgb values for entries in the color palette.  
Both Animator Pro and the original Animator produce COL files, but 
the formats are different.

To process a COL file for input, check the file size. If it is
exactly 768 bytes, the file is an original Animator COL file.  If
the file is any other size, it is an Animator Pro COL file.


Animator Pro COL Files


An Animator Pro COL file stores color palette information.  The
file begins with an 8-byte header defined as follows:

Offset  Length  Name         Description

  0       4     size         The size of the file, including this header.

  4       2     magic        File format identifier. Always hex B123.

  6       2     version      The version of color storage format.
                             Currently set to zero, indicating 
                             256-level color data in each r,g,b 
                             component.

Following the file header are palette entries in rgbrgb... order.
Each of the r, g, and b components is a single byte in the range
of 0-255.  Generally, there will be data for 256 palette entries,
but this cannot be assumed.  The actual number of palette entries
is ((size-8)/3); if this value is not an even multiple of three,
the file is corrupted.


Original Animator COL Files2


A COL file created by the original Animator is exactly 768 bytes
long.  There is no file header or other control information in
the file.  The rgb values for all 256 palette entries is stored
in rgbrgb... sequence. Each of the r, g, and b values is in the
range of 0-63.


PLY - Polygon Files


A PLY file holds a set of points that describe a polygon.  Both
Animator Pro and the original Animator create PLY files.  The
file format is the same for both.

A PLY file starts with an 8-byte header, as follows:

Offset  Length  Name         Description

  0       2     points       Count of points in the file.

  2       4     reserved     Unused space; set to zero.

  6       1     closed       Closed-shape flag.  If 1, there is an
                             implied connection between the last point 
                             and the first.  If zero, the shape is not 
                             closed.

  7       1     magic        File format identifier. Always hex 99.

The points data follows the file header.  Each point is described
with three 16-bit integers, representing the x, y, and z
coordinates of each point.  The z coordinates are always zero.


TWE - Tween Data Files

A TWE file holds information about a tweening operation set up
via the Tween menus.  The information includes the starting and
ending shapes, and the optional userD specified links between the
shapes.  Animator Pro creates tween files.

A TWE file begins with an 8-byte header defined as follows:

Offset  Length  Name         Description

  0       2     magic        File format identifier. Always hex 1995.

  2       2     version      The file format version; always zero.

  4       4     tcount       The number of tween shapes in the file;
                             always 2.

  8       8     reserved     Unused space; set to zeroes.

  16      4     linkcount    The number of link entries in the file.

Immediately following the file header are the link entries.  If
the linkcount value is zero there are no links.  Each link entry
is a pair of 32-bit integers. The first value in each pair is the
index of the point in the first shape, and the second value is
the index of the point in the ending shape.  (IE, a link value of
2,7 says to link the second starting-shape point to the seventh
ending-shape point.)

Following the link entries is the data block that describes the
starting shape, then the data block that describes the ending
shape.  The format of these blocks is identical to that of the
polygon (PLY) file, including file header data.  In other words,
they appear as if a pair of polygon files are embedded in the
tween file at this point.


OPT - Optics Menu Settings Files


An OPT file holds information about an optics operation set up
via the Optics menus.  Both Animator Pro and the original
Animator create OPT files.  The file format is the same for both.

An OPT file starts with a 4-byte header, as follows:

Offset  Length  Name         Description

  0       2     magic        File type identifier.  Always hex 1A3F.

  2       2     count        Number of records in the file.

Following the file header are optics records of 50 bytes each.  A
record is generated for each click on CONTINUE MOVE in the OPTICS
menu.  The move records are formatted as follows:

Offset  Length  Name         Description

  0       4     link         In the file, this field is always zero.
                             In memory, it's a pointer to the next 
                             move record.

  4       6     spincenter   The x,y,z coordinates of the spin
                             center point; three 16-bit values.

  10      6     spinaxis     The x,y,z coordinates of the spin axis;
                             three 16-bit values.

  16      6     spinturns    The x,y,z coordinates of the spin turns;
                             three 16-bit values.

  22      4     spininter    Intermediate turns.  Two 16-bit values.
                             These are values for a conjugation matrix 
                             that corresponds to spin axis.

  26      6     sizecenter   The x,y,z coordinates of the size
                             center point; three 16-bit values.

  32      2     xmultiplier  Determines (along with xdivisor)
                             how to scale along x dimension.

  34      2     xdivisor     Determines (along with xmultiplier) how
                             to scale along x dimension.

  36      2     ymultiplier  Determines (along with ydivisor)
                             how to scale along y dimension.

  38      2     ydivisor     Determines (along with ymultiplier) how
                             to scale along y dimension.

  40      2     bothmult     Like xmultiplier, but applied to both
                             dimensions.

  42      2     bothdiv      Like xdivisor, but applied to both
                             dimensions.

  44      6     linearmove   The x,y,z offset for a linear move;
                             three 16-bit values.


Internal Usage Files (REC, SET, CFG, GLV, MU)


Each of these file types is created by Animator Pro to store
internal data between sessions.  These files must not be touched
by other applications.

REC files store macros.  Animator Pro REC files are not the same
as the REC files documented with the original Animator.

SET files store internal settings information; they are created
by the Quit|Save menu, and by the Save Default Settings menu.

CFG files store internal configuration information, such as the
video driver and mode.

GLV files store Poco Global Variables.  The data is stored as a
series of nullterminated strings, and must not be modified using
a normal text editor.

MU files store menu text, prompts, error messages, etc,
customized to the proper native language.  The data is stored as
normal ASCII text, and must not be modified in any way.

End of document.  Below are a few comments that hold text we may
want to suck back into the document some day.
When the prefix chunk is present, it contains a fixed header
structure, followed by one or more prefix sub-chunks.  The prefix
chunk header is defined as follows:

The following constants identify the sub-chunks within a prefix
chunk.

     enum {
          FP_FREE        = 0,
          FP_FLIPATH          = 1,
          FP_VSETTINGS   = 2,
          FP_CELDATA          = 3,
          };


Format for the optional Prefix chunk:

The prefix chunk at present contains:
A settings chunk.  This is the same thing as a settings file but
as a chunk in a flic.  This is how the load settings from a flic
is implemented. This is present in flics but not cels. A settings
chunk has sub chunks for things like the paths in the file
requestors, optics settings, etc.

A Celdata chunk.  This chunk has the positioning info for a fli
used as a cel.  This is usually only present in cel files.