Add TileInfoToWord and WorldToTileInfo
This commit is contained in:
@@ -279,6 +279,38 @@ Bytes BPP8SNESToIndexed(Bytes data, uint64_t bpp) {
|
|||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t TileInfoToWord(TileInfo tile_info) {
|
||||||
|
uint16_t result = 0;
|
||||||
|
|
||||||
|
// Copy the id_ value
|
||||||
|
result |= tile_info.id_ & 0x3FF; // ids are 10 bits
|
||||||
|
|
||||||
|
// Set the vertical_mirror_, horizontal_mirror_, and over_ flags
|
||||||
|
result |= (tile_info.vertical_mirror_ ? 1 : 0) << 15;
|
||||||
|
result |= (tile_info.horizontal_mirror_ ? 1 : 0) << 14;
|
||||||
|
result |= (tile_info.over_ ? 1 : 0) << 13;
|
||||||
|
|
||||||
|
// Set the palette_
|
||||||
|
result |= (tile_info.palette_ & 0x07) << 10; // palettes are 3 bits
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
TileInfo WordToTileInfo(uint16_t word) {
|
||||||
|
// Extract the id_ value
|
||||||
|
uint16_t id = word & 0x3FF; // ids are 10 bits
|
||||||
|
|
||||||
|
// Extract the vertical_mirror_, horizontal_mirror_, and over_ flags
|
||||||
|
bool vertical_mirror = (word >> 15) & 0x01;
|
||||||
|
bool horizontal_mirror = (word >> 14) & 0x01;
|
||||||
|
bool over = (word >> 13) & 0x01;
|
||||||
|
|
||||||
|
// Extract the palette_
|
||||||
|
uint8_t palette = (word >> 10) & 0x07; // palettes are 3 bits
|
||||||
|
|
||||||
|
return TileInfo(id, palette, vertical_mirror, horizontal_mirror, over);
|
||||||
|
}
|
||||||
|
|
||||||
ushort TileInfoToShort(TileInfo tile_info) {
|
ushort TileInfoToShort(TileInfo tile_info) {
|
||||||
ushort result = 0;
|
ushort result = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ class TileInfo {
|
|||||||
palette_(palette) {}
|
palette_(palette) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint16_t TileInfoToWord(TileInfo tile_info);
|
||||||
|
TileInfo WordToTileInfo(uint16_t word);
|
||||||
ushort TileInfoToShort(TileInfo tile_info);
|
ushort TileInfoToShort(TileInfo tile_info);
|
||||||
|
|
||||||
TileInfo GetTilesInfo(ushort tile);
|
TileInfo GetTilesInfo(ushort tile);
|
||||||
|
|||||||
Reference in New Issue
Block a user