From 3afc86e9b867a941c79dd50003ff8ff79d448d58 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 6 Nov 2015 23:19:21 -0800 Subject: [PATCH] Atrac: correct offsetting logic in resetting. Probably not super important exactly, but got the numbers backwards when I reduced the test data. Oops. --- Core/HLE/sceAtrac.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index d641c8630e..a6410cf6e3 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -1120,15 +1120,15 @@ static void AtracGetResetBufferInfo(Atrac *atrac, AtracResetBufferInfo *bufferIn bufferInfo->first.writePosPtr = atrac->first.addr; bufferInfo->first.writableBytes = std::min(atrac->first.filesize - sampleFileOffset, bufSizeAligned); - if (((sample + atrac->firstSampleoffset) % atracSamplesPerFrame) > needsMoreFrames) { + if (((sample + atrac->firstSampleoffset) % atracSamplesPerFrame) >= atracSamplesPerFrame - needsMoreFrames) { // Not clear why, but it seems it wants a bit extra in case the sample is late? bufferInfo->first.minWriteBytes = atrac->atracBytesPerFrame * 3; - if ((u32)sample < (u32)atrac->firstSampleoffset) { - sampleFileOffset -= atrac->atracBytesPerFrame; - } } else { bufferInfo->first.minWriteBytes = atrac->atracBytesPerFrame * 2; } + if ((u32)sample < (u32)atrac->firstSampleoffset && sampleFileOffset != atrac->dataOff) { + sampleFileOffset -= atrac->atracBytesPerFrame; + } bufferInfo->first.filePos = sampleFileOffset; }