Opened 7 years ago

Closed 7 years ago

#10061 closed defect (fixed)

VOYEUR: crash if you play certain recorded audio scenes at the VCR

Reported by: Bakhtosh Owned by: dreammaster
Priority: normal Component: Engine: Voyeur
Version: Keywords:
Cc: Game: Voyeur

Description

ScummVM versions:
Win32 developer: 1.10.0git4294-ga851c3b185 (Aug 5 2017 13:05:24)

Language of game: english / Version of game: DOS-CD
Test system: Windows 10 64 bit

If you play for a while and watched a few scenes with closed window shutters you can replay these scenes at the VCR. They are displayed as "audio" at the VCR selection screen. Some audio scenes you can play at the VCR without any problems. But some audio scenes crashes the game.

Since the same scenes don't crash when you watched them before in the mansion closeup view I looked in the source code and noticed a difference in the way the audio files are played (mansion closeup view play audio code in voyeur.cpp / VCR view play audio code in voyeur_game.cpp).

So I modified the VCR view play audio code to match the mansion closeup view play audio code, compiled ScummVM and it seems to work.

In voyeur_game.cpp in "void VoyeurEngine::reviewTape()" I replaced
_screen->_backgroundPage = _bVoy->boltEntry(0x7F00 +
BLIND_TABLE[_audioVideoId])._picResource;
_screen->_backColors = _bVoy->boltEntry(0x7F01 +
BLIND_TABLE[_audioVideoId])._cMapResource;

with
_screen->_backgroundPage = _bVoy->boltEntry(0x7F00 +
BLIND_TABLE[_audioVideoId] * 2)._picResource;
_screen->_backColors = _bVoy->boltEntry(0x7F01 +
BLIND_TABLE[_audioVideoId] * 2)._cMapResource;

And I replaced
_soundManager->startVOCPlay(_audioVideoId + 159);

with
Common::String filename = _soundManager->getVOCFileName(
_audioVideoId + 159);
_soundManager->startVOCPlay(filename);

I've attached a Savegame with an audio entry that crashes the game.

Attachments (1)

voyeur.004 (14.1 KB ) - added by Bakhtosh 7 years ago.

Download all attachments as: .zip

Change History (3)

by Bakhtosh, 7 years ago

Attachment: voyeur.004 added

comment:1 by dreammaster, 7 years ago

Component: Engine: GobEngine: Voyeur

comment:2 by dreammaster, 7 years ago

Owner: set to dreammaster
Resolution: fixed
Status: newclosed

Worked like a charm. I was even stumbled on, and fixed, a separate bug where if you tried to exit directly from the VCR screen, it would start playing back the audio tape again :)

Note: See TracTickets for help on using tickets.