[Scummvm-tracker] [ScummVM :: Bugs] #13675: TWINE: Sometimes twinsen get's stuck in in a loop of throwing the magic ball

ScummVM :: Bugs trac at scummvm.org
Mon May 25 06:39:16 UTC 2026


#13675: TWINE: Sometimes twinsen get's stuck in in a loop of throwing the magic
ball
----------------------+-----------------------------------
Reporter:  mgerhardy  |       Owner:  (none)
    Type:  defect     |      Status:  new
Priority:  normal     |   Component:  Engine: TwinE
 Version:             |  Resolution:
Keywords:  input      |        Game:  Little Big Adventure
----------------------+-----------------------------------
Comment (by mgerhardy):

 The original game has this gate in its movement processing:

 if (!MyFire OR ActionNormal) {
     // process movement, detect input changes, reset animations
 }
 LastMyJoy = MyJoy;
 LastMyFire = MyFire;

 MyFire is a bitmask of ALL fire buttons (Space, Alt, Ctrl). When any fire
 button is held, movement processing is skipped. When the button is
 released, the change is detected (MyFire != LastMyFire) and standing
 animation is triggered.

 In ScummVM, this gate was incorrectly implemented as !_changedCursorKeys
 (which checks if all 4 direction keys are pressed simultaneously —
 essentially always false, making the condition always true). This meant:

 1. The movement block always ran, even during attack actions
 2. _lastJoyFlag got reset to false during hit animations (when the early-
 return checks didn't match)
 3. The Alt/ThrowMagicBall key state was never tracked for change detection

 The result: when Twinsen gets hit while holding Alt (magic ball) or Space
 (aggressive attack), the hit animation interrupts and queues the
 attack animation to resume. After the hit, the attack animation resumes
 with _flagAnim = ANIM_REPEAT (looping). Since the input change was never
 detected, the animation loops forever.
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/13675#comment:9>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list