aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/access/access.h3
-rw-r--r--engines/access/player.cpp10
-rw-r--r--engines/access/player.h1
-rw-r--r--engines/access/room.cpp7
4 files changed, 12 insertions, 9 deletions
diff --git a/engines/access/access.h b/engines/access/access.h
index 105b00b0ff..32be053089 100644
--- a/engines/access/access.h
+++ b/engines/access/access.h
@@ -138,8 +138,6 @@ public:
byte *_music;
byte *_title;
int _converseMode;
- int _startAboutItem;
- int _startTravelItem;
int _startAboutBox;
int _startTravelBox;
bool _currentCharFlag;
@@ -152,7 +150,6 @@ public:
int _scaleMaxY;
int _scaleI;
bool _scaleFlag;
- int _playFieldHeight;
// Fields that are included in savegames
int _conversation;
diff --git a/engines/access/player.cpp b/engines/access/player.cpp
index 72cafde243..79ce2190f3 100644
--- a/engines/access/player.cpp
+++ b/engines/access/player.cpp
@@ -61,6 +61,7 @@ Player::Player(AccessEngine *vm): Manager(vm), ImageEntry() {
_move = NONE;
_playerDirection = NONE;
_xFlag = _yFlag = 0;
+ _inactiveYOff = 0;
}
Player::~Player() {
@@ -168,12 +169,13 @@ void Player::freeSprites() {
void Player::calcManScale() {
if (!_vm->_manScaleOff) {
- _vm->_scale = (((_rawPlayer.y - _vm->_scaleMaxY + _vm->_scaleN1) *
- _vm->_scaleT1 + (_vm->_scaleH2 << 8)) / _vm->_scaleH1 * _vm->_scaleI) >> 8;
+ _vm->_scale = ((((_rawPlayer.y - _vm->_scaleMaxY + _vm->_scaleN1) *
+ _vm->_scaleT1 + (_vm->_scaleH2 << 8)) & 0xff00) / _vm->_scaleH1 * _vm->_scaleI) >> 8;
_vm->_screen->setScaleTable(_vm->_scale);
_playerOffset.x = _vm->_screen->_scaleTable1[20];
_playerOffset.y = _vm->_screen->_scaleTable1[67];
+ _inactiveYOff = _playerOffset.y;
}
}
@@ -188,6 +190,7 @@ void Player::walk() {
return;
}
+ _vm->_timers[0]._flag = true;
switch (_move) {
case UP:
_vm->_events->_mouseMove = false;
@@ -646,7 +649,8 @@ void Player::plotCom2() {
void Player::plotCom3() {
// Update the base ImageEntry fields for the player
- _position = _rawPlayer;
+ _position.x = _rawPlayer.x;
+ _position.y = _rawPlayer.y - _playerOffset.y;
_priority = _playerOffset.y;
_spritesPtr = _playerSprites;
_frameNumber = _frame;
diff --git a/engines/access/player.h b/engines/access/player.h
index a291f4589d..a9efff2433 100644
--- a/engines/access/player.h
+++ b/engines/access/player.h
@@ -57,6 +57,7 @@ private:
SpriteResource *_playerSprites1;
byte *_manPal1;
int _scrollEnd;
+ int _inactiveYOff;
bool codeWalls();
void checkMove();
diff --git a/engines/access/room.cpp b/engines/access/room.cpp
index cf8da17f05..ccd19b0ed9 100644
--- a/engines/access/room.cpp
+++ b/engines/access/room.cpp
@@ -182,14 +182,14 @@ void Room::loadRoomData(const byte *roomData) {
_vm->_scaleH1 = roomInfo._scaleH1;
_vm->_scaleH2 = roomInfo._scaleH2;
_vm->_scaleN1 = roomInfo._scaleN1;
- _vm->_scaleT1 = ((_vm->_scaleH2 - _vm->_scaleH1) << 8) / _vm->_scaleN1;
+ _vm->_scaleT1 = ((_vm->_scaleH1 - _vm->_scaleH2) << 8) / _vm->_scaleN1;
if (roomInfo._playFieldFile._fileNum != -1) {
loadPlayField(roomInfo._playFieldFile._fileNum,
roomInfo._playFieldFile._subfile);
setupRoom();
- _vm->_scaleMaxY = _vm->_playFieldHeight << 4;
+ _vm->_scaleMaxY = _playFieldHeight << 4;
}
// Load cells
@@ -211,7 +211,8 @@ void Room::loadRoomData(const byte *roomData) {
_vm->_animation->loadAnimations(data, _vm->_files->_filesize);
}
- _vm->_scaleI = roomInfo._scaleI;
+ _vm->_scale = _vm->_scaleI = roomInfo._scaleI;
+ _vm->_screen->setScaleTable(_vm->_scale);
_vm->_player->_scrollThreshold = roomInfo._scrollThreshold;
// Handle loading scene palette data