From cb7f803866409daf6dd28c84f429efa71ffe1c66 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Wed, 23 Jan 2013 18:45:14 +0100 Subject: [PATCH] Attempt to set more correct return values for sceDisplayWaitVblank* --- Core/HLE/sceDisplay.cpp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/Core/HLE/sceDisplay.cpp b/Core/HLE/sceDisplay.cpp index 023f6c530c..5024bc48e4 100644 --- a/Core/HLE/sceDisplay.cpp +++ b/Core/HLE/sceDisplay.cpp @@ -363,48 +363,56 @@ u32 sceDisplayGetFramebuf(u32 topaddrPtr, u32 linesizePtr, u32 pixelFormatPtr, i return 0; } -void sceDisplayWaitVblankStart() { +u32 sceDisplayWaitVblankStart() { DEBUG_LOG(HLE,"sceDisplayWaitVblankStart()"); vblankWaitingThreads.push_back(WaitVBlankInfo(__KernelGetCurThread())); __KernelWaitCurThread(WAITTYPE_VBLANK, 0, 0, 0, false); + return 0; } -void sceDisplayWaitVblank() { +u32 sceDisplayWaitVblank() { if (!isVblank) { DEBUG_LOG(HLE,"sceDisplayWaitVblank()"); vblankWaitingThreads.push_back(WaitVBlankInfo(__KernelGetCurThread())); __KernelWaitCurThread(WAITTYPE_VBLANK, 0, 0, 0, false); + return 0; } else { DEBUG_LOG(HLE,"sceDisplayWaitVblank() - not waiting since in vBlank"); + return 1; } } -void sceDisplayWaitVblankStartMulti() { +u32 sceDisplayWaitVblankStartMulti() { DEBUG_LOG(HLE,"sceDisplayWaitVblankStartMulti()"); vblankWaitingThreads.push_back(WaitVBlankInfo(__KernelGetCurThread())); __KernelWaitCurThread(WAITTYPE_VBLANK, 0, 0, 0, false); + return 0; } -void sceDisplayWaitVblankCB() { +u32 sceDisplayWaitVblankCB() { if (!isVblank) { DEBUG_LOG(HLE,"sceDisplayWaitVblankCB()"); vblankWaitingThreads.push_back(WaitVBlankInfo(__KernelGetCurThread())); __KernelWaitCurThread(WAITTYPE_VBLANK, 0, 0, 0, true); + return 0; } else { DEBUG_LOG(HLE,"sceDisplayWaitVblank() - not waiting since in vBlank"); + return 1; } } -void sceDisplayWaitVblankStartCB() { +u32 sceDisplayWaitVblankStartCB() { DEBUG_LOG(HLE,"sceDisplayWaitVblankStartCB()"); vblankWaitingThreads.push_back(WaitVBlankInfo(__KernelGetCurThread())); __KernelWaitCurThread(WAITTYPE_VBLANK, 0, 0, 0, true); + return 0; } -void sceDisplayWaitVblankStartMultiCB() { +u32 sceDisplayWaitVblankStartMultiCB() { DEBUG_LOG(HLE,"sceDisplayWaitVblankStartMultiCB()"); vblankWaitingThreads.push_back(WaitVBlankInfo(__KernelGetCurThread())); __KernelWaitCurThread(WAITTYPE_VBLANK, 0, 0, 0, true); + return 0; } u32 sceDisplayGetVcount() { @@ -441,12 +449,12 @@ const HLEFunction sceDisplay[] = { {0x0E20F177,WrapU_UUU, "sceDisplaySetMode"}, {0x289D82FE,WrapU_V, "sceDisplaySetFramebuf"}, {0xEEDA2E54,WrapU_UUUI,"sceDisplayGetFrameBuf"}, - {0x36CDFADE,sceDisplayWaitVblank, "sceDisplayWaitVblank"}, - {0x984C27E7,sceDisplayWaitVblankStart, "sceDisplayWaitVblankStart"}, - {0x40f1469c,sceDisplayWaitVblankStartMulti, "sceDisplayWaitVblankStartMulti"}, - {0x8EB9EC49,sceDisplayWaitVblankCB, "sceDisplayWaitVblankCB"}, - {0x46F186C3,sceDisplayWaitVblankStartCB, "sceDisplayWaitVblankStartCB"}, - {0x77ed8b3a,sceDisplayWaitVblankStartMultiCB,"sceDisplayWaitVblankStartMultiCB"}, + {0x36CDFADE,WrapU_V, "sceDisplayWaitVblank"}, + {0x984C27E7,WrapU_V, "sceDisplayWaitVblankStart"}, + {0x40f1469c,WrapU_V, "sceDisplayWaitVblankStartMulti"}, + {0x8EB9EC49,WrapU_V, "sceDisplayWaitVblankCB"}, + {0x46F186C3,WrapU_V, "sceDisplayWaitVblankStartCB"}, + {0x77ed8b3a,WrapU_V,"sceDisplayWaitVblankStartMultiCB"}, {0xdba6c4c4,WrapF_V,"sceDisplayGetFramePerSec"}, {0x773dd3a3,sceDisplayGetCurrentHcount,"sceDisplayGetCurrentHcount"}, {0x210eab3a,sceDisplayGetAccumulatedHcount,"sceDisplayGetAccumulatedHcount"},