From 4989ceb70699e1679cef596fcc786e1196ae44fc Mon Sep 17 00:00:00 2001 From: oioitff Date: Fri, 29 Mar 2013 00:54:04 -0700 Subject: [PATCH] Fix scePsmfPlayerDelete and add some other stubs. --- Core/HLE/scePsmf.cpp | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/Core/HLE/scePsmf.cpp b/Core/HLE/scePsmf.cpp index 73f3a6f9c6..84969bab19 100644 --- a/Core/HLE/scePsmf.cpp +++ b/Core/HLE/scePsmf.cpp @@ -701,8 +701,11 @@ int scePsmfPlayerDelete(u32 psmfPlayer) { ERROR_LOG(HLE, "UNIMPL scePsmfPlayerDelete(%08x)", psmfPlayer); PsmfPlayer *psmfplayer = getPsmfPlayer(psmfPlayer); - if (psmfplayer) + if (psmfplayer) { psmfplayer->status = PSMF_PLAYER_STATUS_NONE; + delete psmfplayer; + psmfPlayerMap.erase(psmfPlayer); + } return 0; } @@ -734,6 +737,33 @@ int scePsmfPlayerReleasePsmf(u32 psmfPlayer) return 0; } +int scePsmfPlayerGetVideoData(u32 psmfPlayer, u32 videoDataAddr) +{ + ERROR_LOG(HLE, "UNIMPL scePsmfPlayerGetVideoData(%08x, %08x)", psmfPlayer, videoDataAddr); + PsmfPlayer *psmfplayer = getPsmfPlayer(psmfPlayer); + if (!psmfplayer) { + ERROR_LOG(HLE, "scePsmfPlayerGetVideoData - invalid psmf"); + return ERROR_PSMF_NOT_FOUND; + } + + // TODO: Once we start increasing pts somewhere, and actually know the last timestamp, do this better. + psmfplayer->status = PSMF_PLAYER_STATUS_PLAYING_FINISHED; + return 0; +} + +int scePsmfPlayerGetAudioData(u32 psmfPlayer, u32 audioDataAddr) +{ + ERROR_LOG(HLE, "UNIMPL scePsmfPlayerGetAudioData(%08x, %08x)", psmfPlayer, audioDataAddr); + PsmfPlayer *psmfplayer = getPsmfPlayer(psmfPlayer); + if (!psmfplayer) { + ERROR_LOG(HLE, "scePsmfPlayerGetAudioData - invalid psmf"); + return ERROR_PSMF_NOT_FOUND; + } + + Memory::Memset(audioDataAddr, 0, audioSamplesBytes); + return 0; +} + int scePsmfPlayerGetCurrentStatus(u32 psmfPlayer) { ERROR_LOG(HLE, "scePsmfPlayerGetCurrentStatus(%08x)", psmfPlayer); @@ -970,7 +1000,7 @@ const HLEFunction scePsmfPlayer[] = {0x58B83577, WrapI_UC, "scePsmfPlayerSetPsmfCB"}, {0x3ea82a4b, WrapI_U, "scePsmfPlayerGetAudioOutSize"}, {0x3ed62233, WrapU_UU, "scePsmfPlayerGetCurrentPts"}, - {0x46f61f8b, 0, "scePsmfPlayerGetVideoData"}, + {0x46f61f8b, WrapI_UU, "scePsmfPlayerGetVideoData"}, {0x68f07175, WrapU_UUU, "scePsmfPlayerGetCurrentAudioStream"}, {0x75f03fa2, WrapU_UII, "scePsmfPlayerSelectSpecificVideo"}, {0x85461eff, WrapU_UII, "scePsmfPlayerSelectSpecificAudio"}, @@ -981,7 +1011,7 @@ const HLEFunction scePsmfPlayer[] = {0xa0b8ca55, WrapI_U, "scePsmfPlayerUpdate"}, {0xa3d81169, WrapU_UII, "scePsmfPlayerChangePlayMode"}, {0xb8d10c56, WrapU_U, "scePsmfPlayerSelectAudio"}, - {0xb9848a74, 0, "scePsmfPlayerGetAudioData"}, + {0xb9848a74, WrapI_UU, "scePsmfPlayerGetAudioData"}, {0xdf089680, WrapU_UU, "scePsmfPlayerGetPsmfInfo"}, {0xe792cd94, WrapI_U, "scePsmfPlayerReleasePsmf"}, {0xf3efaa91, WrapU_UUU, "scePsmfPlayerGetCurrentPlayMode"},