Opened 10 years ago

Closed 10 years ago

Last modified 10 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, 10 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_, 10 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_, 10 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_, 10 years ago

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

comment:5 by SF/buddha_, 10 years ago

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