-
Notifications
You must be signed in to change notification settings - Fork 0
Graphics File Format
Programs to extract the animations, static graphics and terrain blocks are available in the utilities package.
The animations are now available for download from this site:
- All animations
- Monsters: Archer, Avatar, Barbarian, Beetle, Bile Demon, Dark Mistress, Dragon, Demon Spawn, Dwarf, Fairy, Fly, Ghost, Giant, Horned Reaper, Hellhound, Imp, Knight, Monk, Orc, Skeleton, Samurai, Spider, Tentacle, Thief, Troll, Tunneller, Vampire, Warlock, Witch, Wizard.
- Torture chambers
- Miscellaneous animations
(Many thanks to whoever it was sent me this data... I can't find your name in my email logs, so please mail me if you want the credit!)
There are five different types of file used for graphics in Dungeon Keeper (as far as I know): raw picture, animation table, picture table, picture/animation data, and palette.
Simply raw data, one pixel per byte. No palette or size information given. These are all stills.
Used in conjunction with a palette file and an animation data file. Each record (one per frame) is sixteen bytes long:
- 0-3: Offset of the frame within the data file
- 4: Horizontal size of frame
- 5: Vertical size of frame
- 6-9: Animation number (i.e. all frames with the same animation number belong together, in the order given.)
- 10: Horizontal offset of this frame within the whole animation
- 11: Vertical offset of this frame within the whole animation
- 12-13: X-origin
- 14-15: Y-origin
Used in conjunction with a palette file and a picture data file. Each record (one per picture) is six bytes long:
- 0-3: Offset of the picture within the data file
- 4: Horizontal size of picture
- 5: Vertical size of picture
Used in conjunction with a picture/animation table and a palette. Arranged in chunks of variable length, the offsets being given in the table. Picture data files have the first 2 bytes in a picture with size 0, this is actually the number of entries in the table.
Each chunk:
- First byte - if positive, number of non-transparent pixels. If negative, number of pixels to leave transparent. If 0, this is the end of the row.
- 1 byte for each non-transparent pixel - color of pixel.
This pattern is repeated until end of picture is reached.
256 triples of red, green, and blue values, from 0 to 63. Most "standard" picture formats (eg bmp) use values from 0-255, so it's worth multiplying by four when writing an extractor