aboutsummaryrefslogtreecommitdiff
path: root/scumm/script_v90he.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/script_v90he.cpp')
-rw-r--r--scumm/script_v90he.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index daebf12f56..c261c5e034 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -53,7 +53,7 @@ void ScummEngine_v90he::setupOpcodes() {
/* 08 */
OPCODE(o6_invalid),
OPCODE(o6_invalid),
- OPCODE(o90_dup),
+ OPCODE(o90_dup_n),
OPCODE(o6_wordArrayIndexedRead),
/* 0C */
OPCODE(o6_dup),
@@ -374,14 +374,16 @@ const char *ScummEngine_v90he::getOpcodeDesc(byte i) {
return _opcodesV90he[i].desc;
}
-void ScummEngine_v90he::o90_dup() {
- int a, num;
+void ScummEngine_v90he::o90_dup_n() {
+ int num;
+ int args[16];
- num = fetchScriptWord();
- for (int i = 0; i < num; i++) {
- a = pop();
- push(a);
- push(a);
+ push(fetchScriptWord());
+ num = getStackList(args, ARRAYSIZE(args));
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < num; j++)
+ push(args[j]);
}
}