3#include "absl/strings/numbers.h"
4#include "absl/strings/str_format.h"
13 auto palette_id_str = parser.
GetString(
"palette").value();
16 if (!absl::SimpleHexAtoi(palette_id_str, &palette_id)) {
17 return absl::InvalidArgumentError(
18 "Invalid palette ID format. Must be hex.");
22 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
26 formatter.
AddField(
"total_colors", 16);
27 formatter.
AddField(
"status",
"not_implemented");
29 "Palette color retrieval requires ROM palette parsing");
32 for (
int i = 0; i < 16; ++i) {
33 formatter.
AddArrayItem(absl::StrFormat(
"Color %d: #000000", i));
38 return absl::OkStatus();
44 auto palette_id_str = parser.
GetString(
"palette").value();
45 auto index_str = parser.
GetString(
"index").value();
46 auto color_str = parser.
GetString(
"color").value();
48 int palette_id, color_index;
49 if (!absl::SimpleHexAtoi(palette_id_str, &palette_id) ||
50 !absl::SimpleAtoi(index_str, &color_index)) {
51 return absl::InvalidArgumentError(
"Invalid palette ID or index format.");
55 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
56 formatter.
AddField(
"color_index", color_index);
57 formatter.
AddField(
"color_value", color_str);
61 formatter.
AddField(
"status",
"not_implemented");
63 "Palette color setting requires ROM palette writing");
66 return absl::OkStatus();
72 auto palette_id_str = parser.
GetString(
"palette").value_or(
"all");
76 if (palette_id_str ==
"all") {
77 formatter.
AddField(
"analysis_type",
"All Palettes");
78 formatter.
AddField(
"total_palettes", 32);
81 if (!absl::SimpleHexAtoi(palette_id_str, &palette_id)) {
82 return absl::InvalidArgumentError(
83 "Invalid palette ID format. Must be hex.");
85 formatter.
AddField(
"analysis_type",
"Single Palette");
86 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
91 formatter.
AddField(
"status",
"not_implemented");
93 "Palette analysis requires color analysis algorithms");
96 return absl::OkStatus();
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
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)