[Scummvm-git-logs] scummvm master -> a8fc4de336ed9303f7f762894c6a8b53d1e064e4

antoniou79 noreply at scummvm.org
Wed May 6 12:57:13 UTC 2026


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

Summary:
a8fc4de336 MYST3: Fix Jnanin wheel's counter clockwise turn regression


Commit: a8fc4de336ed9303f7f762894c6a8b53d1e064e4
    https://github.com/scummvm/scummvm/commit/a8fc4de336ed9303f7f762894c6a8b53d1e064e4
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2026-05-06T15:56:50+03:00

Commit Message:
MYST3: Fix Jnanin wheel's counter clockwise turn regression

Fixes #16757

This plays the movie backwards by continuously writing to the _nextFrameReadVar. We need to drawNextFrame in this case (if different than current), but not set the _isLastFrame flag, which would otherwise be set, since we start from the end going backwards.

Changed paths:
    engines/myst3/movie.cpp


diff --git a/engines/myst3/movie.cpp b/engines/myst3/movie.cpp
index 54fe05b14a2..30a78661f5c 100644
--- a/engines/myst3/movie.cpp
+++ b/engines/myst3/movie.cpp
@@ -382,6 +382,7 @@ void ScriptedMovie::update(bool pauseAtFirstFrame) {
 
 		updateVolume();
 
+		bool forceDrawNextFrame = false;
 		if (_nextFrameReadVar) {
 			int32 nextFrame = _vm->_state->getVar(_nextFrameReadVar);
 			if (nextFrame > 0 && nextFrame <= (int32)_bink.getFrameCount()) {
@@ -406,8 +407,10 @@ void ScriptedMovie::update(bool pauseAtFirstFrame) {
 							_bink.seekToFrame(nextFrame - 1);
 						}
 					}
+					forceDrawNextFrame = true;
 					if (_scriptDriven) {
 						drawNextFrameToTexture();
+						forceDrawNextFrame = false;
 					}
 				}
 
@@ -416,9 +419,8 @@ void ScriptedMovie::update(bool pauseAtFirstFrame) {
 			}
 		}
 
-		if (!_scriptDriven && (_bink.needsUpdate() || _isLastFrame)) {
+		if (!_scriptDriven && (forceDrawNextFrame || _bink.needsUpdate() || _isLastFrame)) {
 			bool complete = false;
-
 			if (_isLastFrame) {
 				_isLastFrame = false;
 				if (_loop) {
@@ -429,7 +431,9 @@ void ScriptedMovie::update(bool pauseAtFirstFrame) {
 				}
 			} else {
 				drawNextFrameToTexture();
-				_isLastFrame = _bink.getCurFrame() == effectiveEndFrame;
+				if (!forceDrawNextFrame) {
+					_isLastFrame = _bink.getCurFrame() == effectiveEndFrame;
+				}
 			}
 
 			if (_nextFrameWriteVar) {




More information about the Scummvm-git-logs mailing list