yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::gfx::GraphicsOptimizer Class Reference

Comprehensive graphics optimization system for YAZE ROM hacking. More...

#include <graphics_optimizer.h>

Public Member Functions

void Initialize ()
 Initialize the graphics optimizer.
 
OptimizationResult OptimizeSheet (const std::vector< uint8_t > &sheet_data, int sheet_id, const SnesPalette &palette, OptimizationStrategy strategy=OptimizationStrategy::kBalanced)
 Optimize a single graphics sheet.
 
OptimizationResult OptimizeSheets (const std::unordered_map< int, std::vector< uint8_t > > &sheets, const std::unordered_map< int, SnesPalette > &palettes, OptimizationStrategy strategy=OptimizationStrategy::kBalanced)
 Optimize multiple graphics sheets.
 
SheetOptimizationData AnalyzeSheet (const std::vector< uint8_t > &sheet_data, int sheet_id, const SnesPalette &palette)
 Analyze graphics sheet for optimization opportunities.
 
std::unordered_map< int, SheetOptimizationDataGetOptimizationRecommendations (const std::unordered_map< int, std::vector< uint8_t > > &sheets, const std::unordered_map< int, SnesPalette > &palettes)
 Get optimization recommendations for all sheets.
 
OptimizationResult ApplyOptimizations (const std::unordered_map< int, SheetOptimizationData > &recommendations, std::unordered_map< int, std::vector< uint8_t > > &sheets, std::unordered_map< int, SnesPalette > &palettes)
 Apply optimization recommendations.
 
std::unordered_map< std::string, double > GetOptimizationStats () const
 Get optimization statistics.
 
void ClearCache ()
 Clear optimization cache.
 
void SetOptimizationParameters (float max_quality_loss=0.1f, size_t min_memory_savings=1024, float performance_threshold=0.05f)
 Set optimization parameters.
 

Static Public Member Functions

static GraphicsOptimizerGet ()
 

Private Member Functions

 GraphicsOptimizer ()=default
 
 ~GraphicsOptimizer ()=default
 
BppFormat DetermineOptimalFormat (const std::vector< uint8_t > &data, const SnesPalette &palette, OptimizationStrategy strategy)
 
float CalculateQualityLoss (BppFormat from_format, BppFormat to_format, const std::vector< uint8_t > &data)
 
size_t CalculateMemorySavings (BppFormat from_format, BppFormat to_format, const std::vector< uint8_t > &data)
 
float CalculatePerformanceGain (BppFormat from_format, BppFormat to_format)
 
bool ShouldOptimize (const SheetOptimizationData &data, OptimizationStrategy strategy)
 
std::string GenerateOptimizationReason (const SheetOptimizationData &data)
 
int CountUsedColors (const std::vector< uint8_t > &data, const SnesPalette &palette)
 
float CalculateColorEfficiency (const std::vector< uint8_t > &data, const SnesPalette &palette)
 
std::vector< int > AnalyzeColorDistribution (const std::vector< uint8_t > &data)
 
std::string GenerateCacheKey (const std::vector< uint8_t > &data, int sheet_id)
 
void UpdateOptimizationStats (const std::string &operation, double value)
 

Private Attributes

float max_quality_loss_
 
size_t min_memory_savings_
 
float performance_threshold_
 
std::unordered_map< std::string, double > optimization_stats_
 
std::unordered_map< std::string, SheetOptimizationDataoptimization_cache_
 

Detailed Description

Comprehensive graphics optimization system for YAZE ROM hacking.

The GraphicsOptimizer provides intelligent optimization of graphics data for Link to the Past ROM hacking workflows, balancing memory usage, performance, and visual quality.

Key Features:

  • Intelligent BPP format optimization based on actual color usage
  • Graphics sheet analysis and conversion recommendations
  • Memory usage optimization with quality preservation
  • Performance optimization through atlas rendering
  • Batch processing for multiple graphics sheets
  • Quality analysis and loss estimation

Optimization Strategies:

  • Memory Optimized: Minimize ROM size by using optimal BPP formats
  • Performance Optimized: Maximize rendering speed through atlas optimization
  • Quality Optimized: Preserve visual fidelity while optimizing
  • Balanced: Optimal balance of memory, performance, and quality

ROM Hacking Specific:

  • SNES-specific optimization patterns
  • Graphics sheet format analysis and conversion tracking
  • Palette optimization based on actual usage
  • Integration with existing YAZE graphics pipeline

