[nostalgia/core] Cleanup reading of SubSheet::pixels

This commit is contained in:
2022-03-05 16:00:32 -06:00
parent 20a61de9fd
commit f40c912365
2 changed files with 25 additions and 22 deletions
+16
View File
@@ -180,6 +180,22 @@ struct TileSheet {
return getPixel(bpp, idx);
}
constexpr auto walkPixels(int8_t bpp, auto callback) const noexcept {
if (bpp == 4) {
for (std::size_t i = 0; i < pixels.size(); ++i) {
const auto colorIdx1 = pixels[i] & 0xF;
const auto colorIdx2 = pixels[i] >> 4;
callback(i * 2 + 0, colorIdx1);
callback(i * 2 + 1, colorIdx2);
}
} else {
for (std::size_t i = 0; i < pixels.size(); ++i) {
const auto p = pixels[i];
callback(i, p);
}
}
}
constexpr void setPixel(int8_t bpp, uint64_t idx, uint8_t palIdx) noexcept {
auto &pixel = this->pixels[idx / 2];
if (bpp == 4) {