[Scummvm-cvs-logs] SF.net SVN: scummvm:[46009] scummvm/trunk/engines/sci/engine/state.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Fri Nov 20 16:16:03 CET 2009


Revision: 46009
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46009&view=rev
Author:   thebluegr
Date:     2009-11-20 15:16:03 +0000 (Fri, 20 Nov 2009)

Log Message:
-----------
Check the overridden game object when performing setCursor detection, which properly fixes KQ5CD (thanks waltervn)

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/state.cpp

Modified: scummvm/trunk/engines/sci/engine/state.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/state.cpp	2009-11-20 14:51:15 UTC (rev 46008)
+++ scummvm/trunk/engines/sci/engine/state.cpp	2009-11-20 15:16:03 UTC (rev 46009)
@@ -236,34 +236,41 @@
 bool EngineState::autoDetectFeature(FeatureDetection featureDetection, int methodNum) {
 	Common::String objName;
 	Selector slc;
+	reg_t objAddr;
 
 	// Get address of target script
 	switch (featureDetection) {
 	case kDetectGfxFunctions:
 		objName = "Rm";
+		objAddr = _segMan->findObjectByName(objName);
 		slc = _kernel->_selectorCache.overlay;
 		break;			
 	case kDetectMoveCountType:
 		objName = "Motion";
+		objAddr = _segMan->findObjectByName(objName);
 		slc = _kernel->_selectorCache.doit;
 		break;
 	case kDetectSoundType:
 		objName = "Sound";
+		objAddr = _segMan->findObjectByName(objName);
 		slc = _kernel->_selectorCache.play;
 		break;
 	case kDetectSetCursorType:
 		objName = "Game";
+		// We need to check the overridden game object here. Fixes KQ5CD setCursor detection,
+		// as KQ5CD overrides the default setCursor selector of the Game object
+		objAddr = _gameObj;
 		slc = _kernel->_selectorCache.setCursor;
 		break;
 	case kDetectLofsType:
 		objName = "Game";
+		objAddr = _segMan->findObjectByName(objName);
 		break;
 	default:
 		break;
 	}
 
 	reg_t addr;
-	reg_t objAddr = _segMan->findObjectByName(objName);
 	if (objAddr.isNull()) {
 		warning("autoDetectFeature: %s object couldn't be found", objName.c_str());
 		return false;
@@ -464,12 +471,6 @@
 			}
 		}
 
-		if (_gameName == "kq5" && Common::File::exists("audio001.002")) {
-			// WORKAROUND for KQ5CD: The code of the setCursor selector has not been yet
-			// rewritten for cursor views, but the game does use cursor views
-			_setCursorType = SCI_VERSION_1_1;
-		}
-
 		debugC(1, kDebugLevelGraphics, "Detected SetCursor type: %s", getSciVersionDesc(_setCursorType).c_str());
 	}
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list