From 0d2fbeff9c91afa3265acdcd351dc4f7d8724000 Mon Sep 17 00:00:00 2001 From: oioitff Date: Mon, 6 May 2013 04:02:16 +0800 Subject: [PATCH] Improve remainFrame in sceAtrac --- Core/HLE/sceAtrac.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index f9f4e2d7cd..2403ea2c8e 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -161,12 +161,10 @@ struct Atrac { int remainFrame; if (first.fileoffset >= first.filesize || currentSample >= endSample) remainFrame = PSP_ATRAC_ALLDATA_IS_ON_MEMORY; - else if (decodePos >= first.fileoffset - atracBytesPerFrame ) { - // require more data - remainFrame = PSP_ATRAC_ALLDATA_IS_ON_MEMORY; - } else { - // Games expect to be told how many frames need to be read. - remainFrame = (first.size - decodePos) / atracBytesPerFrame; + else { + // guess the remain frames. + // games would add atrac data when remainFrame = 0 or -1 + remainFrame = (first.size - decodePos) / atracBytesPerFrame - 1; } return remainFrame; }