[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