[Scummvm-tracker] [ScummVM :: Bugs] #13997: AGOS: SIMON2: Character animation regression at MucSwamplings

ScummVM :: Bugs trac at scummvm.org
Mon Jan 23 20:02:41 UTC 2023


#13997: AGOS: SIMON2: Character animation regression at MucSwamplings
---------------------------------------+-----------------------------------
Reporter:  dwatteau                    |       Owner:  (none)
    Type:  defect                      |      Status:  new
Priority:  normal                      |   Component:  Engine: AGOS
 Version:                              |  Resolution:
Keywords:  glitch,character animation  |        Game:  Simon the Sorcerer 2
---------------------------------------+-----------------------------------
Comment (by BLooperZ):

 Seems the following workaround resolves it, but I can't figure out why
 {{{
 diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp
 index 3c79f9d3b40..132456b5b8a 100644
 --- a/engines/agos/vga.cpp
 +++ b/engines/agos/vga.cpp
 @@ -801,7 +801,7 @@ void AGOSEngine::vc15_sync() {
                 }
         }

 -       if (id != 200)
 +       if (id != 200 || _lastVgaWaitFor == 1150)
                 _lastVgaWaitFor = id;
         /* clear a wait event */
         if (id == _vgaWaitFor)
 }}}

 So far, the problem fixed in the linked bug #5856 happens because
 WAIT_SYNC 2417 called after SYNC 2417 was already set, but is overshadowed
 by immediately previous WAIT_SYNC 200, which is ignored in
 `AGOSEngine::waitForSync` so it seems safe, when disabling the guard in
 the change above completely, the glitch does not occur, but the pirate
 dialogue freezes again.


 During my attempts I have tried using several data structures to keep
 track on previous values and restore them, but none of those attempts
 works.
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/13997#comment:1>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list