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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sat Jul 24 09:55:29 CEST 2010


Revision: 51238
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51238&view=rev
Author:   m_kiewitz
Date:     2010-07-24 07:55:29 +0000 (Sat, 24 Jul 2010)

Log Message:
-----------
SCI: adding workaround for sq4 room 391

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/workarounds.cpp
    scummvm/trunk/engines/sci/graphics/paint16.cpp

Modified: scummvm/trunk/engines/sci/engine/workarounds.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/workarounds.cpp	2010-07-24 07:45:47 UTC (rev 51237)
+++ scummvm/trunk/engines/sci/engine/workarounds.cpp	2010-07-24 07:55:29 UTC (rev 51238)
@@ -107,6 +107,7 @@
 const SciWorkaroundEntry kDisplay_workarounds[] = {
     { GID_ISLANDBRAIN,   300,   300,  0,           "geneDude", "show",           -1,    0, { WORKAROUND_IGNORE,    0 } }, // when looking at the gene explanation chart - a parameter is an object
     { GID_SQ4,           391,   391,  0,          "doCatalog", "mode",         0x84,    0, { WORKAROUND_IGNORE,    0 } }, // clicking on catalog in roboter sale - a parameter is an object
+    { GID_SQ4,           391,   391,  0,         "choosePlug", "changeState",    -1,    0, { WORKAROUND_IGNORE,    0 } }, // ordering connector in roboter sale - a parameter is an object
     SCI_WORKAROUNDENTRY_TERMINATOR
 };
 

Modified: scummvm/trunk/engines/sci/graphics/paint16.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/paint16.cpp	2010-07-24 07:45:47 UTC (rev 51237)
+++ scummvm/trunk/engines/sci/graphics/paint16.cpp	2010-07-24 07:55:29 UTC (rev 51238)
@@ -464,7 +464,7 @@
 #define SCI_DISPLAY_DONTSHOWBITS		121
 
 reg_t GfxPaint16::kernelDisplay(const char *text, int argc, reg_t *argv) {
-	int displayArg;
+	reg_t displayArg;
 	TextAlignment alignment = SCI_TEXT16_ALIGNMENT_LEFT;
 	int16 colorPen = -1, colorBack = -1, width = -1, bRedraw = 1;
 	bool doSaveUnder = false;
@@ -481,12 +481,11 @@
 	_ports->textGreyedOutput(false);
 	// processing codes in argv
 	while (argc > 0) {
-		if (argv[0].segment)
-			displayArg = 0xFFFF;
-		else
-			displayArg = argv[0].toUint16();
+		displayArg = argv[0];
+		if (displayArg.segment)
+			displayArg.offset = 0xFFFF;
 		argc--; argv++;
-		switch (displayArg) {
+		switch (displayArg.offset) {
 		case SCI_DISPLAY_MOVEPEN:
 			_ports->moveTo(argv[0].toUint16(), argv[1].toUint16());
 			argc -= 2; argv += 2;
@@ -536,7 +535,7 @@
 		case SCI_DISPLAY_DUMMY2:
 			if (!((g_sci->getGameId() == GID_LONGBOW) && (g_sci->isDemo())))
 				error("Unknown kDisplay argument %X", displayArg);
-			if (displayArg == SCI_DISPLAY_DUMMY2) {
+			if (displayArg.offset == SCI_DISPLAY_DUMMY2) {
 				if (argc) {
 					argc--; argv++;
 				} else {
@@ -548,7 +547,7 @@
 			SciTrackOriginReply originReply;
 			SciWorkaroundSolution solution = trackOriginAndFindWorkaround(0, kDisplay_workarounds, &originReply);
 			if (solution.type == WORKAROUND_NONE)
-				error("Unknown kDisplay argument (%04x:%04x) from method %s::%s (script %d, localCall %x)", PRINT_REG(argv[0]), originReply.objectName.c_str(), originReply.methodName.c_str(), originReply.scriptNr, originReply.localCallOffset);
+				error("Unknown kDisplay argument (%04x:%04x) from method %s::%s (script %d, localCall %x)", PRINT_REG(displayArg), originReply.objectName.c_str(), originReply.methodName.c_str(), originReply.scriptNr, originReply.localCallOffset);
 			assert(solution.type == WORKAROUND_IGNORE);
 			break;
 		}


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