aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorathrxx2019-01-29 23:44:39 +0100
committerathrxx2019-03-06 20:48:20 +0100
commite00eaa4899d86fb97c333d4b609de4612895ffea (patch)
tree9a9b5fec80b523b01e95d8410d2728c7262dfbe2 /engines
parent890c4c5f41e74938640f4bc8ddb843ac3ca9928d (diff)
downloadscummvm-rg350-e00eaa4899d86fb97c333d4b609de4612895ffea.tar.gz
scummvm-rg350-e00eaa4899d86fb97c333d4b609de4612895ffea.tar.bz2
scummvm-rg350-e00eaa4899d86fb97c333d4b609de4612895ffea.zip
KYRA: (EOB1/Amiga) - fix intro
Diffstat (limited to 'engines')
-rw-r--r--engines/kyra/graphics/screen_eob.cpp2
-rw-r--r--engines/kyra/sequence/sequences_eob.cpp155
2 files changed, 106 insertions, 51 deletions
diff --git a/engines/kyra/graphics/screen_eob.cpp b/engines/kyra/graphics/screen_eob.cpp
index bf5f7af029..df859b0837 100644
--- a/engines/kyra/graphics/screen_eob.cpp
+++ b/engines/kyra/graphics/screen_eob.cpp
@@ -224,7 +224,7 @@ void Screen_EoB::loadBitmap(const char *filename, int tempPage, int dstPage, Pal
if (_isAmiga) {
// Yay, this is where EOB1 Amiga hides the palette data
- loadPalette(_pagePtrs[3] + 40000, *_palettes[0], 64);
+ loadPalette(_pagePtrs[dstPage] + 40000, *_palettes[0], 64);
_palettes[0]->fill(0, 1, 0);
Screen::convertAmigaGfx(getPagePtr(dstPage), 320, 200);
diff --git a/engines/kyra/sequence/sequences_eob.cpp b/engines/kyra/sequence/sequences_eob.cpp
index 1f0b4ab0f1..7b3618f3d1 100644
--- a/engines/kyra/sequence/sequences_eob.cpp
+++ b/engines/kyra/sequence/sequences_eob.cpp
@@ -78,9 +78,13 @@ private:
const uint8 *_tvlY2;
const uint8 *_tvlW;
const uint8 *_tvlH;
+
+ const uint8 _fillColor1;
+ const uint8 _fillColor2;
};
-EoBIntroPlayer::EoBIntroPlayer(EoBEngine *vm, Screen_EoB *screen) : _vm(vm), _screen(screen) {
+EoBIntroPlayer::EoBIntroPlayer(EoBEngine *vm, Screen_EoB *screen) : _vm(vm), _screen(screen),
+ _fillColor1(vm->gameFlags().platform == Common::kPlatformAmiga ? 19 : 12), _fillColor2(vm->gameFlags().platform == Common::kPlatformAmiga ? 10 : 157) {
int temp = 0;
_filesOpening = _vm->staticres()->loadStrings(kEoB1IntroFilesOpening, temp);
_filesTower = _vm->staticres()->loadStrings(kEoB1IntroFilesTower, temp);
@@ -102,6 +106,8 @@ EoBIntroPlayer::EoBIntroPlayer(EoBEngine *vm, Screen_EoB *screen) : _vm(vm), _sc
_tvlY2 = _vm->staticres()->loadRawData(kEoB1IntroTvlY2, temp);
_tvlW = _vm->staticres()->loadRawData(kEoB1IntroTvlW, temp);
_tvlH = _vm->staticres()->loadRawData(kEoB1IntroTvlH, temp);
+ const uint8 *orbFadePal = _vm->staticres()->loadRawData(kEoB1IntroOrbFadePal, temp);
+ _screen->loadPalette(orbFadePal, _screen->getPalette(2), temp);
}
void EoBIntroPlayer::start() {
@@ -112,8 +118,9 @@ void EoBIntroPlayer::start() {
_vm->snd_playSong(2);
_screen->loadBitmap(_vm->gameFlags().platform == Common::kPlatformAmiga ? "TITLE.CPS" : (_vm->_configRenderMode == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA) ? "TITLE-E.CMP" : "TITLE-V.CMP", 3, 5, 0);
_screen->convertPage(5, 2, _vm->_cgaMappingDefault);
+ uint32 del = 120 * _vm->_tickLength;
_screen->crossFadeRegion(0, 0, 0, 0, 320, 200, 2, 0);
- _vm->delay(120 * _vm->_tickLength);
+ _vm->delay(del);
}
Common::SeekableReadStream *s = _vm->resource()->createReadStream("TEXT.RAW");
@@ -140,17 +147,17 @@ void EoBIntroPlayer::start() {
}
void EoBIntroPlayer::openingCredits() {
- loadAndSetPalette(_filesOpening[5]);
-
_vm->snd_playSong(1);
_screen->loadBitmap(_filesOpening[4], 5, 3, 0);
_screen->convertPage(3, 0, _vm->_cgaMappingAlt);
- if (_vm->gameFlags().platform == Common::kPlatformAmiga)
- _screen->fadePalette(_screen->getPalette(0), 64);
- else
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga) {
+ _screen->fadeFromBlack(64);
+ } else {
+ loadAndSetPalette(_filesOpening[5]);
_screen->updateScreen();
+ }
_vm->delay(_openingFrmDelay[0] * _vm->_tickLength);
@@ -161,13 +168,17 @@ void EoBIntroPlayer::openingCredits() {
_screen->crossFadeRegion(0, 50, 0, 50, 320, 102, 4, 0);
_vm->delayUntil(nextFrameTimer);
}
+
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga)
+ _vm->delay(50 * _vm->_tickLength);
}
void EoBIntroPlayer::tower() {
if (_vm->shouldQuit() || _vm->skipFlag())
- return;
-
+ return;
+
_screen->loadBitmap(_filesTower[1], 5, 3, 0);
+
_screen->setCurPage(2);
uint8 *shp = _screen->encodeShape(0, 0, 16, 56, true, _vm->_cgaMappingAlt);
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
@@ -176,8 +187,9 @@ void EoBIntroPlayer::tower() {
for (int i = 0; i < 200; i += 64)
_screen->copyRegion(128, 104, 96, i, 128, 64, 4, 2, Screen::CR_NO_P_CHECK);
- _screen->fillRect(0, 184, 319, 199, 12);
+ _screen->fillRect(0, 184, 319, 199, _fillColor1);
int cp = _screen->setCurPage(0);
+
whirlTransition();
loadAndSetPalette(_filesTower[0]);
@@ -217,10 +229,10 @@ void EoBIntroPlayer::tower() {
_screen->copyRegion(0, 110, 96, 54 + i, 128, 34, 4, 0, Screen::CR_NO_P_CHECK);
if (i < 32) {
- _screen->fillRect(128, 0, 255, i + 1, 12, 2);
+ _screen->fillRect(128, 0, 255, i + 1, _fillColor1, 2);
_screen->copyRegion(152, 0, 120, 32, 80, i + 25, 4, 0, Screen::CR_NO_P_CHECK);
} else {
- _screen->fillRect(128, 0, 255, i + 1, 12, 2);
+ _screen->fillRect(128, 0, 255, i + 1, _fillColor1, 2);
_screen->copyRegion(152, i + 1, 120, 32 + i + 1, 80, 23, 4, 0, Screen::CR_NO_P_CHECK);
_screen->copyRegion(152, 0, 152, 32, 80, i + 1, 4, 2, Screen::CR_NO_P_CHECK);
}
@@ -249,47 +261,64 @@ void EoBIntroPlayer::orb() {
_screen->loadBitmap(_filesOrb[1], 5, 3, 0);
shp[3] = _screen->encodeShape(16, 0, 16, 104, true, _vm->_cgaMappingAlt);
- _screen->fillRect(0, 0, 127, 103, 12);
+ _screen->fillRect(0, 0, 127, 103, _fillColor1);
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, _vm->_cgaMappingAlt);
}
- _screen->fillRect(0, 0, 159, 135, 12);
+ _screen->fillRect(0, 0, 159, 135, _fillColor1);
_screen->setCurPage(0);
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
+
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga) {
+ _screen->fadeToBlack(16);
+ loadAndSetPalette(0);
+ }
+
_screen->clearCurPage();
_vm->snd_playSoundEffect(6);
- for (int i = -1; i < 4 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
+ int startFrame = (_vm->gameFlags().platform == Common::kPlatformAmiga) ? 3 : -1;
+ for (int i = startFrame; i < 4 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
uint32 end = _vm->_system->getMillis() + 3 * _vm->_tickLength;
if (i >= 0)
_screen->drawShape(2, shp[i], 16, 16, 0);
_screen->drawShape(2, shp[4], 0, 0, 0);
_screen->copyRegion(0, 0, 80, 24, 160, 136, 2, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
- _vm->delayUntil(end);
+ if (startFrame < 0)
+ _vm->delayUntil(end);
}
_screen->copyRegion(0, 64, 0, 168, 320, 16, 6, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
- _vm->delay(40 * _vm->_tickLength);
-
- _vm->snd_playSoundEffect(6);
- for (int i = 3; i > -2 && !_vm->shouldQuit() && !_vm->skipFlag(); i--) {
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga) {
+ _vm->delay(80 * _vm->_tickLength);
+ _screen->fadePalette(_screen->getPalette(2), 48);
+ _screen->clearCurPage();
+ } else {
+ _vm->delay(40 * _vm->_tickLength);
+ _vm->snd_playSoundEffect(6);
+ }
+
+ startFrame = (_vm->gameFlags().platform == Common::kPlatformAmiga) ? -1 : 3;
+ for (int i = startFrame; i > -2 && !_vm->shouldQuit() && !_vm->skipFlag(); i--) {
uint32 end = _vm->_system->getMillis() + 3 * _vm->_tickLength;
- _screen->fillRect(16, 16, 143, 119, 12, 2);
+ _screen->fillRect(16, 16, 143, 119, _fillColor1, 2);
if (i >= 0)
_screen->drawShape(2, shp[i], 16, 16, 0);
_screen->drawShape(2, shp[4], 0, 0, 0);
_screen->copyRegion(0, 0, 80, 24, 160, 136, 2, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
- _vm->delayUntil(end);
+ if (startFrame > 0)
+ _vm->delayUntil(end);
}
- _vm->delay(40 * _vm->_tickLength);
+ if (startFrame > 0)
+ _vm->delay(40 * _vm->_tickLength);
for (int i = 0; i < 5; i++)
delete[] shp[i];
@@ -305,6 +334,10 @@ void EoBIntroPlayer::waterdeepEntry() {
loadAndSetPalette(_filesWdEntry[0]);
_screen->loadBitmap(_filesWdEntry[1], 5, 3, 0);
+
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga)
+ _screen->fadePalette(_screen->getPalette(0), 16);
+
_screen->setCurPage(2);
shp[3] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt);
for (int i = 1; i < 4; i++) {
@@ -314,10 +347,11 @@ void EoBIntroPlayer::waterdeepEntry() {
_screen->setCurPage(0);
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
- _screen->fillRect(0, 168, 319, 199, 12, 0);
+ _screen->fillRect(0, 168, 319, 199, _fillColor1, 0);
_vm->snd_playSoundEffect(6);
- for (int i = 0; i < 4 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
+ int startFrame = (_vm->gameFlags().platform == Common::kPlatformAmiga) ? 3 : 0;
+ for (int i = startFrame; i < 4 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
uint32 end = _vm->_system->getMillis() + 3 * _vm->_tickLength;
_screen->drawShape(0, shp[i], 80, 24, 0);
delete[] shp[i];
@@ -345,7 +379,7 @@ void EoBIntroPlayer::waterdeepEntry() {
for (int i = 0; i < 3 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
uint32 end = _vm->_system->getMillis() + 3 * _vm->_tickLength;
- _screen->fillRect(0, 0, 159, 135, 12, 2);
+ _screen->fillRect(0, 0, 159, 135, _fillColor1, 2);
_screen->drawShape(2, shp[i], 0, 0, 0);
_screen->copyRegion(0, 0, 80, 24, 160, 136, 2, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
@@ -356,7 +390,7 @@ void EoBIntroPlayer::waterdeepEntry() {
_screen->updateScreen();
_vm->delay(4 * _vm->_tickLength);
_screen->copyRegion(160, 0, 80, 24, 160, 136, 4, 0, Screen::CR_NO_P_CHECK);
- _screen->fillRect(0, 168, 319, 199, 12, 0);
+ _screen->fillRect(0, 168, 319, 199, _fillColor1, 0);
_screen->updateScreen();
_vm->delay(4 * _vm->_tickLength);
_screen->copyRegion(0, 184, 40, 184, 232, 16, 4, 0, Screen::CR_NO_P_CHECK);
@@ -402,6 +436,11 @@ void EoBIntroPlayer::king() {
_screen->loadBitmap(_filesKing[0], 5, 3, 0);
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga) {
+ _screen->fadeToBlack(32);
+ loadAndSetPalette(0);
+ }
+
int x = 15;
int y = 14;
int w = 1;
@@ -490,8 +529,11 @@ void EoBIntroPlayer::hands() {
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);
- _screen->fillRect(0, 0, 191, 63, 157, 2);
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga)
+ _vm->delay(60 * _vm->_tickLength);
+
+ _screen->fillRect(0, 160, 319, 199, _fillColor1, 0);
+ _screen->fillRect(0, 0, 191, 63, _fillColor2, 2);
_screen->drawShape(2, shp1, 0, 4, 0);
_screen->drawShape(2, shp2, 151, 4, 0);
boxMorphTransition(25, 8, 18, 4, 3, 0, 21, 8, 6, 0, 28, 23);
@@ -503,7 +545,7 @@ void EoBIntroPlayer::hands() {
for (int i = -22; i <= 20 && !_vm->shouldQuit() && !_vm->skipFlag(); i += 4) {
uint32 end = _vm->_system->getMillis() + _vm->_tickLength;
- _screen->fillRect(0, 0, 167, 63, 157);
+ _screen->fillRect(0, 0, 167, 63, _fillColor2);
_screen->drawShape(2, shp1, i, 4, 0);
_screen->drawShape(2, shp2, 105 - i, 4, 0);
_screen->copyRegion(0, 0, 144, 32, 168, 64, 2, 0, Screen::CR_NO_P_CHECK);
@@ -523,7 +565,7 @@ void EoBIntroPlayer::hands() {
uint8 *shp3 = _screen->encodeShape(9, 138, 14, 54, true, _vm->_cgaMappingAlt);
_screen->setCurPage(2);
- _screen->fillRect(0, 0, 135, 63, 157);
+ _screen->fillRect(0, 0, 135, 63, _fillColor2);
_screen->drawShape(2, shp1, 32, -80, 0);
_screen->drawShape(2, shp2, 40, -16, 0);
boxMorphTransition(18, 16, 10, 12, 0, 0, 17, 8, 17, 3, 25, 10);
@@ -531,7 +573,7 @@ void EoBIntroPlayer::hands() {
for (int i = -80; i <= 0 && !_vm->shouldQuit() && !_vm->skipFlag(); i += 4) {
uint32 end = _vm->_system->getMillis() + _vm->_tickLength;
- _screen->fillRect(0, 0, 135, 63, 157);
+ _screen->fillRect(0, 0, 135, 63, _fillColor2);
_screen->drawShape(2, shp1, 32, i, 0);
_screen->drawShape(2, shp2, 40, i + 64, 0);
_screen->copyRegion(0, 0, 80, 96, 136, 64, 2, 0, Screen::CR_NO_P_CHECK);
@@ -544,7 +586,7 @@ void EoBIntroPlayer::hands() {
for (int i = 0; i > -54 && !_vm->shouldQuit() && !_vm->skipFlag(); i -= 4) {
uint32 end = _vm->_system->getMillis() + _vm->_tickLength;
- _screen->fillRect(0, 0, 135, 63, 157);
+ _screen->fillRect(0, 0, 135, 63, _fillColor2);
_screen->drawShape(2, shp3, 12, 64 + i, 0);
_screen->drawShape(2, shp1, 32, i, 0);
_screen->copyRegion(0, 0, 80, 96, 136, 64, 2, 0, Screen::CR_NO_P_CHECK);
@@ -562,7 +604,7 @@ void EoBIntroPlayer::hands() {
shp2 = _screen->encodeShape(0, 136, 9, 48, true, _vm->_cgaMappingAlt);
_screen->setCurPage(2);
- _screen->fillRect(0, 0, 143, 95, 157);
+ _screen->fillRect(0, 0, 143, 95, _fillColor2);
_screen->drawShape(2, shp1, -56, -56, 0);
_screen->drawShape(2, shp2, 52, 49, 0);
boxMorphTransition(9, 6, 0, 0, 0, 0, 18, 12, 8, 11, 21, 10);
@@ -571,7 +613,7 @@ void EoBIntroPlayer::hands() {
for (int i = -56; i <= -8 && !_vm->shouldQuit() && !_vm->skipFlag(); i += 4) {
uint32 end = _vm->_system->getMillis() + _vm->_tickLength;
- _screen->fillRect(0, 0, 143, 95, 157);
+ _screen->fillRect(0, 0, 143, 95, _fillColor2);
_screen->drawShape(2, shp1, i, i, 0);
_screen->drawShape(2, shp2, (i == -8) ? 55 : 52, (i == -8) ? 52 : 49, 0);
_screen->copyRegion(0, 0, 0, 0, 144, 96, 2, 0, Screen::CR_NO_P_CHECK);
@@ -589,7 +631,7 @@ void EoBIntroPlayer::hands() {
shp2 = _screen->encodeShape(28, 40, 10, 72, true, _vm->_cgaMappingAlt);
_screen->setCurPage(2);
- _screen->fillRect(0, 0, 87, 112, 157);
+ _screen->fillRect(0, 0, 87, 112, _fillColor2);
_screen->drawShape(2, shp2, 0, 90, 0);
boxMorphTransition(20, 13, 15, 6, 0, 0, 11, 14, 0, 0, 24, 16);
_vm->delay(15 * _vm->_tickLength);
@@ -597,7 +639,7 @@ void EoBIntroPlayer::hands() {
int dy = 90;
for (int i = -40; i <= 0 && !_vm->shouldQuit() && !_vm->skipFlag(); i += 4) {
uint32 end = _vm->_system->getMillis() + _vm->_tickLength;
- _screen->fillRect(0, 0, 87, 112, 157);
+ _screen->fillRect(0, 0, 87, 112, _fillColor2);
_screen->drawShape(2, shp2, 0, dy, 0);
_screen->copyRegion(0, 0, 120, 48, 88, 112, 2, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
@@ -609,7 +651,7 @@ void EoBIntroPlayer::hands() {
for (int i = -40; i <= 0 && !_vm->shouldQuit() && !_vm->skipFlag(); i += 4) {
uint32 end = _vm->_system->getMillis() + _vm->_tickLength;
- _screen->fillRect(0, 0, 87, 39, 157);
+ _screen->fillRect(0, 0, 87, 39, _fillColor2);
_screen->drawShape(2, shp1, 0, i, 0);
_screen->copyRegion(0, 0, 120, 48, 88, 112, 2, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
@@ -637,7 +679,7 @@ void EoBIntroPlayer::waterdeepExit() {
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->fillRect(0, 168, 319, 199, _fillColor1, 0);
_screen->copyRegion(160, 0, 80, 24, 160, 136, 4, 0, Screen::CR_NO_P_CHECK);
int cx = 140;
@@ -680,13 +722,14 @@ void EoBIntroPlayer::waterdeepExit() {
delete[] shp1;
_screen->setCurPage(0);
- _screen->fillRect(0, 168, 319, 199, 12, 0);
+ _screen->fillRect(0, 168, 319, 199, _fillColor1, 0);
_screen->copyRegion(0, 136, 0, 0, 48, 36, 0, 4, Screen::CR_NO_P_CHECK);
- loadAndSetPalette(_filesWdExit[1]);
- _screen->loadBitmap(_filesWdExit[2], 3, 5, 0);
- _screen->convertPage(5, 2, _vm->_cgaMappingAlt);
+ int dstPage = (_vm->gameFlags().platform == Common::kPlatformAmiga) ? 4 : 5;
+ _screen->loadBitmap(_filesWdExit[2], 3, dstPage, 0);
+ _screen->convertPage(dstPage, 2, _vm->_cgaMappingAlt);
whirlTransition();
+ loadAndSetPalette(_filesWdExit[1]);
_vm->delay(6 * _vm->_tickLength);
_screen->copyRegion(0, 144, 0, 184, 320, 16, 6, 0, Screen::CR_NO_P_CHECK);
@@ -725,12 +768,12 @@ void EoBIntroPlayer::waterdeepExit() {
_vm->delayUntil(end);
}
- _screen->loadBitmap(_filesWdExit[3], 3, 5, 0);
- _screen->convertPage(5, 2, _vm->_cgaMappingAlt);
+ _screen->loadBitmap(_filesWdExit[3], 3, dstPage, 0);
+ _screen->convertPage(dstPage, 2, _vm->_cgaMappingAlt);
_vm->delay(30 * _vm->_tickLength);
_screen->setCurPage(0);
- _screen->fillRect(0, 16, 319, 31, 12);
- _screen->fillRect(0, 136, 319, 199, 12);
+ _screen->fillRect(0, 16, 319, 31, _fillColor1);
+ _screen->fillRect(0, 136, 319, 199, _fillColor1);
_screen->copyRegion(0, 0, 80, 32, 160, 120, 2, 0, Screen::CR_NO_P_CHECK);
loadAndSetPalette(_filesWdExit[4]);
_screen->updateScreen();
@@ -780,6 +823,9 @@ 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);
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga)
+ _screen->setScreenPalette(_screen->getPalette(0));
+
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
_screen->updateScreen();
_vm->delay(40 * _vm->_tickLength);
@@ -794,7 +840,7 @@ void EoBIntroPlayer::tunnel() {
for (int i = 0; i < 30 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
uint32 end = _vm->_system->getMillis() + _vm->_tickLength;
if (i == 0)
- _screen->fillRect(0, 168, 319, 199, 12, 0);
+ _screen->fillRect(0, 168, 319, 199, _fillColor1, 0);
_screen->copyRegion(80, 25 + (_vm->_rnd.getRandomNumber(255) & 7), 80, 24, 160, 144, 2, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
_vm->delayUntil(end);
@@ -834,9 +880,12 @@ void EoBIntroPlayer::tunnel() {
}
void EoBIntroPlayer::loadAndSetPalette(const char *filename) {
- if (_vm->_configRenderMode == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA || _vm->gameFlags().platform == Common::kPlatformAmiga)
+ if (_vm->_configRenderMode == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA)
return;
- _screen->loadPalette(filename, _screen->getPalette(0));
+
+ if (_vm->gameFlags().platform != Common::kPlatformAmiga)
+ _screen->loadPalette(filename, _screen->getPalette(0));
+
_screen->getPalette(0).fill(0, 1, 0);
_screen->setScreenPalette(_screen->getPalette(0));
}
@@ -959,6 +1008,12 @@ void EoBIntroPlayer::boxMorphTransition(int targetDestX, int targetDestY, int ta
}
void EoBIntroPlayer::whirlTransition() {
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga) {
+ _screen->fadeToBlack(48);
+ _screen->clearPage(0);
+ return;
+ }
+
for (int i = 0; i < 2; i++) {
for (int ii = 0; ii < 8; ii++) {
uint32 e = _vm->_system->getMillis() + 3;