diff --git a/src/xenia/apu/xma_context.cc b/src/xenia/apu/xma_context.cc index e9047654a..91438bb57 100644 --- a/src/xenia/apu/xma_context.cc +++ b/src/xenia/apu/xma_context.cc @@ -320,7 +320,9 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) { // No available data. if (!data->input_buffer_0_valid && !data->input_buffer_1_valid) { - data->output_buffer_valid = 0; + // 4156081D checks specifically for offset 0x20 when both input buffers + // are invalid. + data->input_buffer_read_offset = kBitsPerHeader; return; } diff --git a/src/xenia/apu/xma_context.h b/src/xenia/apu/xma_context.h index 52e97ee47..1ffdf9dba 100644 --- a/src/xenia/apu/xma_context.h +++ b/src/xenia/apu/xma_context.h @@ -134,7 +134,7 @@ class XmaContext { public: static const uint32_t kBytesPerPacket = 2048; static const uint32_t kBitsPerPacket = kBytesPerPacket * 8; - static const uint32_t kBitsPerHeader = 33; + static const uint32_t kBitsPerHeader = 32; static const uint32_t kBytesPerSample = 2; static const uint32_t kSamplesPerFrame = 512;