From 1f2c92076b8ab941a783920e16896ebebab212c2 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jan 2010 03:44:40 +0000 Subject: Fix the GK1 CD intro sequence (regression from r46839, which fixed a regression from r46656). kPlatform with no arguments is different in SCI32. svn-id: r46874 --- engines/sci/engine/kmisc.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp index 819b3a78b7..76253ee516 100644 --- a/engines/sci/engine/kmisc.cpp +++ b/engines/sci/engine/kmisc.cpp @@ -252,18 +252,18 @@ enum kPlatformOps { }; reg_t kPlatform(EngineState *s, int argc, reg_t *argv) { - 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 :) + bool isWindows = ((SciEngine*)g_engine)->getPlatform() == Common::kPlatformWindows; + + if (argc == 0 && getSciVersion() < SCI_VERSION_2) { + // 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. However, the behavior + // changed for kPlatform with no parameters in SCI32. return NULL_REG; } - bool isWindows = ((SciEngine*)g_engine)->getPlatform() == Common::kPlatformWindows; - uint16 operation = argv[0].toUint16(); + uint16 operation = (argc == 0) ? 0 : argv[0].toUint16(); switch (operation) { case kPlatformUnk0: -- cgit v1.2.3