aboutsummaryrefslogtreecommitdiff
path: root/scumm/smush/codec1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/smush/codec1.cpp')
-rw-r--r--scumm/smush/codec1.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/scumm/smush/codec1.cpp b/scumm/smush/codec1.cpp
index 374d2440dd..2a2d340a1e 100644
--- a/scumm/smush/codec1.cpp
+++ b/scumm/smush/codec1.cpp
@@ -22,12 +22,11 @@
#include <stdafx.h>
#include "codec1.h"
#include "chunk.h"
-#include "blitter.h"
Codec1Decoder::~Codec1Decoder() {
}
-bool Codec1Decoder::decode(Blitter &dst, Chunk &src) {
+bool Codec1Decoder::decode(byte *dst, Chunk &src) {
byte val;
int32 size_line;
int32 code, length;
@@ -40,18 +39,17 @@ bool Codec1Decoder::decode(Blitter &dst, Chunk &src) {
#endif
while(size_line > 0) {
code = src.getByte();
- size_line --;
+ size_line--;
length = (code >> 1) + 1;
#ifdef DEBUG_CODEC1
debug(7, "codec1 : length == %d", length);
#endif
if(code & 1) {
val = src.getByte();
- size_line --;
- if(val)
- dst.put(val, length);
- else
- dst.advance(length);
+ size_line--;
+ if (val)
+ memset(dst, val, length);
+ dst += length;
#ifdef DEBUG_CODEC1
debug(7, "codec1 : blitting %d times %d", length, val);
#endif
@@ -62,9 +60,9 @@ bool Codec1Decoder::decode(Blitter &dst, Chunk &src) {
#endif
while(length--) {
val = src.getByte();
- if(val)
- dst.put(val);
- else dst.advance();
+ if (val)
+ *dst = val;
+ dst++;
}
}
}