Opened 5 months ago

Closed 5 months ago

Last modified 5 months ago

#14855 closed defect (fixed)

PEGASUS: Video crashes near its end - Could not find data for frame 193

Reported by: antoniou79 Owned by: antoniou79
Priority: normal Component: Engine: Pegasus
Version: Keywords: crash, quicktime, frame, end, quirk
Cc: Game: Journeyman Project Pegasus Prime

Description (last modified by antoniou79)

This occurs in ScummVM latest 2.8.0 release and 2.9.0git dev build (local build on Windows from master HEAD). It also seems to be on all official releases since 2.5.1; ScummVM 2.5.0 is the last official release without the crash bug.

The issue was brought up by forum member Nozomi in this forum thread:

This is tested on Windows 10, with the English version of GOG's release of Pegasus Prime. That release on GOG is bundled with a special build of ScummVM 1.7.0git (which does not have this crash issue).

Steps to reproduce:

  • Start a new game
  • Click on the "Environ Scan" button, when all the intro cutscenes finish.
  • A small (quicktime) video plays.

What happens:

  • Near (or at) the video's end, ScummVM will crash with ERROR: Could not find data for frame 193!

What should happen:

  • The video should end normally, and the button "Environ Scan" should be back again, and clickable.

Workaround: The video can be skipped with the skip video shortcut key (space bar)

A quick git bisect shows that the issue started happening after this commit:
VIDEO: Limit QuickTime workaround to Riven

Attachments (2)

pegasus-started.sav (549 bytes ) - added by antoniou79 5 months ago.
potentialPegasusQTpatch.diff (1.0 KB ) - added by antoniou79 5 months ago.

Download all attachments as: .zip

Change History (6)

comment:1 by antoniou79, 5 months ago

Description: modified (diff)

by antoniou79, 5 months ago

Attachment: pegasus-started.sav added

by antoniou79, 5 months ago

comment:2 by antoniou79, 5 months ago

I have attached a save game, after the intro cutscenes have played.

I also have attempted (locally) a minor fix, similar to the one for Riven (git diff attached). That fix works, but it's being applied to every video loaded through Movie::initFromMovieFile() (maybe we want to limit it only on the problematic video(s), as long as we can tell which ones they are). There are also other parts in the pegasus engine code when a Video::QuickTimeDecoder object is created, where I did not apply the fix -- I am not sure, if those places should be patched too.

Better to leave the fix to someone else.

comment:3 by antoniou79, 5 months ago

The proposed fix ( was merged in master, so it should be available in daily 2.9.0git builds (starting tomorrow or the day after\)

Thanks to developer sluicebox for the help provided on Discord.

It will be backported to 2.8 for a potential 2.8.1 release.

Last edited 5 months ago by antoniou79 (previous) (diff)

comment:4 by antoniou79, 5 months ago

Owner: set to antoniou79
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.