summaryrefslogtreecommitdiff
path: root/apps/plugins/rockboy/rccmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/rockboy/rccmds.c')
-rw-r--r--apps/plugins/rockboy/rccmds.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/apps/plugins/rockboy/rccmds.c b/apps/plugins/rockboy/rccmds.c
new file mode 100644
index 0000000000..c9375b69b5
--- /dev/null
+++ b/apps/plugins/rockboy/rccmds.c
@@ -0,0 +1,122 @@
1
2
3
4
5#include "rockmacros.h"
6
7#include "defs.h"
8#include "rc.h"
9#include "hw.h"
10#include "emu.h"
11#include "save.h"
12#include "split.h"
13
14/*
15 * the set command is used to set rc-exported variables.
16 */
17
18static int cmd_set(int argc, char **argv)
19{
20 if (argc < 3)
21 return -1;
22 return rc_setvar(argv[1], argc-2, argv+2);
23}
24
25
26
27/*
28 * the following commands allow keys to be bound to perform rc commands.
29 */
30
31static int cmd_reset(int argc, char **argv)
32{
33 (void)argc;
34 (void)argv;
35 emu_reset();
36 return 0;
37}
38
39static int cmd_savestate(int argc, char **argv)
40{
41 state_save(argc > 1 ? atoi(argv[1]) : -1);
42 return 0;
43}
44
45static int cmd_loadstate(int argc, char **argv)
46{
47 state_load(argc > 1 ? atoi(argv[1]) : -1);
48 return 0;
49}
50
51
52
53/*
54 * table of command names and the corresponding functions to be called
55 */
56
57rccmd_t rccmds[] =
58{
59 RCC("set", cmd_set),
60 RCC("reset", cmd_reset),
61 RCC("savestate", cmd_savestate),
62 RCC("loadstate", cmd_loadstate),
63 RCC_END
64};
65
66
67
68
69
70int rc_command(char *line)
71{
72 int i, argc, ret;
73 char *argv[128], linecopy[500];
74
75// linecopy = malloc(strlen(line)+1);
76 strcpy(linecopy, line);
77
78 argc = splitline(argv, (sizeof argv)/(sizeof argv[0]), linecopy);
79 if (!argc)
80 {
81// free(linecopy);
82 return -1;
83 }
84
85 for (i = 0; rccmds[i].name; i++)
86 {
87 if (!strcmp(argv[0], rccmds[i].name))
88 {
89 ret = rccmds[i].func(argc, argv);
90// free(linecopy);
91 return ret;
92 }
93 }
94
95 /* printf("unknown command: %s\n", argv[0]); */
96// free(linecopy);
97
98 return -1;
99}
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122