[Scummvm-cvs-logs] scummvm master -> b812ed50c8f6d9a24b607831a88a398730458d9a

bluegr md5 at scummvm.org
Mon Jun 11 10:55:37 CEST 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:
0ccfd614aa SCI: Add more verbose debug output for DoAudio in SCI2.1
b812ed50c8 SCI: Bugfix for negative numbers in kString(at)


Commit: 0ccfd614aa935ed38a4fce7888c91ff1429691f1
    https://github.com/scummvm/scummvm/commit/0ccfd614aa935ed38a4fce7888c91ff1429691f1
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2012-06-11T01:54:09-07:00

Commit Message:
SCI: Add more verbose debug output for DoAudio in SCI2.1

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



diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp
index c469f77..b378b4d 100644
--- a/engines/sci/engine/ksound.cpp
+++ b/engines/sci/engine/ksound.cpp
@@ -140,8 +140,12 @@ reg_t kDoAudio(EngineState *s, int argc, reg_t *argv) {
 			         ((argv[3].toUint16() & 0xff) << 16) |
 			         ((argv[4].toUint16() & 0xff) <<  8) |
 			          (argv[5].toUint16() & 0xff);
-			if (argc == 8)
-				warning("kDoAudio: Play called with SQ6 extra parameters");
+			if (argc == 8) {
+				// argv[6] is always 1
+				// argv[7] is the contents of global 229 (0xE5)
+				warning("kDoAudio: Play called with SCI2.1 extra parameters: %04x:%04x and %04x:%04x",
+						PRINT_REG(argv[6]), PRINT_REG(argv[7]));
+			}
 		} else {
 			warning("kDoAudio: Play called with an unknown number of parameters (%d)", argc);
 			return NULL_REG;


Commit: b812ed50c8f6d9a24b607831a88a398730458d9a
    https://github.com/scummvm/scummvm/commit/b812ed50c8f6d9a24b607831a88a398730458d9a
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2012-06-11T01:54:11-07:00

Commit Message:
SCI: Bugfix for negative numbers in kString(at)

Fixes one of the bugs in the savegame selection screen in Phantasmagoria

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



diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index fe8d631..0877e37 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -653,10 +653,18 @@ reg_t kString(EngineState *s, int argc, reg_t *argv) {
 	case 1: // Size
 		return make_reg(0, s->_segMan->getString(argv[1]).size());
 	case 2: { // At (return value at an index)
-		if (argv[1].segment == s->_segMan->getStringSegmentId())
-			return make_reg(0, s->_segMan->lookupString(argv[1])->getRawData()[argv[2].toUint16()]);
-
-		return make_reg(0, s->_segMan->getString(argv[1])[argv[2].toUint16()]);
+		// Note that values need to be truncated to bytes, otherwise
+		// 0xff (negative char -1) will incorrectly be changed to
+		// 0xffff (negative int16 -1)
+		if (argv[1].segment == s->_segMan->getStringSegmentId()) {
+			SciString *string = s->_segMan->lookupString(argv[1]);
+			byte val = string->getRawData()[argv[2].toUint16()];
+			return make_reg(0, val);
+		} else {
+			Common::String string = s->_segMan->getString(argv[1]);
+			byte val = string[argv[2].toUint16()];
+			return make_reg(0, val);
+		}
 	}
 	case 3: { // Atput (put value at an index)
 		SciString *string = s->_segMan->lookupString(argv[1]);






More information about the Scummvm-git-logs mailing list