diff options
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/intern.h | 2 | ||||
-rw-r--r-- | scumm/script_v72he.cpp | 23 | ||||
-rw-r--r-- | scumm/script_v90he.cpp | 21 |
3 files changed, 42 insertions, 4 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 4e5e167788..a1bd6c9fa0 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -738,6 +738,7 @@ protected: void o72_dimArray(); void o72_dim2dimArray(); void o72_unknownC1(); + void o72_unknownCF(); void o72_drawWizImage(); void o72_shuffle(); void o72_jumpToScript(); @@ -829,6 +830,7 @@ protected: void o90_unknown34(); void o90_unknown36(); void o90_unknown37(); + void o90_unknown3A(); void o90_unknown9E(); }; diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp index fb3b1dc1b6..462a116152 100644 --- a/scumm/script_v72he.cpp +++ b/scumm/script_v72he.cpp @@ -303,7 +303,7 @@ void ScummEngine_v72he::setupOpcodes() { OPCODE(o6_pickOneOfDefault), OPCODE(o6_stampObject), OPCODE(o72_drawWizImage), - OPCODE(o6_invalid), + OPCODE(o72_unknownCF), /* D0 */ OPCODE(o6_getDateTime), OPCODE(o6_stopTalking), @@ -1405,6 +1405,22 @@ void ScummEngine_v72he::o72_drawWizImage() { } } +void ScummEngine_v72he::o72_unknownCF() { + //ArrayHeader *ah; + byte string[255]; + + copyScriptString(string); + int len = resStrLen(string) + 1; + + writeVar(0, 0); + //ah = defineArray(0, kStringArray, 0, 0, 0, len); + defineArray(0, kStringArray, 0, 0, 0, len); + writeArray(0, 0, 0, 0); + //memcpy(ah->data, string, len); + + push(readVar(0)); +} + void ScummEngine_v72he::shuffleArray(int num, int minIdx, int maxIdx) { int range = maxIdx - minIdx; int count = range * 2; @@ -1964,10 +1980,11 @@ void ScummEngine_v72he::o72_unknownF6() { } void ScummEngine_v72he::o72_unknownF8() { - int a = fetchScriptByte(); + int id = pop(); + byte subOp = fetchScriptByte(); push(1); - debug(1,"stub o72_unknownF8(%d)", a); + debug(1,"stub o72_unknownF8: subOp %d, id %d", subOp, id); } void ScummEngine_v72he::o72_setFilePath() { diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index 117f835821..c087567adb 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -117,7 +117,7 @@ void ScummEngine_v90he::setupOpcodes() { /* 38 */ OPCODE(o6_invalid), OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o90_unknown3A), OPCODE(o6_invalid), /* 3C */ OPCODE(o6_invalid), @@ -887,6 +887,25 @@ void ScummEngine_v90he::o90_unknown37() { debug(1,"o90_unknown37 stub"); } +void ScummEngine_v90he::o90_unknown3A() { + // Array related + int subOp = fetchScriptByte(); + + switch (subOp) { + case 129: + fetchScriptWord(); + pop(); + pop(); + pop(); + pop(); + pop(); + break; + default: + error("o90_unknown3A: Unknown case %d", subOp); + } + debug(1,"o90_unknown3A stub (%d)", subOp); +} + void ScummEngine_v90he::o90_unknown9E() { int subOp = fetchScriptByte(); subOp -= 57; |