yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::cli::agent::tools::PaletteUsageTool Class Reference

Analyze palette usage across maps. More...

#include <visual_analysis_tool.h>

Inheritance diagram for yaze::cli::agent::tools::PaletteUsageTool:
Collaboration diagram for yaze::cli::agent::tools::PaletteUsageTool:

Public Member Functions

std::string GetName () const override
 Get the command name.
 
std::string GetDescription () const
 
std::string GetUsage () const override
 Get the command usage string.
 
- Public Member Functions inherited from yaze::cli::resources::CommandHandler
virtual ~CommandHandler ()=default
 
absl::Status Run (const std::vector< std::string > &args, Rom *rom_context, std::string *captured_output=nullptr)
 Execute the command.
 
virtual Descriptor Describe () const
 Provide metadata for TUI/help summaries.
 
virtual bool RequiresRom () const
 Check if the command requires a loaded ROM.
 
virtual void SetProjectContext (project::YazeProject *project)
 Set the YazeProject context. Default implementation does nothing, override if tool needs project info.
 
virtual void SetAsarWrapper (core::AsarWrapper *asar_wrapper)
 Set the AsarWrapper context. Default implementation does nothing, override if tool needs Asar access.
 
virtual void SetRomContext (Rom *rom)
 Set the ROM context for tools that need ROM access. Default implementation stores the ROM pointer for subclass use.
 

Protected Member Functions

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.
 
bool RequiresLabels () const override
 Check if the command requires ROM labels.
 
- Protected Member Functions inherited from yaze::cli::agent::tools::VisualAnalysisBase
double ComputePixelDifference (const std::vector< uint8_t > &tile_a, const std::vector< uint8_t > &tile_b) const
 Compute simple pixel difference (Mean Absolute Error)
 
double ComputeStructuralSimilarity (const std::vector< uint8_t > &tile_a, const std::vector< uint8_t > &tile_b) const
 Compute structural similarity index (SSIM-like)
 
absl::StatusOr< std::vector< uint8_t > > ExtractTile (Rom *rom, int sheet_index, int tile_index) const
 Extract 8x8 tile data from ROM graphics.
 
absl::StatusOr< std::vector< uint8_t > > ExtractTileAtPosition (Rom *rom, int sheet_index, int x, int y) const
 Extract 8x8 tile at specific pixel coordinates.
 
bool IsRegionEmpty (const std::vector< uint8_t > &data) const
 Check if a tile region is empty (all 0x00 or 0xFF)
 
int GetTileCountForSheet (int sheet_index) const
 Get the number of tiles in a graphics sheet.
 
std::string FormatMatchesAsJson (const std::vector< TileSimilarityMatch > &matches) const
 Format similarity matches as JSON.
 
std::string FormatRegionsAsJson (const std::vector< UnusedRegion > &regions) const
 Format unused regions as JSON.
 
std::string FormatPaletteUsageAsJson (const std::vector< PaletteUsageStats > &stats) const
 Format palette usage as JSON.
 
std::string FormatHistogramAsJson (const std::vector< TileUsageEntry > &entries) const
 Format tile histogram as JSON.
 
- Protected Member Functions inherited from yaze::cli::resources::CommandHandler
virtual std::string GetDefaultFormat () const
 Get the default output format ("json" or "text")
 
virtual std::string GetOutputTitle () const
 Get the output title for formatting.
 

Private Member Functions

std::vector< PaletteUsageStatsAnalyzeOverworldPalettes (Rom *rom) const
 Analyze overworld palette usage.
 
std::vector< PaletteUsageStatsAnalyzeDungeonPalettes (Rom *rom) const
 Analyze dungeon palette usage.
 

Additional Inherited Members

- Static Public Attributes inherited from yaze::cli::agent::tools::VisualAnalysisBase
static constexpr int kTileWidth = 8
 
static constexpr int kTileHeight = 8
 
static constexpr int kTilePixels = kTileWidth * kTileHeight
 
static constexpr int kSheetWidth = 128
 
static constexpr int kSheetHeight = 32
 
static constexpr int kTilesPerRow = kSheetWidth / kTileWidth
 
static constexpr int kMaxSheets = 223
 
- Protected Attributes inherited from yaze::cli::resources::CommandHandler
Romrom_ = nullptr
 
project::YazeProjectproject_ = nullptr
 
core::AsarWrapperasar_wrapper_ = nullptr
 

Detailed Description

Analyze palette usage across maps.

Usage: visual-palette-usage [–type <overworld|dungeon|all>] [–format <json|text>]

Analyzes which palette indices are used across overworld maps and dungeon rooms to identify optimization opportunities.

Definition at line 259 of file visual_analysis_tool.h.

Member Function Documentation

◆ GetName()

std::string yaze::cli::agent::tools::PaletteUsageTool::GetName ( ) const
inlineoverridevirtual

Get the command name.

Override this to provide a unique identifier for the command. This is used for command registration and lookup.

Implements yaze::cli::resources::CommandHandler.

Definition at line 261 of file visual_analysis_tool.h.

◆ GetDescription()

std::string yaze::cli::agent::tools::PaletteUsageTool::GetDescription ( ) const
inline

Definition at line 263 of file visual_analysis_tool.h.

◆ GetUsage()

std::string yaze::cli::agent::tools::PaletteUsageTool::GetUsage ( ) const
inlineoverridevirtual

Get the command usage string.

Implements yaze::cli::resources::CommandHandler.

Definition at line 267 of file visual_analysis_tool.h.

◆ ValidateArgs()

absl::Status yaze::cli::agent::tools::PaletteUsageTool::ValidateArgs ( const resources::ArgumentParser & parser)
overrideprotectedvirtual

Validate command arguments.

Override this to check required arguments and perform custom validation. Called before Execute().

Implements yaze::cli::resources::CommandHandler.

Definition at line 559 of file visual_analysis_tool.cc.

◆ Execute()

absl::Status yaze::cli::agent::tools::PaletteUsageTool::Execute ( Rom * rom,
const resources::ArgumentParser & parser,
resources::OutputFormatter & formatter )
overrideprotectedvirtual

Execute the command business logic.

Override this to implement command-specific functionality. The ROM is guaranteed to be loaded and labels initialized.

Implements yaze::cli::resources::CommandHandler.

Definition at line 564 of file visual_analysis_tool.cc.

References AnalyzeDungeonPalettes(), AnalyzeOverworldPalettes(), yaze::cli::agent::tools::VisualAnalysisBase::FormatPaletteUsageAsJson(), and yaze::cli::resources::ArgumentParser::GetString().

Here is the call graph for this function:

◆ RequiresLabels()

bool yaze::cli::agent::tools::PaletteUsageTool::RequiresLabels ( ) const
inlineoverrideprotectedvirtual

Check if the command requires ROM labels.

Override to return false if labels are not needed.

Reimplemented from yaze::cli::resources::CommandHandler.

Definition at line 278 of file visual_analysis_tool.h.

◆ AnalyzeOverworldPalettes()

std::vector< PaletteUsageStats > yaze::cli::agent::tools::PaletteUsageTool::AnalyzeOverworldPalettes ( Rom * rom) const
private

Analyze overworld palette usage.

Definition at line 619 of file visual_analysis_tool.cc.

References yaze::cli::agent::tools::PaletteUsageStats::palette_index, and yaze::cli::agent::tools::PaletteUsageStats::usage_count.

Referenced by Execute().

◆ AnalyzeDungeonPalettes()

std::vector< PaletteUsageStats > yaze::cli::agent::tools::PaletteUsageTool::AnalyzeDungeonPalettes ( Rom * rom) const
private

The documentation for this class was generated from the following files: