aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/scene.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2007-01-31 23:48:12 +0000
committerJohannes Schickel2007-01-31 23:48:12 +0000
commit69788f3d70c7db865fadfce9247dd572cb7f2da1 (patch)
treef74cf016580682232835963b90bf6861ecd890cd /engines/kyra/scene.cpp
parentfd0e90588dc158911a35fe55a1bd4da76a708d35 (diff)
downloadscummvm-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.cpp18
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?