GR graphics files are 8-bits-per-pixels but only 4-bits of color, with transparency and no palette.

#define DCF_PALETTE     1

#define TRANSPARENT 0xFF
#define BLACK       0
#define BLUE        1
#define GREEN       2
#define CYAN        3
#define RED         4
#define PURPLE      5
#define BROWN       6
#define LTGRAY      7
#define DKGRAY      8
#define LTBLUE      9
#define LTGREEN     10
#define LTCYAN      11
#define LTRED       12
#define LTPURPLE    13
#define YELLOW      14
#define WHITE       15

class CBGR48
{
    U16     r, g, b, pad;
};

CBGR48 gr_palette_std[16] = {

0x000000000000, 0x00000000AAAA, 0x0000AAAA0000, 0x0000AAAAAAAA,
0xAAAA00000000, 0xAAAA0000AAAA, 0xAAAA55550000, 0xAAAAAAAAAAAA,
0x555555555555, 0x55555555FFFF, 0x5555FFFF5555, 0x5555FFFFFFFF,
0xFFFF55555555, 0xFFFF5555FFFF, 0xFFFFFFFF5555, 0xFFFFFFFFFFFF};

class GRFile
{
    I32     width;
    I32     width_internal; //Rounded-up to multiple of 8.
    I32     height;
    I32     flags;
    CBGR48  palette[16];    //Included if DCF_PALETTE.
    U8      body[];
};

See DCSave(), GRWrite(), DCLoad(), and GRRead().