diff options
author | Florian Kagerer | 2009-10-09 21:35:48 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-10-09 21:35:48 +0000 |
commit | 0d7d2b8371e5d903fe0390de8656e33bf0fabdb2 (patch) | |
tree | b382e3aabfc51c1974b0d91c6f02647464b8469b /engines | |
parent | e0b1ef6e463f4d817a87a9eeb85f4760c4980218 (diff) | |
download | scummvm-rg350-0d7d2b8371e5d903fe0390de8656e33bf0fabdb2.tar.gz scummvm-rg350-0d7d2b8371e5d903fe0390de8656e33bf0fabdb2.tar.bz2 scummvm-rg350-0d7d2b8371e5d903fe0390de8656e33bf0fabdb2.zip |
LOL/PC-98: fixed monster drawing bug (some wrong pixels)
svn-id: r44847
Diffstat (limited to 'engines')
-rw-r--r-- | engines/kyra/scene_lol.cpp | 5 | ||||
-rw-r--r-- | engines/kyra/sprites_lol.cpp | 20 |
2 files changed, 18 insertions, 7 deletions
diff --git a/engines/kyra/scene_lol.cpp b/engines/kyra/scene_lol.cpp index eee2d066ab..e0c22f6888 100644 --- a/engines/kyra/scene_lol.cpp +++ b/engines/kyra/scene_lol.cpp @@ -2173,6 +2173,11 @@ void LoLEngine::drawBlockEffects(int index, int type) { uint16 drawFlag = (type == 3) ? 0x80 : 0x20; uint8 *ovl = (type == 3) ? _screen->_grayOverlay : 0; + if (_flags.use16ColorMode) { + ovl = 0; + drawFlag = (type == 0 || type == 3) ? 0 : 0x20; + } + calcCoordinatesAddDirectionOffset(x, y, _currentDirection); x |= ((_visibleBlockIndex[index] & 0x1f) << 8); diff --git a/engines/kyra/sprites_lol.cpp b/engines/kyra/sprites_lol.cpp index 2dfff893e8..26e47894a0 100644 --- a/engines/kyra/sprites_lol.cpp +++ b/engines/kyra/sprites_lol.cpp @@ -691,11 +691,11 @@ void LoLEngine::drawMonster(uint16 id) { int bloodType = m->properties->flags & 0xc000; if (bloodType == 0x4000) - bloodType = 63; + bloodType = _flags.use16ColorMode ? 0xbb : 63; else if (bloodType == 0x8000) - bloodType = 15; + bloodType = _flags.use16ColorMode ? 0x55 : 15; else if (bloodType == 0xc000) - bloodType = 74; + bloodType = _flags.use16ColorMode ? 0x33 : 74; else bloodType = 0; @@ -1021,11 +1021,17 @@ uint8 *LoLEngine::drawItemOrMonster(uint8 *shape, uint8 *table, int x, int y, in if (flags & 0x40) flg |= 2; - if (_currentLevel == 22) { - if (ovl) - ovl[255] = 0; + if (_flags.use16ColorMode) { + if (_currentLevel = 22) + flg &= 0xdfff; + } else { - flg |= 0x2000; + if (_currentLevel == 22) { + if (ovl) + ovl[255] = 0; + } else { + flg |= 0x2000; + } } _shpDmX += ((_dmScaleW * fineX) >> 8); |