diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/tsage/sound.cpp | 11 | ||||
-rw-r--r-- | engines/tsage/sound.h | 4 |
2 files changed, 9 insertions, 6 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; } diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h index de67044cd1..4bef27d2c9 100644 --- a/engines/tsage/sound.h +++ b/engines/tsage/sound.h @@ -82,7 +82,7 @@ public: virtual void close() {} // Method #1 virtual bool reset() { return true; } // Method #2 virtual const GroupData *getGroupData() { return NULL; } // Method #3 - virtual void installPatch(const byte *data) {} // Method #4 + virtual void installPatch(const byte *data, int size) {} // Method #4 virtual void poll() {} // Method #5 virtual void proc12() {} // Method #6 virtual int setMasterVolume(int volume) { return 0; } // Method #7 @@ -421,7 +421,7 @@ public: virtual void close(); virtual bool reset(); virtual const GroupData *getGroupData(); - virtual void installPatch(const byte *data); + virtual void installPatch(const byte *data, int size); virtual int setMasterVolume(int volume); virtual void proc32(int channel, int program, int v0, int v1); virtual void updateVoice(int channel); |