[Scummvm-git-logs] scummvm master -> 1272665764d8df9acb212b1d12fa8ab74c6e43d4

alxpnv noreply at scummvm.org
Mon Dec 6 11:18:32 UTC 2021


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

Summary:
17abacd66a ASYLUM: convert a couple of workarounds to patches
7ec7e45043 ASYLUM: fix invalid direction crash
28dc2e14bf ASYLUM: fix subtitle index
7cccbafc9d ASYLUM: fix crash after reaching limit of savegames
1272665764 ASYLUM: fix yawning during active gameplay


Commit: 17abacd66a8e7fb303d8912a0241fad35c103207
    https://github.com/scummvm/scummvm/commit/17abacd66a8e7fb303d8912a0241fad35c103207
Author: alxpnv (alxpnv22 at yahoo.com)
Date: 2021-12-06T14:21:27+03:00

Commit Message:
ASYLUM: convert a couple of workarounds to patches

Changed paths:
    engines/asylum/resources/script.cpp
    engines/asylum/resources/worldstats.cpp
    engines/asylum/views/scene.cpp


diff --git a/engines/asylum/resources/script.cpp b/engines/asylum/resources/script.cpp
index c6370ecc33..d2c966d797 100644
--- a/engines/asylum/resources/script.cpp
+++ b/engines/asylum/resources/script.cpp
@@ -268,6 +268,12 @@ void ScriptManager::load(Common::SeekableReadStream *stream) {
 		_scripts[34].commands[13].param1 =  453;
 		_scripts[43].commands[ 9].param1 =  455;
 	}
