hostile-takeover/game/compression.cpp
2014-07-06 17:47:28 -07:00

25 lines
724 B
C++

#include "ht.h"
#include "mpshared/decompress.h"
namespace wi {
void DecompressToCache(byte *pbCompressed, CacheHandle hc, CompressionHeader *pcoh)
{
// Writing to the cache requires use of gcam.Write()
byte *pbCache = (byte *)gcam.GetPtr(hc);
byte *pbCompressedT = pbCompressed;
word cbDecompressed = 0;
word cb;
while ((cb = DecompressChunk(&pbCompressedT, gpbScratch, pbCache + cbDecompressed, gcbScratch / 2)) != 0) {
gcam.Write(hc, cbDecompressed, gpbScratch, cb);
cbDecompressed += cb;
if (cbDecompressed == BigWord(pcoh->cbUncompressed))
break;
Assert(cbDecompressed <= BigWord(pcoh->cbUncompressed));
Assert(pbCompressedT <= pbCompressed + BigWord(pcoh->cbCompressed));
}
}
} // namespace wi