[Scummvm-cvs-logs] scummvm master -> 29d129747d2d321113f0ad29b6dd8c0734d83048

bluegr md5 at scummvm.org
Fri Jan 13 21:56:38 CET 2012


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
df0528e786 SCI: Blacklist more unused/debug SCI2.1 kernel functions
29d129747d SCI: Some more work on kSetShowStyle. Silenced some chatty warnings in GK1


Commit: df0528e7860fc29b6c4020794479f68e83a8c44f
    https://github.com/scummvm/scummvm/commit/df0528e7860fc29b6c4020794479f68e83a8c44f
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2012-01-13T12:55:09-08:00

Commit Message:
SCI: Blacklist more unused/debug SCI2.1 kernel functions

Changed paths:
    engines/sci/engine/kernel_tables.h



diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index fe0c9fc..622511c 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -610,6 +610,12 @@ static SciKernelMapEntry s_kernelMap[] = {
 	{ MAP_DUMMY(DeletePic),         SIG_EVERYWHERE,           "(.*)",                 NULL,            NULL },
 	{ MAP_DUMMY(GetSierraProfileString), SIG_EVERYWHERE,      "(.*)",                 NULL,            NULL },
 
+	// Unused / debug functions in the in-between SCI2.1 interpreters
+	{ MAP_DUMMY(PreloadResource),   SIG_EVERYWHERE,           "(.*)",                 NULL,            NULL },
+	{ MAP_DUMMY(CheckCDisc),        SIG_EVERYWHERE,           "(.*)",                 NULL,            NULL },
+	{ MAP_DUMMY(GetSaveCDisc),      SIG_EVERYWHERE,           "(.*)",                 NULL,            NULL },
+	{ MAP_DUMMY(TestPoly),          SIG_EVERYWHERE,           "(.*)",                 NULL,            NULL },
+
 	// SCI2.1 unmapped functions - TODO!
 
 	// MovePlaneItems - used by SQ6 to scroll through the inventory via the up/down buttons


Commit: 29d129747d2d321113f0ad29b6dd8c0734d83048
    https://github.com/scummvm/scummvm/commit/29d129747d2d321113f0ad29b6dd8c0734d83048
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2012-01-13T12:55:10-08:00

Commit Message:
SCI: Some more work on kSetShowStyle. Silenced some chatty warnings in GK1

Changed paths:
    engines/sci/engine/kgraphics.cpp



diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 76c6778..eb1d4b6 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -25,6 +25,7 @@
 #include "engines/util.h"
 #include "graphics/cursorman.h"
 #include "graphics/surface.h"
+#include "graphics/palette.h"	// temporary, for the fadeIn()/fadeOut() functions below
 
 #include "gui/message.h"
 
@@ -1212,7 +1213,8 @@ reg_t kRemapColors(EngineState *s, int argc, reg_t *argv) {
 	switch (operation) {
 	case 0:	{ // Set remapping to base. 0 turns remapping off.
 		int16 base = (argc >= 2) ? argv[1].toSint16() : 0;
-		warning("kRemapColors: Set remapping to base %d", base);
+		if (base != 0)	// 0 is the default behavior when changing rooms in GK1, thus silencing the warning
+			warning("kRemapColors: Set remapping to base %d", base);
 		}
 		break;
 	case 1:	{ // unknown
@@ -1440,6 +1442,46 @@ reg_t kWinHelp(EngineState *s, int argc, reg_t *argv) {
 	return s->r_acc;
 }
 
+// Taken from the SCI16 GfxTransitions class
+static void fadeOut() {
+	byte oldPalette[3 * 256], workPalette[3 * 256];
+	int16 stepNr, colorNr;
+	// Sierra did not fade in/out color 255 for sci1.1, but they used it in
+	//  several pictures (e.g. qfg3 demo/intro), so the fading looked weird
+	int16 tillColorNr = getSciVersion() >= SCI_VERSION_1_1 ? 256 : 255;
+
+	g_system->getPaletteManager()->grabPalette(oldPalette, 0, 256);
+
+	for (stepNr = 100; stepNr >= 0; stepNr -= 10) {
+		for (colorNr = 1; colorNr < tillColorNr; colorNr++) {
+			if (g_sci->_gfxPalette->colorIsFromMacClut(colorNr)) {
+				workPalette[colorNr * 3 + 0] = oldPalette[colorNr * 3];
+				workPalette[colorNr * 3 + 1] = oldPalette[colorNr * 3 + 1];
+				workPalette[colorNr * 3 + 2] = oldPalette[colorNr * 3 + 2];
+			} else {
+				workPalette[colorNr * 3 + 0] = oldPalette[colorNr * 3] * stepNr / 100;
+				workPalette[colorNr * 3 + 1] = oldPalette[colorNr * 3 + 1] * stepNr / 100;
+				workPalette[colorNr * 3 + 2] = oldPalette[colorNr * 3 + 2] * stepNr / 100;
+			}
+		}
+		g_system->getPaletteManager()->setPalette(workPalette + 3, 1, 254);
+		g_sci->getEngineState()->wait(2);
+	}
+}
+
+// Taken from the SCI16 GfxTransitions class
+static void fadeIn() {
+	int16 stepNr;
+	// Sierra did not fade in/out color 255 for sci1.1, but they used it in
+	//  several pictures (e.g. qfg3 demo/intro), so the fading looked weird
+	int16 tillColorNr = getSciVersion() >= SCI_VERSION_1_1 ? 256 : 255;
+
+	for (stepNr = 0; stepNr <= 100; stepNr += 10) {
+		g_sci->_gfxPalette->kernelSetIntensity(1, tillColorNr, stepNr, true);
+		g_sci->getEngineState()->wait(2);
+	}
+}
+
 /**
  * Used for scene transitions, replacing (but reusing parts of) the old
  * transition code.
@@ -1450,31 +1492,65 @@ reg_t kSetShowStyle(EngineState *s, int argc, reg_t *argv) {
 	// tables inside graphics/transitions.cpp
 	uint16 showStyle = argv[0].toUint16();	// 0 - 15
 	reg_t planeObj = argv[1];	// the affected plane
-	//argv[2]	// seconds that the transition lasts
-	//argv[3]	// back color to be used(?)
-	//int16 priority = argv[4].toSint16();
-	//argv[5]	// boolean, animate or not while the transition lasts
-	//argv[6]	// refFrame
+	uint16 seconds = argv[2].toUint16();	// seconds that the transition lasts
+	uint16 backColor =  argv[3].toUint16();	// target back color(?). When fading out, it's 0x0000. When fading in, it's 0xffff
+	int16 priority = argv[4].toSint16();	// always 0xc8 (200) when fading in/out
+	uint16 animate = argv[5].toUint16();	// boolean, animate or not while the transition lasts
+	uint16 refFrame = argv[6].toUint16();	// refFrame, always 0 when fading in/out
+	int16 divisions;
 
 	// If the game has the pFadeArray selector, another parameter is used here,
 	// before the optional last parameter
-	/*bool hasFadeArray = g_sci->getKernel()->findSelector("pFadeArray") > 0;
+	bool hasFadeArray = g_sci->getKernel()->findSelector("pFadeArray") > 0;
 	if (hasFadeArray) {
 		// argv[7]
-		//int16 unk7 = (argc >= 9) ? argv[8].toSint16() : 0;	// divisions (transition steps?)
+		divisions = (argc >= 9) ? argv[8].toSint16() : -1;	// divisions (transition steps?)
 	} else {
-		//int16 unk7 = (argc >= 8) ? argv[7].toSint16() : 0;	// divisions (transition steps?)
-	}*/
+		divisions = (argc >= 8) ? argv[7].toSint16() : -1;	// divisions (transition steps?)
+	}
 
 	if (showStyle > 15) {
 		warning("kSetShowStyle: Illegal style %d for plane %04x:%04x", showStyle, PRINT_REG(planeObj));
 		return s->r_acc;
 	}
 
+	// TODO: Proper implementation. This is a very basic version. I'm not even
+	// sure if the rest of the styles will work with this mechanism.
+
+	// Check if the passed parameters are the ones we expect
+	if (showStyle == 13 || showStyle == 14) {	// fade out / fade in
+		if (seconds != 1)
+			warning("kSetShowStyle(fade): seconds isn't 1, it's %d", seconds);
+		if (backColor != 0 && backColor != 0xFFFF)
+			warning("kSetShowStyle(fade): backColor isn't 0 or 0xFFFF, it's %d", backColor);
+		if (priority != 200)
+			warning("kSetShowStyle(fade): priority isn't 200, it's %d", priority);
+		if (animate != 0)
+			warning("kSetShowStyle(fade): animate isn't 0, it's %d", animate);
+		if (refFrame != 0)
+			warning("kSetShowStyle(fade): refFrame isn't 0, it's %d", refFrame);
+		if (divisions >= 0 && divisions != 20)
+			warning("kSetShowStyle(fade): divisions isn't 20, it's %d", divisions);
+	}
+
 	// TODO: Check if the plane is in the list of planes to draw
 
-	// TODO: This is all a stub/skeleton, thus we're invoking kStub() for now
-	kStub(s, argc, argv);
+	switch (showStyle) {
+	//case 0:	// no transition, perhaps? (like in the previous SCI versions)
+	case 13:	// fade out
+		// TODO: Temporary implementation, which ignores all additional parameters
+		fadeOut();
+		break;
+	case 14:	// fade in
+		// TODO: Temporary implementation, which ignores all additional parameters
+		g_sci->_gfxFrameout->kernelFrameout();	// draw new scene before fading in
+		fadeIn();
+		break;
+	default:
+		// TODO: This is all a stub/skeleton, thus we're invoking kStub() for now
+		kStub(s, argc, argv);
+		break;
+	}
 
 	return s->r_acc;
 }






More information about the Scummvm-git-logs mailing list