yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
emulator_commands.h
Go to the documentation of this file.
1#ifndef YAZE_SRC_CLI_HANDLERS_EMULATOR_COMMANDS_H_
2#define YAZE_SRC_CLI_HANDLERS_EMULATOR_COMMANDS_H_
3
5
6namespace yaze {
7namespace cli {
8namespace handlers {
9
11 public:
12 std::string GetName() const { return "emulator-step"; }
13 std::string GetDescription() const {
14 return "Step emulator execution by one instruction";
15 }
16 std::string GetUsage() const {
17 return "emulator-step [--count <count>] [--format <json|text>]";
18 }
19
20 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
21 return absl::OkStatus();
22 }
23
24 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
25 resources::OutputFormatter& formatter) override;
26};
27
29 public:
30 std::string GetName() const { return "emulator-run"; }
31 std::string GetDescription() const {
32 return "Run emulator execution";
33 }
34 std::string GetUsage() const {
35 return "emulator-run [--until <breakpoint>] [--format <json|text>]";
36 }
37
38 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
39 return absl::OkStatus();
40 }
41
42 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
43 resources::OutputFormatter& formatter) override;
44};
45
47 public:
48 std::string GetName() const { return "emulator-pause"; }
49 std::string GetDescription() const {
50 return "Pause emulator execution";
51 }
52 std::string GetUsage() const {
53 return "emulator-pause [--format <json|text>]";
54 }
55
56 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
57 return absl::OkStatus();
58 }
59
60 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
61 resources::OutputFormatter& formatter) override;
62};
63
65 public:
66 std::string GetName() const { return "emulator-reset"; }
67 std::string GetDescription() const {
68 return "Reset emulator to initial state";
69 }
70 std::string GetUsage() const {
71 return "emulator-reset [--format <json|text>]";
72 }
73
74 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
75 return absl::OkStatus();
76 }
77
78 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
79 resources::OutputFormatter& formatter) override;
80};
81
83 public:
84 std::string GetName() const { return "emulator-get-state"; }
85 std::string GetDescription() const {
86 return "Get current emulator state";
87 }
88 std::string GetUsage() const {
89 return "emulator-get-state [--format <json|text>]";
90 }
91
92 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
93 return absl::OkStatus();
94 }
95
96 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
97 resources::OutputFormatter& formatter) override;
98};
99
101 public:
102 std::string GetName() const { return "emulator-set-breakpoint"; }
103 std::string GetDescription() const {
104 return "Set a breakpoint at specified address";
105 }
106 std::string GetUsage() const {
107 return "emulator-set-breakpoint --address <address> [--condition <condition>] [--format <json|text>]";
108 }
109
110 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
111 return parser.RequireArgs({"address"});
112 }
113
114 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
115 resources::OutputFormatter& formatter) override;
116};
117
119 public:
120 std::string GetName() const { return "emulator-clear-breakpoint"; }
121 std::string GetDescription() const {
122 return "Clear a breakpoint at specified address";
123 }
124 std::string GetUsage() const {
125 return "emulator-clear-breakpoint --address <address> [--format <json|text>]";
126 }
127
128 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
129 return parser.RequireArgs({"address"});
130 }
131
132 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
133 resources::OutputFormatter& formatter) override;
134};
135
137 public:
138 std::string GetName() const { return "emulator-list-breakpoints"; }
139 std::string GetDescription() const {
140 return "List all active breakpoints";
141 }
142 std::string GetUsage() const {
143 return "emulator-list-breakpoints [--format <json|text>]";
144 }
145
146 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
147 return absl::OkStatus();
148 }
149
150 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
151 resources::OutputFormatter& formatter) override;
152};
153
155 public:
156 std::string GetName() const { return "emulator-read-memory"; }
157 std::string GetDescription() const {
158 return "Read memory from emulator";
159 }
160 std::string GetUsage() const {
161 return "emulator-read-memory --address <address> [--length <length>] [--format <json|text>]";
162 }
163
164 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
165 return parser.RequireArgs({"address"});
166 }
167
168 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
169 resources::OutputFormatter& formatter) override;
170};
171
173 public:
174 std::string GetName() const { return "emulator-write-memory"; }
175 std::string GetDescription() const {
176 return "Write memory to emulator";
177 }
178 std::string GetUsage() const {
179 return "emulator-write-memory --address <address> --data <data> [--format <json|text>]";
180 }
181
182 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
183 return parser.RequireArgs({"address", "data"});
184 }
185
186 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
187 resources::OutputFormatter& formatter) override;
188};
189
191 public:
192 std::string GetName() const { return "emulator-get-registers"; }
193 std::string GetDescription() const {
194 return "Get emulator register values";
195 }
196 std::string GetUsage() const {
197 return "emulator-get-registers [--format <json|text>]";
198 }
199
200 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
201 return absl::OkStatus();
202 }
203
204 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
205 resources::OutputFormatter& formatter) override;
206};
207
209 public:
210 std::string GetName() const { return "emulator-get-metrics"; }
211 std::string GetDescription() const {
212 return "Get emulator performance metrics";
213 }
214 std::string GetUsage() const {
215 return "emulator-get-metrics [--format <json|text>]";
216 }
217
218 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
219 return absl::OkStatus();
220 }
221
222 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
223 resources::OutputFormatter& formatter) override;
224};
225
227 public:
228 std::string GetName() const { return "emulator-press-buttons"; }
229 std::string GetDescription() const {
230 return "Press and release emulator buttons";
231 }
232 std::string GetUsage() const {
233 return "emulator-press-buttons --buttons <button1>,<button2>,...";
234 }
235 absl::Status ValidateArgs(
236 const resources::ArgumentParser& parser) override {
237 return parser.RequireArgs({"buttons"});
238 }
239 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
240 resources::OutputFormatter& formatter) override;
241};
242
244 public:
245 std::string GetName() const { return "emulator-release-buttons"; }
246 std::string GetDescription() const {
247 return "Release currently held emulator buttons";
248 }
249 std::string GetUsage() const {
250 return "emulator-release-buttons --buttons <button1>,<button2>,...";
251 }
252 absl::Status ValidateArgs(
253 const resources::ArgumentParser& parser) override {
254 return parser.RequireArgs({"buttons"});
255 }
256 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
257 resources::OutputFormatter& formatter) override;
258};
259
261 public:
262 std::string GetName() const { return "emulator-hold-buttons"; }
263 std::string GetDescription() const {
264 return "Hold emulator buttons for a specified duration";
265 }
266 std::string GetUsage() const {
267 return "emulator-hold-buttons --buttons <button1>,<button2>,... --duration "
268 "<ms>";
269 }
270 absl::Status ValidateArgs(
271 const resources::ArgumentParser& parser) override {
272 return parser.RequireArgs({"buttons", "duration"});
273 }
274 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
275 resources::OutputFormatter& formatter) override;
276};
277
278} // namespace handlers
279} // namespace cli
280} // namespace yaze
281
282#endif // YAZE_SRC_CLI_HANDLERS_EMULATOR_COMMANDS_H_
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:71
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetUsage() const
Get the command usage string.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetName() const
Get the command name.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetUsage() const
Get the command usage string.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetUsage() const
Get the command usage string.
std::string GetName() const
Get the command name.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetUsage() const
Get the command usage string.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetUsage() const
Get the command usage string.
std::string GetName() const
Get the command name.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetUsage() const
Get the command usage string.
std::string GetName() const
Get the command name.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
std::string GetName() const
Get the command name.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetUsage() const
Get the command usage string.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
Utility for parsing common CLI argument patterns.
absl::Status RequireArgs(const std::vector< std::string > &required) const
Validate that required arguments are present.
Base class for CLI command handlers.
Utility for consistent output formatting across commands.
Main namespace for the application.