#include #include #include #include #include #include #include "compressAlgo.h" // LO size 1, 964, 11 bits // LO size 2, 198, 9 bits // LO size 3, 286, 10 bits // 4 bits mode // tilemap size 14 bits // symbol size 14 bits struct VecSizes { size_t tileSize; size_t flipSize; size_t palSize; }; struct TileHeader { CompressionMode mode; unsigned int tilemapSize; unsigned int symbolSize; unsigned int loSize; unsigned int header[2]; }; struct CompressVectors { std::vector loVec; std::vector symVec; }; struct CompressionResult { size_t tilemapSize; size_t compressedSize = 0; CompressVectors vecs; TileHeader header; std::vector writeVec; bool failed = false; }; std::vector readFileAsUS(std::string filePath); CompressionResult compressTileset(std::string fileName); void deltaEncodeTileNums(std::vector *pTileNums); void deltaDecodeTileNums(std::vector *pTileNums); CompressVectors compressVector(std::vector *pVec); std::vector refineCompression(std::vector *pVec); std::vector decompressVector(std::vector *pVec); size_t getTotalSize(std::vector *input); TileHeader getHeader(CompressionResult compression); TileHeader readTileHeader(unsigned int *data); std::vector getWriteVecs(CompressionResult compression); bool verifyTileCompression(std::vector compression, std::vector input);