From d09575f25e71a178aee116d1e51519fa139d8f1d Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 8 Jan 2014 00:06:27 -0800 Subject: [PATCH 1/2] When loading a savestate with more ram, realloc. Also, I'm not sure the extra ram is being handled correctly, I think it's not meant to be exposed to games except homebrew, not sure of the exact method... --- Core/MemMap.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Core/MemMap.cpp b/Core/MemMap.cpp index 96e0924081..1d84aef94e 100644 --- a/Core/MemMap.cpp +++ b/Core/MemMap.cpp @@ -136,10 +136,16 @@ void DoState(PointerWrap &p) g_MemorySize = RAM_NORMAL_SIZE; g_PSPModel = PSP_MODEL_FAT; } else { + u32 oldMemorySize = g_MemorySize; p.Do(g_PSPModel); p.DoMarker("PSPModel"); - if (!g_RemasterMode) + if (!g_RemasterMode) { g_MemorySize = g_PSPModel == PSP_MODEL_FAT ? RAM_NORMAL_SIZE : RAM_DOUBLE_SIZE; + if (oldMemorySize < g_MemorySize) { + Shutdown(); + Init(); + } + } } p.DoArray(GetPointer(PSP_GetKernelMemoryBase()), g_MemorySize); From 079d770ce21c33e7ab224dde763df71da1e048a0 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 8 Jan 2014 00:07:25 -0800 Subject: [PATCH 2/2] Revert the gp struct member in mpegs for now. Unlikely to be used, even though seen in tests, and could be causing #5045 (just a guess.) --- Core/HLE/sceMpeg.cpp | 3 ++- Core/HLE/sceMpeg.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Core/HLE/sceMpeg.cpp b/Core/HLE/sceMpeg.cpp index 7b61bd6b6e..af7df1a1f5 100644 --- a/Core/HLE/sceMpeg.cpp +++ b/Core/HLE/sceMpeg.cpp @@ -235,7 +235,8 @@ static void InitRingbuffer(SceMpegRingBuffer *buf, int packets, int data, int si buf->dataUpperBound = data + packets * 2048; buf->semaID = 0; buf->mpeg = 0; - buf->gp = __KernelGetModuleGP(__KernelGetCurThreadModuleId()); + // TODO: This appears in tests, but may not be in all versions. + //buf->gp = __KernelGetModuleGP(__KernelGetCurThreadModuleId()); } u32 convertTimestampToDate(u32 ts) { diff --git a/Core/HLE/sceMpeg.h b/Core/HLE/sceMpeg.h index 8d723b719f..b1135646ac 100644 --- a/Core/HLE/sceMpeg.h +++ b/Core/HLE/sceMpeg.h @@ -89,7 +89,8 @@ struct SceMpegRingBuffer { s32_le dataUpperBound; s32_le semaID; // unused? u32_le mpeg; // pointer to mpeg struct, fixed up in sceMpegCreate - u32_le gp; + // TODO: This appears in tests, but may not be in all versions. + //u32_le gp; }; void __MpegInit();