yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
tile16_metadata.cc
Go to the documentation of this file.
2
3namespace yaze::zelda3 {
4
5const gfx::TileInfo& Tile16QuadrantInfo(const gfx::Tile16& tile, int quadrant) {
6 switch (quadrant) {
7 case 0:
8 return tile.tile0_;
9 case 1:
10 return tile.tile1_;
11 case 2:
12 return tile.tile2_;
13 default:
14 return tile.tile3_;
15 }
16}
17
19 switch (quadrant) {
20 case 0:
21 return tile.tile0_;
22 case 1:
23 return tile.tile1_;
24 case 2:
25 return tile.tile2_;
26 default:
27 return tile.tile3_;
28 }
29}
30
32 if (!tile) {
33 return;
34 }
35 tile->tiles_info[0] = tile->tile0_;
36 tile->tiles_info[1] = tile->tile1_;
37 tile->tiles_info[2] = tile->tile2_;
38 tile->tiles_info[3] = tile->tile3_;
39}
40
41void SetTile16AllQuadrantPalettes(gfx::Tile16* tile, uint8_t palette_id) {
42 if (!tile) {
43 return;
44 }
45 const uint8_t palette = static_cast<uint8_t>(palette_id & 0x07);
46 tile->tile0_.palette_ = palette;
47 tile->tile1_.palette_ = palette;
48 tile->tile2_.palette_ = palette;
49 tile->tile3_.palette_ = palette;
51}
52
53bool SetTile16QuadrantPalette(gfx::Tile16* tile, int quadrant,
54 uint8_t palette_id) {
55 if (!tile || quadrant < 0 || quadrant > 3) {
56 return false;
57 }
58 MutableTile16QuadrantInfo(*tile, quadrant).palette_ =
59 static_cast<uint8_t>(palette_id & 0x07);
61 return true;
62}
63
68
73
75 const gfx::Tile16 original = tile;
76 tile.tile0_ = HorizontalFlipTileInfo(original.tile1_);
77 tile.tile1_ = HorizontalFlipTileInfo(original.tile0_);
78 tile.tile2_ = HorizontalFlipTileInfo(original.tile3_);
79 tile.tile3_ = HorizontalFlipTileInfo(original.tile2_);
81 return tile;
82}
83
85 const gfx::Tile16 original = tile;
86 tile.tile0_ = VerticalFlipTileInfo(original.tile2_);
87 tile.tile1_ = VerticalFlipTileInfo(original.tile3_);
88 tile.tile2_ = VerticalFlipTileInfo(original.tile0_);
89 tile.tile3_ = VerticalFlipTileInfo(original.tile1_);
91 return tile;
92}
93
95 const gfx::Tile16 original = tile;
96 tile.tile0_ = original.tile2_; // BL -> TL
97 tile.tile1_ = original.tile0_; // TL -> TR
98 tile.tile2_ = original.tile3_; // BR -> BL
99 tile.tile3_ = original.tile1_; // TR -> BR
100 SyncTile16TilesInfo(&tile);
101 return tile;
102}
103
104} // namespace yaze::zelda3
Tile composition of four 8x8 tiles.
Definition snes_tile.h:142
std::array< TileInfo, 4 > tiles_info
Definition snes_tile.h:148
SNES 16-bit tile metadata container.
Definition snes_tile.h:52
Zelda 3 specific classes and functions.
gfx::Tile16 HorizontalFlipTile16(gfx::Tile16 tile)
gfx::TileInfo & MutableTile16QuadrantInfo(gfx::Tile16 &tile, int quadrant)
void SetTile16AllQuadrantPalettes(gfx::Tile16 *tile, uint8_t palette_id)
gfx::TileInfo VerticalFlipTileInfo(gfx::TileInfo info)
void SyncTile16TilesInfo(gfx::Tile16 *tile)
gfx::Tile16 VerticalFlipTile16(gfx::Tile16 tile)
gfx::Tile16 RotateTile16Clockwise(gfx::Tile16 tile)
const gfx::TileInfo & Tile16QuadrantInfo(const gfx::Tile16 &tile, int quadrant)
gfx::TileInfo HorizontalFlipTileInfo(gfx::TileInfo info)
bool SetTile16QuadrantPalette(gfx::Tile16 *tile, int quadrant, uint8_t palette_id)