Skip to content

Commit

Permalink
SOUND: Load binary XSB loop event parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
DrMcCoy committed Dec 28, 2018
1 parent 8ae821d commit 5d1e3e9
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions src/sound/xactsoundbank_binary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,18 +192,29 @@ void XACTSoundBank_Binary::readComplexTrack(Common::SeekableReadStream &xsb, Tra

const uint8 eventFlags = xsb.readByte();

xsb.skip(2); // Unknown

if (((event.type == kEventTypePlay) || (event.type == kEventTypePlayComplex)) &&
(parameterSize >= 4)) {

const uint32 indicesOrOffset = xsb.readUint32LE();
parameterSize -= 4;

if (eventFlags & kPlayEventMultipleVariations)
wavesOffset = indicesOrOffset;
else
addWaveVariation(track, indicesOrOffset, banks);
switch (event.type) {
case kEventTypePlay:
case kEventTypePlayComplex:
xsb.skip(2); // Unused

if (parameterSize >= 4) {
const uint32 indicesOrOffset = xsb.readUint32LE();
parameterSize -= 4;

if (eventFlags & kPlayEventMultipleVariations)
wavesOffset = indicesOrOffset;
else
addWaveVariation(track, indicesOrOffset, banks);
}
break;

case kEventTypeLoop:
track.events.back().params.loop.count = xsb.readUint16LE();
break;

default:
xsb.skip(2); // Unknown
break;
}

xsb.skip(parameterSize);
Expand Down

0 comments on commit 5d1e3e9

Please sign in to comment.