diff options
author | Travis Howell | 2005-04-27 13:55:55 +0000 |
---|---|---|
committer | Travis Howell | 2005-04-27 13:55:55 +0000 |
commit | f6971f847ce37b7c8afbbd29262a1ffed7335610 (patch) | |
tree | 2cc926b6e16c8e47aaad0d1bb1b06b43ff0d81be | |
parent | 2c012197910972fc5a16a3316b21b2b4ad7d8687 (diff) | |
download | scummvm-rg350-f6971f847ce37b7c8afbbd29262a1ffed7335610.tar.gz scummvm-rg350-f6971f847ce37b7c8afbbd29262a1ffed7335610.tar.bz2 scummvm-rg350-f6971f847ce37b7c8afbbd29262a1ffed7335610.zip |
Fix glitch when skipping AUX sequence in freddi.
Add missing bits of AUX code.
svn-id: r17837
-rw-r--r-- | scumm/actor.cpp | 25 | ||||
-rw-r--r-- | scumm/cursor.cpp | 2 | ||||
-rw-r--r-- | scumm/script_v7he.cpp | 7 |
3 files changed, 29 insertions, 5 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp index 617aa7c63f..291b8697ea 100644 --- a/scumm/actor.cpp +++ b/scumm/actor.cpp @@ -147,6 +147,10 @@ void Actor::initActor(int mode) { _clipOverride = _vm->_actorClipOverride; _auxBlock.visible = false; + _auxBlock.r.left = 0; + _auxBlock.r.top = 0; + _auxBlock.r.right = -1; + _auxBlock.r.bottom = -1; _hePaletteNum = 0; _vm->_classData[_number] = (_vm->_version >= 7) ? _vm->_classData[0] : 0; @@ -502,6 +506,10 @@ void Actor::startAnimActor(int f) { if (_vm->_version >= 3 && f == _initFrame) { _cost.reset(); _auxBlock.visible = false; + _auxBlock.r.left = 0; + _auxBlock.r.top = 0; + _auxBlock.r.right = -1; + _auxBlock.r.bottom = -1; } _vm->_costumeLoader->costumeDecodeData(this, f, (uint) - 1); _frame = f; @@ -793,6 +801,10 @@ void Actor::hideActor() { _needRedraw = false; _needBgReset = true; _auxBlock.visible = false; + _auxBlock.r.left = 0; + _auxBlock.r.top = 0; + _auxBlock.r.right = -1; + _auxBlock.r.bottom = -1; } void Actor::showActor() { @@ -1397,14 +1409,19 @@ void Actor::setActorCostume(int c) { _costumeNeedsInit = true; if (_vm->_features & GF_NEW_COSTUMES) { - _cost.reset(); - _auxBlock.visible = false; memset(_animVariable, 0, sizeof(_animVariable)); - _costume = c; if (_vm->_heversion >= 71) _vm->queueAuxBlock(this); + _costume = c; + _cost.reset(); + _auxBlock.visible = false; + _auxBlock.r.left = 0; + _auxBlock.r.top = 0; + _auxBlock.r.right = -1; + _auxBlock.r.bottom = -1; + if (_visible) { if (_costume) { _vm->ensureResourceLoaded(rtCostume, _costume); @@ -1989,7 +2006,7 @@ void ScummEngine::postProcessAuxQueue() { int y1 = (int16)READ_LE_UINT16(axur + 2) + dy; int x2 = (int16)READ_LE_UINT16(axur + 4) + dx; int y2 = (int16)READ_LE_UINT16(axur + 6) + dy; - markRectAsDirty(kMainVirtScreen, x1, x2, y1, y2 + 1, a->_number); + markRectAsDirty(kMainVirtScreen, x1, x2, y1, y2 + 1); axur += 8; } } diff --git a/scumm/cursor.cpp b/scumm/cursor.cpp index dd4cb23be3..553fff66ca 100644 --- a/scumm/cursor.cpp +++ b/scumm/cursor.cpp @@ -65,7 +65,7 @@ static const byte default_cursor_hotspots[10] = { 8, 7, //zak256 }; -static const uint16 default_he_cursor[] = { +static const uint16 default_he_cursor[64] = { 0x0000, 0x0000, 0x3800, 0x0000, 0x7e00, 0x0000, 0x5f80, 0x0000, 0x5fe0, 0x0000, 0x2ff8, 0x0000, 0x27fe, 0x0000, 0x17ff, 0x8000, 0x13ff, 0xe000, 0x09ff, 0xf000, 0x09ff, 0xf800, 0x04ff, 0xf800, diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp index 17c9690fa5..816bdeb2b6 100644 --- a/scumm/script_v7he.cpp +++ b/scumm/script_v7he.cpp @@ -796,6 +796,13 @@ void ScummEngine_v70he::o70_kernelSetFunctions() { _skipProcessActors = 0; redrawAllActors(); break; + case 26: + a = derefActor(args[1], "o70_kernelSetFunctions: 26"); + a->_auxBlock.r.left = 0; + a->_auxBlock.r.top = 0; + a->_auxBlock.r.right = -1; + a->_auxBlock.r.bottom = -1; + break; case 30: a = derefActor(args[1], "o70_kernelSetFunctions: 30"); a->_clipOverride.bottom = args[2]; |