home *** CD-ROM | disk | FTP | other *** search
- Paul Mace Software Inc.
- 400 Willaimson Way
- Ashland OR 97520
-
- DFF File Format
-
- I don't do vertical run length encoding, because I always thought the
- overhead was not worth it, particularly for DFF playback.
-
- DFF has 8 bytes per frame for a window of thwere the changes take place.
- The actual difference data is 80 to FF is count of number of bytes to move,
- 0 to 3F is skip count, and 40 to 7F is RLE count. If a count is zero
- (80, 40, and 0) the following word is the count (mostly for big skips).
- This is definitely not how I'd do it now, but I threw it together 4 or
- 5 years ago and never wanted to change it and make all my users convert
- their files.
-
- unsigned int dffcnt; // number of frames in DFF file
- unsigned char numbits; // number of bits per pixel
- unsigned char numpl; // number of bit planes
-
- struct
- {
- unsigned long dffpos; // position of frame in file
- unsigned long dfflen; // width and height of frame
- int xsize; // width and height of frame
- int ysize;
- int xoff; // offset relative to 0,0 of frame data
- int yoff;
-
- } list[dffcnt];
-
- The dffpos offsets are relative to the end of the header, so the offset
- for th first frame is usually zero and the data is right after the last
- structure in list[]. The actual DFF data is stored one scanline at a
- time (no skips or fills across scanlines). The rectangles defined for
- each frame can be different (and virtually always are different).
-
- Something to keep in mind is that the DFF format does not include
- palette information, so there may be a first frame which has palette
- information usually stored as a GIF, PIC, or PCX. The first frame can
- be stored in the DFF (effectively a difference with nothing). But if
- one stores the first frame in the DFF, there is no way to currently include
- a palette. Do people often use PCX, PIC, or GIF file for the first frame
- and name it the same as the DFF.
-
- In some unusual cases, the DFF is intended to start playing on a generated
- screen, so the first frame may not exist in file form. But that's very
- unusual. Also DFF's can be generated for two pages, so the actual DFF
- file is the difference sequence:
-
- 1 dif 2 (difference between frames 1 and 2)
- 1 dif 3
- 2 dif 4
- 3 dif 5
- 4 dif 6
- 5 dif 7
-
- this is really only for 16 color modes.
-
- Plus I support XOR'D DFFs where all the difference information is XOR for
- playing the DFF forwards or backwards. Sadly I didn't put in any kind of
- flag or bit field for this information, so there is no way to know that a
- DFF is XOR or 2-page without asking the user. But the vast majority of
- DFF's are neither 2-page nor XOR.
-
-
- Steven Belsky
- Paul Mace Software
-