diff options
author | athrxx | 2014-04-15 14:30:32 +0200 |
---|---|---|
committer | athrxx | 2018-11-14 17:22:19 +0100 |
commit | f67ca1ba4704d450a4a2b3139da46da135122c0e (patch) | |
tree | 633a714b859e8f866e422ac1eae9f034b3ebb297 /audio | |
parent | 506f900f9446cc7df91c0384e70e4dc7a98cc43a (diff) | |
download | scummvm-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.cpp | 14 |
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) { |