aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorathrxx2014-04-15 14:30:32 +0200
committerathrxx2018-11-14 17:22:19 +0100
commitf67ca1ba4704d450a4a2b3139da46da135122c0e (patch)
tree633a714b859e8f866e422ac1eae9f034b3ebb297
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).
-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) {