aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/mult.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/mult.cpp')
-rw-r--r--engines/gob/mult.cpp698
1 files changed, 2 insertions, 696 deletions
diff --git a/engines/gob/mult.cpp b/engines/gob/mult.cpp
index b16e5d9739..396a0964c4 100644
--- a/engines/gob/mult.cpp
+++ b/engines/gob/mult.cpp
@@ -43,6 +43,7 @@ namespace Gob {
Mult::Mult(GobEngine *vm) : _vm(vm) {
_objects = 0;
_renderData = 0;
+ _renderData2 = 0;
_objCount = 0;
_underAnimSurf = 0;
_multData = 0;
@@ -117,290 +118,8 @@ Mult::Mult(GobEngine *vm) : _vm(vm) {
_fadePal[i][j].green = 0;
_fadePal[i][j].blue = 0;
}
-}
-
-void Mult::animate(void) {
- int16 minOrder;
- int16 maxOrder;
- int16 *pCurLefts;
- int16 *pCurRights;
- int16 *pCurTops;
- int16 *pCurBottoms;
- int16 *pDirtyLefts;
- int16 *pDirtyRights;
- int16 *pDirtyTops;
- int16 *pDirtyBottoms;
- int16 *pNeedRedraw;
- Mult_AnimData *pAnimData;
- int16 i, j;
- int16 order;
-
- if (_renderData == 0)
- return;
-
- pDirtyLefts = _renderData;
- pDirtyRights = pDirtyLefts + _objCount;
- pDirtyTops = pDirtyRights + _objCount;
- pDirtyBottoms = pDirtyTops + _objCount;
- pNeedRedraw = pDirtyBottoms + _objCount;
- pCurLefts = pNeedRedraw + _objCount;
- pCurRights = pCurLefts + _objCount;
- pCurTops = pCurRights + _objCount;
- pCurBottoms = pCurTops + _objCount;
- minOrder = 100;
- maxOrder = 0;
-
- //Find dirty areas
- for (i = 0; i < _objCount; i++) {
- pNeedRedraw[i] = 0;
- pDirtyTops[i] = 1000;
- pDirtyLefts[i] = 1000;
- pDirtyBottoms[i] = 1000;
- pDirtyRights[i] = 1000;
- pAnimData = _objects[i].pAnimData;
-
- if (pAnimData->isStatic == 0 && pAnimData->isPaused == 0 &&
- _objects[i].tick == pAnimData->maxTick) {
- if (pAnimData->order < minOrder)
- minOrder = pAnimData->order;
-
- if (pAnimData->order > maxOrder)
- maxOrder = pAnimData->order;
-
- pNeedRedraw[i] = 1;
- _vm->_scenery->updateAnim(pAnimData->layer, pAnimData->frame,
- pAnimData->animation, 0,
- *(_objects[i].pPosX), *(_objects[i].pPosY),
- 0);
-
- if (_objects[i].lastLeft != -1) {
- pDirtyLefts[i] =
- MIN(_objects[i].lastLeft,
- _vm->_scenery->_toRedrawLeft);
- pDirtyTops[i] =
- MIN(_objects[i].lastTop,
- _vm->_scenery->_toRedrawTop);
- pDirtyRights[i] =
- MAX(_objects[i].lastRight,
- _vm->_scenery->_toRedrawRight);
- pDirtyBottoms[i] =
- MAX(_objects[i].lastBottom,
- _vm->_scenery->_toRedrawBottom);
- } else {
- pDirtyLefts[i] = _vm->_scenery->_toRedrawLeft;
- pDirtyTops[i] = _vm->_scenery->_toRedrawTop;
- pDirtyRights[i] = _vm->_scenery->_toRedrawRight;
- pDirtyBottoms[i] = _vm->_scenery->_toRedrawBottom;
- }
- pCurLefts[i] = _vm->_scenery->_toRedrawLeft;
- pCurRights[i] = _vm->_scenery->_toRedrawRight;
- pCurTops[i] = _vm->_scenery->_toRedrawTop;
- pCurBottoms[i] = _vm->_scenery->_toRedrawBottom;
- } else {
- if (_objects[i].lastLeft != -1) {
- if (pAnimData->order < minOrder)
- minOrder = pAnimData->order;
-
- if (pAnimData->order > maxOrder)
- maxOrder = pAnimData->order;
-
- if (pAnimData->isStatic)
- *pNeedRedraw = 1;
-
- pCurLefts[i] = _objects[i].lastLeft;
- pDirtyLefts[i] = _objects[i].lastLeft;
-
- pCurTops[i] = _objects[i].lastTop;
- pDirtyTops[i] = _objects[i].lastTop;
-
- pCurRights[i] = _objects[i].lastRight;
- pDirtyRights[i] = _objects[i].lastRight;
-
- pCurBottoms[i] = _objects[i].lastBottom;
- pDirtyBottoms[i] = _objects[i].lastBottom;
- }
- }
- }
-
- // Find intersections
- for (i = 0; i < _objCount; i++) {
- pAnimData = _objects[i].pAnimData;
- pAnimData->intersected = 200;
-
- if (pAnimData->isStatic)
- continue;
-
- for (j = 0; j < _objCount; j++) {
- if (i == j)
- continue;
- if (_objects[j].pAnimData->isStatic)
- continue;
-
- if (pCurRights[i] < pCurLefts[j])
- continue;
-
- if (pCurRights[j] < pCurLefts[i])
- continue;
-
- if (pCurBottoms[i] < pCurTops[j])
- continue;
-
- if (pCurBottoms[j] < pCurTops[i])
- continue;
-
- pAnimData->intersected = j;
- break;
- }
- }
-
- // Restore dirty areas
- for (i = 0; i < _objCount; i++) {
-
- if (pNeedRedraw[i] == 0 || _objects[i].lastLeft == -1)
- continue;
-
- _vm->_draw->_sourceSurface = 22;
- _vm->_draw->_destSurface = 21;
- _vm->_draw->_spriteLeft = pDirtyLefts[i] - _vm->_anim->_areaLeft;
- _vm->_draw->_spriteTop = pDirtyTops[i] - _vm->_anim->_areaTop;
- _vm->_draw->_spriteRight = pDirtyRights[i] - pDirtyLefts[i] + 1;
- _vm->_draw->_spriteBottom = pDirtyBottoms[i] - pDirtyTops[i] + 1;
- _vm->_draw->_destSpriteX = pDirtyLefts[i];
- _vm->_draw->_destSpriteY = pDirtyTops[i];
- _vm->_draw->_transparency = 0;
- _vm->_draw->spriteOperation(DRAW_BLITSURF);
- _objects[i].lastLeft = -1;
- }
-
- // Update view
- for (order = minOrder; order <= maxOrder; order++) {
- for (i = 0; i < _objCount; i++) {
- pAnimData = _objects[i].pAnimData;
- if (pAnimData->order != order)
- continue;
-
- if (pNeedRedraw[i]) {
- if (pAnimData->isStatic == 0) {
-
- _vm->_scenery->updateAnim(pAnimData->layer,
- pAnimData->frame,
- pAnimData->animation, 2,
- *(_objects[i].pPosX),
- *(_objects[i].pPosY), 1);
-
- if (_vm->_scenery->_toRedrawLeft != -12345) {
- _objects[i].lastLeft =
- _vm->_scenery->_toRedrawLeft;
- _objects[i].lastTop =
- _vm->_scenery->_toRedrawTop;
- _objects[i].lastRight =
- _vm->_scenery->_toRedrawRight;
- _objects[i].lastBottom =
- _vm->_scenery->_toRedrawBottom;
- } else {
- _objects[i].lastLeft = -1;
- }
- }
- _vm->_scenery->updateStatic(order + 1);
- } else if (pAnimData->isStatic == 0) {
- for (j = 0; j < _objCount; j++) {
- if (pNeedRedraw[j] == 0)
- continue;
-
- if (pDirtyRights[i] < pDirtyLefts[j])
- continue;
-
- if (pDirtyRights[j] < pDirtyLefts[i])
- continue;
-
- if (pDirtyBottoms[i] < pDirtyTops[j])
- continue;
-
- if (pDirtyBottoms[j] < pDirtyTops[i])
- continue;
-
- _vm->_scenery->_toRedrawLeft = pDirtyLefts[j];
- _vm->_scenery->_toRedrawRight = pDirtyRights[j];
- _vm->_scenery->_toRedrawTop = pDirtyTops[j];
- _vm->_scenery->_toRedrawBottom = pDirtyBottoms[j];
-
- _vm->_scenery->updateAnim(pAnimData->layer,
- pAnimData->frame,
- pAnimData->animation, 4,
- *(_objects[i].pPosX),
- *(_objects[i].pPosY), 1);
-
- _vm->_scenery->updateStatic(order + 1);
- }
- }
- }
- }
-
- // Advance animations
- for (i = 0; i < _objCount; i++) {
- pAnimData = _objects[i].pAnimData;
- if (pAnimData->isStatic || pAnimData->isPaused)
- continue;
-
- if (_objects[i].tick == pAnimData->maxTick) {
- _objects[i].tick = 0;
- if (pAnimData->animType == 4) {
- pAnimData->isPaused = 1;
- pAnimData->frame = 0;
- } else {
- pAnimData->frame++;
- if (pAnimData->frame >=
- _vm->_scenery->_animations[(int)pAnimData->animation].layers[pAnimData->layer]->framesCount) {
- switch (pAnimData->animType) {
- case 0:
- pAnimData->frame = 0;
- break;
-
- case 1:
- pAnimData->frame = 0;
-
- *(_objects[i].pPosX) =
- *(_objects[i].pPosX) +
- _vm->_scenery->_animations[(int)pAnimData->animation].layers[pAnimData->layer]->animDeltaX;
-
- *(_objects[i].pPosY) =
- *(_objects[i].pPosY) +
- _vm->_scenery->_animations[(int)pAnimData->animation].layers[pAnimData->layer]->animDeltaY;
- break;
-
- case 2:
- pAnimData->frame = 0;
- pAnimData->animation =
- pAnimData->newAnimation;
- pAnimData->layer =
- pAnimData->newLayer;
- break;
-
- case 3:
- pAnimData->animType = 4;
- pAnimData->frame = 0;
- break;
-
- case 5:
- pAnimData->isStatic = 1;
- pAnimData->frame = 0;
- break;
-
- case 6:
- pAnimData->frame--;
- pAnimData->isPaused = 1;
- break;
- }
- pAnimData->newCycle = 1;
- } else {
- pAnimData->newCycle = 0;
- }
- }
- } else {
- _objects[i].tick++;
- }
- }
+ _orderArray = 0;
}
void Mult::interGetObjAnimSize(void) {
@@ -495,419 +214,6 @@ void Mult::playSound(Snd::SoundDesc * soundDesc, int16 repCount, int16 freq,
_vm->_snd->playSample(soundDesc, repCount, freq);
}
-char Mult::drawStatics(char stop) {
- if (_staticKeys[_staticKeysCount - 1].frame > _frame)
- stop = 0;
-
- for (_counter = 0; _counter < _staticKeysCount;
- _counter++) {
- if (_staticKeys[_counter].frame != _frame
- || _staticKeys[_counter].layer == -1)
- continue;
-
- for (_vm->_scenery->_curStatic = 0, _vm->_scenery->_curStaticLayer = _staticKeys[_counter].layer;
- _vm->_scenery->_curStaticLayer >= _vm->_scenery->_statics[_staticIndices[_vm->_scenery->_curStatic]].layersCount;
- _vm->_scenery->_curStatic++) {
- _vm->_scenery->_curStaticLayer -=
- _vm->_scenery->_statics[_staticIndices[_vm->_scenery->_curStatic]].layersCount;
- }
-
- _vm->_scenery->_curStatic = _staticIndices[_vm->_scenery->_curStatic];
- _vm->_scenery->renderStatic(_vm->_scenery->_curStatic, _vm->_scenery->_curStaticLayer);
- _vm->_video->drawSprite(_vm->_draw->_backSurface, _vm->_anim->_animSurf,
- 0, 0, 319, 199, 0, 0, 0);
- }
- return stop;
-}
-
-void Mult::drawAnims(void) {
- Mult_AnimKey *key;
- Mult_Object *animObj;
- int16 i;
- int16 count;
-
- for (_index = 0; _index < 4; _index++) {
- for (_counter = 0; _counter < _animKeysCount[_index]; _counter++) {
- key = &_animKeys[_index][_counter];
- animObj = &_objects[_index];
- if (key->frame != _frame)
- continue;
-
- if (key->layer != -1) {
- (*animObj->pPosX) = key->posX;
- (*animObj->pPosY) = key->posY;
-
- animObj->pAnimData->frame = 0;
- animObj->pAnimData->order = key->order;
- animObj->pAnimData->animType = 1;
-
- animObj->pAnimData->isPaused = 0;
- animObj->pAnimData->isStatic = 0;
- animObj->pAnimData->maxTick = 0;
- animObj->tick = 0;
- animObj->pAnimData->layer = key->layer;
-
- count = _vm->_scenery->_animations[_animIndices[0]].layersCount;
- i = 0;
- while (animObj->pAnimData->layer >= count) {
- animObj->pAnimData->layer -= count;
- i++;
-
- count = _vm->_scenery->_animations[_animIndices[i]].layersCount;
- }
- animObj->pAnimData->animation = _animIndices[i];
- } else {
- animObj->pAnimData->isStatic = 1;
- }
- }
- }
-}
-
-void Mult::drawText(char *pStop, char *pStopNoClear) {
- char *savedIP;
-
- int16 cmd;
- for (_index = 0; _index < _textKeysCount; _index++) {
- if (_textKeys[_index].frame != _frame)
- continue;
-
- cmd = _textKeys[_index].cmd;
- if (cmd == 0) {
- *pStop = 0;
- } else if (cmd == 1) {
- *pStopNoClear = 1;
- _frameStart = 0;
- } else if (cmd == 3) {
- *pStop = 0;
- savedIP = _vm->_global->_inter_execPtr;
- _vm->_global->_inter_execPtr = (char *)(&_textKeys[_index].index);
- _vm->_global->_inter_execPtr = savedIP;
- }
- }
-}
-
-char Mult::prepPalAnim(char stop) {
- _palKeyIndex = -1;
- do {
- _palKeyIndex++;
- if (_palKeyIndex >= _palKeysCount)
- return stop;
- } while (_palKeys[_palKeyIndex].frame != _frame);
-
- if (_palKeys[_palKeyIndex].cmd == -1) {
- stop = 0;
- _doPalSubst = 0;
- _vm->_global->_pPaletteDesc->vgaPal = _oldPalette;
-
- memcpy((char *)_palAnimPalette, (char *)_vm->_global->_pPaletteDesc->vgaPal, 768);
-
- _vm->_video->setFullPalette(_vm->_global->_pPaletteDesc);
- } else {
- stop = 0;
- _doPalSubst = 1;
- _palAnimKey = _palKeyIndex;
-
- _palAnimIndices[0] = 0;
- _palAnimIndices[1] = 0;
- _palAnimIndices[2] = 0;
- _palAnimIndices[3] = 0;
-
- _vm->_global->_pPaletteDesc->vgaPal = _palAnimPalette;
- }
- return stop;
-}
-
-void Mult::doPalAnim(void) {
- int16 off;
- int16 off2;
- Video::Color *palPtr;
- Mult_PalKey *palKey;
-
- if (_doPalSubst == 0)
- return;
-
- for (_index = 0; _index < 4; _index++) {
- palKey = &_palKeys[_palAnimKey];
-
- if ((_frame % palKey->rates[_index]) != 0)
- continue;
-
- _palAnimRed[_index] =
- _vm->_global->_pPaletteDesc->vgaPal[palKey->subst[0][_index] - 1].red;
- _palAnimGreen[_index] =
- _vm->_global->_pPaletteDesc->vgaPal[palKey->subst[0][_index] - 1].green;
- _palAnimBlue[_index] =
- _vm->_global->_pPaletteDesc->vgaPal[palKey->subst[0][_index] - 1].blue;
-
- while (1) {
- off = palKey->subst[(_palAnimIndices[_index] + 1) % 16][_index];
- if (off == 0) {
- off = palKey->subst[_palAnimIndices[_index]][_index] - 1;
-
- _vm->_global->_pPaletteDesc->vgaPal[off].red = _palAnimRed[_index];
- _vm->_global->_pPaletteDesc->vgaPal[off].green = _palAnimGreen[_index];
- _vm->_global->_pPaletteDesc->vgaPal[off].blue = _palAnimBlue[_index];
- } else {
- off = palKey->subst[(_palAnimIndices[_index] + 1) % 16][_index] - 1;
- off2 = palKey->subst[_palAnimIndices[_index]][_index] - 1;
-
- _vm->_global->_pPaletteDesc->vgaPal[off2].red = _vm->_global->_pPaletteDesc->vgaPal[off].red;
- _vm->_global->_pPaletteDesc->vgaPal[off2].green = _vm->_global->_pPaletteDesc->vgaPal[off].green;
- _vm->_global->_pPaletteDesc->vgaPal[off2].blue = _vm->_global->_pPaletteDesc->vgaPal[off].blue;
- }
-
- _palAnimIndices[_index] = (_palAnimIndices[_index] + 1) % 16;
-
- off = palKey->subst[_palAnimIndices[_index]][_index];
-
- if (off == 0) {
- _palAnimIndices[_index] = 0;
- off = palKey->subst[0][_index] - 1;
-
- _palAnimRed[_index] = _vm->_global->_pPaletteDesc->vgaPal[off].red;
- _palAnimGreen[_index] = _vm->_global->_pPaletteDesc->vgaPal[off].green;
- _palAnimBlue[_index] = _vm->_global->_pPaletteDesc->vgaPal[off].blue;
- }
- if (_palAnimIndices[_index] == 0)
- break;
- }
- }
-
- if (_vm->_global->_colorCount == 256) {
- _vm->_video->waitRetrace(_vm->_global->_videoMode);
-
- palPtr = _vm->_global->_pPaletteDesc->vgaPal;
- for (_counter = 0; _counter < 16; _counter++) {
- _vm->_video->setPalElem(_counter, palPtr->red, palPtr->green, palPtr->blue, 0, 0x13);
- palPtr++;
- }
-
- palPtr = _vm->_global->_pPaletteDesc->vgaPal;
- for (_counter = 0; _counter < 16; _counter++) {
- _vm->_global->_redPalette[_counter] = palPtr->red;
- _vm->_global->_greenPalette[_counter] = palPtr->green;
- _vm->_global->_bluePalette[_counter] = palPtr->blue;
- palPtr++;
- }
- } else {
- _vm->_video->setFullPalette(_vm->_global->_pPaletteDesc);
- }
-}
-
-char Mult::doFadeAnim(char stop) {
- Mult_PalFadeKey *fadeKey;
-
- for (_index = 0; _index < _palFadeKeysCount; _index++) {
- fadeKey = &_palFadeKeys[_index];
-
- if (fadeKey->frame != _frame)
- continue;
-
- stop = 0;
- if ((fadeKey->flag & 1) == 0) {
- if (fadeKey->fade == 0) {
- _vm->_global->_pPaletteDesc->vgaPal = _fadePal[fadeKey->palIndex];
- _vm->_video->setFullPalette(_vm->_global->_pPaletteDesc);
- } else {
- _vm->_global->_pPaletteDesc->vgaPal = _fadePal[fadeKey->palIndex];
- _vm->_palanim->fade(_vm->_global->_pPaletteDesc, fadeKey->fade, 0);
- }
- } else {
- _vm->_global->_pPaletteDesc->vgaPal = _fadePal[fadeKey->palIndex];
- _vm->_palanim->fade(_vm->_global->_pPaletteDesc, fadeKey->fade, -1);
-
- _palFadingRed = (fadeKey->flag >> 1) & 1;
- _palFadingGreen = (fadeKey->flag >> 2) & 1;
- _palFadingBlue = (fadeKey->flag >> 3) & 1;
- }
- }
-
- if (_palFadingRed) {
- _palFadingRed = !_vm->_palanim->fadeStep(1);
- stop = 0;
- }
- if (_palFadingGreen) {
- _palFadingGreen = !_vm->_palanim->fadeStep(2);
- stop = 0;
- }
- if (_palFadingBlue) {
- _palFadingBlue = !_vm->_palanim->fadeStep(3);
- stop = 0;
- }
- return stop;
-}
-
-char Mult::doSoundAnim(char stop) {
- Mult_SndKey *sndKey;
- for (_index = 0; _index < _sndKeysCount; _index++) {
- sndKey = &_sndKeys[_index];
- if (sndKey->frame != _frame)
- continue;
-
- if (sndKey->cmd != -1) {
- if (sndKey->cmd == 1) {
- _vm->_snd->stopSound(0);
- stop = 0;
- playSound(_vm->_game->_soundSamples[sndKey->soundIndex], sndKey->repCount,
- sndKey->freq, sndKey->channel);
-
- } else if (sndKey->cmd == 4) {
- _vm->_snd->stopSound(0);
- stop = 0;
- playSound(_vm->_game->_soundSamples[sndKey->soundIndex], sndKey->repCount,
- sndKey->freq, sndKey->channel);
- }
- } else {
- if (_vm->_snd->_playingSound)
- _vm->_snd->stopSound(sndKey->channel);
- }
- }
- return stop;
-}
-
-void Mult::playMult(int16 startFrame, int16 endFrame, char checkEscape,
- char handleMouse) {
- char stopNoClear;
- char stop;
- Mult_Object *multObj;
- Mult_AnimData *animData;
-
- if (_multData == 0)
- return;
-
- stopNoClear = 0;
- _frame = startFrame;
- if (endFrame == -1)
- endFrame = 32767;
-
- if (_frame == -1) {
- _doPalSubst = 0;
- _palFadingRed = 0;
- _palFadingGreen = 0;
- _palFadingBlue = 0;
-
- _oldPalette = _vm->_global->_pPaletteDesc->vgaPal;
- memcpy((char *)_palAnimPalette, (char *)_vm->_global->_pPaletteDesc->vgaPal, 768);
-
- if (_vm->_anim->_animSurf == 0) {
- _vm->_util->setFrameRate(_frameRate);
- _vm->_anim->_areaTop = 0;
- _vm->_anim->_areaLeft = 0;
- _vm->_anim->_areaWidth = 320;
- _vm->_anim->_areaHeight = 200;
- _objCount = 4;
-
- _objects = new Mult_Object[_objCount];
- _renderData = new int16[9 * _objCount];
-
- _animArrayX = new int32[_objCount];
- _animArrayY = new int32[_objCount];
-
- _animArrayData = new Mult_AnimData[_objCount];
-
- for (_counter = 0; _counter < _objCount; _counter++) {
- multObj = &_objects[_counter];
-
- multObj->pPosX = (int32 *)&_animArrayX[_counter];
- multObj->pPosY = (int32 *)&_animArrayY[_counter];
-
- multObj->pAnimData = &_animArrayData[_counter];
-
- animData = multObj->pAnimData;
- animData->isStatic = 1;
-
- multObj->tick = 0;
- multObj->lastLeft = -1;
- multObj->lastTop = -1;
- multObj->lastRight = -1;
- multObj->lastBottom = -1;
- }
-
- _vm->_anim->_animSurf =
- _vm->_video->initSurfDesc(_vm->_global->_videoMode, 320, 200, 0);
- _vm->_draw->_spritesArray[22] = _vm->_anim->_animSurf;
-
- _vm->_video->drawSprite(_vm->_draw->_backSurface, _vm->_anim->_animSurf,
- 0, 0, 319, 199, 0, 0, 0);
-
- _animDataAllocated = 1;
- } else
- _animDataAllocated = 0;
- _frame = 0;
- }
-
- do {
- stop = 1;
-
- if (VAR(58) == 0) {
- stop = drawStatics(stop);
- drawAnims();
- }
-
- animate();
- if (handleMouse) {
- _vm->_draw->animateCursor(-1);
- } else {
- _vm->_draw->blitInvalidated();
- }
-
- if (VAR(58) == 0) {
- drawText(&stop, &stopNoClear);
- }
-
- stop = prepPalAnim(stop);
- doPalAnim();
-
- stop = doFadeAnim(stop);
- stop = doSoundAnim(stop);
-
- if (_frame >= endFrame)
- stopNoClear = 1;
-
- if (_vm->_snd->_playingSound)
- stop = 0;
-
- _vm->_util->processInput();
- if (checkEscape && _vm->_util->checkKey() == 0x11b) // Esc
- stop = 1;
-
- _frame++;
- _vm->_util->waitEndFrame();
- } while (stop == 0 && stopNoClear == 0);
-
- if (stopNoClear == 0) {
- if (_animDataAllocated) {
- delete[] _objects;
- _objects = 0;
-
- delete[] _renderData;
- _renderData = 0;
-
- delete[] _animArrayX;
- _animArrayX = 0;
-
- delete[] _animArrayY;
- _animArrayY = 0;
-
- delete[] _animArrayData;
- _animArrayData = 0;
-
- if (_vm->_anim->_animSurf)
- _vm->_video->freeSurfDesc(_vm->_anim->_animSurf);
- _vm->_anim->_animSurf = 0;
-
- _animDataAllocated = 0;
- }
-
- if (_vm->_snd->_playingSound != 0)
- _vm->_snd->stopSound(10);
-
- WRITE_VAR(57, (uint32)-1);
- } else {
- WRITE_VAR(57, _frame - 1 - _frameStart);
- }
-}
-
void Mult::zeroMultData(void) {
_multData = 0;
}