/** * ART files for Imagination Pilots Entertainment 32-bit games (IPE32) * - Where's Waldo? Exploring Geography * - Eraser Turnabout by Imagination Pilots * - Virtual K'Nex by Imagination Pilots * ART file packer and unpacker by Daniel Marschall, ViaThinkSoft (C) 2018 * Revision: 2018-02-15 **/ #ifndef __inc__ipe32_artfile #define __inc__ipe32_artfile #include #define IPE32_COMPRESSIONTYPE_LZW 0 #define IPE32_COMPRESSIONTYPE_NONE 1 #define IPE32_NAME_SIZE 8 #define IPE32_MAGIC_ART "ART_DATA" #pragma pack(push, 1) typedef struct tagIpe32FileHeader { char magic[IPE32_NAME_SIZE]; // always "ART_DATA" uint32_t totalHeaderSize; // size of all headers (file header and all picture headers). headerSize/16 = numberPictures uint32_t reserved; // always 0 } Ipe32FileHeader; typedef struct tagIpe32PictureEntryHeader { char name[IPE32_NAME_SIZE]; uint32_t offset; // offset to the picture (Ipe32PictureHeader) uint32_t uncompressedSize; // size of the picture (picture data + palette) } Ipe32PictureEntryHeader; /* typedef struct tagIpe32PictureChunk { unsigned compressionType : 1; // Compression type of the follow-up data // 0 = LZW-like compression (special implementation) // 1 = None unsigned chunkDataSize : 15; // size of the chunk data //char data[]; } Ipe32PictureChunk; */ #pragma pack(pop) #endif // #ifndef __inc__ipe32_artfile