diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/access/video/movie_decoder.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/engines/access/video/movie_decoder.cpp b/engines/access/video/movie_decoder.cpp index c67dac6379..3e1a4962c0 100644 --- a/engines/access/video/movie_decoder.cpp +++ b/engines/access/video/movie_decoder.cpp @@ -617,13 +617,17 @@ bool AccessVIDMovieDecoder::StreamVideoTrack::skipOverPalette(Common::SeekableRe } void AccessVIDMovieDecoder::StreamVideoTrack::decodePalette(Common::SeekableReadStream *stream) { + byte red, green, blue; assert(stream); // VID files use a 6-bit palette and not a 8-bit one, we change it to 8-bit for (uint16 curColor = 0; curColor < 256; curColor++) { - _palette[curColor * 3] = stream->readByte() << 2; - _palette[curColor * 3 + 1] = stream->readByte() << 2; - _palette[curColor * 3 + 2] = stream->readByte() << 2; + red = stream->readByte() & 0x3F; + green = stream->readByte() & 0x3F; + blue = stream->readByte() & 0x3F; + _palette[curColor * 3] = (red << 2) | (red >> 4); + _palette[curColor * 3 + 1] = (green << 2) | (green >> 4); + _palette[curColor * 3 + 2] = (blue << 2) | (blue >> 4); } _dirtyPalette = true; |