diff --git a/Core/HLE/scePsmf.cpp b/Core/HLE/scePsmf.cpp index 719df3376e..6687a2b280 100644 --- a/Core/HLE/scePsmf.cpp +++ b/Core/HLE/scePsmf.cpp @@ -764,9 +764,10 @@ u32 scePsmfGetEPWithId(u32 psmfStruct, int epid, u32 entryAddr) return ERROR_PSMF_NOT_FOUND; } DEBUG_LOG(ME, "scePsmfGetEPWithId(%08x, %i, %08x)", psmfStruct, epid, entryAddr); + if (epid < 0 || epid >= (int)psmf->EPMap.size()) { - // TODO: Just a guess. - return ERROR_PSMF_INVALID_TIMESTAMP; + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid id", psmfStruct, epid); + return ERROR_PSMF_INVALID_ID; } if (Memory::IsValidAddress(entryAddr)) { Memory::WriteStruct(entryAddr, &psmf->EPMap[epid]); @@ -782,14 +783,16 @@ u32 scePsmfGetEPWithTimestamp(u32 psmfStruct, u32 ts, u32 entryAddr) return ERROR_PSMF_NOT_FOUND; } DEBUG_LOG(ME, "scePsmfGetEPWithTimestamp(%08x, %i, %08x)", psmfStruct, ts, entryAddr); + if (ts < psmf->presentationStartTime) { + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid timestamp", psmfStruct, ts); return ERROR_PSMF_INVALID_TIMESTAMP; } int epid = psmf->FindEPWithTimestamp(ts); if (epid < 0 || epid >= (int)psmf->EPMap.size()) { - // TODO: Just a guess. - return ERROR_PSMF_INVALID_TIMESTAMP; + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid id", psmfStruct, epid); + return ERROR_PSMF_INVALID_ID; } if (Memory::IsValidAddress(entryAddr)) { @@ -806,14 +809,16 @@ u32 scePsmfGetEPidWithTimestamp(u32 psmfStruct, u32 ts) return ERROR_PSMF_NOT_FOUND; } DEBUG_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i)", psmfStruct, ts); + if (ts < psmf->presentationStartTime) { + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid timestamp", psmfStruct, ts); return ERROR_PSMF_INVALID_TIMESTAMP; } int epid = psmf->FindEPWithTimestamp(ts); if (epid < 0 || epid >= (int)psmf->EPMap.size()) { - // TODO: Just a guess. - return ERROR_PSMF_INVALID_TIMESTAMP; + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid id", psmfStruct, epid); + return ERROR_PSMF_INVALID_ID; } return epid; }