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

Base class for visual analysis tools. More...

#include <visual_analysis_tool.h>

Inherits yaze::cli::resources::CommandHandler.

Inherited by yaze::cli::agent::tools::PaletteUsageTool, yaze::cli::agent::tools::SpritesheetAnalysisTool, yaze::cli::agent::tools::TileHistogramTool, and yaze::cli::agent::tools::TileSimilarityTool.

Collaboration diagram for yaze::cli::agent::tools::VisualAnalysisBase:

Static Public Attributes

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 Member Functions

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 absl::Status ValidateArgs (const ArgumentParser &parser)=0
 Validate command arguments.
 
virtual absl::Status Execute (Rom *rom, const ArgumentParser &parser, OutputFormatter &formatter)=0
 Execute the command business logic.
 
virtual std::string GetDefaultFormat () const
 Get the default output format ("json" or "text")
 
virtual std::string GetOutputTitle () const
 Get the output title for formatting.
 

Additional Inherited Members

- 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 std::string GetName () const =0
 Get the command name.
 
virtual Descriptor Describe () const
 Provide metadata for TUI/help summaries.
 
virtual std::string GetUsage () const =0
 Get the command usage string.
 
virtual bool RequiresRom () const
 Check if the command requires a loaded ROM.
 
virtual bool RequiresLabels () const
 Check if the command requires ROM labels.
 
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 Attributes inherited from yaze::cli::resources::CommandHandler
Romrom_ = nullptr
 
project::YazeProjectproject_ = nullptr
 
core::AsarWrapperasar_wrapper_ = nullptr
 

Detailed Description

Base class for visual analysis tools.

Provides common functionality for tile and graphics analysis:

  • Pixel difference computation
  • Structural similarity metrics
  • Tile extraction from bitmaps
  • Empty region detection

Definition at line 81 of file visual_analysis_tool.h.

Member Function Documentation

◆ ComputePixelDifference()

double yaze::cli::agent::tools::VisualAnalysisBase::ComputePixelDifference ( const std::vector< uint8_t > & tile_a,
const std::vector< uint8_t > & tile_b ) const
protected

Compute simple pixel difference (Mean Absolute Error)

Parameters
tile_aFirst tile data (64 bytes for 8x8)
tile_bSecond tile data (64 bytes for 8x8)
Returns
Similarity score 0.0-100.0 (100 = identical)

Definition at line 32 of file visual_analysis_tool.cc.

Referenced by yaze::cli::agent::tools::TileSimilarityTool::Execute().

◆ ComputeStructuralSimilarity()

double yaze::cli::agent::tools::VisualAnalysisBase::ComputeStructuralSimilarity ( const std::vector< uint8_t > & tile_a,
const std::vector< uint8_t > & tile_b ) const
protected

Compute structural similarity index (SSIM-like)

Parameters
tile_aFirst tile data
tile_bSecond tile data
Returns
Similarity score 0.0-100.0 (100 = identical)

More robust than MAE for tiles with similar structure but different colors.

Definition at line 54 of file visual_analysis_tool.cc.

Referenced by yaze::cli::agent::tools::TileSimilarityTool::Execute().

◆ ExtractTile()

absl::StatusOr< std::vector< uint8_t > > yaze::cli::agent::tools::VisualAnalysisBase::ExtractTile ( Rom * rom,
int sheet_index,
int tile_index ) const
protected

Extract 8x8 tile data from ROM graphics.

Parameters
romROM to extract from
sheet_indexGraphics sheet index (0-222)
tile_indexTile index within sheet
Returns
Tile pixel data (64 bytes)

Definition at line 99 of file visual_analysis_tool.cc.

References ExtractTileAtPosition(), kMaxSheets, kSheetHeight, kSheetWidth, kTileHeight, kTilesPerRow, and kTileWidth.

Referenced by yaze::cli::agent::tools::TileSimilarityTool::Execute().

Here is the call graph for this function:

◆ ExtractTileAtPosition()

absl::StatusOr< std::vector< uint8_t > > yaze::cli::agent::tools::VisualAnalysisBase::ExtractTileAtPosition ( Rom * rom,
int sheet_index,
int x,
int y ) const
protected

Extract 8x8 tile at specific pixel coordinates.

