[Scummvm-cvs-logs] SF.net SVN: scummvm:[50085] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sun Jun 20 19:08:39 CEST 2010


Revision: 50085
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50085&view=rev
Author:   m_kiewitz
Date:     2010-06-20 17:08:39 +0000 (Sun, 20 Jun 2010)

Log Message:
-----------
SCI: implementing kPalVary(2)

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kgraphics.cpp
    scummvm/trunk/engines/sci/graphics/palette.cpp
    scummvm/trunk/engines/sci/graphics/palette.h

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-06-20 16:48:52 UTC (rev 50084)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-06-20 17:08:39 UTC (rev 50085)
@@ -653,7 +653,8 @@
 			ticks = argv[2].toUint16();
 			stepStop = argc >= 4 ? argv[3].toUint16() : 64;
 			direction = argc >= 5 ? argv[4].toUint16() : 1;
-			g_sci->_gfxPalette->kernelPalVaryInit(paletteId, ticks, stepStop, direction);
+			if (g_sci->_gfxPalette->kernelPalVaryInit(paletteId, ticks, stepStop, direction))
+				return SIGNAL_REG;
 			warning("kPalVary(init) called with paletteId = %d, ticks = %d, stop = %d, direction = %d", paletteId, ticks, stepStop, direction);
 		} else {
 			warning("kPalVary(init) called with unsupported argc %d", argc);
@@ -664,9 +665,13 @@
 		warning("kPalVary(1) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
 		break;
 	}
-	case 2: { // Unknown
-		// Called in QFG4 demo (1 parameter)
-		warning("kPalVary(2) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+	case 2: { // Get Current Step
+		if (argc == 1) {
+			int16 currentStep = g_sci->_gfxPalette->kernelPalVaryGetCurrentStep();
+			return make_reg(0, currentStep);
+		} else {
+			warning("kPalVary(GetCurrentStep) called with unsupported argc %d", argc);
+		}
 		break;
 	}
 	case 3: { // DeInit
@@ -687,11 +692,11 @@
 		warning("kPalVary(5) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
 		break;
 	}
-	case 6: { // Pause
+	case 6: { // Pause/Resume
 		bool pauseState;
 		if (argc == 2) {
 			pauseState = argv[1].isNull() ? false : true;
-			g_sci->_gfxPalette->kernelPalVaryToggle(pauseState);
+			g_sci->_gfxPalette->kernelPalVaryPause(pauseState);
 			warning("kPalVary(pause) called with state = %d", pauseState);
 		} else {
 			warning("kPalVary(pause) called with unsupported argc %d", argc);

Modified: scummvm/trunk/engines/sci/graphics/palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-20 16:48:52 UTC (rev 50084)
+++ scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-20 17:08:39 UTC (rev 50085)
@@ -488,11 +488,11 @@
 	_palVaryDirection = 0;
 }
 
-void GfxPalette::kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, int16 direction) {
+bool GfxPalette::kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, int16 direction) {
 	//kernelSetFromResource(resourceId, true);
 	//return;
 	if (_palVaryResourceId != -1)	// another palvary is taking place, return
-		return;
+		return false;
 
 	_palVaryResourceId = resourceId;
 	Resource *palResource = _resMan->findResource(ResourceId(kResourceTypePalette, resourceId), 0);
@@ -513,10 +513,20 @@
 		}
 		// Call signal increase every [ticks]
 		g_sci->getTimerManager()->installTimerProc(&palVaryCallback, 1000000 / 60 * ticks, this);
+		return true;
 	}
+	return false;
 }
 
-void GfxPalette::kernelPalVaryToggle(bool pause) {
+int16 GfxPalette::kernelPalVaryGetCurrentStep() {
+	if (_palVaryDirection >= 0)
+		return _palVaryStep;
+	return -_palVaryStep;
+}
+
+void GfxPalette::kernelPalVaryPause(bool pause) {
+	if (_palVaryResourceId == -1)
+		return;
 	// this call is actually counting states, so calling this 3 times with true will require calling it later
 	// 3 times with false to actually remove pause
 	if (pause) {

Modified: scummvm/trunk/engines/sci/graphics/palette.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.h	2010-06-20 16:48:52 UTC (rev 50084)
+++ scummvm/trunk/engines/sci/graphics/palette.h	2010-06-20 17:08:39 UTC (rev 50085)
@@ -62,8 +62,9 @@
 	void kernelAnimateSet();
 	void kernelAssertPalette(GuiResourceId resourceId);
 
-	void kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stopPercentage, int16 direction);
-	void kernelPalVaryToggle(bool pause);
+	bool kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stopPercentage, int16 direction);
+	int16 kernelPalVaryGetCurrentStep();
+	void kernelPalVaryPause(bool pause);
 	void kernelPalVaryDeinit();
 	void palVaryUpdate();
 	void palVaryProcess(int signal, bool setPalette);


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