Opened 17 months ago

Last modified 5 months ago

#14803 new defect

SWORD2: Error during intro cutscene (Spanish Playstation version)

Reported by: davidmorom Owned by:
Priority: high Component: Engine: Sword2
Version: Keywords: broken sword spanish playstation ps1 psx error crash
Cc: davidmorom Game: Broken Sword 2

Description

During the playback of the intro cutscene of Broken Sword 2, Spanish PlayStation version, almost at the end, the ScummVM console is displayed with the following error message: "Error: Bad PSX stream track!". After that, the game closes. If the cutscene is omitted, the game works fine.

Tested this on Windows 10 64 bits, with the 64 bits version of ScummVM 2.8.0. Same problem happens with the 32 bits version of ScummVM 1.5.0, which is the first version that supports PlayStation videos.

The files where extracted with IsoBuster, following the method indicated on the guide. The CD image was made with ImgBurn, and the CRC is Redump verified (977362e4) so I'm 100% confident that the files are correct.

The video plays fine on a real PlayStation and on DuckStation, so it must be some kind of corruption that is innocuous for the original hardware, but makes ScummVM crash.

Change History (3)

comment:1 by tag2015, 16 months ago

Priority: lownormal
Summary: Error during intro cutscene on Broken Sword 2, Spanish, PlayStation versionSWORD2: Error during intro cutscene (Spanish Playstation version)

comment:2 by somaen, 6 months ago

Priority: normalhigh

Would be nice to have this resolved for the 2.9.0 release

comment:3 by davidmorom, 5 months ago

It's been a while since I opened this issue, so I decided to give it a try myself.

There is, indeed, one corrupted frame in the spanish intro movie, that is ignored by the PS1 video decoder, but makes ScummVM crash. Two very simple changes can be made to the "psx_decoder.cpp" file to cleanly ignore the corrupted frame, so we get the same behavior as the PS1:

  • In function "PSXStreamDecoder::readNextPacket()", replace "error("Bad PSX stream track")" with "warning("Bad PSX stream track")" followed by a return to skip the whole corrupted packet.
  • In function "PSXStreamDecoder::PSXVideoTrack::decodeFrame()", replace "error("Unknown PSX stream frame version")" with "warning("Unknown PSX stream frame version")" followed by a return, so the whole corrupted frame is skipped, avoiding further Huffman decoding errors.

If no developer wants to take a look on this, I can make a Pull Request myself.

Note: See TracTickets for help on using tickets.