[Scummvm-cvs-logs] SF.net SVN: scummvm:[51376] scummvm/trunk/engines/sci/engine/kstring.cpp

mthreepwood at users.sourceforge.net mthreepwood at users.sourceforge.net
Tue Jul 27 17:45:22 CEST 2010


Revision: 51376
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51376&view=rev
Author:   mthreepwood
Date:     2010-07-27 15:45:21 +0000 (Tue, 27 Jul 2010)

Log Message:
-----------
SCI: Fix bug #3035058 - ECOQUEST demo: Missing subtitles

The demo uses a special version of kMessage to get its messages.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kstring.cpp

Modified: scummvm/trunk/engines/sci/engine/kstring.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kstring.cpp	2010-07-27 15:29:58 UTC (rev 51375)
+++ scummvm/trunk/engines/sci/engine/kstring.cpp	2010-07-27 15:45:21 UTC (rev 51376)
@@ -456,7 +456,8 @@
 	K_MESSAGE_REFNOUN,
 	K_MESSAGE_PUSH,
 	K_MESSAGE_POP,
-	K_MESSAGE_LASTMESSAGE
+	K_MESSAGE_LASTMESSAGE,
+	K_MESSAGE_ECOQUEST1_DEMO = 99
 };
 
 reg_t kGetMessage(EngineState *s, int argc, reg_t *argv) {
@@ -558,6 +559,18 @@
 
 		return NULL_REG;
 	}
+	case K_MESSAGE_ECOQUEST1_DEMO:
+		// The EcoQuest 1 demo uses a special version of kMessage. It's one of the
+		// earliest SCI 1.1 games. The noun is always 99 in this case, so we can
+		// treat it as a subop. If any other games require this syntax, we can change
+		// this to work with those games too.
+
+		if (g_sci->getGameId() != GID_ECOQUEST || !g_sci->isDemo())
+			error("kMessage called with EcoQuest 1 demo syntax in a different game");
+
+		tuple.noun = argv[0].toUint16();
+		tuple.verb = argv[2].toUint16();
+		return make_reg(0, s->_msgState->getMessage(argv[1].toUint16(), tuple, argv[3]));
 	default:
 		warning("Message: subfunction %i invoked (not implemented)", func);
 	}


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