aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorStrangerke2014-11-16 00:16:41 +0100
committerPaul Gilbert2014-12-12 22:33:42 -0500
commit731d7d20394d6cb8852fcc32e9beadc46d724cc7 (patch)
tree4ae5199c8f391c1df6c0e6009f12163370757892 /engines
parent4e1394c8e34fd1163f2ef54b5cb66e6945110d96 (diff)
downloadscummvm-rg350-731d7d20394d6cb8852fcc32e9beadc46d724cc7.tar.gz
scummvm-rg350-731d7d20394d6cb8852fcc32e9beadc46d724cc7.tar.bz2
scummvm-rg350-731d7d20394d6cb8852fcc32e9beadc46d724cc7.zip
ACCESS: Add more intro code, including credit scrolling
Diffstat (limited to 'engines')
-rw-r--r--engines/access/amazon/amazon_game.cpp114
-rw-r--r--engines/access/amazon/amazon_game.h2
2 files changed, 115 insertions, 1 deletions
diff --git a/engines/access/amazon/amazon_game.cpp b/engines/access/amazon/amazon_game.cpp
index 4c2662e146..f10c933d44 100644
--- a/engines/access/amazon/amazon_game.cpp
+++ b/engines/access/amazon/amazon_game.cpp
@@ -134,6 +134,42 @@ void AmazonEngine::doIntroduction() {
}
}
+void AmazonEngine::doCredit() {
+ if (_pCount < 15)
+ return;
+
+ if (_pCount <= 75)
+ _buffer2.plotImage(_objectsTable[0], 0, Common::Point(90, 35));
+ else if (_pCount <= 210)
+ _buffer2.plotImage(_objectsTable[0], 1, Common::Point(65, 35));
+ else if (_pCount <= 272)
+ _buffer2.plotImage(_objectsTable[0], 2, Common::Point(96, 45));
+ else if (_pCount <= 334)
+ _buffer2.plotImage(_objectsTable[0], 3, Common::Point(68, 54));
+ else if (_pCount <= 396)
+ _buffer2.plotImage(_objectsTable[0], 4, Common::Point(103, 54));
+ else if (_pCount <= 458) {
+ _buffer2.plotImage(_objectsTable[0], 5, Common::Point(8, 5));
+ _buffer2.plotImage(_objectsTable[0], 12, Common::Point(88, 55));
+ _buffer2.plotImage(_objectsTable[0], 6, Common::Point(194, 98));
+ } else if (_pCount <= 520) {
+ _buffer2.plotImage(_objectsTable[0], 7, Common::Point(90, 35));
+ _buffer2.plotImage(_objectsTable[0], 8, Common::Point(90, 35));
+ } else if (_pCount <= 580) {
+ _buffer2.plotImage(_objectsTable[0], 9, Common::Point(18, 15));
+ _buffer2.plotImage(_objectsTable[0], 10, Common::Point(164, 81));
+ } else
+ _buffer2.plotImage(_objectsTable[0], 11, Common::Point(106, 55));
+}
+
+void AmazonEngine::scrollTitle() {
+ copyBF1BF2();
+ _newRects.clear();
+ doCredit();
+ copyRects();
+ copyBF2Vid();
+}
+
void AmazonEngine::doTitle() {
_screen->setDisplayScan();
_destIn = &_buffer2;
@@ -230,7 +266,83 @@ void AmazonEngine::doTitle() {
_newRects.clear();
// KEYFLG = 0;
_player->_scrollAmount = 1;
- _pCount = 1;
+ _pCount = 0;
+
+ while(true) {
+ _events->pollEvents();
+ if (_events->_rightButton) {
+ _skipStart = true;
+ _room->clearRoom();
+ _events->showCursor();
+ return;
+ }
+
+ warning("TODO: check on KEYBUFCNT");
+ if (_events->_leftButton) {
+ _room->clearRoom();
+ _events->showCursor();
+ return;
+ }
+
+ _events->_vbCount = 4;
+ if (_screen->_scrollCol + _screen->_vWindowWidth != _room->_playFieldWidth) {
+ _screen->_scrollX += _player->_scrollAmount;
+
+ while (_screen->_scrollX >= TILE_WIDTH && !shouldQuit()) {
+ _screen->_scrollX -= TILE_WIDTH;
+ ++_screen->_scrollCol;
+
+ _buffer1.moveBufferLeft();
+ _room->buildColumn(_screen->_scrollCol + _screen->_vWindowWidth, _screen->_vWindowBytesWide);
+ }
+ scrollTitle();
+ ++_pCount;
+
+ while (!shouldQuit() && (_events->_vbCount > 0)) {
+ _events->pollEvents();
+ g_system->delayMillis(10);
+ }
+ continue;
+ }
+
+ _events->_vbCount = 120;
+ while (!shouldQuit() && (_events->_vbCount > 0)) {
+ _events->pollEvents();
+ g_system->delayMillis(10);
+ }
+
+ while(true) {
+ _pCount = 0;
+ _events->_vbCount = 3;
+ if (_screen->_scrollRow + _screen->_vWindowHeight >= _room->_playFieldHeight) {
+ _room->clearRoom();
+ _events->showCursor();
+ return;
+ }
+
+ _screen->_scrollY = _screen->_scrollY + _player->_scrollAmount;
+
+ while (_screen->_scrollY >= TILE_HEIGHT && !shouldQuit()) {
+ _screen->_scrollY -= TILE_HEIGHT;
+ ++_screen->_scrollRow;
+ _buffer1.moveBufferUp();
+
+ _room->buildRow(_screen->_scrollRow + _screen->_vWindowHeight, _screen->_vWindowLinesTall * _screen->_bufferBytesWide);
+
+ if (_screen->_scrollRow + _screen->_vWindowHeight >= _room->_playFieldHeight) {
+ _room->clearRoom();
+ _events->showCursor();
+ return;
+ }
+
+ scrollTitle();
+ while (!shouldQuit() && (_events->_vbCount > 0)) {
+ _events->pollEvents();
+ g_system->delayMillis(10);
+ }
+ }
+ }
+ }
}
void AmazonEngine::doOpening() {
diff --git a/engines/access/amazon/amazon_game.h b/engines/access/amazon/amazon_game.h
index 0c6fb1cb41..34a1eef775 100644
--- a/engines/access/amazon/amazon_game.h
+++ b/engines/access/amazon/amazon_game.h
@@ -95,6 +95,8 @@ private:
*/
void setupGame();
+ void doCredit();
+ void scrollTitle();
void loadEstablish(int estabIndex);
void doEstablish(int screenId, int estabIndex);