diff --git a/src/chkreg/Makefile b/src/chkreg/Makefile index c4bb6dc..14b395a 100644 --- a/src/chkreg/Makefile +++ b/src/chkreg/Makefile @@ -6,6 +6,6 @@ OBJS = chkreg.o #DEBUG = 1 -LIBS = -lThreadManForKernel -lsceIdStorage_driver -lpspsemaphore +LIBS = -lsceIdStorage_driver -lThreadManForKernel -lpspsemaphore include ../../lib/build.mak diff --git a/src/chkreg/chkreg.c b/src/chkreg/chkreg.c index f549ded..5ed0917 100644 --- a/src/chkreg/chkreg.c +++ b/src/chkreg/chkreg.c @@ -1,22 +1,41 @@ #include +#include SCE_MODULE_INFO("sceChkreg", SCE_MODULE_KERNEL | SCE_MODULE_KIRK_SEMAPHORE_LIB | SCE_MODULE_ATTR_EXCLUSIVE_LOAD | SCE_MODULE_ATTR_EXCLUSIVE_START, 1, 9); SCE_SDK_VERSION(SDK_VERSION); +typedef struct { + SceUID sema; +} g_chkreg_struct; + +g_chkreg_struct g_chkreg = {0}; + +// Declarations +s32 sceIdStorageReadLeaf(u16 key, void *buf); +s32 sceIdStorageLookup(u16 key, u32 offset, void *buf, u32 len); +s32 sceUtilsBufferCopyWithRange(void* outBuf, s32 outsize, void* inBuf, s32 insize, s32 cmd); + +s32 sub_00000000(void) +{ + return 0; +} + +s32 sub_00000128(s32 unk1, s32 unk2) +{ + return 0; +} + // Subroutine sub_00000190 - Address 0x00000190 s32 sub_00000190(void) { - s32 ret = SCE_ERROR_OK; - ret = sceIdStorageLookup(0x100, 0x38, 0xa80, 0xb8); - if (ret < 0) - return SCE_ERROR_NOT_FOUND; - - ret = sceIdStorageLookup(0x120, 0x38, 0xa80, 0xb8); - if (ret < 0) + if (sceIdStorageLookup(0x100, 0x38, 0xa80, 0xb8) < 0) return SCE_ERROR_NOT_FOUND; - return ret; + if (sceIdStorageLookup(0x120, 0x38, 0xa80, 0xb8) < 0) + return SCE_ERROR_NOT_FOUND; + + return SCE_ERROR_OK; } // Subroutine sub_0000020C - Address 0x0000020C @@ -44,6 +63,36 @@ s32 module_stop(SceSize args __attribute__((unused)), void *argp __attribute__(( } // Subroutine sceChkreg_driver_59F8491D - Address 0x00000438 -s32 sceChkregGetPsCode(u8 *code) { - +s32 sceChkregGetPsCode(u8 *code) +{ + return 0; +} + +// Subroutine sceChkreg_driver_54495B19 - Address 0x00000390 +s32 sceChkregCheckRegion(u32 unk1, u32 unk2) +{ + s32 ret = SCE_ERROR_SEMAPHORE; + + if (sceKernelWaitSema(g_chkreg.sema, 1, NULL) == 0) + { + if (/*(DAT_00000044 != 0) ||*/ (ret = sub_00000000(), ret == 0)) + ret = sub_00000128(0x80000000, (unk1 | unk2)); + + if (sceKernelSignalSema(g_chkreg.sema, 1) != 0) + ret = SCE_ERROR_SEMAPHORE; + } + + return ret; +} + +s32 sceChkreg_driver_6894A027(void) { + return 0; +} + +s32 sceChkreg_driver_7939C851(void) { + return 0; +} + +s32 sceChkreg_driver_9C6E1D34(void) { + return 0; }