ScummVM API documentation
rnc_deco.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef COMMON_RNC_DECO_H
23#define COMMON_RNC_DECO_H
24
25
26namespace Common {
27
28// Decoder for RNC (Rob Norton Computing) ProPack compression.
30
31protected:
32 uint16 _rawTable[64];
33 uint16 _posTable[64];
34 uint16 _lenTable[64];
35 uint16 _crcTable[256];
36
37 uint16 _bitBuffl;
38 uint16 _bitBuffh;
39 uint8 _bitCount;
40
41 const uint8 *_srcPtr;
42 uint8 *_dstPtr;
43
44 int32 _inputByteLeft;
45
46public:
47 RncDecoder();
49 int32 unpackM1(const void *input, uint inputSize, void *output);
50 int32 unpackM2(const void *input, void *output);
51
52 static const uint32 kRnc1Signature = 0x524E4301; // "RNC\001"
53 static const uint32 kRnc2Signature = 0x524E4302; // "RNC\002"
54
55protected:
56 void initCrc();
57 uint16 crcBlock(const uint8 *block, uint32 size);
58 uint16 inputBits(uint8 amount);
59 void makeHufftable(uint16 *table);
60 uint16 inputValue(uint16 *table);
61 int getbit();
62};
63
64} // End of namespace Common
65
66#endif
Definition: rnc_deco.h:29
Definition: algorithm.h:29