aboutsummaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authorathrxx2014-04-15 14:30:32 +0200
committerathrxx2018-11-14 17:22:19 +0100
commitf67ca1ba4704d450a4a2b3139da46da135122c0e (patch)
tree633a714b859e8f866e422ac1eae9f034b3ebb297 /audio
parent506f900f9446cc7df91c0384e70e4dc7a98cc43a (diff)
downloadscummvm-rg350-f67ca1ba4704d450a4a2b3139da46da135122c0e.tar.gz
scummvm-rg350-f67ca1ba4704d450a4a2b3139da46da135122c0e.tar.bz2
scummvm-rg350-f67ca1ba4704d450a4a2b3139da46da135122c0e.zip
AUDIO: (FM-TOWNS) - remove wave memory limit
(This is basically an unnecessary emulation of a hardware limitation. EOB II will try to load approximately 70 KByte of samples for the outro sequence, which would lead to some missing sounds with the 64 Kbyte limit).
Diffstat (limited to 'audio')
-rw-r--r--audio/softsynth/fmtowns_pc98/towns_audio.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/audio/softsynth/fmtowns_pc98/towns_audio.cpp b/audio/softsynth/fmtowns_pc98/towns_audio.cpp
index 2506e02c2b..7d61631936 100644
--- a/audio/softsynth/fmtowns_pc98/towns_audio.cpp
+++ b/audio/softsynth/fmtowns_pc98/towns_audio.cpp
@@ -728,7 +728,11 @@ int TownsAudioInterfaceInternal::intf_loadSamples(va_list &args) {
if (dest >= 65536 || size == 0 || size > 65536)
return 3;
if (size + dest > 65536)
- return 5;
+ // EOB II FM-TOWNS tries to load more than 65536 bytes of wave sounds for the outro sequence.
+ // This means that some sfx would not play. Since we don't really need the memory limit,
+ // I have commented out the error return and added a warning instead.
+ warning("FM-TOWNS AUDIO: exceeding wave memory size by %d bytes", size + dest - 65536);
+ // return 5;
int dwIndex = _numWaveTables - 1;
for (uint32 t = _waveTablesTotalDataSize; dwIndex && (dest < t); dwIndex--)
@@ -796,9 +800,13 @@ int TownsAudioInterfaceInternal::intf_loadWaveTable(va_list &args) {
s->readHeader(data);
_waveTablesTotalDataSize += s->size;
- callback(32, _waveTablesTotalDataSize, s->size, data + 32);
+ int res = callback(32, _waveTablesTotalDataSize, s->size, data + 32);
+ if (res) {
+ _waveTablesTotalDataSize -= s->size;
+ _numWaveTables--;
+ }
- return 0;
+ return res;
}
int TownsAudioInterfaceInternal::intf_unloadWaveTable(va_list &args) {