CFAST Disney Animation Studio
From Just Solve the File Format Problem
				
								
				(Difference between revisions)
				
																
				
				
								
				|  (→Format Specification) |  (Category->Animation) | ||
| (13 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| {{FormatInfo | {{FormatInfo | ||
| |formattype=electronic | |formattype=electronic | ||
| − | |subcat= | + | |subcat=Animation | 
| − | + | ||
| |extensions={{ext|cft}} | |extensions={{ext|cft}} | ||
| }} | }} | ||
| Line 8: | Line 7: | ||
| == Format Specification == | == Format Specification == | ||
| + | There appears to be TWO different formats. One with .cft extension and one with .sec | ||
| + | .cft format: | ||
| <pre> | <pre> | ||
| + | Numbers are stored in big-endian format. | ||
| + | |||
| 4 bytes - signature 'GUCF', 'LOCK' or 'STDY' | 4 bytes - signature 'GUCF', 'LOCK' or 'STDY' | ||
| + |           'LOCK' means the file was meant to be saved as final/non editable. | ||
| + |           'STDY' means the file is one of the Animation Studio Sample files (copyright Disney) | ||
| If the signature is 'LOCK' or 'STDY' then a copyright/description message follows | If the signature is 'LOCK' or 'STDY' then a copyright/description message follows | ||
| 2 bytes string length | 2 bytes string length | ||
| n bytes string | n bytes string | ||
| − | |||
| Then follows the bitmap header | Then follows the bitmap header | ||
| Line 21: | Line 25: | ||
| 4 bytes - image height | 4 bytes - image height | ||
| 4 bytes - Amiga screen width (320=lores, 640=hires) | 4 bytes - Amiga screen width (320=lores, 640=hires) | ||
| − | 4 bytes - Amiga screen height (200 | + | 4 bytes - Amiga screen height (200=NTSC, 256=PAL, 400=NTSC interlaced, 512=PAL interlaced) | 
| 1 byte - number of bitplanes (1..5) (numColors = 2^bitplanes) | 1 byte - number of bitplanes (1..5) (numColors = 2^bitplanes) | ||
| Line 35: | Line 39: | ||
| 4 bytes - numFrames | 4 bytes - numFrames | ||
| + | Frames are compressed individually (frames are NOT delta compressed from the previous frame) | ||
| for every frame | for every frame | ||
|     for every bitplane |     for every bitplane | ||
|        4 bytes - compressed size of bitplane |        4 bytes - compressed size of bitplane | ||
| − |        n bytes - compressed bitplane data | + |        n bytes - compressed bitplane data (Run length encoding) | 
|     end of every bitplane |     end of every bitplane | ||
| Line 51: | Line 56: | ||
| 	4 bytes - color cycle Rate | 	4 bytes - color cycle Rate | ||
|          32 bytes - color cycle color indices ? Seems to always be numbered 0,1,2,3,4...31 (regardless of # bitplanes) |          32 bytes - color cycle color indices ? Seems to always be numbered 0,1,2,3,4...31 (regardless of # bitplanes) | ||
| − | + | 	           I don't know why these are needed, when we have low/high. | |
|     end of every range |     end of every range | ||
| end of every frame | end of every frame | ||
| − | At the end of file may be exposure sheet information ... (TODO) | + | At the end of the file, there may also be exposure sheet information ... (TODO) | 
| + | |||
| + | RLE compression: | ||
| + | |||
| + | Bitplanes are compressed with run length encoding. Each column of words (two bytes) are compressed separately. | ||
| − | + | 2 bytes - code | |
| + | if code < 0 then the next word is replicated -code+1 times | ||
| + | else code+1 words are copied literally | ||
| </pre> | </pre> | ||
| Line 68: | Line 79: | ||
| * [http://cd.textfiles.com/silvercollection/disc2/GRAPHVEW/DASFLICK.ARJ DASFLICK.ARJ] | * [http://cd.textfiles.com/silvercollection/disc2/GRAPHVEW/DASFLICK.ARJ DASFLICK.ARJ] | ||
| ** [https://www.pcorner.com/list/ANIM/DASFLICK.ZIP/INFO/ DASFLICK.ZIP] - Another copy | ** [https://www.pcorner.com/list/ANIM/DASFLICK.ZIP/INFO/ DASFLICK.ZIP] - Another copy | ||
| + | * {{DexvertSamples|video/disneyCFAST}} | ||
| == Links == | == Links == | ||
| Line 74: | Line 86: | ||
| [[Category:Video]] | [[Category:Video]] | ||
| [[Category:Amiga]] | [[Category:Amiga]] | ||
| + | [[Category:Amiga graphics formats]] | ||
Latest revision as of 22:25, 26 May 2024
CFAST is an animated raster graphics format associated with the Disney Animation Studio application for Amiga computers.
| Contents | 
[edit] Format Specification
There appears to be TWO different formats. One with .cft extension and one with .sec
.cft format:
Numbers are stored in big-endian format.
4 bytes - signature 'GUCF', 'LOCK' or 'STDY'
          'LOCK' means the file was meant to be saved as final/non editable.
          'STDY' means the file is one of the Animation Studio Sample files (copyright Disney)
If the signature is 'LOCK' or 'STDY' then a copyright/description message follows
2 bytes string length
n bytes string
Then follows the bitmap header
4 bytes - image width
4 bytes - image height
4 bytes - Amiga screen width (320=lores, 640=hires)
4 bytes - Amiga screen height (200=NTSC, 256=PAL, 400=NTSC interlaced, 512=PAL interlaced)
1 byte - number of bitplanes (1..5) (numColors = 2^bitplanes)
Then follows palette information for the first two colors (if there are more colors, they are specified later in the file)
3 bytes - rgb for color index 0
3 bytes - rgb for color index 1
Then follows an extra block of data of varying length
1 byte - extralen
n bytes (unknown contents)
Then follows the number of frames
4 bytes - numFrames
Frames are compressed individually (frames are NOT delta compressed from the previous frame)
for every frame
   for every bitplane
      4 bytes - compressed size of bitplane
      n bytes - compressed bitplane data (Run length encoding)
   end of every bitplane
   1 byte - numColors in frame
   3*numColors bytes
   1 byte - number of color cycling ranges
   for every range
	1 byte - low color index (0..31)
	1 byte - high color index (0..31)
	6 bytes - unknown
	4 bytes - color cycle Rate
        32 bytes - color cycle color indices ? Seems to always be numbered 0,1,2,3,4...31 (regardless of # bitplanes)
	           I don't know why these are needed, when we have low/high.
   end of every range
end of every frame
At the end of the file, there may also be exposure sheet information ... (TODO)
RLE compression:
Bitplanes are compressed with run length encoding. Each column of words (two bytes) are compressed separately.
2 bytes - code
if code < 0 then the next word is replicated -code+1 times
else code+1 words are copied literally
[edit] Software
- Disney Animation Studio
- DASFLICK.ARJ → FLICK.EXE - Player for MS-DOS
[edit] Sample files
-  DASFLICK.ARJ
- DASFLICK.ZIP - Another copy
 
- dexvert samples — video/disneyCFAST

