[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