all repos — mgba @ 55ba676d7c7fcc665d4b454e80db82428f4adea1

mGBA Game Boy Advance Emulator

src/gba/gba-cli.c (view raw)

 1#include "gba-cli.h"
 2
 3#include "gba-io.h"
 4#include "gba-thread.h"
 5
 6static void _GBACLIDebuggerInit(struct CLIDebuggerSystem*);
 7static void _GBACLIDebuggerDeinit(struct CLIDebuggerSystem*);
 8static uint32_t _GBACLIDebuggerLookupIdentifier(struct CLIDebuggerSystem*, const char* name, struct CLIDebugVector* dv);
 9
10struct CLIDebuggerCommandSummary _GBACLIDebuggerCommands[] = {
11	{ 0, 0, 0, 0 }
12};
13
14struct GBACLIDebugger* GBACLIDebuggerCreate(struct GBAThread* context) {
15	struct GBACLIDebugger* debugger = malloc(sizeof(struct GBACLIDebugger));
16	debugger->d.init = _GBACLIDebuggerInit;
17	debugger->d.deinit = _GBACLIDebuggerDeinit;
18	debugger->d.lookupIdentifier = _GBACLIDebuggerLookupIdentifier;
19
20	debugger->d.name = "Game Boy Advance";
21	debugger->d.commands = _GBACLIDebuggerCommands;
22
23	debugger->context = context;
24
25	return debugger;
26}
27
28static void _GBACLIDebuggerInit(struct CLIDebuggerSystem* debugger) {
29	UNUSED(debugger);
30}
31
32static void _GBACLIDebuggerDeinit(struct CLIDebuggerSystem* debugger) {
33	UNUSED(debugger);
34}
35
36static uint32_t _GBACLIDebuggerLookupIdentifier(struct CLIDebuggerSystem* debugger, const char* name, struct CLIDebugVector* dv) {
37	struct GBACLIDebugger* gbaDebugger = (struct GBACLIDebugger*) debugger;
38	int i;
39	for (i = 0; i < REG_MAX; i += 2) {
40		const char* reg = GBAIORegisterNames[i >> 1];
41		if (reg && strcasecmp(reg, name) == 0) {
42			return GBALoad16(gbaDebugger->context->gba->cpu, BASE_IO | i, 0);
43		}
44	}
45	dv->type = CLIDV_ERROR_TYPE;
46	return 0;
47}
48