aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/klists.cpp
diff options
context:
space:
mode:
authorColin Snover2017-09-30 00:03:05 -0500
committerColin Snover2017-09-30 01:08:12 -0500
commitb2966f3fc8b7bbf429373d9988ea1280660dc33b (patch)
treef65095e68becdbe369bd3adef42903b28ef69cac /engines/sci/engine/klists.cpp
parentdc7e37fdb6800124cccf231282d4b1475249a654 (diff)
downloadscummvm-rg350-b2966f3fc8b7bbf429373d9988ea1280660dc33b.tar.gz
scummvm-rg350-b2966f3fc8b7bbf429373d9988ea1280660dc33b.tar.bz2
scummvm-rg350-b2966f3fc8b7bbf429373d9988ea1280660dc33b.zip
SCI32: Fix support for RAMA demo
Fixes Trac#10251.
Diffstat (limited to 'engines/sci/engine/klists.cpp')
-rw-r--r--engines/sci/engine/klists.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp
index 2ca5a65fc0..330b78b2b2 100644
--- a/engines/sci/engine/klists.cpp
+++ b/engines/sci/engine/klists.cpp
@@ -835,6 +835,10 @@ reg_t kArrayGetSize(EngineState *s, int argc, reg_t *argv) {
}
reg_t kArrayGetElement(EngineState *s, int argc, reg_t *argv) {
+ if (getSciVersion() == SCI_VERSION_2_1_LATE) {
+ return kStringGetChar(s, argc, argv);
+ }
+
SciArray &array = *s->_segMan->lookupArray(argv[0]);
return array.getAsID(argv[1].toUint16());
}
@@ -846,6 +850,10 @@ reg_t kArraySetElements(EngineState *s, int argc, reg_t *argv) {
}
reg_t kArrayFree(EngineState *s, int argc, reg_t *argv) {
+ if (getSciVersion() == SCI_VERSION_2_1_LATE && !s->_segMan->isValidAddr(argv[0], SEG_TYPE_ARRAY)) {
+ return s->r_acc;
+ }
+
s->_segMan->freeArray(argv[0]);
return s->r_acc;
}