aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
authorPaul Gilbert2011-06-15 00:08:40 +1000
committerPaul Gilbert2011-06-15 00:08:40 +1000
commitc18172565b2d3589d37784b34350c05ebcbe836b (patch)
tree22dac0d8cb739c622849fcb94ba12766ff739963 /engines/tsage
parentf47b25810a3e49adb0d95af5e3ec074e02606c54 (diff)
downloadscummvm-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')
-rw-r--r--engines/tsage/sound.cpp11
-rw-r--r--engines/tsage/sound.h4
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);