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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Jun 22 19:05:01 CEST 2010


Revision: 50153
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50153&view=rev
Author:   m_kiewitz
Date:     2010-06-22 17:05:00 +0000 (Tue, 22 Jun 2010)

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

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-22 16:42:49 UTC (rev 50152)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-06-22 17:05:00 UTC (rev 50153)
@@ -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(reverse) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+			warning("kPalVary(reverse) called with unsupported argc %d", argc);
 		}
 	}
 	case 2: { // Get Current Step
@@ -681,7 +681,7 @@
 			int16 currentStep = g_sci->_gfxPalette->kernelPalVaryGetCurrentStep();
 			return make_reg(0, currentStep);
 		} else {
-			warning("kPalVary(GetCurrentStep) called with unsupported argc %d", argc);
+			warning("kPalVary(getCurrentStep) called with unsupported argc %d", argc);
 		}
 		break;
 	}
@@ -695,8 +695,13 @@
 		break;
 	}
 	case 4: { // Change Target
-		// seems to be 1 parameter, we should find a game that is using this feature before implementing it
-		error("kPalVary(changeTarget) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+		if (argc == 2) {
+			GuiResourceId paletteId = argv[1].toUint16();
+			int16 currentStep = g_sci->_gfxPalette->kernelPalVaryChangeTarget(paletteId);
+			return make_reg(0, currentStep);
+		} else {
+			warning("kPalVary(changeTarget) called with unsupported argc %d", argc);
+		}
 		break;
 	}
 	case 5: { // Change ticks
@@ -704,7 +709,7 @@
 			uint16 ticks = argv[1].toUint16();
 			g_sci->_gfxPalette->kernelPalVaryChangeTicks(ticks);
 		} else {
-			warning("kPalVary(changeTicks) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+			warning("kPalVary(changeTicks) called with unsupported argc %d", argc);
 		}
 		break;
 	}

Modified: scummvm/trunk/engines/sci/graphics/palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-22 16:42:49 UTC (rev 50152)
+++ scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-22 17:05:00 UTC (rev 50153)
@@ -572,6 +572,21 @@
 	return -_palVaryStep;
 }
 
+int16 GfxPalette::kernelPalVaryChangeTarget(GuiResourceId resourceId) {
+	if (_palVaryResourceId != -1) {
+		Resource *palResource = _resMan->findResource(ResourceId(kResourceTypePalette, resourceId), false);
+		if (palResource) {
+			Palette insertPalette;
+			createFromData(palResource->data, &insertPalette);
+			// insert new palette into target
+			insert(&insertPalette, &_palVaryTargetPalette);
+			// update palette and set on screen
+			palVaryProcess(0, true);
+		}
+	}
+	return kernelPalVaryGetCurrentStep();
+}
+
 void GfxPalette::kernelPalVaryChangeTicks(uint16 ticks) {
 	_palVaryTicks = ticks;
 	if (_palVaryStep - _palVaryStepStop) {

Modified: scummvm/trunk/engines/sci/graphics/palette.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.h	2010-06-22 16:42:49 UTC (rev 50152)
+++ scummvm/trunk/engines/sci/graphics/palette.h	2010-06-22 17:05:00 UTC (rev 50153)
@@ -66,6 +66,7 @@
 	bool kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, uint16 direction);
 	int16 kernelPalVaryReverse(int16 ticks, uint16 stepStop, int16 direction);
 	int16 kernelPalVaryGetCurrentStep();
+	int16 kernelPalVaryChangeTarget(GuiResourceId resourceId);
 	void kernelPalVaryChangeTicks(uint16 ticks);
 	void kernelPalVaryPause(bool pause);
 	void kernelPalVaryDeinit();


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