From a2521ad01f66da0b44445f76c909f979b4cd5dd8 Mon Sep 17 00:00:00 2001 From: sum2012 Date: Tue, 4 Feb 2014 08:00:29 +0800 Subject: [PATCH] Fix MHP3 Chinese version crash in scempeg and scejpeg --- Core/HLE/sceJpeg.cpp | 4 ++++ Core/HLE/sceMpeg.cpp | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/Core/HLE/sceJpeg.cpp b/Core/HLE/sceJpeg.cpp index cda0a14979..fdb7c500ea 100644 --- a/Core/HLE/sceJpeg.cpp +++ b/Core/HLE/sceJpeg.cpp @@ -139,6 +139,10 @@ int sceJpegDecodeMJpegSuccessively(u32 jpegAddr, int jpegSize, u32 imageAddr, in int sceJpegCsc(u32 imageAddr, u32 yCbCrAddr, int widthHeight, int bufferWidth, int colourInfo) { + if (bufferWidth < 0 || widthHeight < 0){ + WARN_LOG(ME, "sceJpegCsc(%i, %i, %i, %i, %i)", imageAddr, yCbCrAddr, widthHeight, bufferWidth, colourInfo); + return 0x80650051; + } __JpegCsc(imageAddr, yCbCrAddr, widthHeight, bufferWidth); DEBUG_LOG(ME, "sceJpegCsc(%i, %i, %i, %i, %i)", imageAddr, yCbCrAddr, widthHeight, bufferWidth, colourInfo); return 0; diff --git a/Core/HLE/sceMpeg.cpp b/Core/HLE/sceMpeg.cpp index c278588aaf..213f456447 100644 --- a/Core/HLE/sceMpeg.cpp +++ b/Core/HLE/sceMpeg.cpp @@ -1551,6 +1551,11 @@ int sceMpegAvcConvertToYuv420(u32 mpeg, u32 bufferOutputAddr, u32 unknown1, int return -1; } + if (ctx->mediaengine->m_buffer == 0){ + WARN_LOG(ME, "sceMpegAvcConvertToYuv420(%08x, %08x, %08x, %08x)m_buffer = 0 ", mpeg, bufferOutputAddr, unknown1, unknown2); + return 0x806201FE; + } + DEBUG_LOG(ME, "sceMpegAvcConvertToYuv420(%08x, %08x, %08x, %08x)", mpeg, bufferOutputAddr, unknown1, unknown2); const u8 *data = ctx->mediaengine->getFrameImage(); int width = ctx->mediaengine->m_desWidth;