aboutsummaryrefslogtreecommitdiff
path: root/sky/rnc_deco.cpp
diff options
context:
space:
mode:
authorMax Horn2003-03-06 16:55:15 +0000
committerMax Horn2003-03-06 16:55:15 +0000
commit90680fe9bb614c1c5b7030821445e294c937f152 (patch)
treec7897e795655e8d0221073c1c1030e93ff259d46 /sky/rnc_deco.cpp
parent7b43dd1754f40abcbe54ebf6c55843fcb1688831 (diff)
downloadscummvm-rg350-90680fe9bb614c1c5b7030821445e294c937f152.tar.gz
scummvm-rg350-90680fe9bb614c1c5b7030821445e294c937f152.tar.bz2
scummvm-rg350-90680fe9bb614c1c5b7030821445e294c937f152.zip
More cleanup
svn-id: r6717
Diffstat (limited to 'sky/rnc_deco.cpp')
-rw-r--r--sky/rnc_deco.cpp34
1 files changed, 12 insertions, 22 deletions
diff --git a/sky/rnc_deco.cpp b/sky/rnc_deco.cpp
index 74339347c9..d9ed737f8c 100644
--- a/sky/rnc_deco.cpp
+++ b/sky/rnc_deco.cpp
@@ -20,13 +20,11 @@
*/
#include <string.h>
+#include <stdio.h>
+#include <assert.h>
#include "common/scummsys.h"
#include "sky/rnc_deco.h"
-#define ROL(x, n) (((x) << (n)) | ((x) >> (16 - (n))))
-#define ROR(x, n) (((x) << (16 - (n))) | ((x) >> (n)))
-#define XCHG(a, b) (a ^=b, b ^= a, a ^= b)
-
//conditional flags
#define CHECKSUMS 1
#define PROTECTED 0
@@ -105,18 +103,16 @@ uint16 RncDecoder::inputBits(uint8 amount)
if (newBitCount < 0) {
newBitCount += amount;
- XCHG(newBitCount, amount);
- remBits = ROR((uint16)(((1 << amount) - 1) & newBitBuffh), amount);
- newBitBuffh >>= amount;
- newBitBuffl >>= amount;
+ remBits = (newBitBuffh << (16-newBitCount));
+ newBitBuffh >>= newBitCount;
+ newBitBuffl >>= newBitCount;
newBitBuffl |= remBits;
_srcPtr += 2;
newBitBuffh = READ_LE_UINT16(_srcPtr);
- XCHG(newBitCount, amount);
amount -= newBitCount;
newBitCount = 16 - amount;
}
- remBits = ROR((uint16)(((1 << amount) - 1) & newBitBuffh), amount);
+ remBits = (newBitBuffh << (16-amount));
_bitBuffh = newBitBuffh >> amount;
_bitBuffl = (newBitBuffl >> amount) | remBits;
_bitCount = (uint8)newBitCount;
@@ -256,18 +252,12 @@ int32 RncDecoder::unpackM1(void *input, void *output, uint16 key)
memcpy(_dstPtr, _srcPtr, inputLength); //memcpy is allowed here
_dstPtr += inputLength;
_srcPtr += inputLength;
- uint16 b = READ_LE_UINT16(_srcPtr);
- uint16 a = ROL(b, _bitCount);
- uint16 d = ((1 << _bitCount) - 1);
- _bitBuffl &= d;
- d &= a;
-
- a = READ_LE_UINT16((_srcPtr + 2));
- b = (b << _bitCount);
- a = (a << _bitCount);
- a |= d;
- _bitBuffl |= b;
- _bitBuffh = a;
+ uint16 a = READ_LE_UINT16(_srcPtr);
+ uint16 b = READ_LE_UINT16(_srcPtr + 2);
+
+ _bitBuffl &= ((1 << _bitCount) - 1);
+ _bitBuffl |= (a << _bitCount);
+ _bitBuffh = (a >> (16 - _bitCount)) | (b << _bitCount);
}
if (counts > 1) {