1#ifndef YAZE_GFX_TILEMAP_H
2#define YAZE_GFX_TILEMAP_H
6#include <unordered_map>
8#include "absl/container/flat_hash_map.h"
40 std::unordered_map<int, std::unique_ptr<Bitmap>>
cache_;
51 auto it =
cache_.find(tile_id);
56 return it->second.get();
75 cache_[tile_id] = std::make_unique<Bitmap>(bitmap);
121 std::vector<std::array<gfx::TileInfo, 4>>
128 const std::vector<uint8_t>& data,
int tile_id,
int sheet_offset);
131 int width,
int height,
int tile_size,
int num_tiles,
135 const std::vector<uint8_t>& data);
145 int sheet_offset,
int tile_id);
164 const std::vector<int>& tile_ids,
165 const std::vector<std::pair<float, float>>& positions,
166 const std::vector<std::pair<float, float>>& scales = {});
Represents a bitmap image optimized for SNES ROM hacking.
Defines an abstract interface for all rendering operations.
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
SNES 16-bit tile metadata container.
void RenderTile16(IRenderer *renderer, Tilemap &tilemap, int tile_id)
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 UpdateTilemap(IRenderer *renderer, Tilemap &tilemap, const std::vector< uint8_t > &data)
void UpdateTile16(IRenderer *renderer, Tilemap &tilemap, int tile_id)
std::vector< uint8_t > GetTilemapData(Tilemap &tilemap, int tile_id)
Tilemap CreateTilemap(IRenderer *renderer, std::vector< uint8_t > &data, int width, int height, int tile_size, int num_tiles, SnesPalette &palette)
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.
std::vector< uint8_t > FetchTileDataFromGraphicsBuffer(const std::vector< uint8_t > &data, int tile_id, int sheet_offset)
void RenderTile(IRenderer *renderer, Tilemap &tilemap, 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)
Simple 2D coordinate pair for tilemap dimensions.
int y
Y coordinate or height.
int x
X coordinate or width.
Smart tile cache with LRU eviction for efficient memory management.
size_t Size() const
Get cache statistics.
std::unordered_map< int, std::unique_ptr< Bitmap > > cache_
std::list< int > access_order_
void CacheTile(int tile_id, const Bitmap &bitmap)
Cache a tile bitmap by copying it.
void Clear()
Clear the cache.
Bitmap * GetTile(int tile_id)
Get a cached tile by ID.
static constexpr size_t MAX_CACHE_SIZE
Tilemap structure for SNES tile-based graphics management.
Pair tile_size
Size of individual tiles (8x8 or 16x16)
TileCache tile_cache
Smart tile cache with LRU eviction.
Pair map_size
Size of tilemap in tiles.
Bitmap atlas
Master bitmap containing all tiles.
std::vector< std::array< gfx::TileInfo, 4 > > tile_info
Tile metadata (4 tiles per 16x16)