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 { return "Run emulator execution"; }
32 std::string GetUsage() const {
33 return "emulator-run [--until <breakpoint>] [--format <json|text>]";
34 }
35
36 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
37 return absl::OkStatus();
38 }
39
40 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
41 resources::OutputFormatter& formatter) override;
42};
43
45 public:
46 std::string GetName() const { return "emulator-pause"; }
47 std::string GetDescription() const { return "Pause emulator execution"; }
48 std::string GetUsage() const {
49 return "emulator-pause [--format <json|text>]";
50 }
51
52 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
53 return absl::OkStatus();
54 }
55
56 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
57 resources::OutputFormatter& formatter) override;
58};
59
61 public:
62 std::string GetName() const { return "emulator-reset"; }
63 std::string GetDescription() const {
64 return "Reset emulator to initial state";
65 }
66 std::string GetUsage() const {
67 return "emulator-reset [--format <json|text>]";
68 }
69
70 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
71 return absl::OkStatus();
72 }
73
74 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
75 resources::OutputFormatter& formatter) override;
76};
77
79 public:
80 std::string GetName() const { return "emulator-get-state"; }
81 std::string GetDescription() const { return "Get current emulator state"; }
82 std::string GetUsage() const {
83 return "emulator-get-state [--format <json|text>]";
84 }
85
86 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
87 return absl::OkStatus();
88 }
89
90 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
91 resources::OutputFormatter& formatter) override;
92};
93
95 public:
96 std::string GetName() const { return "emulator-set-breakpoint"; }
97 std::string GetDescription() const {
98 return "Set a breakpoint at specified address";
99 }
100 std::string GetUsage() const {
101 return "emulator-set-breakpoint --address <address> [--condition "
102 "<condition>] [--format <json|text>]";
103 }
104
105 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
106 return parser.RequireArgs({"address"});
107 }
108
109 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
110 resources::OutputFormatter& formatter) override;
111};
112
114 public:
115 std::string GetName() const { return "emulator-clear-breakpoint"; }
116 std::string GetDescription() const {
117 return "Clear a breakpoint at specified address";
118 }
119 std::string GetUsage() const {
120 return "emulator-clear-breakpoint --address <address> [--format "
121 "<json|text>]";
122 }
123
124 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
125 return parser.RequireArgs({"address"});
126 }
127
128 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
129 resources::OutputFormatter& formatter) override;
130};
131
133 public:
134 std::string GetName() const { return "emulator-list-breakpoints"; }
135 std::string GetDescription() const { return "List all active breakpoints"; }
136 std::string GetUsage() const {
137 return "emulator-list-breakpoints [--format <json|text>]";
138 }
139
140 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
141 return absl::OkStatus();
142 }
143
144 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
145 resources::OutputFormatter& formatter) override;
146};
147
149 public:
150 std::string GetName() const { return "emulator-read-memory"; }
151 std::string GetDescription() const { return "Read memory from emulator"; }
152 std::string GetUsage() const {
153 return "emulator-read-memory --address <address> [--length <length>] "
154 "[--format <json|text>]";
155 }
156
157 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
158 return parser.RequireArgs({"address"});
159 }
160
161 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
162 resources::OutputFormatter& formatter) override;
163};
164
166 public:
167 std::string GetName() const { return "emulator-write-memory"; }
168 std::string GetDescription() const { return "Write memory to emulator"; }
169 std::string GetUsage() const {
170 return "emulator-write-memory --address <address> --data <data> [--format "
171 "<json|text>]";
172 }
173
174 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
175 return parser.RequireArgs({"address", "data"});
176 }
177
178 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
179 resources::OutputFormatter& formatter) override;
180};
181
183 public:
184 std::string GetName() const { return "emulator-get-registers"; }
185 std::string GetDescription() const { return "Get emulator register values"; }
186 std::string GetUsage() const {
187 return "emulator-get-registers [--format <json|text>]";
188 }
189
190 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
191 return absl::OkStatus();
192 }
193
194 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
195 resources::OutputFormatter& formatter) override;
196};
197
199 public:
200 std::string GetName() const { return "emulator-get-metrics"; }
201 std::string GetDescription() const {
202 return "Get emulator performance metrics";
203 }
204 std::string GetUsage() const {
205 return "emulator-get-metrics [--format <json|text>]";
206 }
207
208 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
209 return absl::OkStatus();
210 }
211
212 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
213 resources::OutputFormatter& formatter) override;
214};
215
217 public:
218 std::string GetName() const { return "emulator-press-buttons"; }
219 std::string GetDescription() const {
220 return "Press and release emulator buttons";
221 }
222 std::string GetUsage() const {
223 return "emulator-press-buttons --buttons <button1>,<button2>,...";
224 }
225 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
226 return parser.RequireArgs({"buttons"});
227 }
228 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
229 resources::OutputFormatter& formatter) override;
230};
231
233 public:
234 std::string GetName() const { return "emulator-release-buttons"; }
235 std::string GetDescription() const {
236 return "Release currently held emulator buttons";
237 }
238 std::string GetUsage() const {
239 return "emulator-release-buttons --buttons <button1>,<button2>,...";
240 }
241 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
242 return parser.RequireArgs({"buttons"});
243 }
244 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
245 resources::OutputFormatter& formatter) override;
246};
247
249 public:
250 std::string GetName() const { return "emulator-hold-buttons"; }
251 std::string GetDescription() const {
252 return "Hold emulator buttons for a specified duration";
253 }
254 std::string GetUsage() const {
255 return "emulator-hold-buttons --buttons <button1>,<button2>,... --duration "
256 "<ms>";
257 }
258 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
259 return parser.RequireArgs({"buttons", "duration"});
260 }
261 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
262 resources::OutputFormatter& formatter) override;
263};
264
265} // namespace handlers
266} // namespace cli
267} // namespace yaze
268
269#endif // YAZE_SRC_CLI_HANDLERS_EMULATOR_COMMANDS_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:24
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.