Opened 8 years ago

Last modified 8 years ago

#5828 new defect

IHNM: Character selection animations often miss a frame

Reported by: eriktorbjorn Owned by:
Priority: normal Component: Engine: SAGA
Keywords: Cc:
Game: I Have No Mouth


Current ScummVM git (though the glitch has been bugging me for ages, so it's nothing recent)
English versin of the game

There is a slight glitch on the hate pillar/character selection screen. When selecting a character, the animation often stops one frame too early. E.g. when selecting Nimdok, it cycles through frames 6-25 instead of 6-26.

The two relevant opcodes here are probably sfCycleFrames(), which sets up the animation cycle, and sfWaitFrames() which tells the thread how long to wait. There may be other things happening in between these two opcodes; I haven't checked.

The problem seems to be that usually it executes both sfCycleFrames and sfWaitFrames before the animation cycle actually begins, and then it won't finish in time. But sometimes, it manages to do the first frame (and increase _vm->_frameCount) before sfWaitFrames(), and then it will finish in time. I haven't seen this glitch when using DOSBox, though it's been a while since I tried that.

One possibility would be that this slight indeterminism is in the original as well, and that our sfWaitFrames() doesn't wait long enough. Another is that something about our script/thread handling is different from the original. Of course, it could also be something else entirely, and my analysis could be completely wrong.

Ticket imported from: #3392688. Ticket imported from: bugs/5828.

Change History (1)

comment:1 Changed 8 years ago by eriktorbjorn

Perhaps it will save someone a little bit of bother if I mention that both the actor's frame number and the game's frame count appear to be handled by Actor::handleActions() in actor_walk.cpp, and that the actor action seems to be kActionCycleFrames.

Note: See TracTickets for help on using tickets.