aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mortevielle/sound.cpp')
-rw-r--r--engines/mortevielle/sound.cpp56
1 files changed, 23 insertions, 33 deletions
diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp
index 5dea574a81..01d7176ab2 100644
--- a/engines/mortevielle/sound.cpp
+++ b/engines/mortevielle/sound.cpp
@@ -201,38 +201,38 @@ void SoundManager::loadAmbiantSounds() {
}
void SoundManager::litph(tablint &t, int typ, int tempo) {
- if (_vm->_speechManager._typlec == 2) {
- warning("--->");
- for (int i = 0; i < _vm->_speechManager._ptr_oct; i++)
- warning("%d", _vm->_mem[(kAdrTroct * 16) + i]);
- warning("---<");
- } else
+ // Skip speech
+ if (_vm->_speechManager._typlec == 0)
return;
+ int freq = tempo * 10 * 25.2;
int i = 0;
while (i < _vm->_speechManager._ptr_oct) {
int idx = _vm->_mem[(kAdrTroct * 16) + i];
i++;
switch(idx) {
case 0: {
- warning("IPCX");
-/* adbrui
- dw 5CB0h, 0, 17224
- dw 6000h, 3656, 20108
- dw 6000h, 20108, 37446
- dw 6924h, 6, 8388
- dw 6B30h, 4, 1893
- dw 6BA6h, 6, 8595
-*/
int val = _vm->_mem[(kAdrTroct * 16) + i];
i++;
- warning("idx %d", val);
if (_vm->_speechManager._typlec == 0)
warning("vclas");
- else if (!_vm->_speechManager._typlec == 1)
- warning("duson");
- else { // 2
- warning("vadson");
+ else if (_vm->_speechManager._typlec == 1) {
+ debugC(5, kMortevielleSounds, "litph - duson");
+ const static int noiseAdr[] = {0, 17224,
+ 17224, 33676,
+ 33676, 51014,
+ 51014, 59396,
+ 59396, 61286,
+ 61286, 69875};
+ if (val > 5) {
+ warning("unhandled index %d", val);
+ } else {
+ if (!_audioStream)
+ _audioStream = Audio::makeQueuingAudioStream(freq, false);
+ _audioStream->queueBuffer(&_vm->_mem[(kAdrNoise * 16) + noiseAdr[val * 2]], noiseAdr[(val * 2) + 1] - noiseAdr[(val * 2)], DisposeAfterUse::NO, Audio::FLAG_UNSIGNED);
+ }
+ } else { // 2
+ debugC(5, kMortevielleSounds, "litph - vadson");
const static int ambiantNoiseAdr[] = {0, 14020,
14020, 18994,
18994, 19630,
@@ -246,37 +246,27 @@ void SoundManager::litph(tablint &t, int typ, int tempo) {
warning("unhandled index %d", val);
} else {
if (!_audioStream)
- _audioStream = Audio::makeQueuingAudioStream(22428, false);
+ _audioStream = Audio::makeQueuingAudioStream(freq, false);
_audioStream->queueBuffer(&_ambiantNoiseBuf[ambiantNoiseAdr[val * 2]], ambiantNoiseAdr[(val * 2) + 1] - ambiantNoiseAdr[(val * 2)], DisposeAfterUse::NO, Audio::FLAG_UNSIGNED);
-// Audio::SeekableAudioStream *raw = nullptr;
-// raw = Audio::makeRawStream(&_vm->_mem[(kAdrNoise * 16)] + ambiantNoiseAdr[val * 2], ambiantNoiseAdr[(val * 2) + 1], 22428, Audio::FLAG_UNSIGNED, DisposeAfterUse::NO);
-// Audio::SoundHandle soundHandle;
-// _mixer->playStream(Audio::Mixer::kSFXSoundType, &songHandle, raw, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::YES);
-// while (_mixer->isSoundHandleActive(songHandle) && !_vm->keyPressed() && !_vm->_mouseClick && !_vm->shouldQuit())
-// ;
-
}
}
break;
}
case 2: {
- warning("parc");
int val = _vm->_mem[(kAdrTroct * 16) + i];
i++;
int tmpidx = (val * 12) + 268;
val = _vm->_mem[(kAdrTroct * 16) + i];
i++;
- warning("%d %d", tmpidx, val);
- warning("reech");
+ warning("TODO: reech %d %d", tmpidx, val);
}
break;
case 4:
if (_vm->_speechManager._typlec) {
- warning("Skip interphoneme: %d %d", _vm->_mem[(kAdrTroct * 16) + i], _vm->_mem[(kAdrTroct * 16) + i + 1]);
i += 2;
} else {
// Speech
- warning("Interphoneme: consonne:%d voyelle:%d", _vm->_mem[(kAdrTroct * 16) + i], _vm->_mem[(kAdrTroct * 16) + i + 1]);
+ warning("TODO: Interphoneme: consonne:%d voyelle:%d", _vm->_mem[(kAdrTroct * 16) + i], _vm->_mem[(kAdrTroct * 16) + i + 1]);
i += 2;
}
break;