Magic & Mayhem sprites file
From Just Solve the File Format Problem
A collection of sprites for Magic & Mayhem game.
Description
All integers are little-endian.
Signature - "SPR\0"
|
4 bytes |
File size | 4 bytes |
Number of frames (sprites) | 4 bytes |
Number of palettes | 4 bytes |
Unknown | 4 bytes |
Palettes | 256 * 3 bytes per each palette |
Frame offsets | 4 bytes * Number of frames; 0 is first byte after file header |
Size | 4 bytes |
Width | 4 bytes |
Height | 4 bytes |
Origin x | 4 bytes (signed) |
Origin y | 4 bytes (signed) |
Name | 8 bytes, null-terminated |
Palette number (0-based) | 4 bytes |
Unknown 1 (offset?) | 4 bytes |
Unknown 2 (offset?) | 4 bytes |
Offsets into lines and deltas for each row | 4 bytes * 2 * Height |
Deltas offset (from beginning of sprite header) | 4 bytes |
Pixels offset (from beginning of sprite header) | 4 bytes |
Sprite pixels are encoded with custom RLE scheme. Each scanline is:
- Read n number of pixels from deltas (1 byte), advancing deltas pointer
- Put n pixels from pixels offset (each pixel is 1 byte index into sprite's palette), advancing pixels pointer
- Read b number of blank pixels from deltas, advancing deltas pointer
- Put b blank pixels
- Repeat until whole width is filled