diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index c726ebeb27..3b390406f6 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -119,7 +119,6 @@ void sceKernelExitGame() else PanicAlert("Game exited"); Core_Stop(); - RETURN(0); } void sceKernelExitGameWithStatus() @@ -130,14 +129,12 @@ void sceKernelExitGameWithStatus() else PanicAlert("Game exited (with status)"); Core_Stop(); - RETURN(0); } -void sceKernelRegisterExitCallback() +u32 sceKernelRegisterExitCallback(u32 cbId) { - u32 cbId = PARAM(0); DEBUG_LOG(HLE,"NOP sceKernelRegisterExitCallback(%i)", cbId); - RETURN(0); + return 0; } // TODO: What? @@ -489,10 +486,10 @@ void Register_ThreadManForUser() const HLEFunction LoadExecForUser[] = { - {0x05572A5F,sceKernelExitGame, "sceKernelExitGame"}, //() - {0x4AC57943,sceKernelRegisterExitCallback,"sceKernelRegisterExitCallback"}, - {0xBD2F1094,sceKernelLoadExec,"sceKernelLoadExec"}, - {0x2AC9954B,sceKernelExitGameWithStatus,"sceKernelExitGameWithStatus"}, + {0x05572A5F,&WrapV_V, "sceKernelExitGame"}, //() + {0x4AC57943,&WrapU_U,"sceKernelRegisterExitCallback"}, + {0xBD2F1094,&WrapI_CU,"sceKernelLoadExec"}, + {0x2AC9954B,&WrapV_V,"sceKernelExitGameWithStatus"}, }; void Register_LoadExecForUser() diff --git a/Core/HLE/sceKernel.h b/Core/HLE/sceKernel.h index edc26a6d1b..dda9fa4e35 100644 --- a/Core/HLE/sceKernel.h +++ b/Core/HLE/sceKernel.h @@ -244,7 +244,7 @@ bool __KernelIsRunning(); bool __KernelLoadExec(const char *filename, SceKernelLoadExecParam *param); -void sceKernelLoadExec(); +int sceKernelLoadExec(const char *filename, u32 paramPtr); void sceKernelRegisterExitCallback(); void sceKernelExitGame(); diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index b89200c17b..1044d36e08 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -519,36 +519,35 @@ bool __KernelLoadExec(const char *filename, SceKernelLoadExecParam *param, std:: } //TODO: second param -void sceKernelLoadExec() +int sceKernelLoadExec(const char *filename, u32 paramPtr) { - const char *filename = Memory::GetCharPointer(PARAM(0)); SceKernelLoadExecParam *param = 0; - if (PARAM(1)) + if (paramPtr) { - param = (SceKernelLoadExecParam*)Memory::GetPointer(PARAM(1)); + param = (SceKernelLoadExecParam*)Memory::GetPointer(paramPtr); } PSPFileInfo info = pspFileSystem.GetFileInfo(filename); if (!info.exists) { ERROR_LOG(LOADER, "sceKernelLoadExec(%s, ...): File does not exist", filename); - RETURN(SCE_KERNEL_ERROR_NOFILE); - return; + return SCE_KERNEL_ERROR_NOFILE; } s64 size = (s64)info.size; if (!size) { ERROR_LOG(LOADER, "sceKernelLoadExec(%s, ...): File is size 0", filename); - RETURN(SCE_KERNEL_ERROR_ILLEGAL_OBJECT); - return; + return SCE_KERNEL_ERROR_ILLEGAL_OBJECT; } DEBUG_LOG(HLE,"sceKernelLoadExec(name=%s,...)", filename); std::string error_string; if (!__KernelLoadExec(filename, param, &error_string)) { ERROR_LOG(HLE, "sceKernelLoadExec failed: %s", error_string.c_str()); + return -1; } + return 0; } u32 sceKernelLoadModule(const char *name, u32 flags)