aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2004-10-10 04:02:37 +0000
committerTravis Howell2004-10-10 04:02:37 +0000
commit38f8de858ec00a2cc847e22d4d8f4f5683bf3fec (patch)
treee972c8a8881f2975a7939be6a86d6175e4207255 /scumm
parent3ddc6b8cbb42f34963ae094d62a99b96da45d6aa (diff)
downloadscummvm-rg350-38f8de858ec00a2cc847e22d4d8f4f5683bf3fec.tar.gz
scummvm-rg350-38f8de858ec00a2cc847e22d4d8f4f5683bf3fec.tar.bz2
scummvm-rg350-38f8de858ec00a2cc847e22d4d8f4f5683bf3fec.zip
More HE100 corrections.
svn-id: r15500
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v100he.cpp30
-rw-r--r--scumm/script_v72he.cpp2
3 files changed, 27 insertions, 6 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 3d9662fccf..e62fe433b9 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -934,6 +934,7 @@ protected:
void o100_wizImageOps();
void o100_dim2dim2Array();
void o100_paletteOps();
+ void o100_redimArray();
void o100_roomOps();
void o100_startSound();
void o100_unknown26();
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index 95781fbf51..9dea3d52f6 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -169,7 +169,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o6_putActorAtXY),
OPCODE(o6_invalid),
/* 64 */
- OPCODE(o72_redimArray),
+ OPCODE(o100_redimArray),
OPCODE(o60_rename),
OPCODE(o6_stopObjectCode),
OPCODE(o6_invalid),
@@ -224,7 +224,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o6_walkActorToObj),
OPCODE(o6_walkActorTo),
/* 90 */
- OPCODE(o60_writeFile),
+ OPCODE(o72_writeFile),
OPCODE(o72_writeINI),
OPCODE(o80_writeConfigFile),
OPCODE(o6_abs),
@@ -306,8 +306,8 @@ void ScummEngine_v100he::setupOpcodes() {
/* D0 */
OPCODE(o6_getRandomNumber),
OPCODE(o6_getRandomNumberRange),
- OPCODE(o60_readFile),
OPCODE(o6_invalid),
+ OPCODE(o72_readFile),
/* D4 */
OPCODE(o72_readINI),
OPCODE(o80_readConfigFile),
@@ -596,8 +596,6 @@ void ScummEngine_v100he::o100_arrayOps() {
ah = defineArray(array, kStringArray, 0, 0, 0, len);
memcpy(ah->data, string, len);
break;
-
-
case 77: // SO_ASSIGN_STRING
copyScriptString(string);
len = resStrLen(string) + 1;
@@ -626,7 +624,6 @@ void ScummEngine_v100he::o100_arrayOps() {
writeArray(array, 0, b + c, pop());
}
break;
-
case 130:
len = getStackList(list, ARRAYSIZE(list));
dim1end = pop();
@@ -1105,6 +1102,27 @@ void ScummEngine_v100he::o100_paletteOps() {
debug(0,"o100_paletteOps stub (%d)", subOp);
}
+void ScummEngine_v100he::o100_redimArray() {
+ int newX, newY;
+ newY = pop();
+ newX = pop();
+
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 42:
+ redimArray(fetchScriptWord(), 0, newX, 0, newY, kIntArray);
+ break;
+ case 43:
+ redimArray(fetchScriptWord(), 0, newX, 0, newY, kDwordArray);
+ break;
+ case 45:
+ redimArray(fetchScriptWord(), 0, newX, 0, newY, kByteArray);
+ break;
+ default:
+ error("o100_redimArray: default type %d", subOp);
+ }
+}
+
void ScummEngine_v100he::o100_roomOps() {
int a, b, c, d, e;
byte op;
diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp
index eb7c85c12b..d740711b3d 100644
--- a/scumm/script_v72he.cpp
+++ b/scumm/script_v72he.cpp
@@ -2104,9 +2104,11 @@ void ScummEngine_v72he::o72_getPixel() {
}
switch (subOp) {
+ case 9: // HE 100
case 218:
area = *vs->getBackPixels(x, y - vs->topline);
break;
+ case 8: // HE 100
case 219:
area = *vs->getPixels(x, y - vs->topline);
break;