mirror of
https://github.com/spiffcode/hostile-takeover.git
synced 2025-12-16 12:08:36 +00:00
25 lines
724 B
C++
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
|