aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2010-01-01 21:26:46 +0000
committerMartin Kiewitz2010-01-01 21:26:46 +0000
commit44dc3f9bfbac271fb566ea603f720616b958d31c (patch)
tree0c1d241f1906e16f2a0b0a08a8d4f4dbe5306f46 /engines
parentf3ca535038a50a4a98c1fb698cddc0a7f9cf1d64 (diff)
downloadscummvm-rg350-44dc3f9bfbac271fb566ea603f720616b958d31c.tar.gz
scummvm-rg350-44dc3f9bfbac271fb566ea603f720616b958d31c.tar.bz2
scummvm-rg350-44dc3f9bfbac271fb566ea603f720616b958d31c.zip
SCI: kDoAudio now also clips volume and adjusts to mixer volume
svn-id: r46852
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/ksound.cpp7
-rw-r--r--engines/sci/sfx/audio.h2
2 files changed, 7 insertions, 2 deletions
diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp
index 4b5471659c..d70b23c13f 100644
--- a/engines/sci/engine/ksound.cpp
+++ b/engines/sci/engine/ksound.cpp
@@ -131,9 +131,12 @@ reg_t kDoAudio(EngineState *s, int argc, reg_t *argv) {
case kSciAudioRate:
s->_audio->setAudioRate(argv[1].toUint16());
break;
- case kSciAudioVolume:
- mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, argv[1].toUint16());
+ case kSciAudioVolume: {
+ int16 volume = argv[1].toUint16();
+ volume = CLIP<int16>(volume, 0, AUDIO_VOLUME_MAX);
+ mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, volume * 2);
break;
+ }
case kSciAudioLanguage:
// In SCI1.1: tests for digital audio support
if (getSciVersion() == SCI_VERSION_1_1)
diff --git a/engines/sci/sfx/audio.h b/engines/sci/sfx/audio.h
index febe77cefc..f71cabc735 100644
--- a/engines/sci/sfx/audio.h
+++ b/engines/sci/sfx/audio.h
@@ -51,6 +51,8 @@ enum AudioSyncCommands {
kSciAudioSyncStop = 2
};
+#define AUDIO_VOLUME_MAX 127
+
class Resource;
class ResourceId;
class ResourceManager;