Merge pull request #5497 from sum2012/patch-10

Add sceCtrl_driver ,sceDisplay_driver ,SysclibForKernel
This commit is contained in:
Henrik Rydgård 2014-02-20 11:20:06 +07:00
commit df3342fd9e
7 changed files with 73 additions and 0 deletions

View file

@ -323,5 +323,10 @@ void RegisterAllModules() {
Register_LoadExecForKernel();
Register_SysMemForKernel();
Register_sceMt19937();
Register_SysclibForKernel();
Register_sceCtrl_driver();
Register_sceDisplay_driver();
}

View file

@ -538,3 +538,8 @@ void Register_sceCtrl()
{
RegisterModule("sceCtrl", ARRAY_SIZE(sceCtrl), sceCtrl);
}
void Register_sceCtrl_driver()
{
RegisterModule("sceCtrl_driver", ARRAY_SIZE(sceCtrl), sceCtrl);
}

View file

@ -64,3 +64,5 @@ void __CtrlSetRapidFire(bool state);
u32 __CtrlPeekButtons();
void __CtrlPeekAnalog(int stick, float *x, float *y);
u32 __CtrlReadLatch();
void Register_sceCtrl_driver();

View file

@ -946,3 +946,7 @@ const HLEFunction sceDisplay[] = {
void Register_sceDisplay() {
RegisterModule("sceDisplay", ARRAY_SIZE(sceDisplay), sceDisplay);
}
void Register_sceDisplay_driver() {
RegisterModule("sceDisplay_driver", ARRAY_SIZE(sceDisplay), sceDisplay);
}

View file

@ -39,3 +39,5 @@ void __DisplayGetVPS(float *out_vps);
void __DisplayGetAveragedFPS(float *out_vps, float *out_fps);
int __DisplayGetVCount();
int __DisplayGetFlipCount();
void Register_sceDisplay_driver();

View file

@ -611,11 +611,65 @@ const HLEFunction Kernel_Library[] =
{0xfa835cde,WrapI_I<sceKernelGetTlsAddr>, "sceKernelGetTlsAddr"},
};
u32 sysclib_memcpy(u32 dst, u32 src, u32 size) {
ERROR_LOG(SCEKERNEL, "Untested sysclib_memcpy(dest=%08x, src=%08x, size=%i)", dst, src, size);
memcpy(Memory::GetPointer(dst), Memory::GetPointer(src), size);
return dst;
}
u32 sysclib_strcat(u32 dst, u32 src) {
ERROR_LOG(SCEKERNEL, "Untested sysclib_strcat(dest=%08x, src=%08x)", dst, src);
strcat((char *)Memory::GetPointer(dst), (char *)Memory::GetPointer(src));
return dst;
}
int sysclib_strcmp(u32 dst, u32 src) {
ERROR_LOG(SCEKERNEL, "Untested sysclib_strcmp(dest=%08x, src=%08x)", dst, src);
return strcmp((char *)Memory::GetPointer(dst), (char *)Memory::GetPointer(src));
}
u32 sysclib_strcpy(u32 dst, u32 src) {
ERROR_LOG(SCEKERNEL, "Untested sysclib_strcpy(dest=%08x, src=%08x)", dst, src);
strcpy((char *)Memory::GetPointer(dst), (char *)Memory::GetPointer(src));
return dst;
}
u32 sysclib_strlen(u32 src) {
ERROR_LOG(SCEKERNEL, "Untested sysclib_strlen(dest=%08x, src=%08x)", src);
return (u32)strlen(Memory::GetCharPointer(src));
}
int sysclib_memcmp(u32 dst, u32 src, u32 size) {
ERROR_LOG(SCEKERNEL, "Untested sysclib_memcmp(dest=%08x, src=%08x, size=%i)", dst, src, size);
return memcmp(Memory::GetCharPointer(dst), Memory::GetCharPointer(src), size);
}
int sysclib_sprintf(u32 dst, u32 fmt) {
ERROR_LOG(SCEKERNEL, "Unimpl sysclib_sprintf(dest=%08x, src=%08x)", dst, fmt);
// TODO
return sprintf((char *)Memory::GetPointer(dst), "%s", Memory::GetCharPointer(fmt));
}
const HLEFunction SysclibForKernel[] =
{
{0xAB7592FF, WrapU_UUU<sysclib_memcpy>, "memcpy"},
{0x476FD94A, WrapU_UU<sysclib_strcat>, "strcat"},
{0xC0AB8932, WrapI_UU<sysclib_strcmp>, "strcmp"},
{0xEC6F1CF2, WrapU_UU<sysclib_strcpy>, "strcpy"},
{0x52DF196C, WrapU_U<sysclib_strlen>, "strlen"},
{0x81D0D1F7, WrapI_UUU<sysclib_memcmp>, "memcmp"},
{0x7661e728, WrapI_UU<sysclib_sprintf>, "sprintf"},
};
void Register_Kernel_Library()
{
RegisterModule("Kernel_Library", ARRAY_SIZE(Kernel_Library), Kernel_Library);
}
void Register_SysclibForKernel()
{
RegisterModule("SysclibForKernel", ARRAY_SIZE(SysclibForKernel), SysclibForKernel);
}
const HLEFunction InterruptManager[] =
{

View file

@ -149,3 +149,4 @@ u32 sceKernelEnableSubIntr(u32 intrNumber, u32 subIntrNumber);
void Register_Kernel_Library();
void Register_InterruptManager();
void Register_SysclibForKernel();