aboutsummaryrefslogtreecommitdiff
path: root/backends/PalmOS/Src/arm/decompresstony.cpp
blob: 7b602816ac054d7decc7e21ad140362a0bfff3ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "native.h"
#include "endianutils.h"

#define MAIN_TYPE	CompressType
#include "macros.h"

UInt32 Screen_decompressTony(void *userData68KP) {
// import variables
	SETPTR	(UInt8 *	,src	);
	SET32	(UInt32,	compSize);
	SETPTR	(UInt8 *	,dest	);
// end of import

	uint8 *endOfData = src + compSize;
	while (src < endOfData) {
		uint8 numFlat = *src++;
		if (numFlat) {
			MemSet(dest, numFlat, *src);
			src++;
			dest += numFlat;
		}
		if (src < endOfData) {
			uint8 numNoFlat = *src++;
			MemMove(dest, src, numNoFlat);
			src += numNoFlat;
			dest += numNoFlat;
		}
	}

	return 0;
}