diff options
Diffstat (limited to 'scumm/smush/smush_player.cpp')
-rw-r--r-- | scumm/smush/smush_player.cpp | 16 |
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); |