diff options
author | Travis Howell | 2004-09-07 12:56:12 +0000 |
---|---|---|
committer | Travis Howell | 2004-09-07 12:56:12 +0000 |
commit | 505bbcc295232ae97c0d55b15b863096d0b842f8 (patch) | |
tree | 118b5d02d933bf0b0e241bb18348cf3e39b57829 | |
parent | 67498a174b0c73d060d704484fa767ccb4f6c7be (diff) | |
download | scummvm-rg350-505bbcc295232ae97c0d55b15b863096d0b842f8.tar.gz scummvm-rg350-505bbcc295232ae97c0d55b15b863096d0b842f8.tar.bz2 scummvm-rg350-505bbcc295232ae97c0d55b15b863096d0b842f8.zip |
Add another opcode/stub
svn-id: r14941
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v90he.cpp | 54 |
2 files changed, 53 insertions, 2 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 9b5d9ea17f..9d6297fcf0 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -808,6 +808,7 @@ protected: void o90_unknown27(); void o90_unknown28(); void o90_unknown29(); + void o90_unknown37(); }; class ScummEngine_v7 : public ScummEngine_v6 { diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index 42e6d33fd6..b201daaf79 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -110,10 +110,10 @@ void ScummEngine_v90he::setupOpcodes() { OPCODE(o6_invalid), OPCODE(o6_invalid), /* 34 */ + OPCODE(o72_findAllObjects), OPCODE(o6_invalid), OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o90_unknown37), /* 38 */ OPCODE(o6_invalid), OPCODE(o6_invalid), @@ -505,6 +505,7 @@ void ScummEngine_v90he::o90_unknown25() { void ScummEngine_v90he::o90_unknown26() { // Incomplete + int args[16]; int subOp = fetchScriptByte(); subOp -= 34; @@ -537,6 +538,8 @@ void ScummEngine_v90he::o90_unknown26() { break; case 23: pop(); + if (_heversion >= 98) + pop(); break; case 29: pop(); @@ -558,6 +561,9 @@ void ScummEngine_v90he::o90_unknown26() { case 90: pop(); break; + case 91: + getStackList(args, ARRAYSIZE(args)); + break; case 124: break; case 164: @@ -676,4 +682,48 @@ void ScummEngine_v90he::o90_unknown29() { debug(1,"o90_unknown29 stub (%d)", subOp); } +void ScummEngine_v90he::o90_unknown37() { + int data, dim1start, dim1end, dim2start, dim2end; + int type = fetchScriptByte(); + + switch (type) { + case 2: // SO_BIT_ARRAY + data = kBitArray; + break; + case 3: // SO_NIBBLE_ARRAY + data = kNibbleArray; + break; + case 4: // SO_BYTE_ARRAY + data = kByteArray; + break; + case 5: // SO_INT_ARRAY + data = kIntArray; + break; + case 6: + data = kDwordArray; + break; + case 7: // SO_STRING_ARRAY + data = kStringArray; + break; + default: + error("o90_unknown37: default case %d", type); + } + + if (pop() == 2) { + dim1end = pop(); + dim1start = pop(); + dim2end = pop(); + dim2start = pop(); + } else { + dim2end = pop(); + dim2start = pop(); + dim1end = pop(); + dim1start = pop(); + } + + defineArray(fetchScriptWord(), data, dim2start, dim2end, dim1start, dim1end); + + debug(1,"o90_unknown37 stub"); +} + } // End of namespace Scumm |