]>
       

Cybermate Delta File Format      *.DLT (+ *.PI?)

  The Cybermate animation system uses a "delta" compression technique
for storage of animated sequences. A delta compression is a simple
technique which compares a frame of animation to the previous frame,
storing only the changes (or deltas) that occurred from one frame to
the next.

  In the current application of the delta compression technique, the
first frame of the animation sequence is stored in a DEGAS-format picture
file, and the remainder of the animation sequence is stored as a series
of delta values in a .DLT file.

  Each frame of the animation is recorded as a series of delta values,
each of which is stored as a word value from 0 to 31996 which indicate
an offset into the 32000-byte display bitmap memory, then a LONG value
which must be EOR'ed at the specified point in the display memory.
This changes the previous frame's LONG value to the new frame's value.
The EOR technique allows animations to be played in reverse as well.

  Each frame has a word which indicates the number of deltas that are
present for that frame.  When all those are processed, a new frame delta
count word is read and the process is repeated.

  The .DLT file has the following format:

1 word    The number of deltas in this frame.  A zero in this flag
          indicates the end of the file.  Frames with no deltas (the same
          as the previous frame) are special cases and a dummy delta
          offset and LONG EOR value of zero are provided in the delta
          data which follows.

          The following structure is repeated the number of times
          specified in the delta count for this frame.

1 word    Offset into 32000-byte screen RAM for the delta data. This
          number is a multiple of 4 from 0 to 31996. It should be used
          as an offset from the start of screen RAM to EOR the following
          long.

1 long    Delta data. This value is EOR'ed with the screen data at
          [screenbase + offset] to change the previous frame's data to
          the new frame's.

          Once all deltas for a particular frame have been processed, the
          program reads the number of deltas for the next frame, and
          continues with this process until all frames have been processed
          (delta count = 0).