aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/ksound.cpp
diff options
context:
space:
mode:
authorTravis Howell2009-07-11 11:48:01 +0000
committerTravis Howell2009-07-11 11:48:01 +0000
commite3398c0cc73999524e92774fb889a0d22eea552b (patch)
treeff1534d1e5e72f1965b747b21b594ef30d5e16ab /engines/sci/engine/ksound.cpp
parent0577bee93893a55be1b2a067ec18f3c8ad462358 (diff)
parent2ceea652e62b301adea4628cebe4116191aa4998 (diff)
downloadscummvm-rg350-e3398c0cc73999524e92774fb889a0d22eea552b.tar.gz
scummvm-rg350-e3398c0cc73999524e92774fb889a0d22eea552b.tar.bz2
scummvm-rg350-e3398c0cc73999524e92774fb889a0d22eea552b.zip
Merged revisions 42360-42361,42364-42366,42368-42378,42380 via svnmerge from
https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk ........ r42360 | Kirben | 2009-07-11 10:38:50 +1000 (Sat, 11 Jul 2009) | 1 line Fix recent regression in AGOSEngine_Simon1::drawImage(). ........ r42361 | wjpalenstijn | 2009-07-11 10:47:32 +1000 (Sat, 11 Jul 2009) | 3 lines Fix SAGA outline generation algorithm for characters that are copies of earlier characters. (5 characters in IHNM.) This fixes #1904624. ........ r42364 | Kirben | 2009-07-11 11:40:53 +1000 (Sat, 11 Jul 2009) | 1 line Fix bug #2819628 - DETECTOR: Atlantis CD sets wrong gui options. ........ r42365 | lordhoto | 2009-07-11 11:54:27 +1000 (Sat, 11 Jul 2009) | 1 line Fix graphics not updating, when loading a save in Kyra1. This fixes problems when loading saves in rooms like Brynn's temple, which play animations directly on scene enter. ........ r42366 | lordhoto | 2009-07-11 11:54:42 +1000 (Sat, 11 Jul 2009) | 1 line Removed the now uneeded "Screen::_disableScreen" flag. ........ r42368 | dreammaster | 2009-07-11 15:10:13 +1000 (Sat, 11 Jul 2009) | 1 line Bugfix to show the mouse cursor when restarting the game after returning to launcher ........ r42369 | dreammaster | 2009-07-11 15:12:17 +1000 (Sat, 11 Jul 2009) | 1 line Active background screens are now properly freed when the game exits ........ r42370 | dreammaster | 2009-07-11 15:14:42 +1000 (Sat, 11 Jul 2009) | 1 line Added initialisation of paging screens when the game starts ........ r42371 | thebluegr | 2009-07-11 16:19:29 +1000 (Sat, 11 Jul 2009) | 1 line Fixed regression in the script parser from commit 42260 ........ r42372 | thebluegr | 2009-07-11 16:33:19 +1000 (Sat, 11 Jul 2009) | 1 line Applied a slightly modified patch from clone2727 which adds static selector names to some demos which are missing them (KQ4, LSL1, LSL3, Iceman and Christmas1992) ........ r42373 | thebluegr | 2009-07-11 16:34:25 +1000 (Sat, 11 Jul 2009) | 1 line Removed an invalid detection entry ........ r42374 | thebluegr | 2009-07-11 16:43:01 +1000 (Sat, 11 Jul 2009) | 1 line Applied slightly modified patch 2819002 - "SCI: resource-view-patch on SQ5/German fix" ........ r42375 | thebluegr | 2009-07-11 16:53:39 +1000 (Sat, 11 Jul 2009) | 1 line Applied patch 2818733 - "SCI: Timer iterator for audio resources played via doSound" ........ r42376 | Kirben | 2009-07-11 17:03:28 +1000 (Sat, 11 Jul 2009) | 1 line Only error out, if checkStaticSelectorNames() fails. ........ r42377 | dreammaster | 2009-07-11 18:16:55 +1000 (Sat, 11 Jul 2009) | 1 line Bugfix to properly save the currently playing midi music when saving a scene ........ r42378 | wjpalenstijn | 2009-07-11 19:45:25 +1000 (Sat, 11 Jul 2009) | 1 line Fix oversight in r42361 and also handle consecutive copied characters in SAGA. ........ r42380 | drmccoy | 2009-07-11 20:24:06 +1000 (Sat, 11 Jul 2009) | 1 line Explicitely instantiate the decompressWizImage() templates, so that they won't be optimized away, as they are also used in akos.cpp ........ svn-id: r42381
Diffstat (limited to 'engines/sci/engine/ksound.cpp')
-rw-r--r--engines/sci/engine/ksound.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp
index 7614b2bc10..4ba8971397 100644
--- a/engines/sci/engine/ksound.cpp
+++ b/engines/sci/engine/ksound.cpp
@@ -148,6 +148,9 @@ SongIterator *build_iterator(EngineState *s, int song_nr, SongIteratorType type,
return songit_new(song->data, song->size, type, id);
}
+SongIterator *build_timeriterator(EngineState *s, int delta) {
+ return new_timer_iterator(delta);
+}
void process_sound_events(EngineState *s) { /* Get all sound events, apply their changes to the heap */
int result;
@@ -798,6 +801,7 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
int looping = GET_SEL32V(obj, loop);
//int vol = GET_SEL32V(obj, vol);
int pri = GET_SEL32V(obj, pri);
+ int sampleLen = 0;
Song *song = s->_sound._songlib.findSong(handle);
if (GET_SEL32V(obj, nodePtr) && (song && number != song->_resourceNum)) {
@@ -815,8 +819,11 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
s->_version >= SCI_VERSION_1_1) {
// Found a relevant audio resource, play it
s->_sound.stopAudio();
- PUT_SEL32V(obj, signal, s->_sound.startAudio(65535, number));
- return s->r_acc;
+ warning("Initializing audio resource instead of requested sound resource %d\n", number);
+ sampleLen = s->_sound.startAudio(65535, number);
+ // Also create iterator, that will fire SI_FINISHED event, when the sound is done playing
+ s->_sound.sfx_add_song(build_timeriterator(s, sampleLen), 0, handle, number);
+ PUT_SEL32V(obj, signal, sampleLen);
} else {
if (!s->resmgr->testResource(ResourceId(kResourceTypeSound, number))) {
warning("Could not open song number %d", number);
@@ -825,11 +832,11 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
PUT_SEL32V(obj, signal, -1);
return s->r_acc;
}
+ debugC(2, kDebugLevelSound, "Initializing song number %d\n", number);
+ s->_sound.sfx_add_song(build_iterator(s, number, SCI_SONG_ITERATOR_TYPE_SCI1,
+ handle), 0, handle, number);
}
- debugC(2, kDebugLevelSound, "Initializing song number %d\n", number);
- s->_sound.sfx_add_song(build_iterator(s, number, SCI_SONG_ITERATOR_TYPE_SCI1,
- handle), 0, handle, number);
PUT_SEL32(obj, nodePtr, obj);
PUT_SEL32(obj, handle, obj);
}