3#include "absl/strings/numbers.h"
4#include "absl/strings/str_format.h"
16 auto palette_id_str = parser.
GetString(
"palette").value();
19 if (!ParseHexString(palette_id_str, &palette_id)) {
20 return absl::InvalidArgumentError(
21 "Invalid palette ID format. Must be hex.");
25 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
29 formatter.
AddField(
"total_colors", 16);
30 formatter.
AddField(
"status",
"not_implemented");
32 "Palette color retrieval requires ROM palette parsing");
35 for (
int i = 0; i < 16; ++i) {
36 formatter.
AddArrayItem(absl::StrFormat(
"Color %d: #000000", i));
41 return absl::OkStatus();
47 auto palette_id_str = parser.
GetString(
"palette").value();
48 auto index_str = parser.
GetString(
"index").value();
49 auto color_str = parser.
GetString(
"color").value();
51 int palette_id, color_index;
52 if (!ParseHexString(palette_id_str, &palette_id) ||
53 !absl::SimpleAtoi(index_str, &color_index)) {
54 return absl::InvalidArgumentError(
"Invalid palette ID or index format.");
58 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
59 formatter.
AddField(
"color_index", color_index);
60 formatter.
AddField(
"color_value", color_str);
64 formatter.
AddField(
"status",
"not_implemented");
66 "Palette color setting requires ROM palette writing");
69 return absl::OkStatus();
75 auto palette_id_str = parser.
GetString(
"palette").value_or(
"all");
79 if (palette_id_str ==
"all") {
80 formatter.
AddField(
"analysis_type",
"All Palettes");
81 formatter.
AddField(
"total_palettes", 32);
84 if (!ParseHexString(palette_id_str, &palette_id)) {
85 return absl::InvalidArgumentError(
86 "Invalid palette ID format. Must be hex.");
88 formatter.
AddField(
"analysis_type",
"Single Palette");
89 formatter.
AddField(
"palette_id", absl::StrFormat(
"0x%02X", palette_id));
94 formatter.
AddField(
"status",
"not_implemented");
96 "Palette analysis requires color analysis algorithms");
99 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)
bool ParseHexString(absl::string_view str, int *out)