Captain Comic II Sprite Format
This format stores the images used for drawing animated creatures and objects in Captain Comic II. The data is stored in FRNNN.2 level sprite files, FRDEMO.N introduction sequence files, and FRDATA.1.
The file has no header - the first frame's data starts right at the beginning of the file. Each frame has a header of 4 or 6 bytes.
|UINT16LE||width||Size of the frame in pixels|
|UINT16LE||planeSize||Size in bytes of one plane. This is equal to width × height / 8, but see following note.|
The frames are 16-colour images, split into four or five planes (see Raw_EGA_data#Planar_EGA_data). Each image is stored one after the other, each image having the above header. The planes within each image are ordered with opacity first, if present, then blue, green, red, and intensity.
In reading these files, planeSize should always be checked against width × height / 8 for every image. If it is equal, this signals that an opacity plane is present. If it is not equal, that signals that there is no opacity plane, and the planeSize field should be treated as absent: the input stream should be backtracked two bytes (i.e. sizeof(planeSize)) before reading the four colour planes.
This file format was reverse engineered by Ceidwad. If you find this information helpful in a project you're working on, please give credit where credit is due. (A link back to this wiki would be nice too!)