diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 6de2f2b13b..b258ab0522 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -531,11 +531,13 @@ u32 sceAtracDecodeData(int atracID, u32 outAddr, u32 numSamplesAddr, u32 finishF atrac->decodePos = atrac->getDecodePosBySample(atrac->currentSample); int finishFlag = 0; - if (atrac->loopNum != 0 && (atrac->currentSample >= atrac->loopEndSample)) { + if (atrac->loopNum != 0 && (atrac->currentSample >= atrac->loopEndSample || + (numSamples == 0 && atrac->first.size >= atrac->first.filesize))) { atrac->currentSample = atrac->loopStartSample; if (atrac->loopNum > 0) atrac->loopNum --; - } else if (atrac->currentSample >= atrac->endSample) + } else if (atrac->currentSample >= atrac->endSample || + (numSamples == 0 && atrac->first.size >= atrac->first.filesize)) finishFlag = 1; Memory::Write_U32(finishFlag, finishFlagAddr);