aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2004-09-20 05:30:26 +0000
committerTravis Howell2004-09-20 05:30:26 +0000
commite9a9a6410927b1cc749335d19492ed617efcb5cd (patch)
tree191d2db95311b28b1cf8041eb3cc9823b9a14395
parent0cb722d71d1ddda5da07fb63bcd1db64436c1ed9 (diff)
downloadscummvm-rg350-e9a9a6410927b1cc749335d19492ed617efcb5cd.tar.gz
scummvm-rg350-e9a9a6410927b1cc749335d19492ed617efcb5cd.tar.bz2
scummvm-rg350-e9a9a6410927b1cc749335d19492ed617efcb5cd.zip
Opcode1C in HE90+ games seems to setup WizImage settings via various cases.
svn-id: r15198
-rw-r--r--scumm/script_v90he.cpp24
-rw-r--r--scumm/scumm.cpp5
-rw-r--r--scumm/scumm.h1
3 files changed, 24 insertions, 6 deletions
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index 38a71cb717..1e74c74c1f 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -451,13 +451,13 @@ void ScummEngine_v90he::o90_unknown1C() {
pop();
break;
case 6:
- pop();
+ _wizState = pop();
break;
case 7:
pop();
break;
case 8:
- pop();
+ _wizFlag = pop();
break;
case 10:
{
@@ -480,11 +480,12 @@ void ScummEngine_v90he::o90_unknown1C() {
}
break;
case 11:
- pop();
+ _wizResNum = pop();
+ _wizFlag = 0;
break;
case 19:
- pop();
- pop();
+ _wizY1 = pop();
+ _wizX1 = pop();
break;
case 87: // HE99+
pop();
@@ -499,12 +500,23 @@ void ScummEngine_v90he::o90_unknown1C() {
case 171: // HE99+
break;
case 209:
+ if (_fullRedraw) {
+ assert(_wizImagesNum < ARRAYSIZE(_wizImages));
+ WizImage *pwi = &_wizImages[_wizImagesNum];
+ pwi->resnum = _wizResNum;
+ pwi->x1 = _wizX1;
+ pwi->y1 = _wizY1;
+ pwi->flags = _wizFlag;
+ ++_wizImagesNum;
+ } else {
+ drawWizImage(rtImage, _wizResNum, _wizState, _wizX1, _wizY1, _wizFlag);
+ }
break;
default:
error("o90_unknown1C: unhandled case %d", subOp);
}
- debug(1,"o90_unknown1C stub (%d)", subOp);
+ debug(0,"o90_unknown1C stub (%d)", subOp);
}
void ScummEngine_v90he::o90_unknown25() {
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index 4ecb956583..553633f644 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -701,6 +701,11 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
_heSndLoop = 0;
_heSndSoundFreq = 0;
memset(_timers, 0, sizeof(_timers));
+ _wizResNum = 0;
+ _wizX1 = 0;
+ _wizY1 = 0;
+ _wizState = 0;
+ _wizFlag = 0;
memset(_queueCmd, 0, sizeof(_queueCmd));
memset(_queueActor, 0, sizeof(_queueActor));
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 6ee20a732b..71d1572e5e 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -1075,6 +1075,7 @@ public:
int _heSndSoundFreq, _heSndOffset, _heSndChannel, _heSndSoundId, _heSndLoop;
bool _skipDrawObject, _skipProcessActors;
int _timers[4];
+ int _wizResNum, _wizX1, _wizY1, _wizState, _wizFlag;
protected:
int _shadowPaletteSize;