yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
tile16_usage_index.h
Go to the documentation of this file.
1#ifndef YAZE_ZELDA3_OVERWORLD_TILE16_USAGE_INDEX_H
2#define YAZE_ZELDA3_OVERWORLD_TILE16_USAGE_INDEX_H
3
4#include <array>
5#include <cstdint>
6#include <functional>
7#include <vector>
8
9#include "absl/status/status.h"
10#include "absl/status/statusor.h"
12
13namespace yaze::zelda3 {
14
16 int tile16_id = 0;
17 int quadrant = 0;
18};
19
20constexpr int kMaxTile8UsageId = 1024;
22 std::array<std::vector<Tile8UsageHit>, kMaxTile8UsageId>;
23
24void ClearTile8UsageIndex(Tile8UsageIndex* usage_index);
25
26void AddTile16ToUsageIndex(const gfx::Tile16& tile_data, int tile16_id,
27 Tile8UsageIndex* usage_index);
28
29absl::Status BuildTile8UsageIndex(
30 int total_tiles,
31 const std::function<absl::StatusOr<gfx::Tile16>(int)>& tile_provider,
32 Tile8UsageIndex* usage_index);
33
34// Adds one overworld map's tile16 placements to `counts` (indexed by tile16
35// ID). `world_tiles` is a world blockset indexed [x][y]; `local_map` is the
36// map's index within its world (map_id % 0x40, 8 maps per row, 32x32 tiles
37// each). IDs outside `counts` are ignored.
39 const std::vector<std::vector<uint16_t>>& world_tiles, int local_map,
40 std::vector<int>* counts);
41
43
44// Tile16 IDs in display order. kUsage puts the most placed tiles first (ties
45// by ID); kTileId keeps ID order. `hide_unused` drops tiles with no placements.
46std::vector<int> BuildTile16DisplayOrder(const std::vector<int>& counts,
47 Tile16SortMode sort_mode,
48 bool hide_unused);
49
50} // namespace yaze::zelda3
51
52#endif // YAZE_ZELDA3_OVERWORLD_TILE16_USAGE_INDEX_H
Tile composition of four 8x8 tiles.
Definition snes_tile.h:142
Zelda 3 specific classes and functions.
void AccumulateTile16MapUsage(const std::vector< std::vector< uint16_t > > &world_tiles, int local_map, std::vector< int > *counts)
void ClearTile8UsageIndex(Tile8UsageIndex *usage_index)
absl::Status BuildTile8UsageIndex(int total_tiles, const std::function< absl::StatusOr< gfx::Tile16 >(int)> &tile_provider, Tile8UsageIndex *usage_index)
std::vector< int > BuildTile16DisplayOrder(const std::vector< int > &counts, Tile16SortMode sort_mode, bool hide_unused)
std::array< std::vector< Tile8UsageHit >, kMaxTile8UsageId > Tile8UsageIndex
constexpr int kMaxTile8UsageId
void AddTile16ToUsageIndex(const gfx::Tile16 &tile_data, int tile16_id, Tile8UsageIndex *usage_index)