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().