diff --git a/Core/HLE/sceDisplay.cpp b/Core/HLE/sceDisplay.cpp index e494e3e74e..7056903cc7 100644 --- a/Core/HLE/sceDisplay.cpp +++ b/Core/HLE/sceDisplay.cpp @@ -259,6 +259,13 @@ void sceDisplayWaitVblankStartCB() __KernelCheckCallbacks(); } +void sceDisplayWaitVblankStartMultiCB() +{ + DEBUG_LOG(HLE,"sceDisplayWaitVblankStartMultiCB()"); + __KernelWaitCurThread(WAITTYPE_VBLANK, 0, 0, 0, true); + __KernelCheckCallbacks(); +} + void sceDisplayGetVcount() { // Too spammy @@ -297,7 +304,7 @@ const HLEFunction sceDisplay[] = {0x984C27E7,sceDisplayWaitVblankStart, "sceDisplayWaitVblankStart"}, {0x8EB9EC49,sceDisplayWaitVblankCB, "sceDisplayWaitVblankCB"}, {0x46F186C3,sceDisplayWaitVblankStartCB, "sceDisplayWaitVblankStartCB"}, - {0x77ed8b3a,0,"sceDisplayWaitVblankStartMultiCB"}, + {0x77ed8b3a,sceDisplayWaitVblankStartMultiCB,"sceDisplayWaitVblankStartMultiCB"}, {0xdba6c4c4,&WrapF_V,"sceDisplayGetFramePerSec"}, {0x773dd3a3,sceDisplayGetCurrentHcount,"sceDisplayGetCurrentHcount"}, diff --git a/Core/HLE/sceUmd.cpp b/Core/HLE/sceUmd.cpp index 2eb6a27c27..c7b521e399 100644 --- a/Core/HLE/sceUmd.cpp +++ b/Core/HLE/sceUmd.cpp @@ -149,7 +149,7 @@ u32 sceUmdGetDriveStat() void sceUmdWaitDriveStat() { u32 stat = PARAM(0); - ERROR_LOG(HLE,"UNIMPL 0=sceUmdWaitDriveStat(stat = %08x)", stat); + DEBUG_LOG(HLE,"HACK 0=sceUmdWaitDriveStat(stat = %08x)", stat); if ((stat & __KernelUmdGetState()) != stat) __KernelWaitCurThread(WAITTYPE_UMD, 0, stat, 0, 0); //__KernelWaitCurThread(WAITTYPE_UMD, 0); RETURN(0); @@ -159,18 +159,17 @@ void sceUmdWaitDriveStatWithTimer() { u32 stat = PARAM(0); u32 timeout = PARAM(1); - ERROR_LOG(HLE,"UNIMPL 0=sceUmdWaitDriveStatWithTimer(stat = %08x)", stat); + DEBUG_LOG(HLE,"HACK 0=sceUmdWaitDriveStatWithTimer(stat = %08x)", stat); if ((stat & __KernelUmdGetState()) != stat) __KernelWaitCurThread(WAITTYPE_UMD, 0, stat, 0, 0); //__KernelWaitCurThread(WAITTYPE_UMD, 0); - RETURN(stat); + RETURN(0); } void sceUmdWaitDriveStatCB() { u32 stat = PARAM(0); - ERROR_LOG(HLE,"UNIMPL 0=sceUmdWaitDriveStatCB(stat = %08x)", stat); - //__KernelRegisterCallback(THREAD_CALLBACK_UMD, cbid); + DEBUG_LOG(HLE,"HACK 0=sceUmdWaitDriveStatCB(stat = %08x)", stat); // Immediately notify RETURN(0); __KernelNotifyCallbackType(THREAD_CALLBACK_UMD, driveCBId, __KernelUmdGetState()&stat);