From 139608f451b40a3cb341188f9cd77bb8037b6352 Mon Sep 17 00:00:00 2001 From: Robert Göffringmann Date: Sun, 18 Mar 2007 17:58:26 +0000 Subject: Fixed bug #1678349: BASS: music is off, but drum track plays svn-id: r26219 --- engines/sky/music/gmchannel.cpp | 13 ++++++------- engines/sky/music/gmchannel.h | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'engines/sky/music') diff --git a/engines/sky/music/gmchannel.cpp b/engines/sky/music/gmchannel.cpp index 3ba6d46969..460cea545e 100644 --- a/engines/sky/music/gmchannel.cpp +++ b/engines/sky/music/gmchannel.cpp @@ -39,7 +39,7 @@ GmChannel::GmChannel(uint8 *pMusicData, uint16 startOfData, MidiDriver *pMidiDrv _veloTab = veloTab; _musicVolume = 0x7F; - _lastVolume = 0xFF; + _currentChannelVolume = 0x7F; } GmChannel::~GmChannel(void) { @@ -55,10 +55,9 @@ void GmChannel::updateVolume(uint16 pVolume) { _musicVolume = pVolume; if (_musicVolume > 0) _musicVolume = (_musicVolume * 2) / 3 + 43; - if (_lastVolume < 0xFF) { - uint8 newVol = (_lastVolume * _musicVolume) >> 7; - _midiDrv->send((0xB0 | _channelData.midiChannelNumber) | 0x700 | (newVol << 16)); - } + + uint8 newVol = (_currentChannelVolume * _musicVolume) >> 7; + _midiDrv->send((0xB0 | _channelData.midiChannelNumber) | 0x700 | (newVol << 16)); } void GmChannel::stopNote(void) { @@ -175,8 +174,8 @@ void GmChannel::com90_getPitch(void) { void GmChannel::com90_getChannelVolume(void) { - _lastVolume = _musicData[_channelData.eventDataPtr]; - uint8 newVol = (uint8)((_musicData[_channelData.eventDataPtr++] * _musicVolume) >> 7); + _currentChannelVolume = _musicData[_channelData.eventDataPtr++]; + uint8 newVol = (uint8)((_currentChannelVolume * _musicVolume) >> 7); _midiDrv->send((0xB0 | _channelData.midiChannelNumber) | 0x700 | (newVol << 16)); } diff --git a/engines/sky/music/gmchannel.h b/engines/sky/music/gmchannel.h index c3031d73f2..ffe898a400 100644 --- a/engines/sky/music/gmchannel.h +++ b/engines/sky/music/gmchannel.h @@ -53,7 +53,7 @@ private: uint8 *_musicData; uint16 _musicVolume; MidiChannelType _channelData; - uint8 _lastVolume; + uint8 _currentChannelVolume; //- normal subs void setRegister(uint8 regNum, uint8 value); int32 getNextEventTime(void); -- cgit v1.2.3