3#include "absl/strings/numbers.h"
4#include "absl/strings/str_format.h"
12 auto palette_id_str = parser.
GetString(
"palette").value();
15 if (!absl::SimpleHexAtoi(palette_id_str, &palette_id)) {
16 return absl::InvalidArgumentError(
17 "Invalid palette ID format. Must be hex.");
21 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
25 formatter.
AddField(
"total_colors", 16);
26 formatter.
AddField(
"status",
"not_implemented");
27 formatter.
AddField(
"message",
"Palette color retrieval requires ROM palette parsing");
30 for (
int i = 0; i < 16; ++i) {
31 formatter.
AddArrayItem(absl::StrFormat(
"Color %d: #000000", i));
36 return absl::OkStatus();
41 auto palette_id_str = parser.
GetString(
"palette").value();
42 auto index_str = parser.
GetString(
"index").value();
43 auto color_str = parser.
GetString(
"color").value();
45 int palette_id, color_index;
46 if (!absl::SimpleHexAtoi(palette_id_str, &palette_id) ||
47 !absl::SimpleAtoi(index_str, &color_index)) {
48 return absl::InvalidArgumentError(
49 "Invalid palette ID or index format.");
53 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
54 formatter.
AddField(
"color_index", color_index);
55 formatter.
AddField(
"color_value", color_str);
59 formatter.
AddField(
"status",
"not_implemented");
60 formatter.
AddField(
"message",
"Palette color setting requires ROM palette writing");
63 return absl::OkStatus();
68 auto palette_id_str = parser.
GetString(
"palette").value_or(
"all");
72 if (palette_id_str ==
"all") {
73 formatter.
AddField(
"analysis_type",
"All Palettes");
74 formatter.
AddField(
"total_palettes", 32);
77 if (!absl::SimpleHexAtoi(palette_id_str, &palette_id)) {
78 return absl::InvalidArgumentError(
79 "Invalid palette ID format. Must be hex.");
81 formatter.
AddField(
"analysis_type",
"Single Palette");
82 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
87 formatter.
AddField(
"status",
"not_implemented");
88 formatter.
AddField(
"message",
"Palette analysis requires color analysis algorithms");
91 return absl::OkStatus();
The Rom class is used to load, save, and modify Rom data.
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.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
Utility for parsing common CLI argument patterns.
std::optional< std::string > GetString(const std::string &name) const
Parse a named argument (e.g., –format=json or –format json)
Main namespace for the application.