This is a propsal to extend the progs.dat file format without breaking backwards compatability. Currently the progs file format header has a description simaler to this: struct { uint32_t version; uint32_t crc16; .... uint32_t entfield; } The obvious notable issue here is version and crc16 are larger than they essentially need to be, if we made version and crc16 both uint16_t we can give ourselfs 32 bytes (2x16) to store additional data that can be used to make smaller progs.dat files. I propose a new structual layout like this: struct { uint16_t version; uint16_t flags; /* contains a skip field */ uint16_t crc16; uint16_t skip; /* skiped globals */ .... uint32_t entfield; } about 45% of globals are zero, if we could order them at the top of the globals array we can essentially use the skip field to specify how much zero globals the engine would have to populate (instead of being stored in the actual file itself) flags can specify if the progs.dat file skiped globals on the write of the progs.dat file. Of course only one bit in the flags would have to be set to specify if the file contains a skip field. Which lends itself to the fact that flags could later be extended for other things.