[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