public virtual void initNewPsp(bool fromSyscall) { moduleLoaded = false; HLEModuleManager.Instance.stopModules(); NIDMapper.Instance.unloadAll(); RuntimeContext.reset(); if (!fromSyscall) { // Do not reset the profiler if we have been called from sceKernelLoadExec Profiler.reset(); GEProfiler.reset(); // Do not reset the clock if we have been called from sceKernelLoadExec Clock.reset(); } Processor.reset(); Scheduler.reset(); Memory mem = Memory.Instance; if (!fromSyscall) { // Clear all memory, including VRAM. mem.Initialise(); } else { // Clear all memory excepted VRAM. // E.g. screen is not cleared when executing syscall sceKernelLoadExec(). mem.memset(MemoryMap.START_SCRATCHPAD, (sbyte)0, MemoryMap.SIZE_SCRATCHPAD); mem.memset(MemoryMap.START_RAM, (sbyte)0, MemoryMap.SIZE_RAM); } Battery.initialize(); Wlan.initialize(); SceModule.ResetAllocator(); SceUidManager.reset(); HLEUidObjectMapping.reset(); ProOnlineNetworkAdapter.init(); if (State.fileLogger != null) { State.fileLogger.resetLogging(); } MemorySections.Instance.reset(); HLEModuleManager.Instance.init(); Managers.reset(); Modules.SysMemUserForUserModule.start(); Modules.SysMemUserForUserModule.FirmwareVersion = firmwareVersion; Modules.ThreadManForUserModule.start(); }