diff --git a/pcsx2/IPC.cpp b/pcsx2/IPC.cpp index aaa0d8f455..0635472d25 100644 --- a/pcsx2/IPC.cpp +++ b/pcsx2/IPC.cpp @@ -36,6 +36,7 @@ #include "Common.h" #include "Memory.h" +#include "gui/AppSaveStates.h" #include "System/SysThreads.h" #include "svnrev.h" #include "IPC.h" @@ -390,6 +391,16 @@ SocketIPC::IPCBuffer SocketIPC::ParseCommand(char* buf, char* ret_buffer, u32 bu ret_cnt += 256; break; } + case MsgSaveState: + { + if (!m_vm->HasActiveMachine()) + goto error; + if (!SafetyChecks(buf_cnt, 1, ret_cnt, 0, buf_size)) + goto error; + StateCopy_SaveToSlot(FromArray(&buf[buf_cnt], 0)); + buf_cnt += 1; + break; + } default: { error: diff --git a/pcsx2/IPC.h b/pcsx2/IPC.h index 8c2306d939..2529319795 100644 --- a/pcsx2/IPC.h +++ b/pcsx2/IPC.h @@ -92,6 +92,7 @@ protected: MsgWrite32 = 6, /**< Write 32 bit value to memory. */ MsgWrite64 = 7, /**< Write 64 bit value to memory. */ MsgVersion = 8, /**< Returns PCSX2 version. */ + MsgSaveState = 9, /**< Saves a savestate. */ MsgUnimplemented = 0xFF /**< Unimplemented IPC message. */ };