diff options
-rw-r--r-- | scumm/sound.cpp | 25 | ||||
-rw-r--r-- | sky/intro.cpp | 6 | ||||
-rw-r--r-- | sky/sound.cpp | 8 | ||||
-rw-r--r-- | sound/mixer.cpp | 4 | ||||
-rw-r--r-- | sound/mixer.h | 2 | ||||
-rw-r--r-- | sword2/driver/d_sound.cpp | 10 |
6 files changed, 29 insertions, 26 deletions
diff --git a/scumm/sound.cpp b/scumm/sound.cpp index 0dca559117..6998877947 100644 --- a/scumm/sound.cpp +++ b/scumm/sound.cpp @@ -214,7 +214,7 @@ void Sound::playSound(int soundID) { // Allocate a sound buffer, copy the data into it, and play sound = (char *)malloc(size); memcpy(sound, ptr, size); - _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, 255, 0, soundID); + _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, soundID); return; } // Support for Putt-Putt sounds - very hackish, too 8-) @@ -232,7 +232,7 @@ void Sound::playSound(int soundID) { // Allocate a sound buffer, copy the data into it, and play sound = (char *)malloc(size); memcpy(sound, ptr + 8, size); - _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, 255, 0, soundID); + _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, soundID); return; } else if (READ_UINT32(ptr) == MKID('MRAW')) { @@ -249,7 +249,7 @@ void Sound::playSound(int soundID) { // Allocate a sound buffer, copy the data into it, and play sound = (char *)malloc(size); memcpy(sound, ptr + 8, size); - _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, 255, 0, soundID); + _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, soundID); return; } @@ -318,7 +318,7 @@ void Sound::playSound(int soundID) { // Allocate a sound buffer, copy the data into it, and play sound = (char *)malloc(size); memcpy(sound, ptr + 33, size); - _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, 255, 0, soundID); + _scumm->_mixer->playRaw(NULL, sound, size, rate, flags, soundID); return; } else if (_scumm->_features & GF_FMTOWNS) { size = READ_LE_UINT32(ptr); @@ -361,7 +361,7 @@ void Sound::playSound(int soundID) { } } - _scumm->_mixer->playRaw(NULL, sound, waveSize, rate, flags, 255, 0, soundID, loopStart, loopEnd); + _scumm->_mixer->playRaw(NULL, sound, waveSize, rate, flags, soundID, 255, 0, loopStart, loopEnd); } break; } @@ -446,11 +446,12 @@ void Sound::playSound(int soundID) { if ((_scumm->_features & GF_AMIGA) && (READ_BE_UINT16(ptr + 16) || READ_BE_UINT16(ptr + 6))) { // the first check is for pitch-bending looped sounds (i.e. "pouring liquid", "biplane dive", etc.) // the second check is for simple looped sounds + int loopStart = READ_BE_UINT16(ptr + 10) - READ_BE_UINT16(ptr + 8); + int loopEnd = READ_BE_UINT16(ptr + 14); _scumm->_mixer->playRaw(NULL, sound, size, rate, - SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_LOOP, vol, 0, soundID, - READ_BE_UINT16(ptr + 10) - READ_BE_UINT16(ptr + 8), READ_BE_UINT16(ptr + 14)); + SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_LOOP, soundID, vol, 0, loopStart, loopEnd); } else { - _scumm->_mixer->playRaw(NULL, sound, size, rate, SoundMixer::FLAG_AUTOFREE, vol, 0, soundID); + _scumm->_mixer->playRaw(NULL, sound, size, rate, SoundMixer::FLAG_AUTOFREE, soundID, vol, 0); } return; } @@ -477,10 +478,10 @@ void Sound::playSound(int soundID) { // Experimental sound looping support if (start == 108 || start == 106) _scumm->_mixer->playRaw(NULL, sound, size, rate, - SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_LOOP, vol, 0, soundID, + SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_LOOP, soundID, vol, 0, start, size); else - _scumm->_mixer->playRaw(NULL, sound, size, rate, SoundMixer::FLAG_AUTOFREE, vol, 0, soundID); + _scumm->_mixer->playRaw(NULL, sound, size, rate, SoundMixer::FLAG_AUTOFREE, soundID, vol, 0); return; } } @@ -1376,12 +1377,12 @@ void Sound::playBundleSound(char *sound, PlayingSoundHandle *handle) { _scumm->_mixer->stopHandle(*handle); if (bits == 8) { - _scumm->_mixer->playRaw(handle, final, size, rate, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE, 255, pan); + _scumm->_mixer->playRaw(handle, final, size, rate, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE, -1, 255, pan); } else if (bits == 16) { // FIXME: For some weird reasons, sometimes we get an odd size, even though // the data is supposed to be in 16 bit format... that makes no sense... size &= ~1; - _scumm->_mixer->playRaw(handle, final, size, rate, SoundMixer::FLAG_16BITS | SoundMixer::FLAG_AUTOFREE, 255, pan); + _scumm->_mixer->playRaw(handle, final, size, rate, SoundMixer::FLAG_16BITS | SoundMixer::FLAG_AUTOFREE, -1, 255, pan); } else { warning("Sound::playBundleSound() to do more options to playRaw..."); } diff --git a/sky/intro.cpp b/sky/intro.cpp index 5c4ab9968f..4ed7bf7fa3 100644 --- a/sky/intro.cpp +++ b/sky/intro.cpp @@ -718,7 +718,7 @@ bool SkyIntro::nextPart(uint16 *&data) { // directly, but this will have to do for now. memset(vData, 127, sizeof(struct dataFileHeader)); _mixer->playRaw(&_voice, vData, _skyDisk->_lastLoadedFileSize, 11025, - SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_UNSIGNED, 255, 0, SOUND_VOICE); + SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_UNSIGNED, SOUND_VOICE); return true; case WAITVOICE: while (_voice) @@ -735,12 +735,12 @@ bool SkyIntro::nextPart(uint16 *&data) { case LOOPBG: _mixer->stopID(SOUND_BG); _mixer->playRaw(&_bgSfx, _bgBuf + 256, _bgSize - 768, 11025, - SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_LOOP, 255, 0, SOUND_BG); + SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_LOOP, SOUND_BG); return true; case PLAYBG: _mixer->stopID(SOUND_BG); _mixer->playRaw(&_bgSfx, _bgBuf + 256, _bgSize - 768, 11025, - SoundMixer::FLAG_UNSIGNED, 255, 0, SOUND_BG); + SoundMixer::FLAG_UNSIGNED, SOUND_BG); return true; case STOPBG: _mixer->stopID(SOUND_BG); diff --git a/sky/sound.cpp b/sky/sound.cpp index 50de6293b3..0488557506 100644 --- a/sky/sound.cpp +++ b/sky/sound.cpp @@ -1054,7 +1054,7 @@ int SkySound::playSound(uint32 id, byte *sound, uint32 size, PlayingSoundHandle memcpy(buffer, sound+sizeof(struct dataFileHeader), size); _mixer->stopID(id); - return _mixer->playRaw(handle, buffer, size, 11025, flags, 255, 0, id); + return _mixer->playRaw(handle, buffer, size, 11025, flags, id); } void SkySound::loadSection(uint8 pSection) { @@ -1130,9 +1130,9 @@ void SkySound::playSound(uint16 sound, uint16 volume, uint8 channel) { _mixer->setVolume(volume); if (channel == 0) - _mixer->playRaw(&_ingameSound0, _soundData + dataOfs, dataSize, sampleRate, flags, 255, 0, SOUND_CH0, loopSta, loopEnd); + _mixer->playRaw(&_ingameSound0, _soundData + dataOfs, dataSize, sampleRate, flags, SOUND_CH0, loopSta, loopEnd); else - _mixer->playRaw(&_ingameSound1, _soundData + dataOfs, dataSize, sampleRate, flags, 255, 0, SOUND_CH1, loopSta, loopEnd); + _mixer->playRaw(&_ingameSound1, _soundData + dataOfs, dataSize, sampleRate, flags, SOUND_CH1, loopSta, loopEnd); } void SkySound::fnStartFx(uint32 sound, uint8 channel) { @@ -1251,6 +1251,6 @@ bool SkySound::startSpeech(uint16 textNum) { free(speechData); _mixer->stopID(SOUND_SPEECH); - _mixer->playRaw(&_ingameSpeech, playBuffer, speechSize, 11025, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE, 255, 0, SOUND_SPEECH); + _mixer->playRaw(&_ingameSpeech, playBuffer, speechSize, 11025, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE, SOUND_SPEECH); return true; } diff --git a/sound/mixer.cpp b/sound/mixer.cpp index 04c931238e..fe9c43a65c 100644 --- a/sound/mixer.cpp +++ b/sound/mixer.cpp @@ -68,6 +68,8 @@ public: _volume = volume; } virtual void setChannelPan(const int8 pan) { + if (pan != 0) + printf("Pan set to %d\n", pan); _pan = pan; } virtual int getVolume() const { @@ -246,7 +248,7 @@ int SoundMixer::insertChannel(PlayingSoundHandle *handle, Channel *chan) { return index; } -int SoundMixer::playRaw(PlayingSoundHandle *handle, void *sound, uint32 size, uint rate, byte flags, byte volume, int8 pan, int id, uint32 loopStart, uint32 loopEnd) { +int SoundMixer::playRaw(PlayingSoundHandle *handle, void *sound, uint32 size, uint rate, byte flags, int id, byte volume, int8 pan, uint32 loopStart, uint32 loopEnd) { StackLock lock(_mutex); // Prevent duplicate sounds diff --git a/sound/mixer.h b/sound/mixer.h index 415c73b9b1..8fd7883418 100644 --- a/sound/mixer.h +++ b/sound/mixer.h @@ -90,7 +90,7 @@ public: // start playing a raw sound int playRaw(PlayingSoundHandle *handle, void *sound, uint32 size, uint rate, byte flags, - byte volume = 255, int8 pan = 0, int id = -1, uint32 loopStart = 0, uint32 loopEnd = 0); + int id = -1, byte volume = 255, int8 pan = 0, uint32 loopStart = 0, uint32 loopEnd = 0); #ifdef USE_MAD int playMP3(PlayingSoundHandle *handle, File *file, uint32 size, byte volume = 255, int8 pan = 0); int playMP3CDTrack(PlayingSoundHandle *handle, File *file, mad_timer_t duration, byte volume = 255, int8 pan = 0); diff --git a/sword2/driver/d_sound.cpp b/sword2/driver/d_sound.cpp index fc03cdf8ca..750d81bb7b 100644 --- a/sword2/driver/d_sound.cpp +++ b/sword2/driver/d_sound.cpp @@ -564,7 +564,7 @@ int32 Sword2Sound::PlayCompSpeech(const char *filename, uint32 speechid, uint8 v for (uint j = 0; j < (bufferSize / 2); j++) data16[j] = TO_BE_16(data16[j]); - _mixer->playRaw(&soundHandleSpeech, data16, bufferSize, 22050, flags, volume, pan); + _mixer->playRaw(&soundHandleSpeech, data16, bufferSize, 22050, flags, -1, volume, pan); speechStatus = 1; } @@ -755,7 +755,7 @@ int32 Sword2Sound::PlayFx(int32 id, uint8 *data, uint8 vol, int8 pan, uint8 type } else { volume = musicVolTable[volMusic[0]]; } - g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], volume, 0); + g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], -1, volume, 0); } else { i = GetFxIndex(id); if (i == MAXFX) { @@ -779,7 +779,7 @@ int32 Sword2Sound::PlayFx(int32 id, uint8 *data, uint8 vol, int8 pan, uint8 type } p = panTable[pan + 16]; - g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], volume, p); + g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], -1, volume, p); } } else { if (type == RDSE_FXLEADIN) { @@ -801,7 +801,7 @@ int32 Sword2Sound::PlayFx(int32 id, uint8 *data, uint8 vol, int8 pan, uint8 type } else { volume = musicVolTable[volMusic[0]]; } - g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], volume, 0); + g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], -1, volume, 0); } else { hr = OpenFx(id, data); if (hr != RD_OK) { @@ -828,7 +828,7 @@ int32 Sword2Sound::PlayFx(int32 id, uint8 *data, uint8 vol, int8 pan, uint8 type volume = vol * fxVol; } p = panTable[pan + 16]; - g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], volume, p); + g_engine->_mixer->playRaw(&soundHandleFx[i], bufferFx[i], bufferSizeFx[i], fxRate[i], flagsFx[i], -1, volume, p); } } } |