Opened 4 months ago

Closed 2 months ago

#10800 closed defect (fixed)

[Pink] "Pink Panther: Passport to Peril" crashes

Reported by: rtentser Owned by: whiterandrek
Priority: normal Component: Engine: Pink
Keywords: Cc:
Game: Pink Panther: Passport to Peril

Description

When Pink look under the bed in six house (first from right) after he's returned frop Egypt, the game crashes with this output:

WARNING: SDL mixer output buffer size: 512 differs from desired: 1024!
User picked target 'peril' (gameid 'peril')...

Looking for a plugin supporting this gameid... Pink Panther Engine
Starting 'The Pink Panther: Passport to Peril'

WARNING: Could not find classicmacfonts.dat. Falling back to built-in fonts!
scummvm: engines/pink/objects/actions/action_play.cpp:67: virtual void Pink::ActionPlay::onStart(): Assertion `_startFrame < _decoder.getFrameCount()' failed.
Aborted

Attachments (1)

peril.s00 (22.2 KB) - added by rtentser 4 months ago.
Save before the crash

Download all attachments as: .zip

Change History (14)

Changed 4 months ago by rtentser

Attachment: peril.s00 added

Save before the crash

comment:1 Changed 4 months ago by rtentser

Forgot to say: i use the last git version (502280f26d0a6d49fd49bf45f90635d7194cd755).

Last edited 4 months ago by rtentser (previous) (diff)

comment:2 Changed 4 months ago by digitall

Replicated here with latest git master under Linux x86_64.

Running scummvm -d 6 --debugflags=actions or use the debug console ie. CTRL-d to enable these settings gives the following at the function with the assertion:
Actor Pink has now ActionPlay CheckUnderBedHoldDB
cummvm: engines/pink/objects/actions/action_play.cpp:67: virtual void Pink::ActionPlay::onStart(): Assertion `_startFrame < _decoder.getFrameCount()' failed.

comment:3 Changed 4 months ago by digitall

The following patch fixes the issue based on the superclass of ActionPlay's onStart method:

diff --git a/engines/pink/objects/actions/action_play.cpp b/engines/pink/objects/actions/action_play.cpp
index fb4f05f0cb..9551f13424 100644
--- a/engines/pink/objects/actions/action_play.cpp
+++ b/engines/pink/objects/actions/action_play.cpp
@@ -64,7 +64,10 @@ void ActionPlay::onStart() {
        int frameCount = _decoder.getFrameCount();
        if (_stopFrame == -1 || _stopFrame >= frameCount)
                _stopFrame = frameCount - 1;
-       assert(_startFrame < _decoder.getFrameCount());
+
+       if (_startFrame >= _decoder.getFrameCount())
+               _startFrame = 0;
+
        ActionCEL::setFrame(_startFrame);
        // doesn't need to decode startFrame here. Update method will decode
 }

However, Pink then puts the hamburger back several times i.e. probably an error in the value of _endFrame. Not sure if this is the right solution and/or whether the repeated loop is due to a different latent issue which was hidden by this not working.

comment:4 Changed 4 months ago by digitall

Owner: set to whiterandrek

@whiterandrek: Any ideas?

comment:5 Changed 4 months ago by whiterandrek

Sequence CheckUnderBedDB

Items:

SequenceItemLeader: _actor=Pink, _action=AtMidR
SequenceItemLeader: _actor=Pink, _action=CheckUnderBedDB
SequenceItemLeader: _actor=Pink, _action=CheckUnderBedHoldDB
SequenceItemLeader: _actor=Pink, _action=CheckUnderBedHoldDB
SequenceItemLeader: _actor=Pink, _action=CheckUnderBedHoldDB
SequenceItemLeader: _actor=Pink, _action=CheckUnderBedHoldDB

SequenceItemLeader: _actor=Pink, _action=CheckUnderBedDB2
SequenceItemLeader: _actor=Pink, _action=AtMidR

It's looped because of wrong scripts. The action CheckUnderBedHoldDB is repeated 4 times.

@digitall: You can push changes.

comment:6 Changed 4 months ago by digitall

Keywords: original added

OK. Pushed patch as commit 3f99c2c9dd8f92c8f8925f5824c6f69fe7c2305f.

@whiterandrek: I assume you meant that this was a script bug present in the original. Could you patch this in the engine with a workaround to fix this script issue?

comment:7 Changed 4 months ago by digitall

Game: Pink Panther: Passport to Peril

comment:8 Changed 4 months ago by digitall

Resolution: fixed
Status: newpending

comment:9 Changed 4 months ago by digitall

(Pending on possible script fix for repeated animation)...

comment:10 Changed 4 months ago by whiterandrek

I have checked the original game and it hasn't such issue. Need more time to find out why the scripts are wrong in ScummVM engine.

comment:11 Changed 4 months ago by digitall

Keywords: original removed

@whiterandrek: No problem. Have removed original keyword. Will await your investigation and fix :)

comment:12 Changed 2 months ago by whiterandrek

In 07b4495:

PINK: fixed ActionPlay behavior when startFrame is wrong

This fixes Trac bug #10800

comment:13 Changed 2 months ago by whiterandrek

Status: pendingclosed
Note: See TracTickets for help on using tickets.