[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