diff options
Diffstat (limited to 'engines/dm/dm.cpp')
-rw-r--r-- | engines/dm/dm.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/engines/dm/dm.cpp b/engines/dm/dm.cpp index 33bd033c5b..945d739edd 100644 --- a/engines/dm/dm.cpp +++ b/engines/dm/dm.cpp @@ -696,4 +696,40 @@ void DMEngine::f439_drawEntrance() { _displayMan->f21_blitToScreen(_g562_entranceDoorAnimSteps[4], &closedDoorRightBox, k64_byteWidth, kM1_ColorNoTransparency, 161); _displayMan->f436_STARTEND_FadeToPalette(g20_PalEntrance); } + +void DMEngine::f438_STARTEND_OpenEntranceDoors() { + Box rightDoorBox(109, 231, 0 + 33, 160 + 33); + byte *rightDoorBitmap = _displayMan->f489_getNativeBitmapOrGraphic(k3_entranceRightDoorGraphicIndice); + Box leftDoorBox(0, 100, 0 + 33, 160 + 33); + uint16 leftDoorBlitFrom = 0; + byte *leftDoorBitmap = _displayMan->f489_getNativeBitmapOrGraphic(k2_entranceLeftDoorGraphicIndice); + + Box screenBox(0, 319, 0, 199); + byte *tmpScreen = new byte[320 * 200]; + memcpy(tmpScreen, _displayMan->_g348_bitmapScreen, 320 * 200); + + uint16 animStep = 1; + do { + if ((animStep % 3) == 1) { + // Strangerke: CHECKME: Earlier versions of the game were using G0565_puc_Graphic535_Sound02DoorRattle instead of k02_soundDOOR_RATTLE 2 + f060_SOUND_Play(k02_soundDOOR_RATTLE, 145, 0x40, 0x40); + } + + _displayMan->f21_blitToScreen(tmpScreen, &screenBox, 160, kM1_ColorNoTransparency, 200); + _displayMan->f132_blitToBitmap(leftDoorBitmap, _displayMan->_g348_bitmapScreen, leftDoorBox, leftDoorBlitFrom, 0, 64, k160_byteWidthScreen, kM1_ColorNoTransparency); + _displayMan->f132_blitToBitmap(rightDoorBitmap, _displayMan->_g348_bitmapScreen, rightDoorBox, 0, 0, 64, k160_byteWidthScreen, kM1_ColorNoTransparency); + _eventMan->f357_discardAllInput(); + _displayMan->updateScreen(); + + leftDoorBox._x2 -= 4; + leftDoorBlitFrom += 4; + rightDoorBox._x1 += 4; + + f22_delay(3); + } while (++animStep != 32); +} + + + + } // End of namespace DM |