mirror of https://github.com/nmlgc/ReC98.git
25 lines
963 B
C++
25 lines
963 B
C++
/// Run-length encoded, 16-color, image format using hardcoded sizes
|
||
/// ----------------------------------------------------------------
|
||
/// TH01 has no generic implementation of this format, only the specialized
|
||
/// one for the HUD, loading and blitting MASK.GRF. Which only reads the first
|
||
/// bitplane from that file – the other ones are exactly identical, though.
|
||
/// However, the 4 size fields, as well as the palette, indicate that .GRF was
|
||
/// in fact originally designed as a 16-color format.
|
||
///
|
||
/// In contrast to .GRX, .GRF uses a separate RLE command + pixel data stream
|
||
/// for each bitplane, with a customizable [rle_run_byte].
|
||
|
||
#define GRF_MAGIC "HGRF"
|
||
|
||
#pragma push(pack, 1)
|
||
typedef struct {
|
||
char magic[sizeof(GRF_MAGIC) - 1];
|
||
int8_t unknown1; // Image count?
|
||
uint8_t rle_run_byte;
|
||
int16_t unknown2;
|
||
Planar<uint16_t> rle_size;
|
||
Palette4 pal;
|
||
} grf_header_t;
|
||
#pragma pop
|
||
/// ----------------------------------------------------------------
|