private void addFunctionNid(int moduleAddress, SceModule module, string name) { int nid = HLEModuleManager.Instance.getNIDFromFunctionName(name); if (nid != 0) { int address = module.text_addr + moduleAddress; LoadCoreForKernelModule.addFunctionNid(address, nid); } }
private void addFunctionNames(SceModule rebootModule) { // These function names are taken from uOFW (https://github.com/uofw/uofw) LoadCoreForKernelModule.addFunctionName("sceInit", 0x0080, "sceInit.patchGames"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x0218, "sceInit.InitCBInit"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x02E0, "sceInit.ExitInit"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x03F4, "sceInit.ExitCheck"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x0438, "sceInit.PowerUnlock"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x048C, "sceInit.invoke_init_callback"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x05F0, "sceInit.sub_05F0"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x06A8, "sceInit.CleanupPhase1"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x0790, "sceInit.CleanupPhase2"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x08F8, "sceInit.ProtectHandling"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x0CFC, "sceInit.sub_0CFC_IsModuleInUserPartition"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x0D4C, "sceInit.ClearFreeBlock"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x0DD0, "sceInit.sub_0DD0_IsApplicationTypeGame"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x1038, "sceInit.LoadModuleBufferAnchorInBtcnf"); LoadCoreForKernelModule.addFunctionName("sceInit", 0x1240, "sceInit.InitThreadEntry"); LoadCoreForKernelModule.addFunctionName("sceLoaderCore", 0x56B8, "sceLoaderCore.PspUncompress"); LoadCoreForKernelModule.addFunctionName("sceGE_Manager", 0x0258, "sceGE_Manager.sceGeInit"); LoadCoreForKernelModule.addFunctionName("sceMeCodecWrapper", 0x1C04, "sceMeCodecWrapper.decrypt"); LoadCoreForKernelModule.addFunctionName("sceAudio_Driver", 0x0000, "sceAudio_Driver.updateAudioBuf"); LoadCoreForKernelModule.addFunctionName("sceAudio_Driver", 0x137C, "sceAudio_Driver.audioOutput"); LoadCoreForKernelModule.addFunctionName("sceAudio_Driver", 0x0530, "sceAudio_Driver.audioOutputDmaCb"); LoadCoreForKernelModule.addFunctionName("sceAudio_Driver", 0x01EC, "sceAudio_Driver.dmaUpdate"); LoadCoreForKernelModule.addFunctionName("sceAudio_Driver", 0x1970, "sceAudio_Driver.audioIntrHandler"); LoadCoreForKernelModule.addFunctionName("sceAudio_Driver", 0x02B8, "sceAudio_Driver.audioMixerThread"); LoadCoreForKernelModule.addFunctionName("sceSYSCON_Driver", 0x0A10, "sceSYSCON_Driver._sceSysconGpioIntr"); LoadCoreForKernelModule.addFunctionName("sceSYSCON_Driver", 0x2434, "sceSYSCON_Driver._sceSysconPacketEnd"); LoadCoreForKernelModule.addFunctionName("sceDisplay_Service", 0x04EC, "sceDisplay_Service.sceDisplayInit"); LoadCoreForKernelModule.addFunctionName("scePower_Service", 0x0000, "scePower_Service.scePowerInit"); LoadCoreForKernelModule.addFunctionName("sceHP_Remote_Driver", 0x0704, "sceHP_Remote_Driver.sceHpRemoteThreadEntry"); LoadCoreForKernelModule.addFunctionName("sceLowIO_Driver", 0x9C7C, "sceNandTransferDataToNandBuf"); // Mapping of subroutines defined in // https://github.com/uofw/uofw/blob/master/src/reboot/unk.c // and https://github.com/uofw/uofw/blob/master/src/reboot/nand.c addFunctionNid(0x0000EFCC, rebootModule, "sceNandInit2"); addFunctionNid(0x0000F0C4, rebootModule, "sceNandIsReady"); addFunctionNid(0x0000F0D4, rebootModule, "sceNandSetWriteProtect"); addFunctionNid(0x0000F144, rebootModule, "sceNandLock"); addFunctionNid(0x0000F198, rebootModule, "sceNandReset"); addFunctionNid(0x0000F234, rebootModule, "sceNandReadId"); addFunctionNid(0x0000F28C, rebootModule, "sceNandReadAccess"); addFunctionNid(0x0000F458, rebootModule, "sceNandWriteAccess"); addFunctionNid(0x0000F640, rebootModule, "sceNandEraseBlock"); addFunctionNid(0x0000F72C, rebootModule, "sceNandReadExtraOnly"); addFunctionNid(0x0000F8A8, rebootModule, "sceNandReadStatus"); addFunctionNid(0x0000F8DC, rebootModule, "sceNandSetScramble"); addFunctionNid(0x0000F8EC, rebootModule, "sceNandReadPages"); addFunctionNid(0x0000F930, rebootModule, "sceNandWritePages"); addFunctionNid(0x0000F958, rebootModule, "sceNandReadPagesRawExtra"); addFunctionNid(0x0000F974, rebootModule, "sceNandWritePagesRawExtra"); addFunctionNid(0x0000F998, rebootModule, "sceNandReadPagesRawAll"); addFunctionNid(0x0000F9D0, rebootModule, "sceNandTransferDataToNandBuf"); addFunctionNid(0x0000FC40, rebootModule, "sceNandIntrHandler"); addFunctionNid(0x0000FF60, rebootModule, "sceNandTransferDataFromNandBuf"); addFunctionNid(0x000103C8, rebootModule, "sceNandWriteBlockWithVerify"); addFunctionNid(0x0001047C, rebootModule, "sceNandReadBlockWithRetry"); addFunctionNid(0x00010500, rebootModule, "sceNandVerifyBlockWithRetry"); addFunctionNid(0x00010650, rebootModule, "sceNandEraseBlockWithRetry"); addFunctionNid(0x000106C4, rebootModule, "sceNandIsBadBlock"); addFunctionNid(0x00010750, rebootModule, "sceNandDoMarkAsBadBlock"); addFunctionNid(0x000109DC, rebootModule, "sceNandDetectChipMakersBBM"); addFunctionNid(0x00010D1C, rebootModule, "sceNandGetPageSize"); addFunctionNid(0x00010D28, rebootModule, "sceNandGetPagesPerBlock"); addFunctionNid(0x00010D34, rebootModule, "sceNandGetTotalBlocks"); }