Parameters
romROM to extract from
sheet_indexGraphics sheet index
xX coordinate in pixels
yY coordinate in pixels
Returns
Tile pixel data (64 bytes)

Definition at line 123 of file visual_analysis_tool.cc.

References yaze::gfx::Arena::Get(), yaze::gfx::Arena::gfx_sheets(), kSheetWidth, kTileHeight, kTilePixels, and kTileWidth.

Referenced by ExtractTile(), and yaze::cli::agent::tools::SpritesheetAnalysisTool::FindUnusedRegions().

Here is the call graph for this function:

◆ IsRegionEmpty()

bool yaze::cli::agent::tools::VisualAnalysisBase::IsRegionEmpty ( const std::vector< uint8_t > & data) const
protected

Check if a tile region is empty (all 0x00 or 0xFF)

Parameters
dataTile data to check
Returns
true if the region appears unused

Definition at line 178 of file visual_analysis_tool.cc.

Referenced by yaze::cli::agent::tools::SpritesheetAnalysisTool::FindUnusedRegions().

◆ GetTileCountForSheet()

int yaze::cli::agent::tools::VisualAnalysisBase::GetTileCountForSheet ( int sheet_index) const
protected

Get the number of tiles in a graphics sheet.

Parameters
sheet_indexGraphics sheet index
Returns
Number of 8x8 tiles

Definition at line 207 of file visual_analysis_tool.cc.

References kSheetHeight, kSheetWidth, kTileHeight, and kTileWidth.

Referenced by yaze::cli::agent::tools::TileSimilarityTool::Execute().

◆ FormatMatchesAsJson()

std::string yaze::cli::agent::tools::VisualAnalysisBase::FormatMatchesAsJson ( const std::vector< TileSimilarityMatch > & matches) const
protected

Format similarity matches as JSON.

Definition at line 212 of file visual_analysis_tool.cc.

Referenced by yaze::cli::agent::tools::TileSimilarityTool::Execute().

◆ FormatRegionsAsJson()

std::string yaze::cli::agent::tools::VisualAnalysisBase::FormatRegionsAsJson ( const std::vector< UnusedRegion > & regions) const
protected

Format unused regions as JSON.

Definition at line 238 of file visual_analysis_tool.cc.

Referenced by yaze::cli::agent::tools::SpritesheetAnalysisTool::Execute().

◆ FormatPaletteUsageAsJson()

std::string yaze::cli::agent::tools::VisualAnalysisBase::FormatPaletteUsageAsJson ( const std::vector< PaletteUsageStats > & stats) const
protected

Format palette usage as JSON.

Definition at line 270 of file visual_analysis_tool.cc.

Referenced by yaze::cli::agent::tools::PaletteUsageTool::Execute().

◆ FormatHistogramAsJson()

std::string yaze::cli::agent::tools::VisualAnalysisBase::FormatHistogramAsJson ( const std::vector< TileUsageEntry > & entries) const
protected

Format tile histogram as JSON.

Definition at line 299 of file visual_analysis_tool.cc.

Referenced by yaze::cli::agent::tools::TileHistogramTool::Execute().

Member Data Documentation

◆ kTileWidth

constexpr int yaze::cli::agent::tools::VisualAnalysisBase::kTileWidth = 8
staticconstexpr

◆ kTileHeight

constexpr int yaze::cli::agent::tools::VisualAnalysisBase::kTileHeight = 8
staticconstexpr

◆ kTilePixels

constexpr int yaze::cli::agent::tools::VisualAnalysisBase::kTilePixels = kTileWidth * kTileHeight
staticconstexpr

Definition at line 86 of file visual_analysis_tool.h.

Referenced by ExtractTileAtPosition().

◆ kSheetWidth

constexpr int yaze::cli::agent::tools::VisualAnalysisBase::kSheetWidth = 128
staticconstexpr

◆ kSheetHeight

constexpr int yaze::cli::agent::tools::VisualAnalysisBase::kSheetHeight = 32
staticconstexpr

◆ kTilesPerRow

constexpr int yaze::cli::agent::tools::VisualAnalysisBase::kTilesPerRow = kSheetWidth / kTileWidth
staticconstexpr

◆ kMaxSheets

constexpr int yaze::cli::agent::tools::VisualAnalysisBase::kMaxSheets = 223
staticconstexpr

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