From d0a9813844f610c5818d8211bf1eec062bfc4df4 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 18 Oct 2015 12:50:40 -0700 Subject: [PATCH] Account for uneven sized chunks by rounding up. Chunks have an extra pad byte if the size is uneven. This probably isn't happening, but just to be safe. --- Core/HLE/sceAtrac.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index d873b4b2ec..598a56262c 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -573,6 +573,11 @@ int Atrac::Analyze() { while (first.filesize >= offset + 8 && !bfoundData) { int chunkMagic = Memory::Read_U32(first.addr + offset); u32 chunkSize = Memory::Read_U32(first.addr + offset + 4); + // Account for odd sized chunks. + if (chunkSize & 1) { + WARN_LOG_REPORT_ONCE(oddchunk, ME, "RIFF chunk had uneven size"); + } + chunkSize += (chunkSize & 1); offset += 8; if (chunkSize > first.filesize - offset) break;