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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Oct 20 18:11:32 CEST 2009


Revision: 45273
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45273&view=rev
Author:   m_kiewitz
Date:     2009-10-20 16:11:31 +0000 (Tue, 20 Oct 2009)

Log Message:
-----------
SCI/newgui: kPalette cleanup, preparing for sq5 paletteAnimate support

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kernel.cpp
    scummvm/trunk/engines/sci/engine/kernel.h
    scummvm/trunk/engines/sci/engine/kgraphics.cpp
    scummvm/trunk/engines/sci/gui/gui.cpp
    scummvm/trunk/engines/sci/gui/gui.h
    scummvm/trunk/engines/sci/gui/gui_palette.cpp
    scummvm/trunk/engines/sci/gui/gui_palette.h
    scummvm/trunk/engines/sci/gui32/gui32.cpp
    scummvm/trunk/engines/sci/gui32/gui32.h

Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp	2009-10-20 16:11:31 UTC (rev 45273)
@@ -337,6 +337,7 @@
 
 	// its a stub, but its needed for Pharkas to work
 	DEFUN("PalVary", kPalVary, "ii*"),
+	DEFUN("AssertPalette", kAssertPalette, "i"),
 
 #if 0
 	// Stub functions
@@ -345,7 +346,6 @@
 	DEFUN("ListOps", kListOps, ".*"),
 	DEFUN("ATan", kATan, ".*"),
 	DEFUN("MergePoly", kMergePoly, ".*"),
-	DEFUN("AssertPalette", kAssertPalette, ".*"),
 	DEFUN("Record", kRecord, ".*"),
 	DEFUN("PlayBack", kPlayBack, ".*"),
 	DEFUN("DbugStr", kDbugStr, ".*"),

Modified: scummvm/trunk/engines/sci/engine/kernel.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.h	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/engine/kernel.h	2009-10-20 16:11:31 UTC (rev 45273)
@@ -303,6 +303,7 @@
 reg_t kLock(EngineState *s, int argc, reg_t *argv);
 reg_t kPalette(EngineState *s, int argc, reg_t *argv);
 reg_t kPalVary(EngineState *s, int argc, reg_t *argv);
