From 6db4ea2ad1ad20d80e57055d492e042aa8b04977 Mon Sep 17 00:00:00 2001 From: Ced2911 Date: Tue, 27 Nov 2012 10:18:36 +0100 Subject: [PATCH] less Memory::GetPointer --- Core/HLE/sceAtrac.cpp | 21 +++++++------------- Core/HLE/sceCtrl.cpp | 2 +- Core/HLE/sceDmac.cpp | 2 +- Core/HLE/sceIo.cpp | 35 +++++++++++++++++---------------- Core/HLE/sceKernelInterrupt.cpp | 2 +- Core/HLE/sceKernelMbx.cpp | 6 +++--- Core/HLE/sceKernelMemory.cpp | 18 +++++++---------- Core/HLE/sceKernelSemaphore.cpp | 3 +-- Core/HLE/sceKernelThread.cpp | 5 ++--- Core/HLE/sceSas.cpp | 2 +- Core/HLE/sceUtility.cpp | 20 ++++++++++--------- 11 files changed, 53 insertions(+), 63 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index a13bfc15ad..3bf7b1e950 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -104,8 +104,7 @@ void sceAtracGetMaxSample() void sceAtracGetNextDecodePosition() { ERROR_LOG(HLE, "UNIMPL sceAtracGetNextDecodePosition(%i, %08x)", PARAM(0), PARAM(1)); - u32 *outPos = (u32*)Memory::GetPointer(PARAM(1)); - *outPos = 1; + Memory::Write_U32(1, PARAM(1)); // outpos RETURN(0); } @@ -121,30 +120,24 @@ void sceAtracGetNextSample() void sceAtracGetRemainFrame() { ERROR_LOG(HLE, "sceAtracGetRemainFrame(%i, %08x)",PARAM(0),PARAM(1)); - u32 *outPos = (u32*)Memory::GetPointer(PARAM(1)); - *outPos = 12; + Memory::Write_U32(12, PARAM(1)); // outpos RETURN(0); } void sceAtracGetSecondBufferInfo() { ERROR_LOG(HLE, "sceAtracGetSecondBufferInfo(%i, %08x, %08x)",PARAM(0),PARAM(1),PARAM(2)); - u32 *outPos = (u32*)Memory::GetPointer(PARAM(1)); - u32 *outBytes = (u32*)Memory::GetPointer(PARAM(2)); - *outPos = 0; - *outBytes = 0x10000; + Memory::Write_U32(0, PARAM(1)); // outpos + Memory::Write_U32(0x10000, PARAM(2)); // outBytes RETURN(0); } void sceAtracGetSoundSample() { ERROR_LOG(HLE, "UNIMPL sceAtracGetSoundSample(%i, %08x, %08x, %08x)",PARAM(0),PARAM(1),PARAM(2),PARAM(3)); - u32 *outEndSample = (u32*)Memory::GetPointer(PARAM(1)); - u32 *outLoopStartSample = (u32*)Memory::GetPointer(PARAM(2)); - u32 *outLoopEndSample = (u32*)Memory::GetPointer(PARAM(2)); - *outEndSample = 0x10000; - *outLoopStartSample = -1; - *outLoopEndSample = -1; + Memory::Write_U32(0x10000, PARAM(1)); // outEndSample + Memory::Write_U32(-1, PARAM(2)); // outLoopStartSample + Memory::Write_U32(-1, PARAM(3)); // outLoopEndSample RETURN(0); } diff --git a/Core/HLE/sceCtrl.cpp b/Core/HLE/sceCtrl.cpp index 02511f7ad6..0e255bfdd7 100644 --- a/Core/HLE/sceCtrl.cpp +++ b/Core/HLE/sceCtrl.cpp @@ -157,7 +157,7 @@ u32 sceCtrlReadBufferPositive(u32 ctrlDataPtr, u32 nBufs) //if (ctrlInited) //{ SampleControls(); - memcpy(Memory::GetPointer(ctrlDataPtr), &ctrl, sizeof(_ctrl_data)); + Memory::WriteStruct(ctrlDataPtr, &ctrl); //} return 1; } diff --git a/Core/HLE/sceDmac.cpp b/Core/HLE/sceDmac.cpp index 921f62468e..7390351af1 100644 --- a/Core/HLE/sceDmac.cpp +++ b/Core/HLE/sceDmac.cpp @@ -22,7 +22,7 @@ u32 sceDmacMemcpy(u32 dst, u32 src, u32 size) { DEBUG_LOG(HLE, "sceDmacMemcpy(dest=%08x, src=%08x, size=%i)", dst, src, size); // TODO: check the addresses. - memcpy(Memory::GetPointer(dst), Memory::GetPointer(src), size); + Memory::Memcpy(dst, Memory::GetPointer(src), size); return 0; } diff --git a/Core/HLE/sceIo.cpp b/Core/HLE/sceIo.cpp index c8b0347f1f..771b2af590 100644 --- a/Core/HLE/sceIo.cpp +++ b/Core/HLE/sceIo.cpp @@ -250,9 +250,11 @@ void sceIoGetstat() const char *filename = Memory::GetCharPointer(PARAM(0)); u32 addr = PARAM(1); - SceIoStat *stat = (SceIoStat*)Memory::GetPointer(addr); + SceIoStat stat; PSPFileInfo info = pspFileSystem.GetFileInfo(filename); - __IoGetStat(stat, info); + __IoGetStat(&stat, info); + Memory::WriteStruct(addr, &stat); + DEBUG_LOG(HLE,"sceIoGetstat(%s, %08x) : sector = %08x",filename,addr,info.startSector); RETURN(0); @@ -793,9 +795,8 @@ void sceIoGetAsyncStat() FileNode *f = kernelObjects.Get(id, error); if (f) { - u64 *resPtr = (u64*)Memory::GetPointer(PARAM(2)); - *resPtr = f->asyncResult; - DEBUG_LOG(HLE,"%i = sceIoGetAsyncStat(%i, %i, %08x) (HACK)", (u32)*resPtr, id, PARAM(1), PARAM(2)); + Memory::Write_U64(f->asyncResult, PARAM(2)); + DEBUG_LOG(HLE,"%i = sceIoGetAsyncStat(%i, %i, %08x) (HACK)", (u32)f->asyncResult, id, PARAM(1), PARAM(2)); RETURN(0); //completed } else @@ -813,14 +814,14 @@ void sceIoWaitAsync() FileNode *f = kernelObjects.Get(id, error); if (f) { - u64 *resPtr = (u64*)Memory::GetPointer(PARAM(1)); - *resPtr = f->asyncResult; + u64 res = f->asyncResult; if (defAction) { - *resPtr = defAction(id, defParam); + res = defAction(id, defParam); defAction = 0; } - DEBUG_LOG(HLE,"%i = sceIoWaitAsync(%i, %08x) (HACK)", (u32)*resPtr, id, PARAM(1)); + Memory::Write_U64(res, PARAM(1)); + DEBUG_LOG(HLE,"%i = sceIoWaitAsync(%i, %08x) (HACK)", (u32)res, id, PARAM(1)); RETURN(0); //completed } else @@ -839,14 +840,14 @@ void sceIoWaitAsyncCB() FileNode *f = kernelObjects.Get(id, error); if (f) { - u64 *resPtr = (u64*)Memory::GetPointer(PARAM(1)); - *resPtr = f->asyncResult; + u64 res = f->asyncResult; if (defAction) { - *resPtr = defAction(id, defParam); + res = defAction(id, defParam); defAction = 0; } - DEBUG_LOG(HLE,"%i = sceIoWaitAsyncCB(%i, %08x) (HACK)", (u32)*resPtr, id, PARAM(1)); + Memory::Write_U64(res, PARAM(1)); + DEBUG_LOG(HLE,"%i = sceIoWaitAsyncCB(%i, %08x) (HACK)", (u32)res, id, PARAM(1)); RETURN(0); //completed } else @@ -862,14 +863,14 @@ void sceIoPollAsync() FileNode *f = kernelObjects.Get(id, error); if (f) { - u64 *resPtr = (u64*)Memory::GetPointer(PARAM(1)); - *resPtr = f->asyncResult; + u64 res = f->asyncResult; if (defAction) { - *resPtr = defAction(id, defParam); + res = defAction(id, defParam); defAction = 0; } - DEBUG_LOG(HLE,"%i = sceIoPollAsync(%i, %08x) (HACK)", (u32)*resPtr, id, PARAM(1)); + Memory::Write_U64(res, PARAM(1)); + DEBUG_LOG(HLE,"%i = sceIoPollAsync(%i, %08x) (HACK)", (u32)res, id, PARAM(1)); RETURN(0); //completed } else diff --git a/Core/HLE/sceKernelInterrupt.cpp b/Core/HLE/sceKernelInterrupt.cpp index 260d1606e2..e23207bff2 100644 --- a/Core/HLE/sceKernelInterrupt.cpp +++ b/Core/HLE/sceKernelInterrupt.cpp @@ -426,7 +426,7 @@ u32 sceKernelMemcpy(u32 dst, u32 src, u32 size) DEBUG_LOG(HLE, "sceKernelMemcpy(dest=%08x, src=%08x, size=%i)", dst, src, size); if (Memory::IsValidAddress(dst) && Memory::IsValidAddress(src+size)) // a bit of bound checking. Wrong?? { - memcpy(Memory::GetPointer(dst), Memory::GetPointer(src), size); + Memory::Memcpy(dst, Memory::GetPointer(src), size); } return 0; } diff --git a/Core/HLE/sceKernelMbx.cpp b/Core/HLE/sceKernelMbx.cpp index beb29cad3c..a6e45b63bf 100644 --- a/Core/HLE/sceKernelMbx.cpp +++ b/Core/HLE/sceKernelMbx.cpp @@ -246,7 +246,6 @@ int sceKernelCancelReceiveMbx(SceUID id, u32 numWaitingThreadsAddr) { u32 error; Mbx *m = kernelObjects.Get(id, error); - int *numWaitingThreads = (int*)Memory::GetPointer(numWaitingThreadsAddr); if (!m) { @@ -262,8 +261,9 @@ int sceKernelCancelReceiveMbx(SceUID id, u32 numWaitingThreadsAddr) __KernelResumeThreadFromWait(m->waitingThreads[i].first); } m->waitingThreads.clear(); - if (numWaitingThreads) - *numWaitingThreads = count; + + if (numWaitingThreadsAddr) + Memory::Write_U32(count, numWaitingThreadsAddr); return 0; } diff --git a/Core/HLE/sceKernelMemory.cpp b/Core/HLE/sceKernelMemory.cpp index 1493ad565a..452196087b 100644 --- a/Core/HLE/sceKernelMemory.cpp +++ b/Core/HLE/sceKernelMemory.cpp @@ -515,13 +515,12 @@ void sceKernelAllocateVpl() if (vpl) { u32 size = PARAM(1); - u32 *blockPtrPtr = (u32 *)Memory::GetPointer(PARAM(2)); - int timeOut = PARAM(2); + int timeOut = PARAM(3); DEBUG_LOG(HLE,"sceKernelAllocateVpl(vpl=%i, size=%i, ptrout= %08x , timeout=%i)", id, size, PARAM(2), timeOut); u32 addr = vpl->alloc.Alloc(size); if (addr != (u32)-1) { - *blockPtrPtr = addr; + Memory::Write_U32(addr, PARAM(2)); RETURN(0); } else @@ -545,13 +544,12 @@ void sceKernelAllocateVplCB() if (vpl) { u32 size = PARAM(1); - u32 *blockPtrPtr = (u32 *)Memory::GetPointer(PARAM(2)); - int timeOut = PARAM(2); + int timeOut = PARAM(3); DEBUG_LOG(HLE,"sceKernelAllocateVplCB(vpl=%i, size=%i, ptrout= %08x , timeout=%i)", id, size, PARAM(2), timeOut); u32 addr = vpl->alloc.Alloc(size); if (addr != (u32)-1) { - *blockPtrPtr = addr; + Memory::Write_U32(addr, PARAM(2)); RETURN(0); } else @@ -576,13 +574,12 @@ void sceKernelTryAllocateVpl() if (vpl) { u32 size = PARAM(1); - u32 *blockPtrPtr = (u32 *)Memory::GetPointer(PARAM(2)); - int timeOut = PARAM(2); + int timeOut = PARAM(3); DEBUG_LOG(HLE,"sceKernelAllocateVplCB(vpl=%i, size=%i, ptrout= %08x , timeout=%i)", id, size, PARAM(2), timeOut); u32 addr = vpl->alloc.Alloc(size); if (addr != (u32)-1) { - *blockPtrPtr = addr; + Memory::Write_U32(addr, PARAM(2)); RETURN(0); } else @@ -634,9 +631,8 @@ void sceKernelReferVplStatus() if (v) { DEBUG_LOG(HLE,"sceKernelReferVplStatus(%i, %08x)", id, PARAM(1)); - SceKernelVplInfo *info = (SceKernelVplInfo*)Memory::GetPointer(PARAM(1)); v->nv.freeSize = v->alloc.GetTotalFreeBytes(); - *info = v->nv; + Memory::WriteStruct(PARAM(1), &v->nv); } else { diff --git a/Core/HLE/sceKernelSemaphore.cpp b/Core/HLE/sceKernelSemaphore.cpp index 1b3a228947..2cb1a8b9c1 100644 --- a/Core/HLE/sceKernelSemaphore.cpp +++ b/Core/HLE/sceKernelSemaphore.cpp @@ -117,8 +117,7 @@ void sceKernelCancelSema(SceUID id, int newCount, u32 numWaitThreadsPtr) if (numWaitThreadsPtr) { - u32* numWaitThreads = (u32*)Memory::GetPointer(numWaitThreadsPtr); - *numWaitThreads = s->ns.numWaitThreads; + Memory::Write_U32(s->ns.numWaitThreads, numWaitThreadsPtr); } if (newCount < 0) diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index ea5fdf0671..c6bee53c8f 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -452,13 +452,12 @@ void sceKernelReferThreadStatus() if (t) { DEBUG_LOG(HLE,"sceKernelReferThreadStatus(%i, %08x)", threadID, PARAM(1)); - void *outptr = (void*)Memory::GetPointer(PARAM(1)); - u32 wantedSize = *(u32 *)outptr; + u32 wantedSize = Memory::Read_U32(PARAM(1)); u32 sz = sizeof(NativeThread); if (wantedSize) { t->nt.nativeSize = sz = std::min(sz, wantedSize); } - memcpy(outptr, &(t->nt), sz); + Memory::Memcpy(PARAM(1), &(t->nt), sz); RETURN(0); } else diff --git a/Core/HLE/sceSas.cpp b/Core/HLE/sceSas.cpp index d5bd7d2342..7f47ef87bf 100644 --- a/Core/HLE/sceSas.cpp +++ b/Core/HLE/sceSas.cpp @@ -211,7 +211,7 @@ void _sceSasCore() { u32 outAddr = PARAM(1); DEBUG_LOG(HLE,"0=sceSasCore(, %08x) (grain: %i samples)", outAddr, sas.grainSize); - memset(Memory::GetPointer(outAddr), 0, sas.grainSize * 2 * 2); + Memory::Memset(outAddr, 0, sas.grainSize * 2 * 2); sas.mix(outAddr); RETURN(0); } diff --git a/Core/HLE/sceUtility.cpp b/Core/HLE/sceUtility.cpp index e69a3734a8..63644b783a 100644 --- a/Core/HLE/sceUtility.cpp +++ b/Core/HLE/sceUtility.cpp @@ -559,36 +559,38 @@ u32 sceUtilityGetSystemParamString(u32 id, u32 destaddr, u32 unknownparam) u32 sceUtilityGetSystemParamInt(u32 id, u32 destaddr) { DEBUG_LOG(HLE,"sceUtilityGetSystemParamInt(%i, %08x)", id,destaddr); - u32 *outPtr = (u32*)Memory::GetPointer(destaddr); + u32 param = 0; switch (id) { case PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL: - *outPtr = PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC; + param = PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC; break; case PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE: - *outPtr = PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF; + param = PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF; break; case PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT: - *outPtr = PSP_SYSTEMPARAM_DATE_FORMAT_DDMMYYYY; + param = PSP_SYSTEMPARAM_DATE_FORMAT_DDMMYYYY; break; case PSP_SYSTEMPARAM_ID_INT_TIME_FORMAT: - *outPtr = PSP_SYSTEMPARAM_TIME_FORMAT_24HR; + param = PSP_SYSTEMPARAM_TIME_FORMAT_24HR; break; case PSP_SYSTEMPARAM_ID_INT_TIMEZONE: - *outPtr = 60; + param = 60; break; case PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS: - *outPtr = PSP_SYSTEMPARAM_TIME_FORMAT_24HR; + param = PSP_SYSTEMPARAM_TIME_FORMAT_24HR; break; case PSP_SYSTEMPARAM_ID_INT_LANGUAGE: - *outPtr = PSP_SYSTEMPARAM_LANGUAGE_ENGLISH; + param = PSP_SYSTEMPARAM_LANGUAGE_ENGLISH; break; case PSP_SYSTEMPARAM_ID_INT_UNKNOWN: - *outPtr = 1; + param = 1; break; default: return PSP_SYSTEMPARAM_RETVAL_FAIL; } + Memory::Write_U32(param, destaddr); + return 0; }