More HE100 corrections.

svn-id: r15500
This commit is contained in:
Travis Howell 2004-10-10 04:02:37 +00:00
parent 3ddc6b8cbb
commit 38f8de858e
3 changed files with 27 additions and 6 deletions

View file

@ -934,6 +934,7 @@ protected:
void o100_wizImageOps(); void o100_wizImageOps();
void o100_dim2dim2Array(); void o100_dim2dim2Array();
void o100_paletteOps(); void o100_paletteOps();
void o100_redimArray();
void o100_roomOps(); void o100_roomOps();
void o100_startSound(); void o100_startSound();
void o100_unknown26(); void o100_unknown26();

View file

@ -169,7 +169,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o6_putActorAtXY), OPCODE(o6_putActorAtXY),
OPCODE(o6_invalid), OPCODE(o6_invalid),
/* 64 */ /* 64 */
OPCODE(o72_redimArray), OPCODE(o100_redimArray),
OPCODE(o60_rename), OPCODE(o60_rename),
OPCODE(o6_stopObjectCode), OPCODE(o6_stopObjectCode),
OPCODE(o6_invalid), OPCODE(o6_invalid),
@ -224,7 +224,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o6_walkActorToObj), OPCODE(o6_walkActorToObj),
OPCODE(o6_walkActorTo), OPCODE(o6_walkActorTo),
/* 90 */ /* 90 */
OPCODE(o60_writeFile), OPCODE(o72_writeFile),
OPCODE(o72_writeINI), OPCODE(o72_writeINI),
OPCODE(o80_writeConfigFile), OPCODE(o80_writeConfigFile),
OPCODE(o6_abs), OPCODE(o6_abs),
@ -306,8 +306,8 @@ void ScummEngine_v100he::setupOpcodes() {
/* D0 */ /* D0 */
OPCODE(o6_getRandomNumber), OPCODE(o6_getRandomNumber),
OPCODE(o6_getRandomNumberRange), OPCODE(o6_getRandomNumberRange),
OPCODE(o60_readFile),
OPCODE(o6_invalid), OPCODE(o6_invalid),
OPCODE(o72_readFile),
/* D4 */ /* D4 */
OPCODE(o72_readINI), OPCODE(o72_readINI),
OPCODE(o80_readConfigFile), OPCODE(o80_readConfigFile),
@ -596,8 +596,6 @@ void ScummEngine_v100he::o100_arrayOps() {
ah = defineArray(array, kStringArray, 0, 0, 0, len); ah = defineArray(array, kStringArray, 0, 0, 0, len);
memcpy(ah->data, string, len); memcpy(ah->data, string, len);
break; break;
case 77: // SO_ASSIGN_STRING case 77: // SO_ASSIGN_STRING
copyScriptString(string); copyScriptString(string);
len = resStrLen(string) + 1; len = resStrLen(string) + 1;
@ -626,7 +624,6 @@ void ScummEngine_v100he::o100_arrayOps() {
writeArray(array, 0, b + c, pop()); writeArray(array, 0, b + c, pop());
} }
break; break;
case 130: case 130:
len = getStackList(list, ARRAYSIZE(list)); len = getStackList(list, ARRAYSIZE(list));
dim1end = pop(); dim1end = pop();
@ -1105,6 +1102,27 @@ void ScummEngine_v100he::o100_paletteOps() {
debug(0,"o100_paletteOps stub (%d)", subOp); 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() { void ScummEngine_v100he::o100_roomOps() {
int a, b, c, d, e; int a, b, c, d, e;
byte op; byte op;

View file

@ -2104,9 +2104,11 @@ void ScummEngine_v72he::o72_getPixel() {
} }
switch (subOp) { switch (subOp) {
case 9: // HE 100
case 218: case 218:
area = *vs->getBackPixels(x, y - vs->topline); area = *vs->getBackPixels(x, y - vs->topline);
break; break;
case 8: // HE 100
case 219: case 219:
area = *vs->getPixels(x, y - vs->topline); area = *vs->getPixels(x, y - vs->topline);
break; break;