[Scummvm-git-logs] scummvm master -> 67c29a07aa8cedf76d6979a968d8feba5372f0bb

elasota noreply at scummvm.org
Sat May 20 17:00:37 UTC 2023


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

Summary:
67c29a07aa VCRUISE: Fix game not starting.  Make animation terminate at end the default behavior for static animations in Schizm.


Commit: 67c29a07aa8cedf76d6979a968d8feba5372f0bb
    https://github.com/scummvm/scummvm/commit/67c29a07aa8cedf76d6979a968d8feba5372f0bb
Author: elasota (ejlasota at gmail.com)
Date: 2023-05-20T12:59:17-04:00

Commit Message:
VCRUISE: Fix game not starting.  Make animation terminate at end the default behavior for static animations in Schizm.

Changed paths:
    engines/vcruise/runtime.cpp


diff --git a/engines/vcruise/runtime.cpp b/engines/vcruise/runtime.cpp
index 0d24ae68d3b..ffba76073e3 100644
--- a/engines/vcruise/runtime.cpp
+++ b/engines/vcruise/runtime.cpp
@@ -2634,8 +2634,9 @@ void Runtime::loadAllSchizmScreenNames() {
 
 		uint roomNumber = (d10 - '0') * 10 + (d1 - '0');
 
-		// Rooms 1 and 3 are always compiled.  2 is a cheat room that contains garbage.
-		if (roomNumber > 3)
+		// Rooms 1 and 3 are always compiled.  2 is a cheat room that contains garbage.  We still need to compile room 1
+		// to get the START screen to start the game though.
+		if (roomNumber > 3 && roomNumber != 1)
 			roomsToCompile.push_back(roomNumber);
 	}
 
@@ -2645,7 +2646,11 @@ void Runtime::loadAllSchizmScreenNames() {
 		if (roomNumber >= _roomDuplicationOffsets.size() || _roomDuplicationOffsets[roomNumber] == 0) {
 			uint roomSetToCompile[3] = {1, 3, roomNumber};
 
-			compileSchizmLogicSet(roomSetToCompile, 3);
+			uint numRooms = 3;
+			if (roomNumber == 1)
+				numRooms = 2;
+
+			compileSchizmLogicSet(roomSetToCompile, numRooms);
 
 			for (const RoomScriptSetMap_t::Node &rssNode : _scriptSet->roomScripts) {
 				if (rssNode._key != roomNumber)
@@ -5454,11 +5459,15 @@ void Runtime::scriptOpAnimS(ScriptArg_t arg) {
 	// Static animations start on the last frame
 	changeAnimation(animDef, animDef.lastFrame, false);
 
-	// We use different behavior from the original game to mostly speed up one-frame animations by terminating them
-	// at the start of the last frame instead of the end of the last frame.  However, this causes the mechanical
-	// keyboard to play all of the pin animations at once which is kind of annoying.
-	if (_gameID == GID_SCHIZM && animDef.animName.hasPrefix("WEJSCIE_DN"))
-		_animTerminateAtStartOfFrame = false;
+	// We have a choice of when to terminate animations: At the start of the final frame, or at the end of the final frame.
+	// Terminating at the start of the final frame means many frames can play in a single gameplay frame.
+	//
+	// In Reah, we terminate at the start because it doesn't really cause problems anywhere and helps some things like
+	// the basket weight puzzle in the bathhouse.
+	//
+	// In Schizm, several things like the mechanical computer and balloon gas puzzle pressure meter don't behave
+	// well when doing this, so we terminate at the end of the frame instead there.
+	_animTerminateAtStartOfFrame = (_gameID == GID_SCHIZM);
 
 	_gameState = kGameStateWaitingForAnimation;
 	_screenNumber = stackArgs[kAnimDefStackArgs + 0];




More information about the Scummvm-git-logs mailing list