diff options
author | Scott Percival | 2020-01-05 11:35:28 +0800 |
---|---|---|
committer | Scott Percival | 2020-01-05 11:35:40 +0800 |
commit | 2910e20a9209d544acf1c6e26c368d501de53cab (patch) | |
tree | d95795b5d111e7491efe1563b6198ead629f178e /engines/director | |
parent | 86db38520a5fd5e02a6e48b07da22c0072f495c6 (diff) | |
download | scummvm-rg350-2910e20a9209d544acf1c6e26c368d501de53cab.tar.gz scummvm-rg350-2910e20a9209d544acf1c6e26c368d501de53cab.tar.bz2 scummvm-rg350-2910e20a9209d544acf1c6e26c368d501de53cab.zip |
DIRECTOR: Re-add strange colour mapping for v3 and below
Diffstat (limited to 'engines/director')
-rw-r--r-- | engines/director/cast.cpp | 4 | ||||
-rw-r--r-- | engines/director/frame.cpp | 9 |
2 files changed, 9 insertions, 4 deletions
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp index 8ec151cb1b..4042f453bf 100644 --- a/engines/director/cast.cpp +++ b/engines/director/cast.cpp @@ -276,8 +276,8 @@ ShapeCast::ShapeCast(Common::ReadStreamEndian &stream, uint16 version) { _shapeType = static_cast<ShapeType>(stream.readByte()); _initialRect = Score::readRect(stream); _pattern = stream.readUint16BE(); - _fgCol = 0xff - (uint8)stream.readByte(); - _bgCol = 0xff - (uint8)stream.readByte(); + _fgCol = (127 - stream.readByte()) & 0xff; // -128 -> 0, 127 -> 256 + _bgCol = (127 - stream.readByte()) & 0xff; _fillType = stream.readByte(); _ink = static_cast<InkType>(_fillType & 0x3f); _lineThickness = stream.readByte(); diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp index 672e856b97..66cb7fd21f 100644 --- a/engines/director/frame.cpp +++ b/engines/director/frame.cpp @@ -197,8 +197,13 @@ void Frame::readChannels(Common::ReadStreamEndian *stream) { sprite._scriptId = stream->readByte(); sprite._spriteType = stream->readByte(); sprite._enabled = sprite._spriteType != 0; - sprite._foreColor = 0xff - (uint8)stream->readByte(); - sprite._backColor = 0xff - (uint8)stream->readByte(); + if (_vm->getVersion() >= 4) { + sprite._foreColor = 0xff - (uint8)stream->readByte(); + sprite._backColor = 0xff - (uint8)stream->readByte(); + } else { + sprite._foreColor = (127 - stream->readByte()) & 0xff; // -128 -> 0, 127 -> 256 + sprite._backColor = (127 - stream->readByte()) & 0xff; + } sprite._flags = stream->readUint16(); sprite._ink = static_cast<InkType>(sprite._flags & 0x3f); |