+reg_t kAssertPalette(EngineState *s, int argc, reg_t *argv);
 reg_t kNumCels(EngineState *s, int argc, reg_t *argv);
 reg_t kNumLoops(EngineState *s, int argc, reg_t *argv);
 reg_t kDrawCel(EngineState *s, int argc, reg_t *argv);

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-10-20 16:11:31 UTC (rev 45273)
@@ -559,55 +559,70 @@
 }
 
 reg_t kPalette(EngineState *s, int argc, reg_t *argv) {
-//	warning("kPalette %d", argv[0].toUint16());
 	switch (argv[0].toUint16()) {
-	case 1:
+	case 1: // Set resource palette
 		if (argc==3) {
-			int resourceNo = argv[1].toUint16();
-			int flags = argv[2].toUint16();
-			s->_gui->paletteSet(resourceNo, flags);
+			GuiResourceId resourceId = argv[1].toUint16();
+			uint16 flags = argv[2].toUint16();
+			s->_gui->paletteSet(resourceId, flags);
 		}
 		break;
-	case 2:
-		debug(5, "STUB: kPalette() effect 2, set flag to colors");
+	case 2: // Set flag to colors
+		warning("kPalette(2), set flag to colors");
 		break;
-	case 3:
-		debug(5, "STUB: kPalette() effect 3, clear flag to colors");
+	case 3:	// Clear flag to colors
+		warning("kPalette(3), clear flag to colors");
 		break;
 	case 4:	{ // Set palette intensity
-		if (argc >= 4) {
-			int16 fromColor = CLIP<int>(argv[1].toUint16(), 1, 255);
-			int16 toColor = CLIP<int>(argv[2].toUint16(), 1, 255);
-			int16 intensity = argv[3].toUint16();
+		switch (argc) {
+		case 4:
+		case 5: {
+			uint16 fromColor = CLIP<int>(argv[1].toUint16(), 1, 255);
+			uint16 toColor = CLIP<int>(argv[2].toUint16(), 1, 255);
+			uint16 intensity = argv[3].toUint16();
 			bool setPalette = (argc < 5) ? true : (argv[4].isNull()) ? true : false;
 
 			s->_gui->paletteSetIntensity(fromColor, toColor, intensity, setPalette);
+			break;
 		}
+		default:
+			warning("kPalette(4) called with %d parameters", argc);
+		}
 		break;
 	}
 	case 5: { // Find closest color
-		int r = argv[1].toUint16();
-		int g = argv[2].toUint16();
-		int b = argv[3].toUint16();
+		uint16 r = argv[1].toUint16();
+		uint16 g = argv[2].toUint16();
+		uint16 b = argv[3].toUint16();
 
 		return make_reg(0, s->_gui->paletteFind(r, g, b));
 	}
-	case 6:
-		if (argc==4) {
-			int fromColor = argv[1].toUint16();
-			int toColor = argv[2].toUint16();
-			int speed = argv[3].toSint16();
+	case 6: { // Animate
+		switch (argc) {
+		case 4: {
+			uint16 fromColor = argv[1].toUint16();
+			uint16 toColor = argv[2].toUint16();
+			uint16 speed = argv[3].toSint16();
 			s->_gui->paletteAnimate(fromColor, toColor, speed);
+			break;
 		}
+		case 22:
+
+		default:
+			warning("kPalette(6) called with %d parameters", argc);
+		}
 		break;
-	case 7:
-		debug(5, "STUB: kPalette() effect 7, save palette to heap");
+	}
+	case 7: { // Save palette to heap
+		warning("kPalette(7), save palette to heap STUB");
 		break;
-	case 8:
-		debug(5, "STUB: kPalette() effect 8, set stored palette");
+	}
+	case 8: { // Restore palette from heap
+		warning("kPalette(8), set stored palette STUB");
 		break;
+	}
 	default:
-		warning("kPalette(): Unimplemented subfunction: %d", argv[0].toUint16());
+		warning("kPalette(%d), not implemented", argv[0].toUint16());
 	}
 
 	return s->r_acc;
@@ -619,6 +634,12 @@
 	return NULL_REG;
 }
 
+reg_t kAssertPalette(EngineState *s, int argc, reg_t *argv) {
+	GuiResourceId viewId = argv[1].toUint16();
+	warning("kAssertPalette() called with viewId = %d", viewId);
+	return s->r_acc;
+}
+
 static void disableCertainButtons(SegManager *segMan, Common::String gameName, reg_t obj) {
 	reg_t text_pos = GET_SEL32(segMan, obj, text);
 	Common::String text;

Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-20 16:11:31 UTC (rev 45273)
@@ -457,20 +457,20 @@
 }
 
 
-void SciGui::paletteSet(int resourceNo, int flags) {
-   _palette->setFromResource(resourceNo, flags);
+void SciGui::paletteSet(GuiResourceId resourceId, uint16 flags) {
+   _palette->setFromResource(resourceId, flags);
 }
 
-int16 SciGui::paletteFind(int r, int g, int b) {
+int16 SciGui::paletteFind(uint16 r, uint16 g, uint16 b) {
 	return _palette->matchColor(&_palette->_sysPalette, r, g, b) & 0xFF;
 }
 
-void SciGui::paletteSetIntensity(int fromColor, int toColor, int intensity, bool setPalette) {
+void SciGui::paletteSetIntensity(uint16 fromColor, uint16 toColor, uint16 intensity, bool setPalette) {
 	_palette->setIntensity(fromColor, toColor, intensity, setPalette);
 }
 
-void SciGui::paletteAnimate(int fromColor, int toColor, int speed) {
-	// kAnimate gets called for Amiga as well, but for colors above 32, so it doesnt make sense
+void SciGui::paletteAnimate(uint16 fromColor, uint16 toColor, uint16 speed) {
+	// we are also called on Amiga as well, but for colors above 32, so it doesnt make sense
 	if (!_s->resMan->isVGA())
 		return;
 

Modified: scummvm/trunk/engines/sci/gui/gui.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.h	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/gui/gui.h	2009-10-20 16:11:31 UTC (rev 45273)
@@ -100,10 +100,10 @@
 
 	virtual int16 picNotValid(int16 newPicNotValid);
 
-	virtual void paletteSet(int resourceNo, int flags);
-	virtual int16 paletteFind(int r, int g, int b);
-	virtual void paletteSetIntensity(int fromColor, int toColor, int intensity, bool setPalette);
-	virtual void paletteAnimate(int fromColor, int toColor, int speed);
+	virtual void paletteSet(GuiResourceId resourceNo, uint16 flags);
+	virtual int16 paletteFind(uint16 r, uint16 g, uint16 b);
+	virtual void paletteSetIntensity(uint16 fromColor, uint16 toColor, uint16 intensity, bool setPalette);
+	virtual void paletteAnimate(uint16 fromColor, uint16 toColor, uint16 speed);
 
 	virtual void shakeScreen(uint16 shakeCount, uint16 directions);
 

Modified: scummvm/trunk/engines/sci/gui/gui_palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_palette.cpp	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/gui/gui_palette.cpp	2009-10-20 16:11:31 UTC (rev 45273)
@@ -170,8 +170,8 @@
 	setOnScreen();
 }
 
-bool SciGuiPalette::setFromResource(int16 resourceNo, int16 flag) {
-	Resource *palResource = _resMan->findResource(ResourceId(kResourceTypePalette, resourceNo), 0);
+bool SciGuiPalette::setFromResource(GuiResourceId resourceId, uint16 flag) {
+	Resource *palResource = _resMan->findResource(ResourceId(kResourceTypePalette, resourceId), 0);
 	GuiPalette palette;
 
 	if (palResource) {
@@ -182,7 +182,7 @@
 	return false;
 }
 
-void SciGuiPalette::set(GuiPalette *sciPal, int16 flag) {
+void SciGuiPalette::set(GuiPalette *sciPal, uint16 flag) {
 	uint32 systime = _sysPalette.timestamp;
 	if (flag == 2 || sciPal->timestamp != systime) {
 		merge(sciPal, &_sysPalette, flag);

Modified: scummvm/trunk/engines/sci/gui/gui_palette.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_palette.h	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/gui/gui_palette.h	2009-10-20 16:11:31 UTC (rev 45273)
@@ -39,8 +39,8 @@
 	void createFromData(byte *data, GuiPalette *paletteOut);
 	bool setAmiga();
 	void setEGA();
-	bool setFromResource(int16 resourceNo, int16 flag);
-	void set(GuiPalette *sciPal, int16 flag);
+	bool setFromResource(GuiResourceId resourceId, uint16 flag);
+	void set(GuiPalette *sciPal, uint16 flag);
 	void merge(GuiPalette *pFrom, GuiPalette *pTo, uint16 flag);
 	uint16 matchColor(GuiPalette *pPal, byte r, byte g, byte b);
 	void getSys(GuiPalette *pal);

Modified: scummvm/trunk/engines/sci/gui32/gui32.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-10-20 16:11:31 UTC (rev 45273)
@@ -1342,11 +1342,11 @@
 	return oldPicNotValid;
 }
 
-void SciGui32::paletteSet(int resourceNo, int flags) {
+void SciGui32::paletteSet(GuiResourceId resourceNo, uint16 flags) {
 	//warning("STUB");
 }
 
-int16 SciGui32::paletteFind(int r, int g, int b) {
+int16 SciGui32::paletteFind(uint16 r, uint16 g, uint16 b) {
 	int i, delta, bestindex = -1, bestdelta = 200000;
 
 	for (i = 0; i < _s->gfx_state->gfxResMan->getColorCount(); i++) {
@@ -1366,13 +1366,13 @@
 	return bestindex;
 }
 
-void SciGui32::paletteSetIntensity(int fromColor, int toColor, int intensity) {
+void SciGui32::paletteSetIntensity(uint16 fromColor, uint16 toColor, uint16 intensity) {
 #if 0
 	_s->gfx_state->gfxResMan->setPaletteIntensity(fromColor, toColor, intensity);
 #endif
 }
 
-void SciGui32::paletteAnimate(int fromColor, int toColor, int speed) {
+void SciGui32::paletteAnimate(uint16 fromColor, uint16 toColor, uint16 speed) {
 	//warning("STUB");
 }
 

Modified: scummvm/trunk/engines/sci/gui32/gui32.h
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.h	2009-10-20 14:43:44 UTC (rev 45272)
+++ scummvm/trunk/engines/sci/gui32/gui32.h	2009-10-20 16:11:31 UTC (rev 45273)
@@ -78,10 +78,10 @@
 
 	int16 picNotValid(int16 newPicNotValid);
 
-	void paletteSet(int resourceNo, int flags);
-	int16 paletteFind(int r, int g, int b);
-	void paletteSetIntensity(int fromColor, int toColor, int intensity);
-	void paletteAnimate(int fromColor, int toColor, int speed);
+	void paletteSet(GuiResourceId resourceNo, uint16 flags);
+	int16 paletteFind(uint16 r, uint16 g, uint16 b);
+	void paletteSetIntensity(uint16 fromColor, uint16 toColor, uint16 intensity);
+	void paletteAnimate(uint16 fromColor, uint16 toColor, uint16 speed);
 
 	void shakeScreen(uint16 shakeCount, uint16 directions);
 


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