aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood
diff options
context:
space:
mode:
authorFilippos Karapetis2014-01-01 20:06:39 +0200
committerFilippos Karapetis2014-01-01 20:08:44 +0200
commit4dc80ffdfe9527865ffc5ce19233a200d94b0245 (patch)
treec35e1224951b61c984fa70bd361c3bfd98b529f3 /engines/neverhood
parentbade0e45b0ca0b550019a9bd3cea92a186300dcf (diff)
downloadscummvm-rg350-4dc80ffdfe9527865ffc5ce19233a200d94b0245.tar.gz
scummvm-rg350-4dc80ffdfe9527865ffc5ce19233a200d94b0245.tar.bz2
scummvm-rg350-4dc80ffdfe9527865ffc5ce19233a200d94b0245.zip
NEVERHOOD: Fix the mouse cursor in scene 3, module 3000 (after bridge)
Color 255 should be white. Right now, this is a scene-specific workaround to avoid rechecking all scenes just for a glitch that happens in a specific scene. Many thanks to eriktorbjorn for figuring out that this is a palette issue, instead of a resource issue
Diffstat (limited to 'engines/neverhood')
-rw-r--r--engines/neverhood/smackerplayer.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/engines/neverhood/smackerplayer.cpp b/engines/neverhood/smackerplayer.cpp
index 4b4982f68e..b560279857 100644
--- a/engines/neverhood/smackerplayer.cpp
+++ b/engines/neverhood/smackerplayer.cpp
@@ -21,6 +21,7 @@
*/
#include "graphics/palette.h"
+#include "neverhood/gamemodule.h"
#include "neverhood/smackerplayer.h"
#include "neverhood/palette.h"
#include "neverhood/resourceman.h"
@@ -251,6 +252,15 @@ void SmackerPlayer::updatePalette() {
tempPalette[i * 4 + 1] = smackerPalette[i * 3 + 1];
tempPalette[i * 4 + 2] = smackerPalette[i * 3 + 2];
}
+
+ // WORKAROUND: Scene 3, module 3000 defines a black color 255 instead of
+ // white, which results in the mouse cursor showing black. I'm not sure if
+ // color 255 is always supposed to be white. It's not feasible to check
+ // all scenes for a glitch that only seems to manifest in one, therefore
+ // we define color 255 to be white only for that scene.
+ if (_vm->_gameModule->getCurrentModuleNum() == 3000 && _vm->_gameState.sceneNum == 3)
+ tempPalette[255 * 4 + 0] = tempPalette[255 * 4 + 1] = tempPalette[255 * 4 + 2] = 0xFF;
+
_palette->copyPalette(tempPalette, 0, 256, 0);
}