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

lskovlun at users.sourceforge.net lskovlun at users.sourceforge.net
Fri Nov 19 13:52:19 CET 2010


Revision: 54374
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54374&view=rev
Author:   lskovlun
Date:     2010-11-19 12:52:17 +0000 (Fri, 19 Nov 2010)

Log Message:
-----------
Some subfunctions changed positions in SCI3 kString. WIP.
And with this, LSL7 starts up. Yeah, baby!

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-11-19 12:49:46 UTC (rev 54373)
+++ scummvm/trunk/engines/sci/engine/kstring.cpp	2010-11-19 12:52:17 UTC (rev 54374)
@@ -616,6 +616,15 @@
 }
 
 reg_t kString(EngineState *s, int argc, reg_t *argv) {
+
+	// TODO: Find out how exactly subfunctions work in SCI3
+	if (getSciVersion() == SCI_VERSION_3 &&
+	    argv[0].toUint16() == 8)
+		argv[0].offset = 10;
+	if (getSciVersion() == SCI_VERSION_3 &&
+	    argv[0].toUint16() == 11)
+		argv[0].offset = 13;
+
 	switch (argv[0].toUint16()) {
 	case 0: { // New
 		reg_t stringHandle;
@@ -780,9 +789,13 @@
 		Common::String string = s->_segMan->getString(argv[1]);
 		return make_reg(0, (uint16)atoi(string.c_str()));
 	}
-	case 14: // Unknown (SCI3)
-		warning("Unknown kString subop %d", argv[0].toUint16());
+	case 14: { // lower (SCI3)
+		Common::String string = s->_segMan->getString(argv[1]);
+		
+		string.toLowercase();
+		s->_segMan->strcpy(argv[1], string.c_str());
 		return NULL_REG;
+	}
 	default:
 		error("Unknown kString subop %d", argv[0].toUint16());
 	}


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