[Scummvm-git-logs] scummvm master -> 32c13ada08341969e45b5827ceee1103f4951eed
yuv422
yuv422 at users.noreply.github.com
Sat Aug 22 12:25:33 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
32c13ada08 DRAGONS: Only play sfx if we have a tone for the given key. Fixes #11578
Commit: 32c13ada08341969e45b5827ceee1103f4951eed
https://github.com/scummvm/scummvm/commit/32c13ada08341969e45b5827ceee1103f4951eed
Author: Eric Fry (yuv422 at users.noreply.github.com)
Date: 2020-08-22T22:21:41+10:00
Commit Message:
DRAGONS: Only play sfx if we have a tone for the given key. Fixes #11578
Changed paths:
engines/dragons/sound.cpp
engines/dragons/vabsound.cpp
engines/dragons/vabsound.h
diff --git a/engines/dragons/sound.cpp b/engines/dragons/sound.cpp
index 79de0e9d71..5d9598cfc9 100644
--- a/engines/dragons/sound.cpp
+++ b/engines/dragons/sound.cpp
@@ -437,9 +437,12 @@ void SoundManager::playSound(uint16 soundId, uint16 volumeId) {
stopVoicePlaying(soundId);
}
- Audio::SoundHandle *handle = getVoiceHandle(soundId);
- if (handle) {
- _vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, handle, vabSound->getAudioStream(program, key), -1, _sfxVolume);
+ int16 vagID = vabSound->getVagID(program, key);
+ if (vagID >= 0) {
+ Audio::SoundHandle *handle = getVoiceHandle(soundId);
+ if (handle) {
+ _vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, handle, vabSound->getAudioStream(program, vagID), -1, _sfxVolume);
+ }
}
}
@@ -460,6 +463,8 @@ void SoundManager::loadMsf(uint32 sceneId) {
char msfFileName[] = "XXXX.MSF";
memcpy(msfFileName, _dragonRMS->getSceneName(sceneId), 4);
+ debug(3, "Loading SFX file %s", msfFileName);
+
if (_bigFileArchive->doesFileExist(msfFileName)) {
uint32 msfSize;
byte *msfData = _bigFileArchive->load(msfFileName, msfSize);
diff --git a/engines/dragons/vabsound.cpp b/engines/dragons/vabsound.cpp
index 0412d5d824..d5b14b32d5 100644
--- a/engines/dragons/vabsound.cpp
+++ b/engines/dragons/vabsound.cpp
@@ -101,16 +101,8 @@ VabSound::~VabSound() {
delete _vbData;
}
-Audio::AudioStream *VabSound::getAudioStream(uint16 program, uint16 key) {
- assert(program < _header.numVAG);
- // TODO
- uint16 vagID = 0;
- for (int i = 0; i < _programAttrs[program].tones; i++) {
- if (_toneAttrs[i].prog == program && _toneAttrs[i].min == key && _toneAttrs[i].max == key) {
- vagID = _toneAttrs[i].vag - 1;
- }
- }
- debug(3, "Playing program %d, numTones: %d, key %d vagID %d, vagOffset: %x, size: %x", program, _programAttrs[program].tones, key, vagID, _vagOffsets[vagID], _vagSizes[vagID]);
+Audio::AudioStream *VabSound::getAudioStream(uint16 program, int16 vagID) {
+ debug(3, "Playing program %d, numTones: %d, vagID %d, vagOffset: %x, size: %x", program, _programAttrs[program].tones, vagID, _vagOffsets[vagID], _vagSizes[vagID]);
Audio::AudioStream *str = Audio::makeXAStream(
new Common::MemoryReadStream(&_vbData[_vagOffsets[vagID]], _vagSizes[vagID], DisposeAfterUse::NO),
11025,
@@ -163,4 +155,15 @@ void VabSound::loadToneAttributes(Common::SeekableReadStream *vhData) {
}
}
+int16 VabSound::getVagID(uint16 program, uint16 key) {
+ assert(program < _header.numVAG);
+
+ for (int i = 0; i < _programAttrs[program].tones; i++) {
+ if (_toneAttrs[i].prog == program && _toneAttrs[i].min == key && _toneAttrs[i].max == key) {
+ return _toneAttrs[i].vag - 1;
+ }
+ }
+ return -1;
+}
+
} // End of namespace Dragons
diff --git a/engines/dragons/vabsound.h b/engines/dragons/vabsound.h
index a7ab4e09d5..8406437f39 100644
--- a/engines/dragons/vabsound.h
+++ b/engines/dragons/vabsound.h
@@ -112,7 +112,8 @@ public:
~VabSound();
- Audio::AudioStream *getAudioStream(uint16 program, uint16 key);
+ int16 getVagID(uint16 program, uint16 key);
+ Audio::AudioStream *getAudioStream(uint16 program, int16 vagID);
private:
byte *_vbData;
More information about the Scummvm-git-logs
mailing list