[Scummvm-tracker] [ScummVM :: Bugs] #12955: MYST3: Video speeds up after room transition

ScummVM :: Bugs trac at scummvm.org
Tue Sep 21 11:18:27 UTC 2021


#12955: MYST3: Video speeds up after room transition
-------------------------+----------------------------
Reporter:  eriktorbjorn  |       Owner:  (none)
    Type:  defect        |      Status:  new
Priority:  normal        |   Component:  Engine: Myst3
 Version:                |  Resolution:
Keywords:                |        Game:  Myst 3: Exile
-------------------------+----------------------------
Description changed by eriktorbjorn:

Old description:

> When a video is playing as part of a room background, it is paused during
> transitions between room but the sound (correctly, I assume) keeps
> playing. To compensate, the video speeds up briefly after each
> transition. This looks strange to me. It would probably be better if it
> skipped frames instead. Here is a quick-and-dirty experiment to do so:
>
> ```
> diff --git a/engines/myst3/movie.cpp b/engines/myst3/movie.cpp
> index bb163e82b8..00eee8832e 100644
> --- a/engines/myst3/movie.cpp
> +++ b/engines/myst3/movie.cpp
> @@ -332,7 +332,7 @@ void ScriptedMovie::update() {
>                         }
>                 }
>
> -               if (!_scriptDriven && (_bink.needsUpdate() ||
> _isLastFrame)) {
> +               while (!_scriptDriven && (_bink.needsUpdate() ||
> _isLastFrame)) {
>                         bool complete = false;
>
>                         if (_isLastFrame) {
> ```
>
> But for one thing it may not be the best way to do so, and for another
> I'm afraid it would introduce frame skipping where it's not desired. As I
> said, it's just an experiment to see the difference.
>
> I'm attaching a savegame of the part where I noticed this.

New description:

 When a video is playing as part of a room background, it is paused during
 transitions between room but the sound (correctly, I assume) keeps
 playing. To compensate, the video speeds up briefly after each transition.
 This looks strange to me. It would probably be better if it skipped frames
 instead. Here is a quick-and-dirty experiment to do so:

 {{{
 diff --git a/engines/myst3/movie.cpp b/engines/myst3/movie.cpp
 index bb163e82b8..00eee8832e 100644
 --- a/engines/myst3/movie.cpp
 +++ b/engines/myst3/movie.cpp
 @@ -332,7 +332,7 @@ void ScriptedMovie::update() {
                         }
                 }

 -               if (!_scriptDriven && (_bink.needsUpdate() ||
 _isLastFrame)) {
 +               while (!_scriptDriven && (_bink.needsUpdate() ||
 _isLastFrame)) {
                         bool complete = false;

                         if (_isLastFrame) {
 }}}

 But for one thing it may not be the best way to do so, and for another I'm
 afraid it would introduce frame skipping where it's not desired. As I
 said, it's just an experiment to see the difference.

 I'm attaching a savegame of the part where I noticed this.

--
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/12955#comment:1>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list