diff --git a/Core/CwCheat.cpp b/Core/CwCheat.cpp index f8185c8c1d..67c39705a7 100644 --- a/Core/CwCheat.cpp +++ b/Core/CwCheat.cpp @@ -23,6 +23,8 @@ void __CheatInit() { activeCheatFile = CHEATS_DIR + "/" + gameTitle + ".ini"; #endif + CheatEvent = CoreTiming::RegisterEvent("CheatEvent", &hleCheat); + File::CreateFullPath(CHEATS_DIR); if (g_Config.bEnableCheats) { if (!File::Exists(activeCheatFile)) { @@ -33,7 +35,6 @@ void __CheatInit() { cheatEngine->CreateCodeList(); g_Config.bReloadCheats = false; - CheatEvent = CoreTiming::RegisterEvent("CheatEvent", &hleCheat); CoreTiming::ScheduleEvent(msToCycles(77), CheatEvent, 0); } } @@ -46,6 +47,16 @@ void __CheatShutdown() { } } +void __CheatDoState(PointerWrap &p) { + auto s = p.Section("CwCheat", 0, 1); + if (!s) { + return; + } + + p.Do(CheatEvent); + CoreTiming::RestoreRegisterEvent(CheatEvent, "CheatEvent", &hleCheat); +} + void hleCheat(u64 userdata, int cyclesLate) { CoreTiming::ScheduleEvent(msToCycles(77), CheatEvent, 0); diff --git a/Core/CwCheat.h b/Core/CwCheat.h index 1d26944399..52ff9ab058 100644 --- a/Core/CwCheat.h +++ b/Core/CwCheat.h @@ -9,8 +9,12 @@ #include "base/basictypes.h" #include "Core/MemMap.h" +class PointerWrap; + void __CheatInit(); void __CheatShutdown(); +void __CheatDoState(PointerWrap &p); + std::vector makeCodeParts(std::vector CodesList); class CWCheatEngine { diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index 222054052b..d77bf7aeab 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -247,6 +247,7 @@ void __KernelDoState(PointerWrap &p) __HeapDoState(p); __PPGeDoState(p); + __CheatDoState(p); } {