Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#3323 closed defect (fixed)

MI CD: Crash on Load...

Reported by: SF/djdiabolik Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Monkey Island 1

Description

Hy boys... i have installed the today build "Jul 18 2007" of scumm vm... i try to play Secret of Monkey Island Cd Version.
I have select the Extra Path for listening the Theme music and i have changed the game-id for use my previous version of scummvm savageme file (i have set it to monkey).
The games started without problems but when i try to load a previous save file the game goes on crash and i come back to desktop of my XP.

Ticket imported from: #1756381. Ticket imported from: bugs/3323.

Attachments (3)

monkey.s00 (17.6 KB ) - added by SF/djdiabolik 12 years ago.
this is the autosave file... ok
SaveGame.rar (118.4 KB ) - added by SF/djdiabolik 12 years ago.
This Rar contain the other savegame file.. whit this file the game goes on crash. All ok whitout mp3 theme music..…
audiocdsave.diff (2.5 KB ) - added by eriktorbjorn 12 years ago.
Patch against current SVN

Download all attachments as: .zip

Change History (19)

by SF/djdiabolik, 12 years ago

Attachment: monkey.s00 added

this is the autosave file... ok

comment:1 by SF/djdiabolik, 12 years ago

File Added: monkey.s00

by SF/djdiabolik, 12 years ago

Attachment: SaveGame.rar added

This Rar contain the other savegame file.. whit this file the game goes on crash. All ok whitout mp3 theme music.....

comment:2 by SF/djdiabolik, 12 years ago

File Added: SaveGame.rar

comment:3 by bluegr, 12 years ago

What was the ScummVM version that was used to create those problematic save games?

comment:4 by fingolfin, 12 years ago

Component: Engine: SCUMM
Game: Monkey Island 1
Summary: [SOMI CD]Crash on Load...MI CD: Crash on Load...

comment:5 by eriktorbjorn, 12 years ago

Which version of the game is this? I know you said it's the CD version, but which language? The savegames don't seem to be from the English version, so I can't test this myself.

comment:6 by SF/djdiabolik, 12 years ago

@thebluegr:
i have already write.... the version of scummvm it's 0.11.0SVN (Jul 18 2007 09:40:50).

@eriktorbjorn
It's Italian version of Secret of Monkey Island CD version (with illustrated object in inventory)...

comment:7 by SF/djdiabolik, 12 years ago

Ohh... some problems in this Today Build 0.11.0SVN (Jul 19 2007 17:09:50)

comment:8 by eriktorbjorn, 12 years ago

Yes, I just noticed that I have trouble loading some of my savegames, too. Perhaps it's the same bug as #1752226.

comment:9 by eriktorbjorn, 12 years ago

Hmm... No, not related to #1752226 after all, though the symptoms are similar. What seems to be happening here is that:

* loadState() calls _sound->pauseSounds(true), pausing all currently active channels.
* loadState() calls saveOrLoad(&ser), which calls AudioCD.play() to restore the background music that was playing in the savegame I made. (Not really music, but background sound.)
* If there was CD music playing, the old channel is removed. More importantly, a new one is created. This new channel, unlike the old ones, is not paused.
* loadState() calls _sound->pauseSounds(false), unpausing all channels. The mixer detects that you are trying to unpause a channel that isn't paused, and complains.

So, to summarize, loading any MI1 CD savegame which causes a compressed audio track to play will probably trigger the bug.

comment:10 by eriktorbjorn, 12 years ago

Owner: set to fingolfin

comment:11 by eriktorbjorn, 12 years ago

We should be able to restart the CD music after pauseSounds(false) is called. There is a slight problem with that approach, though: To retrieve the CD player state, we call AudioCD.getStatus(), and that will update the "playing" variable, changing it from (maybe) true to false.

It's too late at night for me to look any more at this. At least the bug has - probably - been diagnosed now.

by eriktorbjorn, 12 years ago

Attachment: audiocdsave.diff added

Patch against current SVN

comment:12 by eriktorbjorn, 12 years ago

I'm attaching a possible patch that seems to work. I'm not sure if it's a good way, though. I'm a bit hesitant to add new variables to the ScummEngine class, or new #include files to scumm.h, and this patch does both...
File Added: audiocdsave.diff

comment:13 by fingolfin, 12 years ago

I just changed the mixer to be not as strict about unpausing sounds which are not currently paused, which should take care of this. It might not be the "purest" way to behave for the mixer, but it's how we treated sound pausing for a long time and should cause least headaches.

Does this fix the issue for you?

comment:14 by SF/djdiabolik, 12 years ago

Hy boys.... i don't post here from some week.... now i have download the Today Build.
All Savegame files posted here working good and i not need to download the file "audiocdfile.diff" you have posted here.... it's normal ?

comment:15 by fingolfin, 12 years ago

Yes, that is normal -- as I stated, I applied a (different!) change to our SVN source code.

comment:16 by fingolfin, 12 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.