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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sun Jun 20 23:12:16 CEST 2010


Revision: 50100
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50100&view=rev
Author:   m_kiewitz
Date:     2010-06-20 21:12:15 +0000 (Sun, 20 Jun 2010)

Log Message:
-----------
SCI: implemented kPalVary(changeTicks)

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 20:52:31 UTC (rev 50099)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-06-20 21:12:15 UTC (rev 50100)
@@ -673,7 +673,7 @@
 			warning("kPalVary(reverse) called with ticks = %d, stop = %d, direction = %d", ticks, stepStop, direction);
 			return make_reg(0, result);
 		} else {
-			warning("kPalVary(1) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+			warning("kPalVary(reverse) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
 		}
 	}
 	case 2: { // Get Current Step
@@ -694,13 +694,18 @@
 		}
 		break;
 	}
-	case 4: { // Unknown
-		warning("kPalVary(4) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+	case 4: { // Change Target
+		// seems to be 1 parameter, we should find a game that is using this feature before implementing it
+		warning("kPalVary(changeTarget) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
 		break;
 	}
-	case 5: { // Unknown
-		// Called in xmas 1992 demo (2 parameters)
-		warning("kPalVary(5) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+	case 5: { // Change ticks
+		if (argc == 2) {
+			uint16 ticks = argv[1].toUint16();
+			g_sci->_gfxPalette->kernelPalVaryChangeTicks(ticks);
+		} else {
+			warning("kPalVary(changeTicks) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+		}
 		break;
 	}
 	case 6: { // Pause/Resume

Modified: scummvm/trunk/engines/sci/graphics/palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-20 20:52:31 UTC (rev 50099)
+++ scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-20 21:12:15 UTC (rev 50100)
@@ -519,6 +519,10 @@
 	g_sci->getTimerManager()->installTimerProc(&palVaryCallback, 1000000 / 60 * ticks, this);
 }
 
+void GfxPalette::palVaryRemoveTimer() {
+	g_sci->getTimerManager()->removeTimerProc(&palVaryCallback);
+}
+
 bool GfxPalette::kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, uint16 direction) {
 	if (_palVaryResourceId != -1)	// another palvary is taking place, return
 		return false;
@@ -564,6 +568,14 @@
 	return -_palVaryStep;
 }
 
+void GfxPalette::kernelPalVaryChangeTicks(uint16 ticks) {
+	_palVaryTicks = ticks;
+	if (_palVaryStep - _palVaryStepStop) {
+		palVaryRemoveTimer();
+		palVaryInstallTimer();
+	}
+}
+
 void GfxPalette::kernelPalVaryPause(bool pause) {
 	if (_palVaryResourceId == -1)
 		return;
@@ -578,7 +590,7 @@
 }
 
 void GfxPalette::kernelPalVaryDeinit() {
-	g_sci->getTimerManager()->removeTimerProc(&palVaryCallback);
+	palVaryRemoveTimer();
 
 	_palVaryResourceId = -1;	// invalidate the target palette
 }
@@ -624,7 +636,7 @@
 
 	// We don't need updates anymore, if we reached end-position
 	if (_palVaryStep == _palVaryStepStop)
-		g_sci->getTimerManager()->removeTimerProc(&palVaryCallback);
+		palVaryRemoveTimer();
 	if (_palVaryStep == 0)
 		_palVaryResourceId = -1;
 

Modified: scummvm/trunk/engines/sci/graphics/palette.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.h	2010-06-20 20:52:31 UTC (rev 50099)
+++ scummvm/trunk/engines/sci/graphics/palette.h	2010-06-20 21:12:15 UTC (rev 50100)
@@ -66,6 +66,7 @@
 	bool kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, uint16 direction);
 	int16 kernelPalVaryReverse(int16 ticks, uint16 stepStop, int16 direction);
 	int16 kernelPalVaryGetCurrentStep();
+	void kernelPalVaryChangeTicks(uint16 ticks);
 	void kernelPalVaryPause(bool pause);
 	void kernelPalVaryDeinit();
 	void palVaryUpdate();
@@ -77,6 +78,7 @@
 private:
 	void palVaryInit();
 	void palVaryInstallTimer();
+	void palVaryRemoveTimer();
 	bool palVaryLoadTargetPalette(GuiResourceId resourceId);
 	static void palVaryCallback(void *refCon);
 	void palVaryIncreaseSignal();


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