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