diff options
author | Travis Howell | 2005-03-30 11:49:53 +0000 |
---|---|---|
committer | Travis Howell | 2005-03-30 11:49:53 +0000 |
commit | 6bb533f936f7cf9cd41cdb6a83d62733935afc32 (patch) | |
tree | 0e5a3f9f61a33bc5dcc054c9f7b002f5f15645d7 /scumm | |
parent | bace6b5a243dcbe233a7faca1f24257dafa9d592 (diff) | |
download | scummvm-rg350-6bb533f936f7cf9cd41cdb6a83d62733935afc32.tar.gz scummvm-rg350-6bb533f936f7cf9cd41cdb6a83d62733935afc32.tar.bz2 scummvm-rg350-6bb533f936f7cf9cd41cdb6a83d62733935afc32.zip |
Cleanup
svn-id: r17292
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/intern.h | 7 | ||||
-rw-r--r-- | scumm/script_v100he.cpp | 19 | ||||
-rw-r--r-- | scumm/script_v72he.cpp | 14 | ||||
-rw-r--r-- | scumm/script_v7he.cpp | 10 | ||||
-rw-r--r-- | scumm/script_v80he.cpp | 28 | ||||
-rw-r--r-- | scumm/script_v90he.cpp | 13 | ||||
-rw-r--r-- | scumm/wiz_he.cpp | 31 | ||||
-rw-r--r-- | scumm/wiz_he.h | 2 |
8 files changed, 63 insertions, 61 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 7cee9aaebe..b8ebadc038 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -717,6 +717,7 @@ protected: #endif const OpcodeEntryV72he *_opcodesV72he; + WizParameters _wizParams; public: ScummEngine_v72he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v70he(detector, syst, gs, md5sum) {} @@ -740,8 +741,9 @@ protected: int readFileToArray(int slot, int32 size); void writeFileFromArray(int slot, int resID); + void displayWizComplexImage(const WizParameters *params); + void drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r); void captureWizImage(int restype, int resnum, const Common::Rect& r, bool frontBuffer, int compType); - void displayWizImage(const WizImage *pwi); void getWizImageDim(int resnum, int state, int32 &w, int32 &h); uint8 *drawWizImage(int restype, const WizImage *pwi); void drawWizPolygon(int resnum, int state, int id, int flags); @@ -867,7 +869,6 @@ protected: const OpcodeEntryV90he *_opcodesV90he; FloodStateParameters _floodStateParams; - WizParameters _wizParams; int _curMaxSpriteId; int _curSpriteId; @@ -891,8 +892,6 @@ protected: virtual void executeOpcode(byte i); virtual const char *getOpcodeDesc(byte i); - void drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r); - void displayWizComplexImage(const WizParameters *params); void createWizEmptyImage(const WizParameters *params); void fillWizRect(const WizParameters *params); void processWizImage(const WizParameters *params); diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp index bdcebbd691..30243d86f1 100644 --- a/scumm/script_v100he.cpp +++ b/scumm/script_v100he.cpp @@ -854,17 +854,15 @@ void ScummEngine_v100he::o100_unknownE0() { type = 1; break; case 40: - { - WizImage wi; - wi.flags = 0; - wi.y1 = y1; - wi.x1 = x1; - wi.resNum = num; - wi.state = 0; - displayWizImage(&wi); + _wizParams.processFlags |= kWPFSetPos; + _wizParams.img.flags = 0; + _wizParams.img.state = 0; + _wizParams.img.y1 = y1; + _wizParams.img.x1 = x1; + _wizParams.img.resNum = num; + displayWizComplexImage(&_wizParams); type = 3; - } break; default: error("o100_unknownE0: default case %d", subOp); @@ -1255,12 +1253,13 @@ void ScummEngine_v100he::o100_wizImageOps() { pop(); break; case 55: + _wizParams.processFlags |= kWPFSetPos | kWPFNewState | kWPFNewFlags; _wizParams.img.flags = pop(); _wizParams.img.state = pop(); _wizParams.img.y1 = pop(); _wizParams.img.x1 = pop(); _wizParams.img.resNum = pop(); - displayWizImage(&_wizParams.img); + displayWizComplexImage(&_wizParams); break; case 57: _wizParams.processFlags |= 0x8000; diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp index 7d9f6dc954..d29f472719 100644 --- a/scumm/script_v72he.cpp +++ b/scumm/script_v72he.cpp @@ -1610,13 +1610,13 @@ void ScummEngine_v72he::o72_kernelGetFunctions() { } void ScummEngine_v72he::o72_drawWizImage() { - WizImage wi; - wi.flags = pop(); - wi.y1 = pop(); - wi.x1 = pop(); - wi.resNum = pop(); - wi.state = 0; - displayWizImage(&wi); + _wizParams.processFlags |= kWPFSetPos | kWPFNewFlags; + _wizParams.img.flags = pop(); + _wizParams.img.state = 0; + _wizParams.img.y1 = pop(); + _wizParams.img.x1 = pop(); + _wizParams.img.resNum = pop(); + displayWizComplexImage(&_wizParams); } void ScummEngine_v72he::o72_unknownCF() { diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp index a2210ae399..0ef04c2cd9 100644 --- a/scumm/script_v7he.cpp +++ b/scumm/script_v7he.cpp @@ -759,12 +759,14 @@ void ScummEngine_v70he::o70_kernelSetFunctions() { a->_clipOverride.bottom = args[2]; break; case 42: - // drawWizImage related - warning("o70_kernelSetFunctions: unhandled case 42"); + _wiz._rectOverrideEnabled = true; + _wiz._rectOverride.left = args[1]; + _wiz._rectOverride.top = args[2]; + _wiz._rectOverride.right = args[3]; + _wiz._rectOverride.bottom = args[4]; break; case 43: - // drawWizImage related - warning("o70_kernelSetFunctions: unhandled case 43"); + _wiz._rectOverrideEnabled = false; break; default: error("o70_kernelSetFunctions: default case %d (param count %d)", args[0], num); diff --git a/scumm/script_v80he.cpp b/scumm/script_v80he.cpp index 4e5c5296ad..ebdb6da233 100644 --- a/scumm/script_v80he.cpp +++ b/scumm/script_v80he.cpp @@ -587,12 +587,12 @@ void ScummEngine_v80he::o80_drawBox() { } void ScummEngine_v80he::o80_drawWizPolygon() { - WizImage wi; - wi.x1 = wi.y1 = pop(); - wi.resNum = pop(); - wi.state = 0; - wi.flags = kWIFIsPolygon; - displayWizImage(&wi); + _wizParams.processFlags |= kWPFSetPos | kWPFNewFlags; + _wizParams.img.flags = kWIFIsPolygon; + _wizParams.img.state = 0; + _wizParams.img.y1 = _wizParams.img.x1 = pop(); + _wizParams.img.resNum = pop(); + displayWizComplexImage(&_wizParams); } void ScummEngine_v80he::o80_unknownE0() { @@ -631,17 +631,15 @@ void ScummEngine_v80he::o80_unknownE0() { } break; case 63: - { - WizImage wi; - wi.flags = 0; - wi.y1 = y1; - wi.x1 = x1; - wi.resNum = num; - wi.state = 0; - displayWizImage(&wi); + _wizParams.processFlags |= kWPFSetPos; + _wizParams.img.flags = 0; + _wizParams.img.state = 0; + _wizParams.img.y1 = y1; + _wizParams.img.x1 = x1; + _wizParams.img.resNum = num; + displayWizComplexImage(&_wizParams); type = 3; - } break; case 66: type = 1; diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index cf6554afc2..9ac08c16dc 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -570,12 +570,13 @@ void ScummEngine_v90he::o90_wizImageOps() { _wizParams.img.flags = pop(); break; case 10: + _wizParams.processFlags |= kWPFSetPos | kWPFNewState | kWPFNewFlags; _wizParams.img.flags = pop(); _wizParams.img.state = pop(); _wizParams.img.y1 = pop(); _wizParams.img.x1 = pop(); _wizParams.img.resNum = pop(); - displayWizImage(&_wizParams.img); + displayWizComplexImage(&_wizParams); break; case 11: _wizParams.img.resNum = pop(); @@ -2231,12 +2232,14 @@ void ScummEngine_v90he::o90_kernelSetFunctions() { _fullRedraw = 1; break; case 42: - // drawWizImage related - warning("o90_kernelSetFunctions: unhandled case 42"); + _wiz._rectOverrideEnabled = true; + _wiz._rectOverride.left = args[1]; + _wiz._rectOverride.top = args[2]; + _wiz._rectOverride.right = args[3]; + _wiz._rectOverride.bottom = args[4]; break; case 43: - // drawWizImage related - warning("o90_kernelSetFunctions: unhandled case 43"); + _wiz._rectOverrideEnabled = false; break; case 714: break; diff --git a/scumm/wiz_he.cpp b/scumm/wiz_he.cpp index 8cb06a8f3f..101f7acd86 100644 --- a/scumm/wiz_he.cpp +++ b/scumm/wiz_he.cpp @@ -33,6 +33,7 @@ Wiz::Wiz() { _imagesNum = 0; memset(&_images, 0, sizeof(_images)); memset(&_polygons, 0, sizeof(_polygons)); + _rectOverrideEnabled = false; } void Wiz::imageNumClear() { @@ -828,18 +829,6 @@ void ScummEngine_v72he::captureWizImage(int resType, int resNum, const Common::R } } -void ScummEngine_v72he::displayWizImage(const WizImage *pwi) { - if (_fullRedraw) { - assert(_wiz._imagesNum < ARRAYSIZE(_wiz._images)); - memcpy(&_wiz._images[_wiz._imagesNum], pwi, sizeof(WizImage)); - ++_wiz._imagesNum; - } else if (pwi->flags & kWIFIsPolygon) { - drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags); - } else { - drawWizImage(rtImage, pwi); - } -} - void ScummEngine_v72he::getWizImageDim(int resnum, int state, int32 &w, int32 &h) { uint8 *dataPtr = getResourceAddress(rtImage, resnum); assert(dataPtr); @@ -884,6 +873,16 @@ uint8 *ScummEngine_v72he::drawWizImage(int restype, const WizImage *pwi) { warning("WizImage printing is unimplemented"); return NULL; } + + Common::Rect rImage(pwi->x1, pwi->y1, pwi->x1 + width, pwi->y1 + height); + if (_wiz._rectOverrideEnabled == true) { + if (rImage.intersects(_wiz._rectOverride)) { + rImage.clip(_wiz._rectOverride); + } else { + return 0; + } + } + uint32 cw, ch; if (pwi->flags & kWIFBlitToMemBuffer) { dst = (uint8 *)malloc(width * height); @@ -902,6 +901,8 @@ uint8 *ScummEngine_v72he::drawWizImage(int restype, const WizImage *pwi) { ch = pvs->h; } Common::Rect rScreen(cw, ch); + + // XXX handle 'XMAP' / 'RMAP' data if (comp == 1) { if (pwi->flags & 0x80) { @@ -924,7 +925,6 @@ uint8 *ScummEngine_v72he::drawWizImage(int restype, const WizImage *pwi) { } if (!(pwi->flags & kWIFBlitToMemBuffer)) { - Common::Rect rImage(pwi->x1, pwi->y1, pwi->x1 + width, pwi->y1 + height); if (rImage.intersects(rScreen)) { rImage.clip(rScreen); if (!(pwi->flags & kWIFBlitToFrontVideoBuffer) && (pwi->flags & (kWIFBlitToFrontVideoBuffer | kWIFMarkBufferDirty))) { @@ -1156,7 +1156,7 @@ void ScummEngine_v80he::loadWizCursor(int resId, int resType, bool state) { free(cursor); } -void ScummEngine_v90he::drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r) { +void ScummEngine_v72he::drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r) { Common::Point pts[4]; int32 w, h; getWizImageDim(resnum, state, w, h); @@ -1184,8 +1184,7 @@ void ScummEngine_v90he::drawWizComplexPolygon(int resnum, int state, int po_x, i warning("drawWizComplexPolygon() partially implemented"); } -void ScummEngine_v90he::displayWizComplexImage(const WizParameters *params) { - // XXX merge with displayWizImage +void ScummEngine_v72he::displayWizComplexImage(const WizParameters *params) { if (params->processFlags & 0x80000) { warning("displayWizComplexImage() unhandled flags = 0x80000"); } diff --git a/scumm/wiz_he.h b/scumm/wiz_he.h index ec2c99dfaa..796679e531 100644 --- a/scumm/wiz_he.h +++ b/scumm/wiz_he.h @@ -116,6 +116,8 @@ struct Wiz { Wiz(); void imageNumClear(); + Common::Rect _rectOverride; + bool _rectOverrideEnabled; void polygonClear(); void polygonLoad(const uint8 *polData); |