mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Merge pull request #14494 from unknownbrackets/debugger
Debugger: Expose API to reset game
This commit is contained in:
commit
d5d25d3da5
3 changed files with 36 additions and 1 deletions
|
@ -18,15 +18,48 @@
|
|||
#include "Core/Debugger/WebSocket/GameSubscriber.h"
|
||||
#include "Core/Debugger/WebSocket/WebSocketUtils.h"
|
||||
#include "Core/ELF/ParamSFO.h"
|
||||
#include "Core/Host.h"
|
||||
#include "Core/System.h"
|
||||
|
||||
DebuggerSubscriber *WebSocketGameInit(DebuggerEventHandlerMap &map) {
|
||||
map["game.reset"] = &WebSocketGameReset;
|
||||
map["game.status"] = &WebSocketGameStatus;
|
||||
map["version"] = &WebSocketVersion;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Reset emulation (game.reset)
|
||||
//
|
||||
// Use this if you need to break on start and do something before the game starts.
|
||||
//
|
||||
// Parameters:
|
||||
// - break: optional boolean, true to break CPU on start. Use cpu.resume afterward.
|
||||
//
|
||||
// Response (same event name) with no extra data or error.
|
||||
void WebSocketGameReset(DebuggerRequest &req) {
|
||||
if (!PSP_IsInited())
|
||||
return req.Fail("Game not running");
|
||||
|
||||
bool needBreak = false;
|
||||
if (!req.ParamBool("break", &needBreak, DebuggerParamType::OPTIONAL))
|
||||
return;
|
||||
|
||||
if (needBreak)
|
||||
PSP_CoreParameter().startBreak = true;
|
||||
|
||||
PSP_Shutdown();
|
||||
std::string resetError;
|
||||
if (!PSP_Init(PSP_CoreParameter(), &resetError)) {
|
||||
ERROR_LOG(BOOT, "Error resetting: %s", resetError.c_str());
|
||||
return req.Fail("Could not reset");
|
||||
}
|
||||
host->BootDone();
|
||||
host->UpdateDisassembly();
|
||||
|
||||
req.Respond();
|
||||
}
|
||||
|
||||
// Check game status (game.status)
|
||||
//
|
||||
// No parameters.
|
||||
|
|
|
@ -21,5 +21,6 @@
|
|||
|
||||
DebuggerSubscriber *WebSocketGameInit(DebuggerEventHandlerMap &map);
|
||||
|
||||
void WebSocketGameReset(DebuggerRequest &req);
|
||||
void WebSocketGameStatus(DebuggerRequest &req);
|
||||
void WebSocketVersion(DebuggerRequest &req);
|
||||
|
|
|
@ -468,7 +468,8 @@ bool PSP_InitUpdate(std::string *error_string) {
|
|||
}
|
||||
|
||||
bool PSP_Init(const CoreParameter &coreParam, std::string *error_string) {
|
||||
PSP_InitStart(coreParam, error_string);
|
||||
if (!PSP_InitStart(coreParam, error_string))
|
||||
return false;
|
||||
|
||||
while (!PSP_InitUpdate(error_string))
|
||||
sleep_ms(10);
|
||||
|
|
Loading…
Add table
Reference in a new issue