Definition at line 86 of file graphics_optimizer.h.

Constructor & Destructor Documentation

◆ GraphicsOptimizer()

yaze::gfx::GraphicsOptimizer::GraphicsOptimizer ( )
privatedefault

◆ ~GraphicsOptimizer()

yaze::gfx::GraphicsOptimizer::~GraphicsOptimizer ( )
privatedefault

Member Function Documentation

◆ Get()

GraphicsOptimizer & yaze::gfx::GraphicsOptimizer::Get ( )
static

Definition at line 13 of file graphics_optimizer.cc.

◆ Initialize()

void yaze::gfx::GraphicsOptimizer::Initialize ( )

Initialize the graphics optimizer.

Definition at line 18 of file graphics_optimizer.cc.

References max_quality_loss_, min_memory_savings_, optimization_cache_, optimization_stats_, and performance_threshold_.

◆ OptimizeSheet()

◆ OptimizeSheets()

OptimizationResult yaze::gfx::GraphicsOptimizer::OptimizeSheets ( const std::unordered_map< int, std::vector< uint8_t > > &  sheets,
const std::unordered_map< int, SnesPalette > &  palettes,
OptimizationStrategy  strategy = OptimizationStrategy::kBalanced 
)

Optimize multiple graphics sheets.

Parameters
sheetsMap of sheet ID to sheet data
palettesMap of sheet ID to palette
strategyOptimization strategy
Returns
Optimization result

Definition at line 87 of file graphics_optimizer.cc.

References yaze::gfx::OptimizationResult::memory_saved, yaze::gfx::OptimizationResult::message, OptimizeSheet(), yaze::gfx::OptimizationResult::performance_gain, yaze::gfx::OptimizationResult::quality_loss, yaze::gfx::OptimizationResult::recommended_formats, yaze::gfx::OptimizationResult::sheet_recommendations, yaze::gfx::OptimizationResult::success, and UpdateOptimizationStats().

Here is the call graph for this function:

◆ AnalyzeSheet()

◆ GetOptimizationRecommendations()

std::unordered_map< int, SheetOptimizationData > yaze::gfx::GraphicsOptimizer::GetOptimizationRecommendations ( const std::unordered_map< int, std::vector< uint8_t > > &  sheets,
const std::unordered_map< int, SnesPalette > &  palettes 
)

Get optimization recommendations for all sheets.

Parameters
sheetsMap of sheet ID to sheet data
palettesMap of sheet ID to palette
Returns
Map of sheet ID to optimization data

Definition at line 201 of file graphics_optimizer.cc.

References AnalyzeSheet().

Here is the call graph for this function:

◆ ApplyOptimizations()

OptimizationResult yaze::gfx::GraphicsOptimizer::ApplyOptimizations ( const std::unordered_map< int, SheetOptimizationData > &  recommendations,
std::unordered_map< int, std::vector< uint8_t > > &  sheets,
std::unordered_map< int, SnesPalette > &  palettes 
)

Apply optimization recommendations.

Parameters
recommendationsOptimization recommendations
sheetsMap of sheet ID to sheet data (modified in place)
palettesMap of sheet ID to palette (modified in place)
Returns
Optimization result

Definition at line 220 of file graphics_optimizer.cc.

References yaze::gfx::BppFormatManager::ConvertFormat(), yaze::gfx::BppFormatManager::Get(), yaze::gfx::OptimizationResult::memory_saved, yaze::gfx::OptimizationResult::message, yaze::gfx::BppFormatManager::OptimizePaletteForFormat(), yaze::gfx::OptimizationResult::sheet_recommendations, yaze::gfx::OptimizationResult::success, and UpdateOptimizationStats().

Here is the call graph for this function:

◆ GetOptimizationStats()

std::unordered_map< std::string, double > yaze::gfx::GraphicsOptimizer::GetOptimizationStats ( ) const

Get optimization statistics.

Returns
Map of optimization statistics

Definition at line 286 of file graphics_optimizer.cc.

References optimization_stats_.

◆ ClearCache()

void yaze::gfx::GraphicsOptimizer::ClearCache ( )

Clear optimization cache.

Definition at line 290 of file graphics_optimizer.cc.

References optimization_cache_, and optimization_stats_.

◆ SetOptimizationParameters()

