1#ifndef YAZE_GFX_TILEMAP_H
2#define YAZE_GFX_TILEMAP_H
4#include "absl/container/flat_hash_map.h"
10#include <unordered_map>
34 std::unordered_map<int, Bitmap>
cache_;
43 auto it =
cache_.find(tile_id);
66 cache_[tile_id] = std::move(bitmap);
118 const std::vector<uint8_t> &data,
int tile_id,
int sheet_offset);
121 int tile_size,
int num_tiles,
SnesPalette &palette);
133 int sheet_offset,
int tile_id);
151 const std::vector<std::pair<float, float>>& positions,
152 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)
Main namespace for the application.
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.
void CacheTile(int tile_id, Bitmap &&bitmap)
Cache a tile bitmap.
std::list< int > access_order_
std::unordered_map< int, Bitmap > cache_
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)