Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#4486 closed defect (fixed)

AGI: KQ1: Greensleeves always plays.

Reported by: SF/dproudmoore Owned by: SF/buddha_
Priority: normal Component: Engine: AGI
Keywords: Cc:
Game: King's Quest 1

Description

When loading a game from the launcher, Greensleeves still plays.

Ticket imported from: #2828333. Ticket imported from: bugs/4486.

Change History (5)

comment:1 by SF/dproudmoore, 11 years ago

ScummVM 1.0.0pre042729 (Jul 25 2009 11:17:11) Win32 Using Vista-x64 SP1 King's Quest I: Quest for the Crown (2.0F 1987-05-05 5.25"/3.5"/DOS/English)

comment:2 by SF/buddha_, 11 years ago

Possibly the same problem as in bug #2798797 where the sound hangs after loading a game from the launcher.

I did some digging about the AGI-engine and found where all the game loadings are done:

1) GMM-load: AgiBase::loadGameState(int slot) 2) AGI-dialog load: AgiEngine::loadGameDialog() 3) AGI-script load: AgiEngine::loadGameSimple() 4) Launcher/cmdline-load: AgiEngine::checkQuickLoad()

and all of them internally call another routine: AgiEngine::loadGame(const char *fileName, bool checkId).

There are subtle differences as most load-routines do this before calling loadGame:

_sprites->eraseBoth(); _sound->stopSound();

and this after successful loading using loadGame:

_game.exitAllLogics = 1; _menu->enableAll();

but not all! And I think this most probably is the problem with some loading routines working and some not. Making them all behave the same way would probably make the sound problems go away.

comment:3 by SF/buddha_, 11 years ago

Possibly the same problem as in bug #2798797 where the sound hangs after loading a game from the launcher.

I did some digging about the AGI-engine and found where all the game loadings are done:

1) GMM-load: AgiBase::loadGameState(int slot) 2) AGI-dialog load: AgiEngine::loadGameDialog() 3) AGI-script load: AgiEngine::loadGameSimple() 4) Launcher/cmdline-load: AgiEngine::checkQuickLoad()

and all of them internally call another routine: AgiEngine::loadGame(const char *fileName, bool checkId).

There are subtle differences as most load-routines do this before calling loadGame:

_sprites->eraseBoth(); _sound->stopSound();

and this after successful loading using loadGame:

_game.exitAllLogics = 1; _menu->enableAll();

but not all! And I think this most probably is the problem with some loading routines working and some not. Making them all behave the same way would probably make the sound problems go away.

comment:4 by SF/buddha_, 11 years ago

Fixed in trunk in r43025, in branch-1-0-0 in r43026.

comment:5 by SF/buddha_, 11 years ago

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