diff options
author | Johannes Schickel | 2007-01-31 23:48:12 +0000 |
---|---|---|
committer | Johannes Schickel | 2007-01-31 23:48:12 +0000 |
commit | 69788f3d70c7db865fadfce9247dd572cb7f2da1 (patch) | |
tree | f74cf016580682232835963b90bf6861ecd890cd /engines/kyra/scene.cpp | |
parent | fd0e90588dc158911a35fe55a1bd4da76a708d35 (diff) | |
download | scummvm-rg350-69788f3d70c7db865fadfce9247dd572cb7f2da1.tar.gz scummvm-rg350-69788f3d70c7db865fadfce9247dd572cb7f2da1.tar.bz2 scummvm-rg350-69788f3d70c7db865fadfce9247dd572cb7f2da1.zip |
Some changes to be closer to the original with palette handling.
svn-id: r25316
Diffstat (limited to 'engines/kyra/scene.cpp')
-rw-r--r-- | engines/kyra/scene.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/engines/kyra/scene.cpp b/engines/kyra/scene.cpp index e879e98186..3ab9b6b09b 100644 --- a/engines/kyra/scene.cpp +++ b/engines/kyra/scene.cpp @@ -822,18 +822,28 @@ void KyraEngine::initSceneObjectList(int brandonAlive) { } void KyraEngine::initSceneScreen(int brandonAlive) { - // XXX Palette stuff + if (_unkScreenVar1 && !queryGameFlag(0xA0)) { + for (int i = 0; i < 60; ++i) { + uint16 col = _screen->getPalette(0)[684+i]; + col += _screen->getPalette(1)[684+i] << 1; + col >>= 2; + _screen->getPalette(0)[684+i] = col; + } + _screen->setScreenPalette(_screen->getPalette(0)); + } + if (_unkScreenVar2 == 1) { _screen->shuffleScreen(8, 8, 304, 128, 2, 0, _unkScreenVar3, false); } else { _screen->copyRegion(8, 8, 8, 8, 304, 128, 2, 0); } + if (_unkScreenVar1 && _paletteChanged) { if (!queryGameFlag(0xA0)) { - // XXX Palette stuff - _screen->setScreenPalette(_screen->_currentPalette); + memcpy(_screen->getPalette(0) + 684, _screen->getPalette(1) + 684, 60); + _screen->setScreenPalette(_screen->getPalette(0)); } else { - // XXX Palette stuff + memset(_screen->getPalette(0), 0, 768); } } // really call this here? |