CFAST Disney Animation Studio

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(Category->Animation)
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{FormatInfo
 
{{FormatInfo
 
|formattype=electronic
 
|formattype=electronic
|subcat=Graphics
+
|subcat=Animation
|subcat2=Amiga graphics formats
+
 
|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
'LOCK' means the file was meant to be saved as final/non editable
 
  
 
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/400, 256/512)
+
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
  
... (TODO)
+
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
  
 
</pre>
 
</pre>
Line 46: 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 52: Line 86:
 
[[Category:Video]]
 
[[Category:Video]]
 
[[Category:Amiga]]
 
[[Category:Amiga]]
 +
[[Category:Amiga graphics formats]]

Latest revision as of 22:25, 26 May 2024

File Format
Name CFAST Disney Animation Studio
Ontology
Extension(s) .cft

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

[edit] Sample files

[edit] Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox