diff options
Diffstat (limited to 'scumm/script_v90he.cpp')
-rw-r--r-- | scumm/script_v90he.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index c261c5e034..746488cca7 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -111,7 +111,7 @@ void ScummEngine_v90he::setupOpcodes() { OPCODE(o90_cond), OPCODE(o90_dim2dim2Array), /* 38 */ - OPCODE(o6_invalid), + OPCODE(o90_redim2dimArray), OPCODE(o6_invalid), OPCODE(o90_sortArray), OPCODE(o6_invalid), @@ -1821,6 +1821,30 @@ void ScummEngine_v90he::o90_dim2dim2Array() { defineArray(fetchScriptWord(), data, dim2start, dim2end, dim1start, dim1end); } +void ScummEngine_v90he::o90_redim2dimArray() { + int a, b, c, d; + d = pop(); + c = pop(); + b = pop(); + a = pop(); + + byte subOp = fetchScriptByte(); + + switch (subOp) { + case 4: + redimArray(fetchScriptWord(), a, b, c, d, kByteArray); + break; + case 5: + redimArray(fetchScriptWord(), a, b, c, d, kIntArray); + break; + case 6: + redimArray(fetchScriptWord(), a, b, c, d, kDwordArray); + break; + default: + error("o90_redim2dimArray: default type %d", subOp); + } +} + void ScummEngine_v90he::o90_sortArray() { // Sorts array via qsort byte subOp = fetchScriptByte(); |