aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/ksound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/ksound.cpp')
-rw-r--r--engines/sci/engine/ksound.cpp120
1 files changed, 47 insertions, 73 deletions
diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp
index 8edf6f5186..59937853bd 100644
--- a/engines/sci/engine/ksound.cpp
+++ b/engines/sci/engine/ksound.cpp
@@ -135,7 +135,7 @@ static void script_set_priority(EngineState *s, reg_t obj, int priority) {
flags &= ~SCI1_SOUND_FLAG_SCRIPTED_PRI;
} else flags |= SCI1_SOUND_FLAG_SCRIPTED_PRI;
- sfx_song_renice(&s->_sound, FROBNICATE_HANDLE(obj), priority);
+ s->_sound.sfx_song_renice(FROBNICATE_HANDLE(obj), priority);
PUT_SEL32V(obj, flags, flags);
}
@@ -158,7 +158,7 @@ void process_sound_events(EngineState *s) { /* Get all sound events, apply their
return;
/* SCI01 and later explicitly poll for everything */
- while ((result = sfx_poll(&s->_sound, &handle, &cue))) {
+ while ((result = s->_sound.sfx_poll(&handle, &cue))) {
reg_t obj = DEFROBNICATE_HANDLE(handle);
if (!is_object(s, obj)) {
warning("Non-object %04x:%04x received sound signal (%d/%d)", PRINT_REG(obj), result, cue);
@@ -272,7 +272,7 @@ reg_t kDoSound_SCI0(EngineState *s, int funct_nr, int argc, reg_t *argv) {
case _K_SCI0_SOUND_INIT_HANDLE:
if (obj.segment) {
sciprintf("Initializing song number %d\n", GET_SEL32V(obj, number));
- SCRIPT_ASSERT_ZERO(sfx_add_song(&s->_sound,
+ SCRIPT_ASSERT_ZERO(s->_sound.sfx_add_song(
build_iterator(s, number,
SCI_SONG_ITERATOR_TYPE_SCI0,
handle),
@@ -284,10 +284,8 @@ reg_t kDoSound_SCI0(EngineState *s, int funct_nr, int argc, reg_t *argv) {
case _K_SCI0_SOUND_PLAY_HANDLE:
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_PLAYING);
- sfx_song_set_loops(&s->_sound,
- handle, GET_SEL32V(obj, loop));
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_PLAYING);
+ s->_sound.sfx_song_set_loops(handle, GET_SEL32V(obj, loop));
PUT_SEL32V(obj, state, _K_SOUND_STATUS_PLAYING);
}
break;
@@ -297,31 +295,28 @@ reg_t kDoSound_SCI0(EngineState *s, int funct_nr, int argc, reg_t *argv) {
case _K_SCI0_SOUND_DISPOSE_HANDLE:
if (obj.segment) {
- sfx_remove_song(&s->_sound, handle);
+ s->_sound.sfx_remove_song(handle);
}
PUT_SEL32V(obj, handle, 0x0000);
break;
case _K_SCI0_SOUND_STOP_HANDLE:
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
PUT_SEL32V(obj, state, SOUND_STATUS_STOPPED);
}
break;
case _K_SCI0_SOUND_SUSPEND_HANDLE:
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_SUSPENDED);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_SUSPENDED);
PUT_SEL32V(obj, state, SOUND_STATUS_SUSPENDED);
}
break;
case _K_SCI0_SOUND_RESUME_HANDLE:
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_PLAYING);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_PLAYING);
PUT_SEL32V(obj, state, SOUND_STATUS_PLAYING);
}
break;
@@ -345,16 +340,15 @@ reg_t kDoSound_SCI0(EngineState *s, int funct_nr, int argc, reg_t *argv) {
int vol = SKPV_OR_ALT(1, -1);
if (vol != -1)
- sfx_set_volume(&s->_sound, vol << 0xf);
+ s->_sound.sfx_set_volume(vol << 0xf);
else
- s->r_acc = make_reg(0, sfx_get_volume(&s->_sound) >> 0xf);
+ s->r_acc = make_reg(0, s->_sound.sfx_get_volume() >> 0xf);
}
break;
case _K_SCI0_SOUND_UPDATE_VOL_PRI:
if (obj.segment) {
- sfx_song_set_loops(&s->_sound,
- handle, GET_SEL32V(obj, loop));
+ s->_sound.sfx_song_set_loops(handle, GET_SEL32V(obj, loop));
script_set_priority(s, obj, GET_SEL32V(obj, pri));
}
break;
@@ -364,8 +358,7 @@ reg_t kDoSound_SCI0(EngineState *s, int funct_nr, int argc, reg_t *argv) {
/* FIXME: The next couple of lines actually STOP the handle, rather
** than fading it! */
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
PUT_SEL32V(obj, state, SOUND_STATUS_STOPPED);
PUT_SEL32V(obj, signal, -1);
}
@@ -376,7 +369,7 @@ reg_t kDoSound_SCI0(EngineState *s, int funct_nr, int argc, reg_t *argv) {
break;
case _K_SCI0_SOUND_PLAY_NEXT:
- /* sfx_all_stop(&s->_sound);*/
+ /* s->_sound.sfx_all_stop();*/
break;
default:
@@ -467,9 +460,9 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
int vol = SKPV_OR_ALT(1, -1);
if (vol != -1)
- sfx_set_volume(&s->_sound, vol << 0xf);
+ s->_sound.sfx_set_volume(vol << 0xf);
else
- s->r_acc = make_reg(0, sfx_get_volume(&s->_sound) >> 0xf);
+ s->r_acc = make_reg(0, s->_sound.sfx_get_volume() >> 0xf);
break;
}
case _K_SCI01_SOUND_MUTE_SOUND : {
@@ -498,12 +491,9 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
RESTORE_BEHAVIOR rb = (RESTORE_BEHAVIOR) UKPV(2); /* Too lazy to look up a default value for this */
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_PLAYING);
- sfx_song_set_loops(&s->_sound,
- handle, looping);
- sfx_song_renice(&s->_sound,
- handle, pri);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_PLAYING);
+ s->_sound.sfx_song_set_loops(handle, looping);
+ s->_sound.sfx_song_renice(handle, pri);
song_lib_set_restore_behavior(s->_sound._songlib, handle, rb);
}
@@ -516,7 +506,7 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
if (obj.segment && (s->resmgr->testResource(kResourceTypeSound, number))) {
sciprintf("Initializing song number %d\n", number);
- SCRIPT_ASSERT_ZERO(sfx_add_song(&s->_sound,
+ SCRIPT_ASSERT_ZERO(s->_sound.sfx_add_song(
build_iterator(s, number,
SCI_SONG_ITERATOR_TYPE_SCI1,
handle),
@@ -528,9 +518,8 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
case _K_SCI01_SOUND_DISPOSE_HANDLE : {
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
- sfx_remove_song(&s->_sound, handle);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_remove_song(handle);
}
break;
}
@@ -546,9 +535,8 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
//int vol = GET_SEL32V(obj, vol);
int pri = GET_SEL32V(obj, pri);
- sfx_song_set_loops(&s->_sound,
- handle, looping);
- sfx_song_renice(&s->_sound, handle, pri);
+ s->_sound.sfx_song_set_loops(handle, looping);
+ s->_sound.sfx_song_renice(handle, pri);
SCIkdebug(SCIkSOUND, "[sound01-update-handle] -- CUE %04x:%04x");
@@ -562,8 +550,7 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
case _K_SCI01_SOUND_STOP_HANDLE : {
PUT_SEL32V(obj, signal, -1);
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
}
break;
}
@@ -573,8 +560,7 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
SOUND_STATUS_SUSPENDED : SOUND_STATUS_PLAYING;
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, setstate);
+ s->_sound.sfx_song_set_status(handle, setstate);
}
break;
}
@@ -585,8 +571,7 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
/* FIXME: The next couple of lines actually STOP the song right away */
PUT_SEL32V(obj, signal, -1);
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
}
break;
}
@@ -599,7 +584,7 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
int cue = 0;
while (result == SI_LOOP)
- result = sfx_poll_specific(&s->_sound, handle, &cue);
+ result = s->_sound.sfx_poll_specific(handle, &cue);
switch (result) {
@@ -645,7 +630,7 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
/* } */
/* break; */
/* case 0xFF: /\* May be unnecessary *\/ */
- /* sfx_song_set_status(&s->_sound, */
+ /* s->_sound.sfx_song_set_status(*/
/* handle, SOUND_STATUS_STOPPED); */
/* break; */
/* default : */
@@ -673,7 +658,7 @@ reg_t kDoSound_SCI01(EngineState *s, int funct_nr, int argc, reg_t *argv) {
int controller = UKPV(3);
int param = UKPV(4);
- sfx_send_midi(&s->_sound, handle,
+ s->_sound.sfx_send_midi(handle,
channel, midiCmd, controller, param);
break;
}
@@ -821,9 +806,8 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
song_t *song = song_lib_find(s->_sound._songlib, handle);
if (GET_SEL32V(obj, nodePtr) && (song && number != song->resource_num)) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
- sfx_remove_song(&s->_sound, handle);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_remove_song(handle);
PUT_SEL32(obj, nodePtr, NULL_REG);
}
@@ -834,7 +818,7 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
sciprintf("Initializing song number %d\n", number);
- SCRIPT_ASSERT_ZERO(sfx_add_song(&s->_sound,
+ SCRIPT_ASSERT_ZERO(s->_sound.sfx_add_song(
build_iterator(s, number,
SCI_SONG_ITERATOR_TYPE_SCI1,
handle),
@@ -844,12 +828,9 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_PLAYING);
- sfx_song_set_loops(&s->_sound,
- handle, looping);
- sfx_song_renice(&s->_sound,
- handle, pri);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_PLAYING);
+ s->_sound.sfx_song_set_loops(handle, looping);
+ s->_sound.sfx_song_renice(handle, pri);
}
break;
@@ -860,14 +841,13 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
//int pri = GET_SEL32V(obj, pri);
if (GET_SEL32V(obj, nodePtr)) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
- sfx_remove_song(&s->_sound, handle);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_remove_song(handle);
}
if (obj.segment && (s->resmgr->testResource(kResourceTypeSound, number))) {
sciprintf("Initializing song number %d\n", number);
- SCRIPT_ASSERT_ZERO(sfx_add_song(&s->_sound,
+ SCRIPT_ASSERT_ZERO(s->_sound.sfx_add_song(
build_iterator(s, number,
SCI_SONG_ITERATOR_TYPE_SCI1,
handle),
@@ -879,17 +859,15 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
case _K_SCI1_SOUND_DISPOSE_HANDLE : {
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
- sfx_remove_song(&s->_sound, handle);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_remove_song(handle);
}
break;
}
case _K_SCI1_SOUND_STOP_HANDLE : {
PUT_SEL32V(obj, signal, -1);
if (obj.segment) {
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
}
break;
}
@@ -906,9 +884,7 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
FADE_ACTION_FADE_AND_STOP :
FADE_ACTION_FADE_AND_CONT;
- sfx_song_set_fade(&s->_sound,
- handle,
- &fade);
+ s->_sound.sfx_song_set_fade(handle, &fade);
/* FIXME: The next couple of lines actually STOP the handle, rather
** than fading it! */
@@ -916,8 +892,7 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
PUT_SEL32V(obj, signal, -1);
PUT_SEL32V(obj, nodePtr, 0);
PUT_SEL32V(obj, handle, 0);
- sfx_song_set_status(&s->_sound,
- handle, SOUND_STATUS_STOPPED);
+ s->_sound.sfx_song_set_status(handle, SOUND_STATUS_STOPPED);
} else {
// FIXME: Support fade-and-continue. For now, send signal right away.
PUT_SEL32V(obj, signal, -1);
@@ -928,8 +903,7 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
case _K_SCI1_SOUND_HOLD_HANDLE : {
int value = SKPV(2);
- sfx_song_set_hold(&s->_sound,
- handle, value);
+ s->_sound.sfx_song_set_hold(handle, value);
break;
}
case _K_SCI1_SOUND_UNUSED2 : {
@@ -956,7 +930,7 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
int cue = 0;
while (result == SI_LOOP)
- result = sfx_poll_specific(&s->_sound, handle, &cue);
+ result = s->_sound.sfx_poll_specific(handle, &cue);
switch (result) {
@@ -986,7 +960,7 @@ reg_t kDoSound_SCI1(EngineState *s, int funct_nr, int argc, reg_t *argv) {
break;
}
case _K_SCI1_SOUND_MIDI_SEND : {
- sfx_send_midi(&s->_sound, handle,
+ s->_sound.sfx_send_midi(handle,
UKPV(2), UKPV(3), UKPV(4), UKPV(5));
break;
}