aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Hoops2010-02-15 17:10:40 +0000
committerMatthew Hoops2010-02-15 17:10:40 +0000
commitcf005b623838ae2ed0424296aa770bf9eed0098d (patch)
tree2a4ed902f96bcaa1890250bd6e6416b3866fe2bc
parent9de580aa6e8466b1a4347450af37492c59a24189 (diff)
downloadscummvm-rg350-cf005b623838ae2ed0424296aa770bf9eed0098d.tar.gz
scummvm-rg350-cf005b623838ae2ed0424296aa770bf9eed0098d.tar.bz2
scummvm-rg350-cf005b623838ae2ed0424296aa770bf9eed0098d.zip
SCI32 reorders the REF* subops in kMessage; fixes GK1 conversations.
svn-id: r48066
-rw-r--r--engines/sci/engine/kstring.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index ad1811ece5..6499e038bd 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -475,10 +475,16 @@ reg_t kMessage(EngineState *s, int argc, reg_t *argv) {
#ifdef ENABLE_SCI32
if (getSciVersion() >= SCI_VERSION_2) {
// In complete weirdness, SCI32 bumps up subops 3-8 to 4-9 and stubs off subop 3.
+ // In addition, SCI32 reorders the REF* subops.
if (func == 3)
- warning("SCI32 kMessage(3)");
- else if (func > 3)
+ error("SCI32 kMessage(3)");
+ else if (func > 3) {
func--;
+ if (func == K_MESSAGE_REFCOND)
+ func = K_MESSAGE_REFNOUN;
+ else if (func == K_MESSAGE_REFNOUN || func == K_MESSAGE_REFVERB)
+ func--;
+ }
}
#endif