aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorWalter van Niftrik2009-05-12 12:31:09 +0000
committerWalter van Niftrik2009-05-12 12:31:09 +0000
commitc299dbeb26b38342e2a5c6b9e59b810e48572cd6 (patch)
tree1a51acd1e061a713644a5340bf16f05661b9ffad /engines/sci/engine
parenta79716e3671f7a6c619fe3a38f5f5fd7589f9e81 (diff)
downloadscummvm-rg350-c299dbeb26b38342e2a5c6b9e59b810e48572cd6.tar.gz
scummvm-rg350-c299dbeb26b38342e2a5c6b9e59b810e48572cd6.tar.bz2
scummvm-rg350-c299dbeb26b38342e2a5c6b9e59b810e48572cd6.zip
SCI: Merged Message() and GetMessage(). Set SCI1.1 to use SCI1 kernel table (for now).
svn-id: r40481
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kernel.cpp1
-rw-r--r--engines/sci/engine/kernel.h1
-rw-r--r--engines/sci/engine/kstring.cpp42
-rw-r--r--engines/sci/engine/message.cpp2
4 files changed, 22 insertions, 24 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index d5a1ba2bf5..a507a2b89a 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -201,7 +201,6 @@ SciKernelFunction kfunct_mappers[] = {
/*(?)*/ DEFUN("TimesCot", kTimesCot, "ii"),
/*(?)*/ DEFUN("TimesTan", kTimesTan, "ii"),
DEFUN("Message", kMessage, ".*"),
- DEFUN("GetMessage", kGetMessage, "iiir"),
DEFUN("DoAudio", kDoAudio, ".*"),
DEFUN("DoSync", kDoSync, ".*"),
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index ece37d1f6c..e8d2e82caf 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -451,7 +451,6 @@ reg_t kGetSaveDir(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kTextSize(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kIsItSkip(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv);
-reg_t kGetMessage(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kDoAudio(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kDoSync(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t k_Unknown(EngineState *s, int funct_nr, int argc, reg_t *argv);
diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index 21ca298d18..046c8a8419 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -729,6 +729,27 @@ static MessageState state;
reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv) {
MessageTuple tuple;
+ if (argc == 4) {
+ // Earlier version of of this function (GetMessage)
+ tuple.noun = UKPV(0);
+ int module = UKPV(1);
+ tuple.verb = UKPV(2);
+ tuple.cond = 0;
+ tuple.seq = 1;
+
+ if (state.loadRes(s->resmgr, module, true) && state.getMessage(&tuple)) {
+ int len = state.getLength();
+ char *buffer = kernel_dereference_char_pointer(s, argv[3], len + 1);
+
+ if (buffer) {
+ state.getText(buffer);
+ return argv[3];
+ }
+ }
+
+ return NULL_REG;
+ }
+
switch (UKPV(0)) {
case 0:
case 2:
@@ -807,25 +828,4 @@ reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv) {
return NULL_REG;
}
-reg_t kGetMessage(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- MessageTuple tuple;
- tuple.noun = UKPV(0);
- int module = UKPV(1);
- tuple.verb = UKPV(2);
- tuple.cond = 0;
- tuple.seq = 0;
-
- if (state.loadRes(s->resmgr, module, true) && state.getMessage(&tuple)) {
- int len = state.getLength();
- char *buffer = kernel_dereference_char_pointer(s, argv[3], len + 1);
-
- if (buffer) {
- state.getText(buffer);
- return argv[3];
- }
- }
-
- return NULL_REG;
-}
-
} // End of namespace Sci
diff --git a/engines/sci/engine/message.cpp b/engines/sci/engine/message.cpp
index 3e06ee419a..0a6754fa03 100644
--- a/engines/sci/engine/message.cpp
+++ b/engines/sci/engine/message.cpp
@@ -33,7 +33,7 @@ void MessageState::parse(IndexRecordCursor *cursor, MessageTuple *t) {
t->verb = *(cursor->index_record + 1);
if (_version == 2101) {
t->cond = 0;
- t->seq = 0;
+ t->seq = 1;
} else {
t->cond = *(cursor->index_record + 2);
t->seq = *(cursor->index_record + 3);