[Scummvm-git-logs] scummvm master -> 7d92de14dabe214097cf67fcb89f43fe5757d7d7

yuv422 noreply at scummvm.org
Sat Oct 19 11:09:57 UTC 2024


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7144f7beb7 DARKSEED: Fix walking down front steps.
3b73b77ba2 DARKSEED: Fix opening library door
7d92de14da DARKSEED: Fix picking up package from front steps


Commit: 7144f7beb745b1f916fad6ee348c1d03005a285f
    https://github.com/scummvm/scummvm/commit/7144f7beb745b1f916fad6ee348c1d03005a285f
Author: Eric Fry (yuv422 at reversedgames.com)
Date: 2024-10-19T22:07:09+11:00

Commit Message:
DARKSEED: Fix walking down front steps.

Changed paths:
    engines/darkseed/animation.cpp
    engines/darkseed/darkseed.cpp


diff --git a/engines/darkseed/animation.cpp b/engines/darkseed/animation.cpp
index e8bc745312c..04dee5456b1 100644
--- a/engines/darkseed/animation.cpp
+++ b/engines/darkseed/animation.cpp
@@ -696,10 +696,11 @@ void Animation::updateAnimation() {
 	case 53:
 	case 54:
 	case 55:
-	case 56:
-		advanceAnimationFrame((_otherNspAnimationType_maybe - 53) & 1);
+	case 56: {
+		int stairsIdx = (_otherNspAnimationType_maybe - 53) & 1;
+		advanceAnimationFrame(stairsIdx);
 		if (!_objRestarted) {
-			_player->_frameIdx = _player->_animations.getAnimAt(0)._frameNo[_player->_animations.getAnimAt(0)._frameNo[_animIndexTbl[0]]];
+			_player->_frameIdx = _player->_animations.getAnimAt(stairsIdx)._frameNo[_animIndexTbl[stairsIdx]];
 		} else {
 			switch (_otherNspAnimationType_maybe) {
 			case 53:
@@ -731,6 +732,7 @@ void Animation::updateAnimation() {
 			// PlaySound(1,5,-1);
 		}
 		break;
+	}
 	case 57:
 	case 58:
 		advanceAnimationFrame((_otherNspAnimationType_maybe - 57) & 1);
diff --git a/engines/darkseed/darkseed.cpp b/engines/darkseed/darkseed.cpp
index 1fb37c83ded..27cd419a2b2 100644
--- a/engines/darkseed/darkseed.cpp
+++ b/engines/darkseed/darkseed.cpp
@@ -1084,7 +1084,7 @@ void DarkseedEngine::changeToRoom(int newRoomNumber, bool placeDirectly) { // AK
 		_animation->setupOtherNspAnimation(0, 16);
 	} else if (newRoomNumber == 10 && _previousRoomNumber == 6) {
 		_player->loadAnimations("rm10strs.nsp");
-		_animation->setupOtherNspAnimation(1, 54);
+		_animation->setupOtherNspAnimation(1, 54); // walk down front steps
 	} else if (newRoomNumber == 11 && _previousRoomNumber == 15) {
 		_player->loadAnimations("rm11strs.nsp");
 		_animation->setupOtherNspAnimation(1, 56);


Commit: 3b73b77ba2c8bf8be78898606506d5f41f7a9918
    https://github.com/scummvm/scummvm/commit/3b73b77ba2c8bf8be78898606506d5f41f7a9918
Author: Eric Fry (yuv422 at reversedgames.com)
Date: 2024-10-19T22:07:09+11:00

Commit Message:
DARKSEED: Fix opening library door

Changed paths:
    engines/darkseed/animation.cpp
    engines/darkseed/darkseed.cpp


diff --git a/engines/darkseed/animation.cpp b/engines/darkseed/animation.cpp
index 04dee5456b1..36c0e8e57eb 100644
--- a/engines/darkseed/animation.cpp
+++ b/engines/darkseed/animation.cpp
@@ -71,7 +71,7 @@ void Animation::setupOtherNspAnimation(int nspAnimIdx, int animId) {
 	case 24:
 	case 25:
 	case 65:
-		_scaleSequence = 1;
+		_scaleSequence = true;
 		break;
 	case 6: // stairs
 		_nsp_sprite_scaling_y_position = 0xbe;
@@ -463,7 +463,7 @@ void Animation::updateAnimation() {
 		// Open doors
 		advanceAnimationFrame(0);
 		if (!_objRestarted) {
-			_player->_frameIdx = _player->_animations.getAnimAt(0)._frameNo[_player->_animations.getAnimAt(0)._frameNo[_animIndexTbl[0]]];
+			_player->_frameIdx = _player->_animations.getAnimAt(0)._frameNo[_animIndexTbl[0]];
 		} else {
 			_player->updateSprite();
 			if (_otherNspAnimationType_maybe == 14) {
diff --git a/engines/darkseed/darkseed.cpp b/engines/darkseed/darkseed.cpp
index 27cd419a2b2..f78c56ba48f 100644
--- a/engines/darkseed/darkseed.cpp
+++ b/engines/darkseed/darkseed.cpp
@@ -1413,6 +1413,7 @@ void DarkseedEngine::updateDisplay() { // AKA ServiceRoom
 						_player->_flipSprite);
 				}
 				if (_animation->_isPlayingAnimation_maybe && _animation->_otherNspAnimationType_maybe == 14 && _animation->_animIndexTbl[0] > 1) {
+					// opening doors.
 					if (_objectVar.getObjectRunningCode(140) == 0 || _room->_roomNumber != 6) {
 						if (_room->_roomNumber == 6 && _player->_isAutoWalkingToBed) {
 							const Sprite &animSprite = _player->_animations.getSpriteAt(8);
@@ -1424,7 +1425,7 @@ void DarkseedEngine::updateDisplay() { // AKA ServiceRoom
 							const Sprite &animSprite = _player->_animations.getSpriteAt(6);
 							_sprites.addSpriteToDrawList(369, 119, &animSprite, 255, animSprite._width, animSprite._height, _player->_flipSprite);
 						} else if (_room->_roomNumber == 12) {
-							const Sprite &animSprite = _player->_animations.getSpriteAt(6);
+							const Sprite &animSprite = _player->_animations.getSpriteAt(7);
 							_sprites.addSpriteToDrawList(252, 121, &animSprite, 255, animSprite._width, animSprite._height, _player->_flipSprite);
 						}
 					} else {


Commit: 7d92de14dabe214097cf67fcb89f43fe5757d7d7
    https://github.com/scummvm/scummvm/commit/7d92de14dabe214097cf67fcb89f43fe5757d7d7
Author: Eric Fry (yuv422 at reversedgames.com)
Date: 2024-10-19T22:07:09+11:00

Commit Message:
DARKSEED: Fix picking up package from front steps

Changed paths:
    engines/darkseed/darkseed.cpp


diff --git a/engines/darkseed/darkseed.cpp b/engines/darkseed/darkseed.cpp
index f78c56ba48f..f4c9e81a4ba 100644
--- a/engines/darkseed/darkseed.cpp
+++ b/engines/darkseed/darkseed.cpp
@@ -528,7 +528,9 @@ void DarkseedEngine::handleInput() {
 				_player->_walkToSequencePoint = _cursor.getPosition();
 				_player->_sequenceRotation = -1;
 				Common::Point currentCursorPos = _cursor.getPosition();
-				int objNum = _room->_roomObj[roomObjIdx].objNum;
+				// TODO check this logic with original it looks like there might be a buffer overrun
+				// in the original logic when roomObjIdx >= 30 eg package.
+				int objNum = roomObjIdx >= 30 ? 0 : _room->_roomObj[roomObjIdx].objNum;
 				if (walkToDirTbl[objNum] != 4) {
 					_player->_sequenceRotation = walkToDirTbl[objNum];
 					_cursor.updatePosition(walkToXTbl[objNum], walkToYTbl[objNum]);
@@ -820,8 +822,8 @@ void DarkseedEngine::handleInput() {
 		int objIdx = _room->getObjectUnderCursor();
 		_cursor.setPosition(currentCursorPos);
 		if (objIdx != -1) {
-			int objType = _room->_roomObj[objIdx].type;
-			int objNum = _room->_roomObj[objIdx].objNum;
+			int objType = objIdx >= 30 ? 0 : _room->_roomObj[objIdx].type;
+			int objNum = objIdx >= 30 ? 0 : _room->_roomObj[objIdx].objNum;
 			if (((objType != 4 && objType != 0 && objType < 10) || objNum > 5 || _room->_collisionType != 0)) {
 				if (_room->_collisionType == 0) {
 					handleObjCollision(objNum);




More information about the Scummvm-git-logs mailing list