aboutsummaryrefslogtreecommitdiff
path: root/scumm/smush/smush_player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/smush/smush_player.cpp')
-rw-r--r--scumm/smush/smush_player.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/scumm/smush/smush_player.cpp b/scumm/smush/smush_player.cpp
index a29b7ac65c..cd4c5e0be1 100644
--- a/scumm/smush/smush_player.cpp
+++ b/scumm/smush/smush_player.cpp
@@ -24,6 +24,7 @@
#include "common/util.h"
#include "common/engine.h"
#include "scumm/scumm.h"
+#include "scumm/bomp.h"
#include "scumm/sound.h"
#include "scumm/imuse.h"
#include "scumm/imuse_digi.h"
@@ -660,8 +661,6 @@ void SmushPlayer::handleNewPalette(Chunk &b) {
setPalette(_pal);
}
-extern void smush_decode_codec1(byte *dst, byte *src, int height);
-
void SmushPlayer::handleFrameObject(Chunk &b) {
checkBlock(b, TYPE_FOBJ, 14);
if(_skipNext) {
@@ -698,7 +697,20 @@ void SmushPlayer::handleFrameObject(Chunk &b) {
switch (codec) {
case 1:
case 3:
+#if 1
+ // FIXME: I am not 100% sure if this is correct. I tried to test this,
+ // but the only place I found codec 1 being used was in the FT.
+ // Yet either in all the cases is the codec used to encode an all-black
+ // frame, or smush_decode_codec1 already produces invalid (all-black?)
+ //
+ // BTW regarding codec 3: I haven't yet actually seen it being used,
+ // but is it really identical to codec 1? Or isn't it maybe a
+ // 'reverse' version (see also bompDecodeLineReverse).
+ decompressBomp(_data, chunk_buffer, _width, _height);
+#else
+ extern void smush_decode_codec1(byte *dst, byte *src, int height);
smush_decode_codec1(_data, chunk_buffer, _height);
+#endif
break;
case 37:
_codec37.decode(_data, chunk_buffer);