diff --git a/Core/HLE/sceCtrl.cpp b/Core/HLE/sceCtrl.cpp index 27bcfda8ff..8536bd65b4 100644 --- a/Core/HLE/sceCtrl.cpp +++ b/Core/HLE/sceCtrl.cpp @@ -195,10 +195,8 @@ void __CtrlSetRapidFire(bool state) emuRapidFire = state; } -int __CtrlReadSingleBuffer(u32 ctrlDataPtr, bool negative) +int __CtrlReadSingleBuffer(PSPPointer<_ctrl_data> data, bool negative) { - PSPPointer<_ctrl_data> data; - data = ctrlDataPtr; if (data.IsValid()) { *data = ctrlBufs[ctrlBufRead]; @@ -238,11 +236,10 @@ int __CtrlReadBuffer(u32 ctrlDataPtr, u32 nBufs, bool negative, bool peek) ctrlBufRead = (ctrlBuf - availBufs + NUM_CTRL_BUFFERS) % NUM_CTRL_BUFFERS; int done = 0; + PSPPointer<_ctrl_data> data; + data = ctrlDataPtr; for (u32 i = 0; i < availBufs; ++i) - { - done += __CtrlReadSingleBuffer(ctrlDataPtr, negative); - ctrlDataPtr += sizeof(_ctrl_data); - } + done += __CtrlReadSingleBuffer(data++, negative); if (peek) ctrlBufRead = resetRead; @@ -268,7 +265,8 @@ retry: if (wVal == 0) goto retry; - u32 ctrlDataPtr = __KernelGetWaitValue(threadID, error); + PSPPointer<_ctrl_data> ctrlDataPtr; + ctrlDataPtr = __KernelGetWaitValue(threadID, error); int retVal = __CtrlReadSingleBuffer(ctrlDataPtr, wVal == CTRL_WAIT_NEGATIVE); __KernelResumeThreadFromWait(threadID, retVal); }