void yaze::gfx::GraphicsOptimizer::SetOptimizationParameters ( float  max_quality_loss = 0.1f,
size_t  min_memory_savings = 1024,
float  performance_threshold = 0.05f 
)

Set optimization parameters.

Parameters
max_quality_lossMaximum acceptable quality loss (0.0-1.0)
min_memory_savingsMinimum required memory savings (bytes)
performance_thresholdMinimum performance gain threshold

Definition at line 295 of file graphics_optimizer.cc.

References max_quality_loss_, min_memory_savings_, and performance_threshold_.

◆ DetermineOptimalFormat()

BppFormat yaze::gfx::GraphicsOptimizer::DetermineOptimalFormat ( const std::vector< uint8_t > &  data,
const SnesPalette palette,
OptimizationStrategy  strategy 
)
private

◆ CalculateQualityLoss()

float yaze::gfx::GraphicsOptimizer::CalculateQualityLoss ( BppFormat  from_format,
BppFormat  to_format,
const std::vector< uint8_t > &  data 
)
private

Definition at line 346 of file graphics_optimizer.cc.

Referenced by OptimizeSheet().

◆ CalculateMemorySavings()

size_t yaze::gfx::GraphicsOptimizer::CalculateMemorySavings ( BppFormat  from_format,
BppFormat  to_format,
const std::vector< uint8_t > &  data 
)
private

◆ CalculatePerformanceGain()

float yaze::gfx::GraphicsOptimizer::CalculatePerformanceGain ( BppFormat  from_format,
BppFormat  to_format 
)
private

Definition at line 378 of file graphics_optimizer.cc.

Referenced by OptimizeSheet().

◆ ShouldOptimize()

◆ GenerateOptimizationReason()

◆ CountUsedColors()

int yaze::gfx::GraphicsOptimizer::CountUsedColors ( const std::vector< uint8_t > &  data,
const SnesPalette palette 
)
private

Definition at line 430 of file graphics_optimizer.cc.

References yaze::gfx::SnesPalette::size().

Referenced by AnalyzeSheet(), CalculateColorEfficiency(), and DetermineOptimalFormat().

Here is the call graph for this function:

◆ CalculateColorEfficiency()

float yaze::gfx::GraphicsOptimizer::CalculateColorEfficiency ( const std::vector< uint8_t > &  data,
const SnesPalette palette 
)
private

Definition at line 449 of file graphics_optimizer.cc.

References CountUsedColors(), and yaze::gfx::SnesPalette::size().

Here is the call graph for this function:

◆ AnalyzeColorDistribution()

std::vector< int > yaze::gfx::GraphicsOptimizer::AnalyzeColorDistribution ( const std::vector< uint8_t > &  data)
private

Definition at line 455 of file graphics_optimizer.cc.

◆ GenerateCacheKey()

std::string yaze::gfx::GraphicsOptimizer::GenerateCacheKey ( const std::vector< uint8_t > &  data,
int  sheet_id 
)
private

Definition at line 466 of file graphics_optimizer.cc.

Referenced by AnalyzeSheet().

◆ UpdateOptimizationStats()

void yaze::gfx::GraphicsOptimizer::UpdateOptimizationStats ( const std::string &  operation,
double  value 
)
private

Definition at line 481 of file graphics_optimizer.cc.

References optimization_stats_.

Referenced by ApplyOptimizations(), OptimizeSheet(), and OptimizeSheets().

Member Data Documentation

◆ max_quality_loss_

float yaze::gfx::GraphicsOptimizer::max_quality_loss_
private

Definition at line 178 of file graphics_optimizer.h.

Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().

◆ min_memory_savings_

size_t yaze::gfx::GraphicsOptimizer::min_memory_savings_
private

Definition at line 179 of file graphics_optimizer.h.

Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().

◆ performance_threshold_

float yaze::gfx::GraphicsOptimizer::performance_threshold_
private

Definition at line 180 of file graphics_optimizer.h.

Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().

◆ optimization_stats_

std::unordered_map<std::string, double> yaze::gfx::GraphicsOptimizer::optimization_stats_
private

◆ optimization_cache_

std::unordered_map<std::string, SheetOptimizationData> yaze::gfx::GraphicsOptimizer::optimization_cache_
private

Definition at line 186 of file graphics_optimizer.h.

Referenced by AnalyzeSheet(), ClearCache(), and Initialize().


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