diff options
-rw-r--r-- | engines/sci/gui/gui_picture.cpp | 7 | ||||
-rw-r--r-- | engines/sci/gui/gui_screen.cpp | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/engines/sci/gui/gui_picture.cpp b/engines/sci/gui/gui_picture.cpp index e3b89ca816..1ba69b9849 100644 --- a/engines/sci/gui/gui_picture.cpp +++ b/engines/sci/gui/gui_picture.cpp @@ -321,8 +321,11 @@ void SciGuiPicture::drawVectorData(byte *data, int dataSize) { //warning("%X at %d", data[curPos], curPos); switch (pic_op = data[curPos++]) { case PIC_OP_SET_COLOR: - byte = data[curPos++]; - pic_color = isEGA ? EGApalette[byte] : byte; + pic_color = data[curPos++]; + if (isEGA) { + pic_color = EGApalette[pic_color]; + pic_color ^= pic_color << 4; + } break; case PIC_OP_DISABLE_VISUAL: pic_color = 0xFF; diff --git a/engines/sci/gui/gui_screen.cpp b/engines/sci/gui/gui_screen.cpp index 36826c77ba..c4429e57c9 100644 --- a/engines/sci/gui/gui_screen.cpp +++ b/engines/sci/gui/gui_screen.cpp @@ -204,8 +204,12 @@ void SciGuiScreen::dither() { for (y = 0; y < _height; y++) { for (x = 0; x < _width; x++) { color = *screenPtr; - color = ((x^y) & 1) ? color >> 4 : color & 0x0F; - *screenPtr++ = color; *displayPtr++ = color; + if (color & 0xF0) { + color ^= color << 4; + color = ((x^y) & 1) ? color >> 4 : color & 0x0F; + *screenPtr = color; *displayPtr = color; + } + screenPtr++; displayPtr++; } } } |