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

View file

@ -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 */

View file

@ -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() {

View file

@ -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);

View file

@ -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);
} }