Ticket #3053: sky-adlib2.diff
File sky-adlib2.diff, 2.9 KB (added by , 17 years ago) |
---|
-
engines/sky/music/musicbase.h
58 58 bool musicIsPlaying(void); 59 59 uint8 giveVolume(void) { return (uint8)_musicVolume; }; 60 60 uint8 giveCurrentMusic(void) { return _currentMusic; }; 61 v oid setVolume(uint16 param);61 virtual void setVolume(uint16 param); 62 62 63 63 protected: 64 64 -
engines/sky/music/adlibmusic.h
50 50 virtual void setupPointers(void); 51 51 virtual void setupChannels(uint8 *channelData); 52 52 virtual void startDriver(void); 53 virtual void setVolume(uint16 param); 53 54 54 55 void premixerCall(int16 *buf, uint len); 55 56 }; -
engines/sky/music/adlibchannel.cpp
85 85 } 86 86 87 87 void AdlibChannel::updateVolume(uint16 pVolume) { 88 pVolume = (pVolume * 3) >> 1; 89 if (pVolume > 0x7F) 90 pVolume = 0x7F; 91 _musicVolume = pVolume | 128; 88 89 // Do nothing. The mixer handles the music volume for us. 92 90 } 93 91 94 92 /* This class uses the same area for the register mirror as the original -
engines/sky/music/adlibmusic.cpp
39 39 40 40 _opl = makeAdlibOPL(_sampleRate); 41 41 42 _mixer->playInputStream(Audio::Mixer::k PlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);42 _mixer->playInputStream(Audio::Mixer::kMusicSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true); 43 43 } 44 44 45 45 AdlibMusic::~AdlibMusic(void) { … … 102 102 for (uint8 cnt = 0; cnt < _numberOfChannels; cnt++) { 103 103 uint16 chDataStart = ((channelData[(cnt << 1) | 1] << 8) | channelData[cnt << 1]) + _musicDataLoc; 104 104 _channels[cnt] = new AdlibChannel(_opl, _musicData, chDataStart); 105 _channels[cnt]->updateVolume(_musicVolume);106 105 } 107 106 } 108 107 108 void AdlibMusic::setVolume(uint16 param) { 109 _musicVolume = param; 110 _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, 2 * param); 111 } 112 109 113 void AdlibMusic::startDriver(void) { 110 114 111 115 uint16 cnt = 0; -
engines/sky/control.cpp
678 678 if (volume >= 128) volume = 0; 679 679 else volume = 127 - volume; 680 680 _skyMusic->setVolume(volume); 681 ConfMan.setInt("music_volume", 2 * volume); 681 682 } 682 683 buttonControl(_slide2); 683 684 _text->drawToScreen(WITH_MASK);