diff options
author | Paul Gilbert | 2011-06-15 00:08:40 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-06-15 00:08:40 +1000 |
commit | c18172565b2d3589d37784b34350c05ebcbe836b (patch) | |
tree | 22dac0d8cb739c622849fcb94ba12766ff739963 /engines/tsage/sound.cpp | |
parent | f47b25810a3e49adb0d95af5e3ec074e02606c54 (diff) | |
download | scummvm-rg350-c18172565b2d3589d37784b34350c05ebcbe836b.tar.gz scummvm-rg350-c18172565b2d3589d37784b34350c05ebcbe836b.tar.bz2 scummvm-rg350-c18172565b2d3589d37784b34350c05ebcbe836b.zip |
TSAGE: Bugfix for correctly persisting patch data
Diffstat (limited to 'engines/tsage/sound.cpp')
-rw-r--r-- | engines/tsage/sound.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp index 97c7f7133f..b067898a64 100644 --- a/engines/tsage/sound.cpp +++ b/engines/tsage/sound.cpp @@ -1307,7 +1307,7 @@ void SoundManager::_sfUnInstallDriver(SoundDriver *driver) { } void SoundManager::_sfInstallPatchBank(SoundDriver *driver, const byte *bankData) { - driver->installPatch(bankData); + driver->installPatch(bankData, _vm->_memoryManager.getSize(bankData)); } /** @@ -2391,6 +2391,7 @@ AdlibSoundDriver::AdlibSoundDriver(): SoundDriver() { _v44082[ADLIB_CHANNEL_COUNT] = 0x90; Common::set_to(_pitchBlend, _pitchBlend + ADLIB_CHANNEL_COUNT, 0x2000); memset(_v4409E, 0, ADLIB_CHANNEL_COUNT * sizeof(int)); + _patchData = NULL; } AdlibSoundDriver::~AdlibSoundDriver() { @@ -2433,8 +2434,10 @@ const GroupData *AdlibSoundDriver::getGroupData() { return &_groupData; } -void AdlibSoundDriver::installPatch(const byte *data) { - _patchData = data; +void AdlibSoundDriver::installPatch(const byte *data, int size) { + byte *patchData = ALLOCATE(size); + Common::copy(data, data + size, patchData); + _patchData = patchData; } int AdlibSoundDriver::setMasterVolume(int volume) { @@ -2612,7 +2615,7 @@ void AdlibSoundDriver::setFrequency(int channel) { } ch -= tempVal >> 2; - if (ch >= 128) + if (ch < 0) ch = 0; } |