aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/kmisc.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp
index 6522f78ce7..819b3a78b7 100644
--- a/engines/sci/engine/kmisc.cpp
+++ b/engines/sci/engine/kmisc.cpp
@@ -252,10 +252,18 @@ enum kPlatformOps {
};
reg_t kPlatform(EngineState *s, int argc, reg_t *argv) {
- bool isWindows = ((SciEngine*)g_engine)->getPlatform() == Common::kPlatformWindows;
+ if (argc == 0) {
+ // This is called in KQ5CD with no parameters, where
+ // it seems to do some graphics driver check. This
+ // kernel function didn't have subfunctions then.
+ // If 0 is returned, the game functions normally,
+ // otherwise all the animations show up like a
+ // slideshow (e.g. in the intro). So we return 0 :)
+ return NULL_REG;
+ }
- // No arguments is the same as operation 0
- uint16 operation = (argc == 1) ? argv[0].toUint16() : 0;
+ bool isWindows = ((SciEngine*)g_engine)->getPlatform() == Common::kPlatformWindows;
+ uint16 operation = argv[0].toUint16();
switch (operation) {
case kPlatformUnk0: