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

Contains classes for handling graphical data. More...

Namespaces

namespace  anonymous_namespace{tilemap.cc}
 
namespace  lc_lz2
 Contains the LC_LZ2 compression algorithm.
 
namespace  palette_group_internal
 Internal functions for loading palettes by group.
 

Classes

class  Arena
 Resource management arena for efficient graphics memory handling. More...
 
class  AtlasRenderer
 Atlas-based rendering system for efficient graphics operations. More...
 
struct  AtlasStats
 Atlas usage statistics. More...
 
class  BackgroundBuffer
 
class  Bitmap
 Represents a bitmap image optimized for SNES ROM hacking. More...
 
class  BitmapError
 
class  BppConversionScope
 RAII wrapper for BPP format conversion operations. More...
 
struct  BppFormatInfo
 BPP format metadata and conversion information. More...
 
class  BppFormatManager
 Comprehensive BPP format management system for SNES ROM hacking. More...
 
struct  CgxHeader
 Cgx file header. More...
 
class  GfxContext
 Shared graphical context across editors. More...
 
class  GraphicsBuffer
 
class  GraphicsOptimizationBenchmarks
 
class  GraphicsOptimizationScope
 RAII wrapper for graphics optimization operations. More...
 
class  GraphicsOptimizer
 Comprehensive graphics optimization system for YAZE ROM hacking. More...
 
struct  GraphicsSheetAnalysis
 Graphics sheet analysis result. More...
 
interface  IRenderer
 Defines an abstract interface for all rendering operations. More...
 
class  MemoryPool
 High-performance memory pool allocator for graphics data. More...
 
class  OamTile
 Object Attribute Memory tile abstraction container. More...
 
struct  OptimizationResult
 Graphics optimization result. More...
 
struct  Pair
 Simple 2D coordinate pair for tilemap dimensions. More...
 
struct  PaletteGroup
 Represents a group of palettes. More...
 
struct  PaletteGroupMap
 Represents a mapping of palette groups. More...
 
struct  Paletteset
 Represents a set of palettes used in a SNES graphics system. More...
 
class  PerformanceDashboard
 Comprehensive performance monitoring dashboard for YAZE graphics system. More...
 
class  PerformanceProfiler
 Unified performance profiler for all YAZE operations. More...
 
struct  PerformanceSummary
 Performance summary for external consumption. More...
 
class  PoolAllocator
 RAII wrapper for memory pool allocations. More...
 
struct  RenderCommand
 Render command for batch rendering. More...
 
class  ScopedTimer
 RAII timer for automatic timing management. More...
 
class  SDL2Renderer
 A concrete implementation of the IRenderer interface using SDL2. More...
 
struct  SheetOptimizationData
 Graphics sheet optimization data. More...
 
class  SnesColor
 SNES Color container. More...
 
class  SnesPalette
 Represents a palette of colors for the Super Nintendo Entertainment System (SNES). More...
 
class  TextureAtlas
 Manages multiple textures packed into a single large texture for performance. More...
 
class  Tile16
 Tile composition of four 8x8 tiles. More...
 
class  Tile32
 Tile composition of four 16x16 tiles. More...
 
struct  TileCache
 Smart tile cache with LRU eviction for efficient memory management. More...
 
class  TileInfo
 SNES 16-bit tile metadata container. More...
 
struct  Tilemap
 Tilemap structure for SNES tile-based graphics management. More...
 

Typedefs

using TextureHandle = void *
 An abstract handle representing a texture.
 
using BitmapTable = std::unordered_map< int, gfx::Bitmap >
 
using MemoryBlock = MemoryPool::MemoryBlock
 

Enumerations

enum  BitmapFormat { kIndexed = 0 , k4bpp = 1 , k8bpp = 2 }
 
enum class  BppFormat { kBpp2 = 2 , kBpp3 = 3 , kBpp4 = 4 , kBpp8 = 8 }
 BPP format enumeration for SNES graphics. More...
 
enum class  OptimizationStrategy { kMemoryOptimized , kPerformanceOptimized , kQualityOptimized , kBalanced }
 Graphics optimization strategy. More...
 
enum  PaletteCategory {
  kSword , kShield , kClothes , kWorldColors ,
  kAreaColors , kGlobalSprites , kSpritesAux1 , kSpritesAux2 ,
  kSpritesAux3 , kDungeons , kWorldMap , kDungeonMap ,
  kTriforce , kCrystal
}
 

Functions

Uint32 GetSnesPixelFormat (int format)
 Convert bitmap format enum to SDL pixel format.
 
std::vector< uint8_t > HyruleMagicCompress (uint8_t const *const src, int const oldsize, int *const size, int const flag)
 
std::vector< uint8_t > HyruleMagicDecompress (uint8_t const *src, int *const size, int const p_big_endian)
 
void FindMetastamp ()
 Find metastamp in CGX file.
 
absl::Status LoadCgx (uint8_t bpp, std::string_view filename, std::vector< uint8_t > &cgx_data, std::vector< uint8_t > &cgx_loaded, std::vector< uint8_t > &cgx_header)
 Load Cgx file (graphical content)
 
absl::Status LoadScr (std::string_view filename, uint8_t input_value, std::vector< uint8_t > &map_data)
 Load Scr file (screen data)
 
absl::Status DrawScrWithCgx (uint8_t bpp, std::vector< uint8_t > &map_bitmap_data, std::vector< uint8_t > &map_data, std::vector< uint8_t > &cgx_loaded)
 Draw screen tilemap with graphical data.
 
absl::Status SaveCgx (uint8_t bpp, std::string_view filename, const std::vector< uint8_t > &cgx_data, const std::vector< uint8_t > &cgx_header)
 Save Cgx file (graphical content)
 
std::vector< SDL_Color > DecodeColFile (const std::string_view filename)
 Decode color file.
 
absl::Status SaveCol (std::string_view filename, const std::vector< SDL_Color > &palette)
 Save Col file (palette data)
 
absl::Status DecodeObjFile (std::string_view filename, std::vector< uint8_t > &obj_data, std::vector< uint8_t > actual_obj_data, std::unordered_map< std::string, std::vector< uint8_t > > decoded_obj, std::vector< uint8_t > &decoded_extra_obj, int &obj_loaded)
 Decode obj file.
 
snes_color ConvertSnesToRgb (uint16_t color_snes)
 
uint16_t ConvertRgbToSnes (const snes_color &color)
 
uint16_t ConvertRgbToSnes (const ImVec4 &color)
 
SnesColor ReadColorFromRom (int offset, const uint8_t *rom)
 
std::vector< snes_colorExtract (const char *data, unsigned int offset, unsigned int palette_size)
 
std::vector< char > Convert (const std::vector< snes_color > &palette)
 
SnesColor GetCgxColor (uint16_t color)
 
std::vector< SnesColorGetColFileData (uint8_t *data)
 
uint32_t GetPaletteAddress (const std::string &group_name, size_t palette_index, size_t color_index)
 
SnesPalette ReadPaletteFromRom (int offset, int num_colors, const uint8_t *rom)
 
std::array< float, 4 > ToFloatArray (const SnesColor &color)
 
absl::StatusOr< PaletteGroupCreatePaletteGroupFromColFile (std::vector< SnesColor > &palette_rows)
 
absl::StatusOr< PaletteGroupCreatePaletteGroupFromLargePalette (SnesPalette &palette, int num_colors=8)
 Take a SNESPalette, divide it into palettes of 8 colors.
 
absl::Status LoadAllPalettes (const std::vector< uint8_t > &rom_data, PaletteGroupMap &groups)
 Loads all the palettes for the game.
 
snes_tile8 UnpackBppTile (std::span< uint8_t > data, const uint32_t offset, const uint32_t bpp)
 
std::vector< uint8_t > PackBppTile (const snes_tile8 &tile, const uint32_t bpp)
 
std::vector< uint8_t > ConvertBpp (std::span< uint8_t > tiles, uint32_t from_bpp, uint32_t to_bpp)
 
std::vector< uint8_t > SnesTo8bppSheet (std::span< uint8_t > sheet, int bpp, int num_sheets)
 
std::vector< uint8_t > Bpp8SnesToIndexed (std::vector< uint8_t > data, uint64_t bpp)
 
uint16_t TileInfoToWord (TileInfo tile_info)
 
TileInfo WordToTileInfo (uint16_t word)
 
uint16_t TileInfoToShort (TileInfo tile_info)
 
TileInfo GetTilesInfo (uint16_t tile)
 
void CopyTile8bpp16 (int x, int y, int tile, std::vector< uint8_t > &bitmap, std::vector< uint8_t > &blockset)
 
std::vector< uint8_t > LoadSNES4bppGFXToIndexedColorMatrix (std::span< uint8_t > src)
 
Tilemap CreateTilemap (IRenderer *renderer, std::vector< uint8_t > &data, int width, int height, int tile_size, int num_tiles, SnesPalette &palette)
 
void UpdateTilemap (IRenderer *renderer, Tilemap &tilemap, const std::vector< uint8_t > &data)
 
void RenderTile (IRenderer *renderer, Tilemap &tilemap, int tile_id)
 
void RenderTile16 (IRenderer *renderer, Tilemap &tilemap, int tile_id)
 
void UpdateTile16 (IRenderer *renderer, Tilemap &tilemap, int tile_id)
 
std::vector< uint8_t > FetchTileDataFromGraphicsBuffer (const std::vector< uint8_t > &data, int tile_id, int sheet_offset)
 
void ModifyTile16 (Tilemap &tilemap, const std::vector< uint8_t > &data, const TileInfo &top_left, const TileInfo &top_right, const TileInfo &bottom_left, const TileInfo &bottom_right, int sheet_offset, int tile_id)
 
void ComposeTile16 (Tilemap &tilemap, const std::vector< uint8_t > &data, const TileInfo &top_left, const TileInfo &top_right, const TileInfo &bottom_left, const TileInfo &bottom_right, int sheet_offset)
 
std::vector< uint8_t > GetTilemapData (Tilemap &tilemap, int tile_id)
 
void RenderTilesBatch (IRenderer *renderer, Tilemap &tilemap, const std::vector< int > &tile_ids, const std::vector< std::pair< float, float > > &positions, const std::vector< std::pair< float, float > > &scales={})
 Render multiple tiles using atlas rendering for improved performance.
 
 TEST_F (GraphicsOptimizationBenchmarks, PaletteLookupPerformance)
 
 TEST_F (GraphicsOptimizationBenchmarks, DirtyRegionTrackingPerformance)
 
 TEST_F (GraphicsOptimizationBenchmarks, MemoryPoolAllocationPerformance)
 
 TEST_F (GraphicsOptimizationBenchmarks, BatchTextureUpdatePerformance)
 
 TEST_F (GraphicsOptimizationBenchmarks, AtlasRenderingPerformance)
 
 TEST_F (GraphicsOptimizationBenchmarks, PerformanceProfilerOverhead)
 
 TEST_F (GraphicsOptimizationBenchmarks, AtlasRenderingPerformance2)
 
 TEST_F (GraphicsOptimizationBenchmarks, OverallPerformanceIntegration)
 

Variables

constexpr Uint32 SNES_PIXELFORMAT_INDEXED
 
constexpr Uint32 SNES_PIXELFORMAT_4BPP
 
constexpr Uint32 SNES_PIXELFORMAT_8BPP
 
constexpr uint16_t kMatchedBytes [] = {0x4E, 0x41, 0x4B, 0x31, 0x39, 0x38, 0x39}
 
constexpr uint16_t kOffsetFromMatchedBytesEnd = 0x1D
 
constexpr uint16_t SNES_RED_MASK = 32
 
constexpr uint16_t SNES_GREEN_MASK = 32
 
constexpr uint16_t SNES_BLUE_MASK = 32
 
constexpr uint16_t SNES_GREEN_SHIFT = 32
 
constexpr uint16_t SNES_BLUE_SHIFT = 1024
 
constexpr int NumberOfColors = 3143
 
constexpr uint8_t kColorByteMax = 255
 
constexpr float kColorByteMaxF = 255.f
 
const absl::flat_hash_map< std::string, uint32_t > kPaletteGroupAddressMap
 
const absl::flat_hash_map< std::string, uint32_t > kPaletteGroupColorCounts
 
constexpr int kNumPalettes = 14
 
constexpr const char * kPaletteGroupAddressesKeys []
 
constexpr int kOverworldPaletteMain = 0xDE6C8
 
constexpr int kOverworldPaletteAux = 0xDE86C
 
constexpr int kOverworldPaletteAnimated = 0xDE604
 
constexpr int kGlobalSpritesLW = 0xDD218
 
constexpr int kGlobalSpritePalettesDW = 0xDD290
 
constexpr int kArmorPalettes = 0xDD308
 
constexpr int kSpritesPalettesAux1 = 0xDD39E
 
constexpr int kSpritesPalettesAux2 = 0xDD446
 
constexpr int kSpritesPalettesAux3 = 0xDD4E0
 
constexpr int kSwordPalettes = 0xDD630
 
constexpr int kShieldPalettes = 0xDD648
 
constexpr int kHudPalettes = 0xDD660
 
constexpr int kDungeonMapPalettes = 0xDD70A
 
constexpr int kDungeonMainPalettes = 0xDD734
 
constexpr int kDungeonMapBgPalettes = 0xDE544
 
constexpr int kHardcodedGrassLW = 0x5FEA9
 
constexpr int kHardcodedGrassDW = 0x05FEB3
 
constexpr int kHardcodedGrassSpecial = 0x75640
 
constexpr int kOverworldMiniMapPalettes = 0x55B27
 
constexpr int kTriforcePalette = 0x64425
 
constexpr int kCrystalPalette = 0xF4CD3
 
constexpr int CustomAreaSpecificBGPalette = 0x140000
 
constexpr int CustomAreaSpecificBGASM = 0x140150
 
constexpr int kCustomAreaSpecificBGEnabled = 0x140140
 
constexpr int HudPalettesMax = 2
 
constexpr int OverworldMainPalettesMax = 6
 
constexpr int OverworldAuxPalettesMax = 20
 
constexpr int OverworldAnimatedPalettesMax = 14
 
constexpr int GlobalSpritePalettesMax = 2
 
constexpr int ArmorPalettesMax = 5
 
constexpr int SwordsPalettesMax = 4
 
constexpr int SpritesAux1PalettesMax = 12
 
constexpr int SpritesAux2PalettesMax = 11
 
constexpr int SpritesAux3PalettesMax = 24
 
constexpr int ShieldsPalettesMax = 3
 
constexpr int DungeonsMainPalettesMax = 20
 
constexpr int OverworldBackgroundPaletteMax = 160
 
constexpr int OverworldGrassPalettesMax = 3
 
constexpr int Object3DPalettesMax = 2
 
constexpr int OverworldMiniMapPalettesMax = 2
 
constexpr uint16_t TilePriorityBit = 0x2000
 
constexpr uint16_t TileHFlipBit = 0x4000
 
constexpr uint16_t TileVFlipBit = 0x8000
 
constexpr uint16_t TileNameMask = 0x03FF
 
constexpr int kTilesheetWidth = 128
 
constexpr int kTilesheetHeight = 32
 
constexpr int kTilesheetDepth = 8
 
constexpr uint8_t kGraphicsBitmap [8]
 

Detailed Description

Contains classes for handling graphical data.

Typedef Documentation

◆ TextureHandle

using yaze::gfx::TextureHandle = typedef void*

An abstract handle representing a texture.

This typedef allows the underlying texture implementation (e.g., SDL_Texture*, an OpenGL texture ID, etc.) to be hidden from the application logic.

Definition at line 24 of file irenderer.h.

◆ BitmapTable

using yaze::gfx::BitmapTable = typedef std::unordered_map<int, gfx::Bitmap>

Definition at line 333 of file bitmap.h.

◆ MemoryBlock

Definition at line 10 of file memory_pool.cc.

Enumeration Type Documentation

◆ BitmapFormat

Enumerator
kIndexed 
k4bpp 
k8bpp 

Definition at line 34 of file bitmap.h.

◆ BppFormat

enum class yaze::gfx::BppFormat
strong

BPP format enumeration for SNES graphics.

Enumerator
kBpp2 

2 bits per pixel (4 colors)

kBpp3 

3 bits per pixel (8 colors)

kBpp4 

4 bits per pixel (16 colors)

kBpp8 

8 bits per pixel (256 colors)

Definition at line 20 of file bpp_format_manager.h.

◆ OptimizationStrategy

Graphics optimization strategy.

Enumerator
kMemoryOptimized 

Minimize memory usage.

kPerformanceOptimized 

Maximize rendering performance.

kQualityOptimized 

Maintain highest quality.

kBalanced 

Balance memory, performance, and quality.

Definition at line 17 of file graphics_optimizer.h.

◆ PaletteCategory

Enumerator
kSword 
kShield 
kClothes 
kWorldColors 
kAreaColors 
kGlobalSprites 
kSpritesAux1 
kSpritesAux2 
kSpritesAux3 
kDungeons 
kWorldMap 
kDungeonMap 
kTriforce 
kCrystal 

Definition at line 24 of file snes_palette.h.

Function Documentation

◆ GetSnesPixelFormat()

Uint32 yaze::gfx::GetSnesPixelFormat ( int  format)

Convert bitmap format enum to SDL pixel format.

Get the SDL pixel format for a given bitmap format.

Parameters
formatBitmap format (0=indexed, 1=4BPP, 2=8BPP)
Returns
SDL pixel format constant

SNES Graphics Format Mapping:

  • Format 0: Indexed 8-bit (most common for SNES graphics)
  • Format 1: 4-bit per pixel (used for some SNES backgrounds)
  • Format 2: 8-bit per pixel (used for high-color SNES graphics)

Definition at line 34 of file bitmap.cc.

References SNES_PIXELFORMAT_4BPP, and SNES_PIXELFORMAT_8BPP.

Referenced by yaze::gfx::Arena::AllocateSurface(), yaze::gfx::Bitmap::Bitmap(), yaze::gfx::Bitmap::Create(), yaze::gfx::Bitmap::operator=(), yaze::gfx::Bitmap::Reformat(), and yaze::gfx::Bitmap::Resize().

◆ HyruleMagicCompress()

std::vector< uint8_t > yaze::gfx::HyruleMagicCompress ( uint8_t const *const  src,
int const  oldsize,
int *const  size,
int const  flag 
)

◆ HyruleMagicDecompress()

std::vector< uint8_t > yaze::gfx::HyruleMagicDecompress ( uint8_t const *  src,
int *const  size,
int const  p_big_endian 
)

Definition at line 167 of file compression.cc.

References yaze::zelda3::ldle16b(), and yaze::zelda3::stle16b().

Referenced by yaze::zelda3::Overworld::DecompressAllMapTilesParallel().

Here is the call graph for this function:

◆ FindMetastamp()

void yaze::gfx::FindMetastamp ( )

Find metastamp in CGX file.

Definition at line 17 of file scad_format.cc.

References kMatchedBytes, and kOffsetFromMatchedBytesEnd.

◆ LoadCgx()

absl::Status yaze::gfx::LoadCgx ( uint8_t  bpp,
std::string_view  filename,
std::vector< uint8_t > &  cgx_data,
std::vector< uint8_t > &  cgx_loaded,
std::vector< uint8_t > &  cgx_header 
)

Load Cgx file (graphical content)

Definition at line 42 of file scad_format.cc.

References Bpp8SnesToIndexed().

Referenced by yaze::editor::GraphicsEditor::DrawCgxImport(), and yaze::cli::HandleGfxImportLegacy().

Here is the call graph for this function:

◆ LoadScr()

absl::Status yaze::gfx::LoadScr ( std::string_view  filename,
uint8_t  input_value,
std::vector< uint8_t > &  map_data 
)

Load Scr file (screen data)

Definition at line 67 of file scad_format.cc.

References GetTilesInfo(), and TileInfoToShort().

Referenced by yaze::editor::GraphicsEditor::DrawScrImport().

Here is the call graph for this function:

◆ DrawScrWithCgx()

absl::Status yaze::gfx::DrawScrWithCgx ( uint8_t  bpp,
std::vector< uint8_t > &  map_bitmap_data,
std::vector< uint8_t > &  map_data,
std::vector< uint8_t > &  cgx_loaded 
)

Draw screen tilemap with graphical data.

Definition at line 119 of file scad_format.cc.

References GetTilesInfo().

Referenced by yaze::editor::GraphicsEditor::DrawScrImport().

Here is the call graph for this function:

◆ SaveCgx()

absl::Status yaze::gfx::SaveCgx ( uint8_t  bpp,
std::string_view  filename,
const std::vector< uint8_t > &  cgx_data,
const std::vector< uint8_t > &  cgx_header 
)

◆ DecodeColFile()

std::vector< SDL_Color > yaze::gfx::DecodeColFile ( const std::string_view  filename)

Decode color file.

Definition at line 186 of file scad_format.cc.

Referenced by yaze::editor::GraphicsEditor::DrawPaletteControls(), and yaze::cli::HandlePaletteImportLegacy().

◆ SaveCol()

absl::Status yaze::gfx::SaveCol ( std::string_view  filename,
const std::vector< SDL_Color > &  palette 
)

Save Col file (palette data)

Definition at line 221 of file scad_format.cc.

Referenced by yaze::cli::HandlePaletteExportLegacy().

◆ DecodeObjFile()

absl::Status yaze::gfx::DecodeObjFile ( std::string_view  filename,
std::vector< uint8_t > &  obj_data,
std::vector< uint8_t >  actual_obj_data,
std::unordered_map< std::string, std::vector< uint8_t > >  decoded_obj,
std::vector< uint8_t > &  decoded_extra_obj,
int &  obj_loaded 
)

Decode obj file.

Definition at line 238 of file scad_format.cc.

◆ ConvertSnesToRgb()

◆ ConvertRgbToSnes() [1/2]

◆ ConvertRgbToSnes() [2/2]

uint16_t yaze::gfx::ConvertRgbToSnes ( const ImVec4 &  color)

Definition at line 40 of file snes_color.cc.

References snes_color::blue, ConvertRgbToSnes(), snes_color::green, kColorByteMax, and snes_color::red.

Here is the call graph for this function:

◆ ReadColorFromRom()

SnesColor yaze::gfx::ReadColorFromRom ( int  offset,
const uint8_t *  rom 
)

◆ Extract()

std::vector< snes_color > yaze::gfx::Extract ( const char *  data,
unsigned int  offset,
unsigned int  palette_size 
)

Definition at line 58 of file snes_color.cc.

References ConvertSnesToRgb(), and Extract().

Referenced by Extract().

Here is the call graph for this function:

◆ Convert()

std::vector< char > yaze::gfx::Convert ( const std::vector< snes_color > &  palette)

Definition at line 69 of file snes_color.cc.

References ConvertRgbToSnes().

Referenced by yaze::test::TEST().

Here is the call graph for this function:

◆ GetCgxColor()

SnesColor yaze::gfx::GetCgxColor ( uint16_t  color)

Definition at line 79 of file snes_color.cc.

References yaze::gfx::SnesColor::set_rgb().

Referenced by GetColFileData().

Here is the call graph for this function:

◆ GetColFileData()

std::vector< SnesColor > yaze::gfx::GetColFileData ( uint8_t *  data)

Definition at line 89 of file snes_color.cc.

References GetCgxColor().

Referenced by yaze::editor::GraphicsEditor::DrawPaletteControls().

Here is the call graph for this function:

◆ GetPaletteAddress()

uint32_t yaze::gfx::GetPaletteAddress ( const std::string &  group_name,
size_t  palette_index,
size_t  color_index 
)

Definition at line 263 of file snes_palette.cc.

References kPaletteGroupAddressMap, and kPaletteGroupColorCounts.

Referenced by yaze::Rom::SavePalette().

◆ ReadPaletteFromRom()

◆ ToFloatArray()

std::array< float, 4 > yaze::gfx::ToFloatArray ( const SnesColor color)

Definition at line 299 of file snes_palette.cc.

References yaze::gfx::SnesColor::rgb().

Referenced by yaze::editor::PaletteEditor::HandleColorPopup().

Here is the call graph for this function:

◆ CreatePaletteGroupFromColFile()

absl::StatusOr< PaletteGroup > yaze::gfx::CreatePaletteGroupFromColFile ( std::vector< SnesColor > &  palette_rows)

Definition at line 308 of file snes_palette.cc.

References yaze::gfx::SnesPalette::AddColor(), and yaze::gfx::PaletteGroup::AddPalette().

Referenced by yaze::editor::GraphicsEditor::DrawPaletteControls().

Here is the call graph for this function:

◆ CreatePaletteGroupFromLargePalette()

absl::StatusOr< PaletteGroup > yaze::gfx::CreatePaletteGroupFromLargePalette ( SnesPalette palette,
int  num_colors 
)

◆ LoadAllPalettes()

◆ UnpackBppTile()

snes_tile8 yaze::gfx::UnpackBppTile ( std::span< uint8_t >  data,
const uint32_t  offset,
const uint32_t  bpp 
)

Definition at line 23 of file snes_tile.cc.

References snes_tile8::data.

Referenced by ConvertBpp(), and yaze::test::TEST().

◆ PackBppTile()

std::vector< uint8_t > yaze::gfx::PackBppTile ( const snes_tile8 tile,
const uint32_t  bpp 
)

Definition at line 72 of file snes_tile.cc.

References snes_tile8::data.

Referenced by ConvertBpp(), and yaze::test::TEST().

◆ ConvertBpp()

std::vector< uint8_t > yaze::gfx::ConvertBpp ( std::span< uint8_t >  tiles,
uint32_t  from_bpp,
uint32_t  to_bpp 
)

Definition at line 115 of file snes_tile.cc.

References PackBppTile(), and UnpackBppTile().

Referenced by yaze::test::TEST(), and yaze::gfx::GraphicsBuffer::to_bpp().

Here is the call graph for this function:

◆ SnesTo8bppSheet()

◆ Bpp8SnesToIndexed()

std::vector< uint8_t > yaze::gfx::Bpp8SnesToIndexed ( std::vector< uint8_t >  data,
uint64_t  bpp 
)

Definition at line 189 of file snes_tile.cc.

Referenced by LoadCgx(), and yaze::SaveAllGraphicsData().

◆ TileInfoToWord()

◆ WordToTileInfo()

◆ TileInfoToShort()

◆ GetTilesInfo()

TileInfo yaze::gfx::GetTilesInfo ( uint16_t  tile)

◆ CopyTile8bpp16()

void yaze::gfx::CopyTile8bpp16 ( int  x,
int  y,
int  tile,
std::vector< uint8_t > &  bitmap,
std::vector< uint8_t > &  blockset 
)

Definition at line 366 of file snes_tile.cc.

Referenced by yaze::zelda3::OverworldMap::BuildBitmap().

◆ LoadSNES4bppGFXToIndexedColorMatrix()

std::vector< uint8_t > yaze::gfx::LoadSNES4bppGFXToIndexedColorMatrix ( std::span< uint8_t >  src)

Definition at line 379 of file snes_tile.cc.

◆ CreateTilemap()

◆ UpdateTilemap()

◆ RenderTile()

void yaze::gfx::RenderTile ( IRenderer renderer,
Tilemap tilemap,
int  tile_id 
)

Definition at line 44 of file tilemap.cc.

References yaze::gfx::Tilemap::atlas, GetTilemapData(), yaze::gfx::Bitmap::is_active(), and yaze::gfx::Bitmap::vector().

Here is the call graph for this function:

◆ RenderTile16()

◆ UpdateTile16()

◆ FetchTileDataFromGraphicsBuffer()

std::vector< uint8_t > yaze::gfx::FetchTileDataFromGraphicsBuffer ( const std::vector< uint8_t > &  data,
int  tile_id,
int  sheet_offset 
)

◆ ModifyTile16()

void yaze::gfx::ModifyTile16 ( Tilemap tilemap,
const std::vector< uint8_t > &  data,
const TileInfo top_left,
const TileInfo top_right,
const TileInfo bottom_left,
const TileInfo bottom_right,
int  sheet_offset,
int  tile_id 
)

◆ ComposeTile16()

void yaze::gfx::ComposeTile16 ( Tilemap tilemap,
const std::vector< uint8_t > &  data,
const TileInfo top_left,
const TileInfo top_right,
const TileInfo bottom_left,
const TileInfo bottom_right,
int  sheet_offset 
)

◆ GetTilemapData()

◆ RenderTilesBatch()

void yaze::gfx::RenderTilesBatch ( IRenderer renderer,
Tilemap tilemap,
const std::vector< int > &  tile_ids,
const std::vector< std::pair< float, float > > &  positions,
const std::vector< std::pair< float, float > > &  scales = {} 
)

Render multiple tiles using atlas rendering for improved performance.

Parameters
tilemapTilemap containing tiles to render
tile_idsVector of tile IDs to render
positionsVector of screen positions for each tile
scalesVector of scale factors for each tile (optional, defaults to 1.0)
Note
This function uses atlas rendering to reduce draw calls significantly

Definition at line 311 of file tilemap.cc.

References yaze::gfx::Tilemap::atlas, yaze::gfx::TileCache::CacheTile(), yaze::gfx::Arena::CREATE, yaze::gfx::Bitmap::CreateTexture(), yaze::gfx::Arena::Get(), yaze::gfx::AtlasRenderer::Get(), yaze::gfx::TileCache::GetTile(), GetTilemapData(), yaze::gfx::Bitmap::is_active(), yaze::gfx::Bitmap::palette(), yaze::gfx::Arena::QueueTextureCommand(), yaze::gfx::Bitmap::surface(), yaze::gfx::Bitmap::texture(), yaze::gfx::Tilemap::tile_cache, yaze::gfx::Tilemap::tile_size, yaze::gfx::Pair::x, and yaze::gfx::Pair::y.

◆ TEST_F() [1/8]

yaze::gfx::TEST_F ( GraphicsOptimizationBenchmarks  ,
PaletteLookupPerformance   
)

Definition at line 53 of file gfx_optimization_benchmarks.cc.

References yaze::gfx::Bitmap::FindColorIndex().

Here is the call graph for this function:

◆ TEST_F() [2/8]

yaze::gfx::TEST_F ( GraphicsOptimizationBenchmarks  ,
DirtyRegionTrackingPerformance   
)

Definition at line 83 of file gfx_optimization_benchmarks.cc.

References yaze::gfx::Bitmap::SetPixel().

Here is the call graph for this function:

◆ TEST_F() [3/8]

yaze::gfx::TEST_F ( GraphicsOptimizationBenchmarks  ,
MemoryPoolAllocationPerformance   
)

Definition at line 114 of file gfx_optimization_benchmarks.cc.

References yaze::gfx::MemoryPool::Get().

Here is the call graph for this function:

◆ TEST_F() [4/8]

yaze::gfx::TEST_F ( GraphicsOptimizationBenchmarks  ,
BatchTextureUpdatePerformance   
)

◆ TEST_F() [5/8]

yaze::gfx::TEST_F ( GraphicsOptimizationBenchmarks  ,
AtlasRenderingPerformance   
)

Definition at line 211 of file gfx_optimization_benchmarks.cc.

References yaze::gfx::AtlasRenderer::Get().

Here is the call graph for this function:

◆ TEST_F() [6/8]

yaze::gfx::TEST_F ( GraphicsOptimizationBenchmarks  ,
PerformanceProfilerOverhead   
)

Definition at line 267 of file gfx_optimization_benchmarks.cc.

References yaze::gfx::PerformanceProfiler::Get().

Here is the call graph for this function:

◆ TEST_F() [7/8]

yaze::gfx::TEST_F ( GraphicsOptimizationBenchmarks  ,
AtlasRenderingPerformance2   
)

Definition at line 312 of file gfx_optimization_benchmarks.cc.

References yaze::gfx::AtlasRenderer::Get(), and yaze::gfx::PerformanceProfiler::Get().

Here is the call graph for this function:

◆ TEST_F() [8/8]

Variable Documentation

◆ SNES_PIXELFORMAT_INDEXED

constexpr Uint32 yaze::gfx::SNES_PIXELFORMAT_INDEXED
constexpr
Initial value:
=
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1)

Definition at line 23 of file bitmap.h.

◆ SNES_PIXELFORMAT_4BPP

constexpr Uint32 yaze::gfx::SNES_PIXELFORMAT_4BPP
constexpr
Initial value:
= SDL_DEFINE_PIXELFORMAT(
SDL_PIXELTYPE_INDEX8, 0,
0, 4, 1)

Definition at line 26 of file bitmap.h.

Referenced by GetSnesPixelFormat().

◆ SNES_PIXELFORMAT_8BPP

constexpr Uint32 yaze::gfx::SNES_PIXELFORMAT_8BPP
constexpr
Initial value:
= SDL_DEFINE_PIXELFORMAT(
SDL_PIXELTYPE_INDEX8, 0,
0, 8, 1)

Definition at line 30 of file bitmap.h.

Referenced by GetSnesPixelFormat().

◆ kMatchedBytes

constexpr uint16_t yaze::gfx::kMatchedBytes[] = {0x4E, 0x41, 0x4B, 0x31, 0x39, 0x38, 0x39}
constexpr

Definition at line 47 of file scad_format.h.

Referenced by FindMetastamp().

◆ kOffsetFromMatchedBytesEnd

constexpr uint16_t yaze::gfx::kOffsetFromMatchedBytesEnd = 0x1D
constexpr

Definition at line 48 of file scad_format.h.

Referenced by FindMetastamp().

◆ SNES_RED_MASK

constexpr uint16_t yaze::gfx::SNES_RED_MASK = 32
constexpr

Definition at line 12 of file snes_color.cc.

Referenced by ConvertSnesToRgb().

◆ SNES_GREEN_MASK

constexpr uint16_t yaze::gfx::SNES_GREEN_MASK = 32
constexpr

Definition at line 13 of file snes_color.cc.

Referenced by ConvertSnesToRgb().

◆ SNES_BLUE_MASK

constexpr uint16_t yaze::gfx::SNES_BLUE_MASK = 32
constexpr

Definition at line 14 of file snes_color.cc.

Referenced by ConvertSnesToRgb().

◆ SNES_GREEN_SHIFT

constexpr uint16_t yaze::gfx::SNES_GREEN_SHIFT = 32
constexpr

Definition at line 16 of file snes_color.cc.

Referenced by ConvertRgbToSnes().

◆ SNES_BLUE_SHIFT

constexpr uint16_t yaze::gfx::SNES_BLUE_SHIFT = 1024
constexpr

Definition at line 17 of file snes_color.cc.

Referenced by ConvertRgbToSnes(), and ConvertSnesToRgb().

◆ NumberOfColors

constexpr int yaze::gfx::NumberOfColors = 3143
constexpr

Definition at line 14 of file snes_color.h.

◆ kColorByteMax

constexpr uint8_t yaze::gfx::kColorByteMax = 255
constexpr

◆ kColorByteMaxF

constexpr float yaze::gfx::kColorByteMaxF = 255.f
constexpr

Definition at line 26 of file snes_color.h.

Referenced by yaze::gfx::SnesColor::set_snes(), and yaze::gfx::SnesColor::SnesColor().

◆ kPaletteGroupAddressMap

const absl::flat_hash_map<std::string, uint32_t> yaze::gfx::kPaletteGroupAddressMap
Initial value:
= {
{"ow_main", kOverworldPaletteMain},
{"ow_aux", kOverworldPaletteAux},
{"ow_animated", kOverworldPaletteAnimated},
{"hud", kHudPalettes},
{"global_sprites", kGlobalSpritesLW},
{"armors", kArmorPalettes},
{"swords", kSwordPalettes},
{"shields", kShieldPalettes},
{"sprites_aux1", kSpritesPalettesAux1},
{"sprites_aux2", kSpritesPalettesAux2},
{"sprites_aux3", kSpritesPalettesAux3},
{"dungeon_main", kDungeonMainPalettes},
{"grass", kHardcodedGrassLW},
{"3d_object", kTriforcePalette},
{"ow_mini_map", kOverworldMiniMapPalettes},
}
constexpr int kOverworldPaletteAux
constexpr int kHardcodedGrassLW
constexpr int kArmorPalettes
constexpr int kShieldPalettes
constexpr int kSpritesPalettesAux2
constexpr int kOverworldMiniMapPalettes
constexpr int kOverworldPaletteMain
constexpr int kSwordPalettes
constexpr int kGlobalSpritesLW
constexpr int kSpritesPalettesAux1
constexpr int kSpritesPalettesAux3
constexpr int kDungeonMainPalettes
constexpr int kTriforcePalette

Definition at line 237 of file snes_palette.cc.

Referenced by GetPaletteAddress().

◆ kPaletteGroupColorCounts

const absl::flat_hash_map<std::string, uint32_t> yaze::gfx::kPaletteGroupColorCounts
Initial value:
= {
{"ow_main", 35}, {"ow_aux", 21}, {"ow_animated", 7},
{"hud", 32}, {"global_sprites", 60}, {"armors", 15},
{"swords", 3}, {"shields", 4}, {"sprites_aux1", 7},
{"sprites_aux2", 7}, {"sprites_aux3", 7}, {"dungeon_main", 90},
{"grass", 1}, {"3d_object", 8}, {"ow_mini_map", 128},
}

Definition at line 255 of file snes_palette.cc.

Referenced by GetPaletteAddress().

◆ kNumPalettes

constexpr int yaze::gfx::kNumPalettes = 14
constexpr

Definition at line 22 of file snes_palette.h.

◆ kPaletteGroupAddressesKeys

constexpr const char* yaze::gfx::kPaletteGroupAddressesKeys[]
constexpr
Initial value:
= {
"ow_main", "ow_aux", "ow_animated", "hud",
"global_sprites", "armors", "swords", "shields",
"sprites_aux1", "sprites_aux2", "sprites_aux3", "dungeon_main",
"grass", "3d_object", "ow_mini_map",
}

Definition at line 53 of file snes_palette.h.

Referenced by yaze::editor::GraphicsEditor::DecompressSuperDonkey(), yaze::editor::GraphicsEditor::DrawPaletteControls(), yaze::editor::GraphicsEditor::UpdatePaletteColumn(), and yaze_get_color_from_paletteset().

◆ kOverworldPaletteMain

constexpr int yaze::gfx::kOverworldPaletteMain = 0xDE6C8
constexpr

◆ kOverworldPaletteAux

constexpr int yaze::gfx::kOverworldPaletteAux = 0xDE86C
constexpr

◆ kOverworldPaletteAnimated

constexpr int yaze::gfx::kOverworldPaletteAnimated = 0xDE604
constexpr

◆ kGlobalSpritesLW

constexpr int yaze::gfx::kGlobalSpritesLW = 0xDD218
constexpr

◆ kGlobalSpritePalettesDW

constexpr int yaze::gfx::kGlobalSpritePalettesDW = 0xDD290
constexpr

◆ kArmorPalettes

constexpr int yaze::gfx::kArmorPalettes = 0xDD308
constexpr

< Green, Blue, Red, Bunny, Electrocuted (15 colors each)

Definition at line 67 of file snes_palette.h.

Referenced by yaze::gfx::palette_group_internal::LoadArmorPalettes().

◆ kSpritesPalettesAux1

constexpr int yaze::gfx::kSpritesPalettesAux1 = 0xDD39E
constexpr

◆ kSpritesPalettesAux2

constexpr int yaze::gfx::kSpritesPalettesAux2 = 0xDD446
constexpr

◆ kSpritesPalettesAux3

constexpr int yaze::gfx::kSpritesPalettesAux3 = 0xDD4E0
constexpr

◆ kSwordPalettes

constexpr int yaze::gfx::kSwordPalettes = 0xDD630
constexpr

Definition at line 71 of file snes_palette.h.

Referenced by yaze::gfx::palette_group_internal::LoadSwordPalettes().

◆ kShieldPalettes

constexpr int yaze::gfx::kShieldPalettes = 0xDD648
constexpr

◆ kHudPalettes

constexpr int yaze::gfx::kHudPalettes = 0xDD660
constexpr

Definition at line 73 of file snes_palette.h.

Referenced by yaze::gfx::palette_group_internal::LoadHUDPalettes().

◆ kDungeonMapPalettes

constexpr int yaze::gfx::kDungeonMapPalettes = 0xDD70A
constexpr

Definition at line 74 of file snes_palette.h.

◆ kDungeonMainPalettes

constexpr int yaze::gfx::kDungeonMainPalettes = 0xDD734
constexpr

◆ kDungeonMapBgPalettes

constexpr int yaze::gfx::kDungeonMapBgPalettes = 0xDE544
constexpr

Definition at line 78 of file snes_palette.h.

◆ kHardcodedGrassLW

constexpr int yaze::gfx::kHardcodedGrassLW = 0x5FEA9
constexpr

Definition at line 81 of file snes_palette.h.

Referenced by yaze::gfx::palette_group_internal::LoadGrassColors().

◆ kHardcodedGrassDW

constexpr int yaze::gfx::kHardcodedGrassDW = 0x05FEB3
constexpr

Definition at line 82 of file snes_palette.h.

Referenced by yaze::gfx::palette_group_internal::LoadGrassColors().

◆ kHardcodedGrassSpecial

constexpr int yaze::gfx::kHardcodedGrassSpecial = 0x75640
constexpr

Definition at line 83 of file snes_palette.h.

Referenced by yaze::gfx::palette_group_internal::LoadGrassColors().

◆ kOverworldMiniMapPalettes

constexpr int yaze::gfx::kOverworldMiniMapPalettes = 0x55B27
constexpr

◆ kTriforcePalette

constexpr int yaze::gfx::kTriforcePalette = 0x64425
constexpr

◆ kCrystalPalette

constexpr int yaze::gfx::kCrystalPalette = 0xF4CD3
constexpr

◆ CustomAreaSpecificBGPalette

constexpr int yaze::gfx::CustomAreaSpecificBGPalette = 0x140000
constexpr

< 2 bytes for each overworld area (320)

Definition at line 89 of file snes_palette.h.

◆ CustomAreaSpecificBGASM

constexpr int yaze::gfx::CustomAreaSpecificBGASM = 0x140150
constexpr

Definition at line 90 of file snes_palette.h.

◆ kCustomAreaSpecificBGEnabled

constexpr int yaze::gfx::kCustomAreaSpecificBGEnabled = 0x140140
constexpr

Definition at line 93 of file snes_palette.h.

◆ HudPalettesMax

constexpr int yaze::gfx::HudPalettesMax = 2
constexpr

Definition at line 95 of file snes_palette.h.

◆ OverworldMainPalettesMax

constexpr int yaze::gfx::OverworldMainPalettesMax = 6
constexpr

Definition at line 96 of file snes_palette.h.

◆ OverworldAuxPalettesMax

constexpr int yaze::gfx::OverworldAuxPalettesMax = 20
constexpr

Definition at line 97 of file snes_palette.h.

◆ OverworldAnimatedPalettesMax

constexpr int yaze::gfx::OverworldAnimatedPalettesMax = 14
constexpr

Definition at line 98 of file snes_palette.h.

◆ GlobalSpritePalettesMax

constexpr int yaze::gfx::GlobalSpritePalettesMax = 2
constexpr

Definition at line 99 of file snes_palette.h.

◆ ArmorPalettesMax

constexpr int yaze::gfx::ArmorPalettesMax = 5
constexpr

Definition at line 100 of file snes_palette.h.

◆ SwordsPalettesMax

constexpr int yaze::gfx::SwordsPalettesMax = 4
constexpr

Definition at line 101 of file snes_palette.h.

◆ SpritesAux1PalettesMax

constexpr int yaze::gfx::SpritesAux1PalettesMax = 12
constexpr

Definition at line 102 of file snes_palette.h.

◆ SpritesAux2PalettesMax

constexpr int yaze::gfx::SpritesAux2PalettesMax = 11
constexpr

Definition at line 103 of file snes_palette.h.

◆ SpritesAux3PalettesMax

constexpr int yaze::gfx::SpritesAux3PalettesMax = 24
constexpr

Definition at line 104 of file snes_palette.h.

◆ ShieldsPalettesMax

constexpr int yaze::gfx::ShieldsPalettesMax = 3
constexpr

Definition at line 105 of file snes_palette.h.

◆ DungeonsMainPalettesMax

constexpr int yaze::gfx::DungeonsMainPalettesMax = 20
constexpr

Definition at line 106 of file snes_palette.h.

◆ OverworldBackgroundPaletteMax

constexpr int yaze::gfx::OverworldBackgroundPaletteMax = 160
constexpr

Definition at line 107 of file snes_palette.h.

◆ OverworldGrassPalettesMax

constexpr int yaze::gfx::OverworldGrassPalettesMax = 3
constexpr

Definition at line 108 of file snes_palette.h.

◆ Object3DPalettesMax

constexpr int yaze::gfx::Object3DPalettesMax = 2
constexpr

Definition at line 109 of file snes_palette.h.

◆ OverworldMiniMapPalettesMax

constexpr int yaze::gfx::OverworldMiniMapPalettesMax = 2
constexpr

Definition at line 110 of file snes_palette.h.

◆ TilePriorityBit

constexpr uint16_t yaze::gfx::TilePriorityBit = 0x2000
constexpr

Definition at line 12 of file snes_tile.cc.

Referenced by GetTilesInfo(), and TileInfoToShort().

◆ TileHFlipBit

constexpr uint16_t yaze::gfx::TileHFlipBit = 0x4000
constexpr

Definition at line 15 of file snes_tile.cc.

Referenced by GetTilesInfo(), and TileInfoToShort().

◆ TileVFlipBit

constexpr uint16_t yaze::gfx::TileVFlipBit = 0x8000
constexpr

Definition at line 18 of file snes_tile.cc.

Referenced by GetTilesInfo(), and TileInfoToShort().

◆ TileNameMask

constexpr uint16_t yaze::gfx::TileNameMask = 0x03FF
constexpr

Definition at line 21 of file snes_tile.cc.

Referenced by GetTilesInfo(), and TileInfoToShort().

◆ kTilesheetWidth

constexpr int yaze::gfx::kTilesheetWidth = 128
constexpr

◆ kTilesheetHeight

constexpr int yaze::gfx::kTilesheetHeight = 32
constexpr

◆ kTilesheetDepth

◆ kGraphicsBitmap

constexpr uint8_t yaze::gfx::kGraphicsBitmap[8]
constexpr
Initial value:
= {0x80, 0x40, 0x20, 0x10,
0x08, 0x04, 0x02, 0x01}

Definition at line 20 of file snes_tile.h.

Referenced by SnesTo8bppSheet().