aboutsummaryrefslogtreecommitdiff
path: root/engines/access
diff options
context:
space:
mode:
authorPaul Gilbert2014-11-23 18:59:39 -0500
committerPaul Gilbert2014-12-12 22:41:45 -0500
commit74a15d659989f90140b8ff30ad4af4783802b758 (patch)
tree220651b9251b685686b29714124d632e2386aa94 /engines/access
parent36a3c5d2341204cbbba8bd067f90e65820edb72b (diff)
downloadscummvm-rg350-74a15d659989f90140b8ff30ad4af4783802b758.tar.gz
scummvm-rg350-74a15d659989f90140b8ff30ad4af4783802b758.tar.bz2
scummvm-rg350-74a15d659989f90140b8ff30ad4af4783802b758.zip
ACCESS: Fix the mWhileDownRiver cutscene
Diffstat (limited to 'engines/access')
-rw-r--r--engines/access/amazon/amazon_resources.cpp17
-rw-r--r--engines/access/amazon/amazon_resources.h2
-rw-r--r--engines/access/amazon/amazon_scripts.cpp70
3 files changed, 45 insertions, 44 deletions
diff --git a/engines/access/amazon/amazon_resources.cpp b/engines/access/amazon/amazon_resources.cpp
index 192af2c9b6..af631eae7e 100644
--- a/engines/access/amazon/amazon_resources.cpp
+++ b/engines/access/amazon/amazon_resources.cpp
@@ -1557,6 +1557,23 @@ const byte MAP2[32] = {
const byte *MAPTBL[3] = {MAP0, MAP1, MAP2};
+const int DOWNRIVEROBJ[14][4] = {
+ { 3, 77, 0, 40 },
+ { 2, 30, 0, 30 },
+ { 2, 290, 0, 50 },
+ { 1, 210, 0, 70 },
+ { 2, 350, 0, 30 },
+ { 1, 370, 0, 20 },
+ { 2, 480, 0, 60 },
+ { 3, 395, 0, 10 },
+ { 1, 550, 0, 30 },
+ { 2, 620, 0, 50 },
+ { 1, 690, 0, 10 },
+ { 2, 715, 0, 40 },
+ { 1, 770, 0, 30 },
+ { 3, 700, 0, 20 }
+};
+
const RiverStruct RIVER0OBJECTS[45] = {
{16, 31, 6400, 0, 4, 12},
{16, 31, 6200, 0, 2, 12},
diff --git a/engines/access/amazon/amazon_resources.h b/engines/access/amazon/amazon_resources.h
index ec412766bc..02560ccac4 100644
--- a/engines/access/amazon/amazon_resources.h
+++ b/engines/access/amazon/amazon_resources.h
@@ -99,6 +99,8 @@ extern const byte MAP2[32];
extern const byte *MAPTBL[3];
+extern const int DOWNRIVEROBJ[14][4];
+
extern const RiverStruct RIVER0OBJECTS[45];
extern const RiverStruct ENDRIVER0[1];
extern const RiverStruct RIVER1OBJECTS[49];
diff --git a/engines/access/amazon/amazon_scripts.cpp b/engines/access/amazon/amazon_scripts.cpp
index c61229b5d1..4fc0a4ba91 100644
--- a/engines/access/amazon/amazon_scripts.cpp
+++ b/engines/access/amazon/amazon_scripts.cpp
@@ -782,23 +782,6 @@ void AmazonScripts::scrollRiver() {
}
void AmazonScripts::mWhileDownRiver() {
- static const int RIVEROBJ[14][4] = {
- {3, 77, 0, 40},
- {2, 30, 0, 30},
- {2, 290, 0, 50},
- {1, 210, 0, 70},
- {2, 350, 0, 30},
- {1, 370, 0, 20},
- {2, 480, 0, 60},
- {3, 395, 0, 10},
- {1, 550, 0, 30},
- {2, 620, 0, 50},
- {1, 690, 0, 10},
- {2, 715, 0, 40},
- {1, 770, 0, 30},
- {3, 700, 0, 20}
- };
-
_vm->_events->hideCursor();
_vm->_screen->setDisplayScan();
_vm->_screen->clearScreen();
@@ -813,8 +796,6 @@ void AmazonScripts::mWhileDownRiver() {
_vm->_room->buildScreen();
_vm->copyBF2Vid();
- // KEYFLG = 0;
-
_vm->_player->_scrollAmount = 2;
_vm->_destIn = &_vm->_buffer2;
_xTrack = -7;
@@ -829,10 +810,10 @@ void AmazonScripts::mWhileDownRiver() {
_pNumObj = 14;
for (int i = 0; i <_pNumObj; i++) {
_pObject[i] = _vm->_objectsTable[33];
- _pImgNum[i] = RIVEROBJ[i][0];
- _pObjX[i] = RIVEROBJ[i][1];
- _pObjY[i] = RIVEROBJ[i][2];
- _pObjZ[i] = RIVEROBJ[i][3];
+ _pImgNum[i] = DOWNRIVEROBJ[i][0];
+ _pObjX[i] = DOWNRIVEROBJ[i][1];
+ _pObjY[i] = DOWNRIVEROBJ[i][2];
+ _pObjZ[i] = DOWNRIVEROBJ[i][3];
_pObjXl[i] = _pObjYl[i] = 0;
}
@@ -843,34 +824,35 @@ void AmazonScripts::mWhileDownRiver() {
_game->_timers[4]._initTm = 350;
++_game->_timers[4]._flag;
- while(true) {
+ while (!_vm->shouldQuit() && !_vm->_events->isKeyMousePressed() &&
+ (_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth != _vm->_room->_playFieldWidth)) {
_vm->_images.clear();
_vm->_events->_vbCount = 6;
- while ((_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth != _vm->_room->_playFieldWidth) && _vm->_events->_vbCount) {
- jungleMove();
- while (_vm->_screen->_scrollX >= TILE_WIDTH) {
- _vm->_screen->_scrollX -= TILE_WIDTH;
- ++_vm->_screen->_scrollCol;
- _vm->_buffer1.moveBufferLeft();
- _vm->_room->buildColumn(_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth, _vm->_screen->_vWindowBytesWide);
- }
- pan();
- scrollRiver();
+ _vm->_screen->_scrollX += _vm->_player->_scrollAmount;
+ while (_vm->_screen->_scrollX >= TILE_WIDTH) {
+ _vm->_screen->_scrollX -= TILE_WIDTH;
+ ++_vm->_screen->_scrollCol;
+ _vm->_buffer1.moveBufferLeft();
+ _vm->_room->buildColumn(_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth, _vm->_screen->_vWindowBytesWide);
+ }
- if (_game->_timers[3]._flag == 0) {
- _game->_timers[3]._flag = 1;
- _vm->_sound->playSound(1);
- } else if (_game->_timers[4]._flag == 0) {
- _game->_timers[4]._flag = 1;
- _vm->_sound->playSound(0);
- }
+ pan();
+ scrollRiver();
- while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) {
- _vm->_events->pollEventsAndWait();
- }
+ if (!_game->_timers[3]._flag) {
+ ++_game->_timers[3]._flag;
+ _vm->_sound->playSound(1);
+ } else if (!_game->_timers[4]._flag) {
+ ++_game->_timers[4]._flag;
+ _vm->_sound->playSound(0);
+ }
+
+ while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) {
+ _vm->_events->pollEventsAndWait();
}
}
+
_vm->_events->showCursor();
}