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