+
+	// Patch for Demo lockup bug
+	if (_vm->checkGameVersion("Demo")) {
+		_scripts[1].commands[6].param2 = 151;
+		_scripts[1].commands[6].param3 = 332;
+	}
 }
 
 void ScriptManager::saveLoadWithSerializer(Common::Serializer &s) {
@@ -629,11 +635,6 @@ END_OPCODE
 IMPLEMENT_OPCODE(SetActorPosition)
 	Actor *actor = getScene()->getActor(cmd->param1);
 
-	if (_vm->checkGameVersion("Demo") && cmd->param2 == 150 && cmd->param3 == 337) {
-		actor->setPosition(151, 332, (ActorDirection)cmd->param4, (uint32)cmd->param5);
-		return;
-	}
-
 	actor->setPosition((int16)cmd->param2, (int16)cmd->param3, (ActorDirection)cmd->param4, (uint32)cmd->param5);
 END_OPCODE
 
diff --git a/engines/asylum/resources/worldstats.cpp b/engines/asylum/resources/worldstats.cpp
index c6d8bdcec7..268007670d 100644
--- a/engines/asylum/resources/worldstats.cpp
+++ b/engines/asylum/resources/worldstats.cpp
@@ -202,6 +202,10 @@ void WorldStats::load(Common::SeekableReadStream *stream) {
 	musicResourceIndex        = stream->readSint32LE();
 	musicStatusExt            = stream->readSint32LE();
 
+	// Patch a flag number which is too big
+	if (chapter == kChapter8 && ambientSounds[1].flagNum[1] == 99999)
+		ambientSounds[1].flagNum[1] = 0;
+
 load_objects:
 	//////////////////////////////////////////////////////////////////////////
 	// Read Objects
diff --git a/engines/asylum/views/scene.cpp b/engines/asylum/views/scene.cpp
index b8bad08a16..8e6d870551 100644
--- a/engines/asylum/views/scene.cpp
+++ b/engines/asylum/views/scene.cpp
@@ -852,9 +852,6 @@ void Scene::updateAmbientSounds() {
 			if (!gameFlag)
 				break;
 
-			if (gameFlag == 99999)
-				continue;
-
 			if (gameFlag >= 0) {
 				if (_vm->isGameFlagNotSet((GameFlag)gameFlag)) {
 					processSound = false;


Commit: 7ec7e45043889b719227c5b413e31c36bddff69f
    https://github.com/scummvm/scummvm/commit/7ec7e45043889b719227c5b413e31c36bddff69f
Author: alxpnv (alxpnv22 at yahoo.com)
Date: 2021-12-06T14:21:27+03:00

Commit Message:
ASYLUM: fix invalid direction crash

Bug no. 13130

Changed paths:
    engines/asylum/resources/actor.cpp
    engines/asylum/resources/script.cpp


diff --git a/engines/asylum/resources/actor.cpp b/engines/asylum/resources/actor.cpp
index c80d6c71c1..f7b2a7ac73 100644
--- a/engines/asylum/resources/actor.cpp
+++ b/engines/asylum/resources/actor.cpp
@@ -3797,7 +3797,7 @@ int32 Actor::getWalkIncrement(ActorDirection dir, uint32 frameIndex) const {
 
 	switch (dir) {
 	default:
-		error("[Actor::getWalkIncrement] Invalid direction");
+		error("[Actor::getWalkIncrement] Invalid direction %d", dir);
 
 	case kDirectionN:
 		return -_distancesNS[frameIndex];
diff --git a/engines/asylum/resources/script.cpp b/engines/asylum/resources/script.cpp
index d2c966d797..77e93225d9 100644
--- a/engines/asylum/resources/script.cpp
+++ b/engines/asylum/resources/script.cpp
@@ -724,14 +724,15 @@ END_OPCODE
 // Opcode 0x13
 IMPLEMENT_OPCODE(JumpAndSetDirection)
 	Actor *actor = getScene()->getActor(cmd->param1);
+	ActorDirection newDirection = (ActorDirection)(cmd->param4 & 7);
 
 	if (actor->getStatus() != kActorStatusWalkingTo && actor->getStatus() != kActorStatusWalkingTo2) {
 		if (cmd->param5 != 2) {
 
 			if (cmd->param2 == -1 || cmd->param3 == -1) {
-				actor->changeDirection((ActorDirection)cmd->param4);
+				actor->changeDirection(newDirection);
 			} else if ((actor->getPoint1()->x + actor->getPoint2()->x) == cmd->param2 && (actor->getPoint1()->y + actor->getPoint2()->y) == cmd->param3) {
-				actor->changeDirection((ActorDirection)cmd->param4);
+				actor->changeDirection(newDirection);
 			} else {
 				actor->forceTo((int16)cmd->param2, (int16)cmd->param3, (bool)cmd->param6);
 
@@ -745,7 +746,7 @@ IMPLEMENT_OPCODE(JumpAndSetDirection)
 			_processNextEntry = false;
 
 			if ((actor->getPoint1()->x + actor->getPoint2()->x) == cmd->param2 && (actor->getPoint1()->y + actor->getPoint2()->y) == cmd->param3)
-				actor->changeDirection((ActorDirection)cmd->param4);
+				actor->changeDirection(newDirection);
 		}
 	} else {
 		if (cmd->param5 == 2)


Commit: 28dc2e14bf83dbec4a9b6815c6180c4e4003017b
    https://github.com/scummvm/scummvm/commit/28dc2e14bf83dbec4a9b6815c6180c4e4003017b
Author: alxpnv (alxpnv22 at yahoo.com)
Date: 2021-12-06T14:21:27+03:00

Commit Message:
ASYLUM: fix subtitle index

Bug no. 13135

Changed paths:
    engines/asylum/views/video.cpp


diff --git a/engines/asylum/views/video.cpp b/engines/asylum/views/video.cpp
index 14c4b7f50c..2ab990f56d 100644
--- a/engines/asylum/views/video.cpp
+++ b/engines/asylum/views/video.cpp
@@ -295,7 +295,13 @@ void VideoPlayer::loadSubtitles() {
 			if (!tok)
 				error("[Video::loadSubtitles] Invalid subtitle (resource id missing)!");
 
-			newSubtitle.resourceId = (ResourceId)(atoi(tok) + video_subtitle_resourceIds[_currentMovie]);
+			int index = atoi(tok);
+
+			// Original bug: index starts from 1 instead of 0
+			if (_currentMovie == 36)
+				index--;
+
+			newSubtitle.resourceId = (ResourceId)(index + video_subtitle_resourceIds[_currentMovie]);
 
 			tok = strtok(nullptr, " ");
 


Commit: 7cccbafc9d03276e7ddb2ca2a8b2ba61a6c9cfe1
    https://github.com/scummvm/scummvm/commit/7cccbafc9d03276e7ddb2ca2a8b2ba61a6c9cfe1
Author: alxpnv (alxpnv22 at yahoo.com)
Date: 2021-12-06T14:21:27+03:00

Commit Message:
ASYLUM: fix crash after reaching limit of savegames

Bug no. 13144

Changed paths:
    engines/asylum/metaengine.cpp


diff --git a/engines/asylum/metaengine.cpp b/engines/asylum/metaengine.cpp
index 1f20851eb0..11d2c3b16e 100644
--- a/engines/asylum/metaengine.cpp
+++ b/engines/asylum/metaengine.cpp
@@ -50,8 +50,8 @@ public:
 		return "Sanitarium (c) ASC Games";
 	}
 
-	int getMaximumSaveSlot() const override { return 25; }
-	int getAutosaveSlot() const override { return getMaximumSaveSlot() - 1; }
+	int getMaximumSaveSlot() const override { return 24; }
+	int getAutosaveSlot()    const override { return getMaximumSaveSlot(); }
 	SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
 	void getSavegameThumbnail(Graphics::Surface &thumb) override;
 	Common::Error createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const override;


Commit: 1272665764d8df9acb212b1d12fa8ab74c6e43d4
    https://github.com/scummvm/scummvm/commit/1272665764d8df9acb212b1d12fa8ab74c6e43d4
Author: alxpnv (alxpnv22 at yahoo.com)
Date: 2021-12-06T14:21:27+03:00

Commit Message:
ASYLUM: fix yawning during active gameplay

Bug no. 13136

Changed paths:
    engines/asylum/views/scene.cpp


diff --git a/engines/asylum/views/scene.cpp b/engines/asylum/views/scene.cpp
index 8e6d870551..3f3506f6bc 100644
--- a/engines/asylum/views/scene.cpp
+++ b/engines/asylum/views/scene.cpp
@@ -530,6 +530,8 @@ bool Scene::clickDown(const AsylumEvent &evt) {
 	}
 
 	Actor *player = getActor();
+	player->setLastScreenUpdate(_vm->screenUpdateCount);
+
 	switch (evt.type) {
 	default:
 		break;




More information about the Scummvm-git-logs mailing list