aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/gui/gui_picture.cpp7
-rw-r--r--engines/sci/gui/gui_screen.cpp8
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++;
}
}
}