[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