diff options
Diffstat (limited to 'engines/kyra/sequences_eob.cpp')
-rw-r--r-- | engines/kyra/sequences_eob.cpp | 102 |
1 files changed, 54 insertions, 48 deletions
diff --git a/engines/kyra/sequences_eob.cpp b/engines/kyra/sequences_eob.cpp index f18c67f659..195c44ea2a 100644 --- a/engines/kyra/sequences_eob.cpp +++ b/engines/kyra/sequences_eob.cpp @@ -110,7 +110,8 @@ void EoBIntroPlayer::start() { if (!_vm->shouldQuit() && !_vm->skipFlag()) { _vm->snd_playSong(2); - _screen->loadBitmap("TITLE-V.CMP", 5, 3, 0); + _screen->loadBitmap((_vm->_configRenderMode == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA) ? "TITLE-E.CMP" : "TITLE-V.CMP", 3, 5, 0); + _screen->convertPage(5, 2, _vm->_cgaMappingDefault); _screen->crossFadeRegion(0, 0, 0, 0, 320, 200, 2, 0); _vm->delay(120 * _vm->_tickLength); } @@ -121,7 +122,8 @@ void EoBIntroPlayer::start() { _screen->loadFileDataToPage(s, 6, s->size() - 768); delete s; } else { - _screen->loadBitmap("TEXT.CMP", 3, 6, 0); + _screen->loadBitmap("TEXT.CMP", 3, 5, 0); + _screen->convertPage(5, 6, _vm->_cgaMappingAlt); } tower(); @@ -139,8 +141,9 @@ void EoBIntroPlayer::start() { void EoBIntroPlayer::openingCredits() { loadAndSetPalette(_filesOpening[5]); + _screen->loadBitmap(_filesOpening[4], 5, 3, 0); - _screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK); + _screen->convertPage(3, 0, _vm->_cgaMappingAlt); _screen->updateScreen(); _vm->snd_playSong(1); @@ -149,7 +152,8 @@ void EoBIntroPlayer::openingCredits() { for (int i = 0; i < 4 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) { _screen->loadBitmap(_filesOpening[i], 5, 3, 0); uint32 nextFrameTimer = _vm->_system->getMillis() + _openingFrmDelay[i + 1] * _vm->_tickLength; - _screen->crossFadeRegion(0, 50, 0, 50, 320, 102, 2, 0); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); + _screen->crossFadeRegion(0, 50, 0, 50, 320, 102, 4, 0); _vm->delayUntil(nextFrameTimer); } } @@ -160,8 +164,8 @@ void EoBIntroPlayer::tower() { _screen->loadBitmap(_filesTower[1], 5, 3, 0); _screen->setCurPage(2); - uint8 *shp = _screen->encodeShape(0, 0, 16, 56, true); - _screen->copyPage(3, 4); + uint8 *shp = _screen->encodeShape(0, 0, 16, 56, true, _vm->_cgaMappingAlt); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); _screen->clearCurPage(); for (int i = 0; i < 200; i += 64) @@ -236,19 +240,19 @@ void EoBIntroPlayer::orb() { uint8 *shp[5]; _screen->loadBitmap(_filesOrb[0], 5, 3, 0); _screen->setCurPage(2); - shp[4] = _screen->encodeShape(0, 0, 20, 136, true); + shp[4] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt); _screen->loadBitmap(_filesOrb[1], 5, 3, 0); - shp[3] = _screen->encodeShape(16, 0, 16, 104, true); + shp[3] = _screen->encodeShape(16, 0, 16, 104, true, _vm->_cgaMappingAlt); _screen->fillRect(0, 0, 127, 103, 12); for (int i = 1; i < 4; i++) { copyBlurRegion(128, 0, 0, 0, 128, 104, i); - shp[3 - i] = _screen->encodeShape(0, 0, 16, 104, true); + shp[3 - i] = _screen->encodeShape(0, 0, 16, 104, true, _vm->_cgaMappingAlt); } _screen->fillRect(0, 0, 159, 135, 12); _screen->setCurPage(0); - _screen->copyPage(3, 4); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); _screen->clearCurPage(); _vm->snd_playSoundEffect(6); @@ -297,14 +301,14 @@ void EoBIntroPlayer::waterdeepEntry() { loadAndSetPalette(_filesWdEntry[0]); _screen->loadBitmap(_filesWdEntry[1], 5, 3, 0); _screen->setCurPage(2); - shp[3] = _screen->encodeShape(0, 0, 20, 136, true); + shp[3] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt); for (int i = 1; i < 4; i++) { copyBlurRegion(0, 0, 0, 0, 160, 136, i); - shp[3 - i] = _screen->encodeShape(0, 0, 20, 136, true); + shp[3 - i] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt); } _screen->setCurPage(0); - _screen->copyPage(3, 4); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); _screen->fillRect(0, 168, 319, 199, 12, 0); _vm->snd_playSoundEffect(6); @@ -321,18 +325,18 @@ void EoBIntroPlayer::waterdeepEntry() { _vm->delay(50 * _vm->_tickLength); _screen->setCurPage(2); - shp[0] = _screen->encodeShape(20, 0, 20, 136, true); + shp[0] = _screen->encodeShape(20, 0, 20, 136, true, _vm->_cgaMappingAlt); _screen->loadBitmap(_filesWdEntry[2], 5, 3, 0); - shp[1] = _screen->encodeShape(0, 0, 20, 136, true); - shp[2] = _screen->encodeShape(20, 0, 20, 136, true); + shp[1] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt); + shp[2] = _screen->encodeShape(20, 0, 20, 136, true, _vm->_cgaMappingAlt); _screen->loadBitmap(_filesWdEntry[3], 5, 3, 0); for (int i = 0; i < 31; i++) - shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true); + shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true, _vm->_cgaMappingAlt); for (int i = 0; i < 3; i++) - shp3[i] = _screen->encodeShape(5 * i, 152, 5, 32, true); + shp3[i] = _screen->encodeShape(5 * i, 152, 5, 32, true, _vm->_cgaMappingAlt); - _screen->copyPage(3, 4); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); for (int i = 0; i < 3 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) { uint32 end = _vm->_system->getMillis() + 3 * _vm->_tickLength; @@ -391,7 +395,7 @@ void EoBIntroPlayer::king() { return; _screen->loadBitmap(_filesKing[0], 5, 3, 0); - _screen->copyPage(3, 4); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); int x = 15; int y = 14; @@ -428,7 +432,7 @@ void EoBIntroPlayer::king() { _screen->loadBitmap(_filesKing[1], 5, 3, 0); _screen->setCurPage(2); for (int i = 0; i < 4; i++) { - shp[i] = _screen->encodeShape(advEncX[i], 0, advEncW[i], 98, true); + shp[i] = _screen->encodeShape(advEncX[i], 0, advEncW[i], 98, true, _vm->_cgaMappingAlt); dy[i] = 180 + ((_vm->_rnd.getRandomNumber(255) & 3) << 3); stepY[i] = (i * 5) & 3; } @@ -477,8 +481,8 @@ void EoBIntroPlayer::hands() { return; _screen->setCurPage(2); - uint8 *shp1 = _screen->encodeShape(0, 140, 21, 60, true); - uint8 *shp2 = _screen->encodeShape(21, 140, 12, 60, true); + uint8 *shp1 = _screen->encodeShape(0, 140, 21, 60, true, _vm->_cgaMappingAlt); + uint8 *shp2 = _screen->encodeShape(21, 140, 12, 60, true, _vm->_cgaMappingAlt); _screen->loadBitmap(_filesHands[0], 3, 5, 0); _screen->fillRect(0, 160, 319, 199, 12, 0); @@ -509,9 +513,9 @@ void EoBIntroPlayer::hands() { _vm->delay(15 * _vm->_tickLength); _screen->setCurPage(4); - shp1 = _screen->encodeShape(17, 0, 11, 120, true); - shp2 = _screen->encodeShape(28, 112, 1, 31, true); - uint8 *shp3 = _screen->encodeShape(9, 138, 14, 54, true); + shp1 = _screen->encodeShape(17, 0, 11, 120, true, _vm->_cgaMappingAlt); + shp2 = _screen->encodeShape(28, 112, 1, 31, true, _vm->_cgaMappingAlt); + uint8 *shp3 = _screen->encodeShape(9, 138, 14, 54, true, _vm->_cgaMappingAlt); _screen->setCurPage(2); _screen->fillRect(0, 0, 135, 63, 157); @@ -549,8 +553,8 @@ void EoBIntroPlayer::hands() { _vm->delay(15 * _vm->_tickLength); _screen->setCurPage(4); - shp1 = _screen->encodeShape(0, 0, 17, 136, true); - shp2 = _screen->encodeShape(0, 136, 9, 48, true); + shp1 = _screen->encodeShape(0, 0, 17, 136, true, _vm->_cgaMappingAlt); + shp2 = _screen->encodeShape(0, 136, 9, 48, true, _vm->_cgaMappingAlt); _screen->setCurPage(2); _screen->fillRect(0, 0, 143, 95, 157); @@ -576,8 +580,8 @@ void EoBIntroPlayer::hands() { _vm->delay(30 * _vm->_tickLength); _screen->setCurPage(4); - shp1 = _screen->encodeShape(28, 0, 11, 40, true); - shp2 = _screen->encodeShape(28, 40, 10, 72, true); + shp1 = _screen->encodeShape(28, 0, 11, 40, true, _vm->_cgaMappingAlt); + shp2 = _screen->encodeShape(28, 40, 10, 72, true, _vm->_cgaMappingAlt); _screen->setCurPage(2); _screen->fillRect(0, 0, 87, 112, 157); @@ -622,11 +626,11 @@ void EoBIntroPlayer::waterdeepExit() { _screen->loadBitmap(_filesWdExit[0], 5, 3, 0); _screen->setCurPage(2); for (int i = 0; i < 31; i++) - shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true); + shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true, _vm->_cgaMappingAlt); for (int i = 0; i < 3; i++) - shp3[i] = _screen->encodeShape(5 * i + 15, 152, 5, 32, true); - uint8 *shp1 = _screen->encodeShape(31, 136, 5, 32, true); - _screen->copyPage(3, 4); + shp3[i] = _screen->encodeShape(5 * i + 15, 152, 5, 32, true, _vm->_cgaMappingAlt); + uint8 *shp1 = _screen->encodeShape(31, 136, 5, 32, true, _vm->_cgaMappingAlt); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); _screen->copyRegion(0, 0, 0, 136, 48, 36, 4, 4, Screen::CR_NO_P_CHECK); _screen->fillRect(0, 168, 319, 199, 12, 0); _screen->copyRegion(160, 0, 80, 24, 160, 136, 4, 0, Screen::CR_NO_P_CHECK); @@ -676,7 +680,7 @@ void EoBIntroPlayer::waterdeepExit() { loadAndSetPalette(_filesWdExit[1]); _screen->loadBitmap(_filesWdExit[2], 3, 5, 0); - _screen->copyPage(5, 2); + _screen->convertPage(5, 2, _vm->_cgaMappingAlt); whirlTransition(); _vm->delay(6 * _vm->_tickLength); @@ -717,7 +721,7 @@ void EoBIntroPlayer::waterdeepExit() { } _screen->loadBitmap(_filesWdExit[3], 3, 5, 0); - _screen->copyPage(5, 2); + _screen->convertPage(5, 2, _vm->_cgaMappingAlt); _vm->delay(30 * _vm->_tickLength); _screen->setCurPage(0); _screen->fillRect(0, 16, 319, 31, 12); @@ -733,8 +737,8 @@ void EoBIntroPlayer::tunnel() { return; _screen->setCurPage(4); - uint8 *shp2 = _screen->encodeShape(20, 0, 20, 120, true); - uint8 *shp1 = _screen->encodeShape(0, 0, 20, 120, true); + uint8 *shp2 = _screen->encodeShape(20, 0, 20, 120, true, _vm->_cgaMappingAlt); + uint8 *shp1 = _screen->encodeShape(0, 0, 20, 120, true, _vm->_cgaMappingAlt); _vm->drawBlockObject(1, 4, shp2, 160, 0, 0); _vm->drawBlockObject(1, 4, shp1, 0, 0, 0); delete[] shp1; @@ -771,7 +775,7 @@ void EoBIntroPlayer::tunnel() { _screen->copyRegion(0, 0, 80, 32, 160, 120, 2, 0, Screen::CR_NO_P_CHECK); _screen->loadBitmap(_filesTunnel[0], 5, 3, 0); - _screen->copyPage(3, 4); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); _screen->updateScreen(); _vm->delay(40 * _vm->_tickLength); @@ -808,7 +812,7 @@ void EoBIntroPlayer::tunnel() { _vm->delay(40 * _vm->_tickLength); _screen->loadBitmap(_filesTunnel[1], 5, 3, 0); - _screen->copyPage(3, 4); + _screen->convertPage(3, 4, _vm->_cgaMappingAlt); _vm->snd_playSoundEffect(6); _screen->copyRegion(0, 0, 80, 32, 160, 120, 4, 0, Screen::CR_NO_P_CHECK); _screen->updateScreen(); @@ -825,6 +829,8 @@ void EoBIntroPlayer::tunnel() { } void EoBIntroPlayer::loadAndSetPalette(const char *filename) { + if (_vm->_configRenderMode == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA) + return; _screen->loadPalette(filename, _screen->getPalette(0)); _screen->getPalette(0).fill(0, 1, 0); _screen->setScreenPalette(_screen->getPalette(0)); @@ -975,8 +981,9 @@ int EoBEngine::mainMenu() { while (menuChoice >= 0 && !shouldQuit()) { switch (menuChoice) { case 0: { - _screen->loadPalette("EOBPAL.COL", _screen->getPalette(0)); - _screen->loadEoBBitmap("INTRO", 0, 5, 3, 2); + if (_configRenderMode != Common::kRenderEGA) + _screen->loadPalette("EOBPAL.COL", _screen->getPalette(0)); + _screen->loadEoBBitmap("INTRO", _cgaMappingDefault, 5, 3, 2); _screen->setScreenPalette(_screen->getPalette(0)); _screen->_curPage = 2; of = _screen->setFont(Screen::FID_6_FNT); @@ -984,8 +991,8 @@ int EoBEngine::mainMenu() { _screen->printText(versionString.c_str(), 280 - versionString.size() * 6, 153, _screen->getPagePixel(2, 0, 0), 0); _screen->setFont(of); _screen->fillRect(0, 159, 319, 199, _screen->getPagePixel(2, 0, 0)); - gui_drawBox(77, 165, 173, 29, 13, 14, 12); - gui_drawBox(76, 164, 175, 31, 13, 14, -1); + gui_drawBox(77, 165, 173, 29, 14, 13, 12); + gui_drawBox(76, 164, 175, 31, 14, 13, -1); _screen->_curPage = 0; _screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK); _screen->updateScreen(); @@ -996,7 +1003,6 @@ int EoBEngine::mainMenu() { case 1: // load game in progress - // menuChoice = -1; break; @@ -1089,10 +1095,10 @@ void EoBEngine::seq_xdeath() { _screen->loadShapeSetBitmap("XDEATH2", 5, 3); for (int i = 0; i < 4; i++) - shapes1[i] = _screen->encodeShape(i / 2 * 14, i / 2 * 88, 14, 88, true); + shapes1[i] = _screen->encodeShape(i / 2 * 14, i / 2 * 88, 14, 88, true, _cgaMappingDefault); _screen->loadShapeSetBitmap("XDEATH3", 5, 3); - shapes2 = _screen->encodeShape(22, 0, 16, 95, true); - _screen->loadEoBBitmap("XDEATH1", 0, 5, 3, -1); + shapes2 = _screen->encodeShape(22, 0, 16, 95, true, _cgaMappingDefault); + _screen->loadEoBBitmap("XDEATH1", _cgaMappingDefault, 5, 3, -1); _screen->setCurPage(0); for (int i = 0; i < 10; i++) { |