Add missing cases

svn-id: r15227
This commit is contained in:
Travis Howell
2004-09-22 00:22:32 +00:00
parent 6bfeab77e1
commit abefac8cd0
4 changed files with 35 additions and 20 deletions
+1 -1
View File
@@ -799,7 +799,7 @@ protected:
virtual void executeOpcode(byte i);
virtual const char *getOpcodeDesc(byte i);
void loadImgSpot(int resId, int state, Common::Point &spot);
void loadImgSpot(int resId, int state, uint32 &w, uint32 &h);
void loadWizCursor(int resId, int resType, bool state);
/* HE version 80 script opcodes */
+1 -1
View File
@@ -1159,7 +1159,7 @@ void ScummEngine_v60he::localizeArray(int slot, int script) {
if (slot >= _numArray)
error("o60_localizeArray(%d): array slot out of range", slot);
_arraySlot[slot] = vm.slot[_currentScript].number;
_arraySlot[slot] = script;
}
void ScummEngine_v60he::o60_localizeArray() {
+10 -9
View File
@@ -559,29 +559,30 @@ void ScummEngine_v80he::o80_cursorCommand() {
VAR(VAR_USERPUT) = _userPut;
}
void ScummEngine_v80he::loadImgSpot(int resId, int state, Common::Point &spot) {
void ScummEngine_v80he::loadImgSpot(int resId, int state, uint32 &w, uint32 &h) {
const uint8 *dataPtr = getResourceAddress(rtImage, resId);
if (!dataPtr)
error("loadImgSpot: unknown Image %d", resId);
const uint8 *spotPtr = findWrappedBlock(MKID('SPOT'), dataPtr, state, 0);
if (!spotPtr) {
spot.x = spot.y = 0;
if (spotPtr) {
w = (int16)READ_LE_UINT32(spotPtr + 0);
h = (int16)READ_LE_UINT32(spotPtr + 4);
} else {
spot.x = (int16)READ_LE_UINT32(spotPtr + 0);
spot.y = (int16)READ_LE_UINT32(spotPtr + 4);
w = 0;
h = 0;
}
}
void ScummEngine_v80he::loadWizCursor(int resId, int resType, bool state) {
Common::Rect rc;
Common::Point spot;
uint32 w, h;
loadImgSpot(resId, 0, spot);
loadImgSpot(resId, 0, w, h);
rc.top = spot.x;
rc.right = spot.y;
rc.top = w;
rc.right = h;
rc.top = MAX((int)rc.top, 0);
rc.right = MAX((int)rc.right, 0);
+23 -9
View File
@@ -774,40 +774,54 @@ void ScummEngine_v90he::o90_unknown28() {
}
void ScummEngine_v90he::o90_unknown29() {
int state, resId;
uint32 w, h;
int subOp = fetchScriptByte();
subOp -= 30;
switch (subOp) {
case 0:
pop();
pop();
state = pop();
resId = pop();
loadImgSpot(resId, state, w, h);
push(w);
break;
case 1:
pop();
pop();
state = pop();
resId = pop();
loadImgSpot(resId, state, w, h);
push(h);
break;
case 2:
pop();
pop();
state = pop();
resId = pop();
getWizImageDim(resId, state, w, h);
push(w);
break;
case 3:
pop();
pop();
state = pop();
resId = pop();
getWizImageDim(resId, state, w, h);
push(h);
break;
case 6:
pop();
push(0);
break;
case 15:
pop();
pop();
pop();
pop();
push(0);
break;
case 36:
pop();
pop();
pop();
pop();
push(0);
break;
case 100:
pop();
@@ -816,11 +830,11 @@ void ScummEngine_v90he::o90_unknown29() {
pop();
pop();
pop();
push(0);
break;
default:
error("o90_unknown29: Unknown case %d", subOp);
}
push(0);
debug(1,"o90_unknown29 stub (%d)", subOp);
}