gdbstub_plugin/src/main.cpp

88 lines
1.7 KiB
C++
Raw Normal View History

2018-09-24 10:43:20 +02:00
#include "cafe/coreinit.h"
2022-02-08 14:44:53 +01:00
#include "cafe/nn_act.h"
#include "cafe/nn_save.h"
2018-09-24 10:43:20 +02:00
#include "cafe/nsysnet.h"
2022-02-08 14:44:53 +01:00
#include "cafe/sysapp.h"
2018-09-24 10:43:20 +02:00
#include "cafe/vpad.h"
#include "hbl.h"
2022-02-08 14:44:53 +01:00
#include "kernel.h"
2018-09-24 10:43:20 +02:00
#include "debugger.h"
#include "exceptions.h"
#include "menu.h"
2022-02-08 14:44:53 +01:00
#include "patches.h"
#include "screen.h"
2018-09-24 10:43:20 +02:00
bool GetTitleIdOnDisk(uint64_t *titleId) {
2022-02-08 14:44:53 +01:00
MCPTitleListType title;
uint32_t count = 0;
int handle = MCP_Open();
MCP_TitleListByDevice(handle, "odd", &count, &title, sizeof(title));
MCP_Close(handle);
if (count > 0) {
*titleId = title.titleId;
return true;
}
return false;
2018-09-24 10:43:20 +02:00
}
int MenuMain() {
2022-02-08 14:44:53 +01:00
Screen screen;
screen.init();
Menu menu(&screen);
Menu::Option result = menu.show();
if (result == Menu::Exit) return EXIT_SUCCESS;
else if (result == Menu::LaunchDisk) {
uint64_t titleId;
if (GetTitleIdOnDisk(&titleId)) {
SYSLaunchTitle(titleId);
} else {
menu.setMessage("Please insert a valid disk");
}
} else if (result == Menu::ReturnToMenu) {
SYSLaunchMenu();
}
return EXIT_RELAUNCH_ON_LOAD;
2018-09-24 10:43:20 +02:00
}
int DebuggerMain() {
2022-02-08 14:44:53 +01:00
ApplyPatches();
debugger = new Debugger();
debugger->start();
return EXIT_RELAUNCH_ON_LOAD;
2018-09-24 10:43:20 +02:00
}
bool firstRun = true;
int start() {
2022-02-08 14:44:53 +01:00
coreinitInitialize();
kernelInitialize();
vpadInitialize();
sysappInitialize();
nsysnetInitialize();
nnsaveInitialize();
nnactInitialize();
InstallExceptionHandlers();
int result;
if (firstRun) {
result = MenuMain();
} else {
result = DebuggerMain();
}
firstRun = false;
return result;
2018-09-24 10:43:20 +02:00
}
extern "C" int entryPoint() {
2022-02-08 14:44:53 +01:00
return start();
2018-09-24 10:43:20 +02:00
}