diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/toltecs/script.cpp | 40 | ||||
-rw-r--r-- | engines/toltecs/script.h | 4 | ||||
-rw-r--r-- | engines/toltecs/sound.cpp | 4 |
3 files changed, 37 insertions, 11 deletions
diff --git a/engines/toltecs/script.cpp b/engines/toltecs/script.cpp index 6d4976d75a..188cb82f7f 100644 --- a/engines/toltecs/script.cpp +++ b/engines/toltecs/script.cpp @@ -127,8 +127,8 @@ void ScriptInterpreter::setupScriptFunctions() { RegisterScriptFunction(sfStopShakeScreen); RegisterScriptFunction(sfStartSequence); RegisterScriptFunction(sfEndSequence); - RegisterScriptFunction(sfSequenceVolumeStuff); - RegisterScriptFunction(sfPlaySound1); + RegisterScriptFunction(sfSetSequenceVolume); + RegisterScriptFunction(sfPlayPositionalSound); RegisterScriptFunction(sfPlaySound2); RegisterScriptFunction(sfClearScreen); RegisterScriptFunction(sfNop); @@ -143,9 +143,6 @@ void ScriptInterpreter::setupScriptFunctions() { RegisterScriptFunction(sfPlayMovie); RegisterScriptFunction(sfNop); - - - } void ScriptInterpreter::loadScript(uint resIndex, uint slotIndex) { @@ -1045,18 +1042,20 @@ void ScriptInterpreter::sfStopShakeScreen() { void ScriptInterpreter::sfStartSequence() { // TODO + //_vm->_arc->dump(arg16(3)); } void ScriptInterpreter::sfEndSequence() { // TODO } -void ScriptInterpreter::sfSequenceVolumeStuff() { +void ScriptInterpreter::sfSetSequenceVolume() { // TODO } -void ScriptInterpreter::sfPlaySound1() { +void ScriptInterpreter::sfPlayPositionalSound() { // TODO + debug("ScriptInterpreter::sfPlayPositionalSound()"); } void ScriptInterpreter::sfPlaySound2() { @@ -1078,15 +1077,42 @@ void ScriptInterpreter::sfRunOptionsScreen() { } void ScriptInterpreter::sfPrecacheSprites() { +#if 0 + // DEBUG + int16 *resArray = (int16*)localPtr(arg16(3)); + while (*resArray != -1) { + debug("ScriptInterpreter::sfPrecacheSprites() index = %d", *resArray); + _vm->_arc->dump(*resArray, "pc1"); + resArray++; + } +#endif } void ScriptInterpreter::sfPrecacheSounds1() { +#if 0 + // DEBUG + int16 *resArray = (int16*)localPtr(arg16(3)); + while (*resArray != -1) { + debug("ScriptInterpreter::sfPrecacheSounds1() index = %d", *resArray); + _vm->_arc->dump(*resArray, "pc2"); + resArray++; + } +#endif } void ScriptInterpreter::sfDeleteAllPbfFilesByExternalArray() { } void ScriptInterpreter::sfPrecacheSounds2() { +#if 0 + // DEBUG + int16 *resArray = (int16*)localPtr(arg16(3)); + while (*resArray != -1) { + debug("ScriptInterpreter::sfPrecacheSounds2() index = %d", *resArray); + _vm->_arc->dump(*resArray, "pc3"); + resArray++; + } +#endif } void ScriptInterpreter::sfRestoreStackPtr() { diff --git a/engines/toltecs/script.h b/engines/toltecs/script.h index c35a2e4184..746a2fca6f 100644 --- a/engines/toltecs/script.h +++ b/engines/toltecs/script.h @@ -176,8 +176,8 @@ protected: void sfStopShakeScreen(); void sfStartSequence(); void sfEndSequence(); - void sfSequenceVolumeStuff(); - void sfPlaySound1(); + void sfSetSequenceVolume(); + void sfPlayPositionalSound(); void sfPlaySound2(); void sfClearScreen(); void sfHandleInput(); diff --git a/engines/toltecs/sound.cpp b/engines/toltecs/sound.cpp index 3f1be4be89..08df1ceec2 100644 --- a/engines/toltecs/sound.cpp +++ b/engines/toltecs/sound.cpp @@ -116,7 +116,7 @@ void Sound::internalPlaySound(int16 resIndex, int16 type, int16 volume, int16 pa } } else { - if (type == kChannelTypeSpeech) { + if (type == -2) { // Stop speech and play new sound stopSpeech(); } @@ -124,7 +124,7 @@ void Sound::internalPlaySound(int16 resIndex, int16 type, int16 volume, int16 pa // Play new sound in empty channel int freeChannel = -1; for (int i = 0; i < 4; i++) { - if (channels[i].type == kChannelTypeEmpty) { + if (channels[i].type == kChannelTypeEmpty || !_vm->_mixer->isSoundHandleActive(channels[i].handle)) { freeChannel = i; break; } |