aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Kołodziejski2004-02-13 06:43:10 +0000
committerPaweł Kołodziejski2004-02-13 06:43:10 +0000
commitd474ccf7569ae1e660e9af0474671a25f9fcb6ad (patch)
treea11b40894633feb9b4fb28cebba01b4249ad784e
parente5d9adea0248ec2d96e6dd9808db997bb23dc1b9 (diff)
downloadscummvm-rg350-d474ccf7569ae1e660e9af0474671a25f9fcb6ad.tar.gz
scummvm-rg350-d474ccf7569ae1e660e9af0474671a25f9fcb6ad.tar.bz2
scummvm-rg350-d474ccf7569ae1e660e9af0474671a25f9fcb6ad.zip
proper usage actor talkVolume
svn-id: r12841
-rw-r--r--scumm/imuse_digi/dimuse.cpp11
-rw-r--r--scumm/script_v8.cpp6
2 files changed, 10 insertions, 7 deletions
diff --git a/scumm/imuse_digi/dimuse.cpp b/scumm/imuse_digi/dimuse.cpp
index 611790376d..5a4203d644 100644
--- a/scumm/imuse_digi/dimuse.cpp
+++ b/scumm/imuse_digi/dimuse.cpp
@@ -282,7 +282,16 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
bits = _sound->getBits(_track[l].soundHandle);
channels = _sound->getChannels(_track[l].soundHandle);
freq = _sound->getFreq(_track[l].soundHandle);
-
+
+ if ((soundId == kTalkSoundID) && (soundType == IMUSE_BUNDLE)) {
+ if (_vm->_actorToPrintStrFor != 0xFF && _vm->_actorToPrintStrFor != 0) {
+ Actor *a = _vm->derefActor(_vm->_actorToPrintStrFor, "IMuseDigital::startSound");
+ freq = (freq * a->talkFrequency) / 256;
+ _track[l].pan = a->talkPan;
+ _track[l].vol = a->talkVolume * 1000;
+ }
+ }
+
assert(bits == 8 || bits == 12 || bits == 16);
assert(channels == 1 || channels == 2);
assert(0 < freq && freq <= 65535);
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index 67114f83ab..1ce60730e2 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -1078,18 +1078,12 @@ void ScummEngine_v8::o8_actorOps() {
break;
case 0x87: // SO_ACTOR_VOLUME Set volume of actor speech
a->talkVolume = pop();
- _imuseDigital->setVolume(kTalkSoundID, a->talkVolume);
break;
case 0x88: // SO_ACTOR_FREQUENCY Set frequency of actor speech
a->talkFrequency = pop();
break;
case 0x89: // SO_ACTOR_PAN
- // 0 = left, 64 = middle, 127 = right.
a->talkPan = pop();
- if (_actorToPrintStrFor == a->number) {
- _imuseDigital->setPan(kTalkSoundID, a->talkPan);
- }
-
break;
default:
error("o8_actorOps: default case 0x%x", subOp);