vgbc/lcd/palette.cpp

37 lines
708 B
C++

#include <lcd/palette.h>
const sf::Color Palette::colors[] = {
sf::Color(255,255,255),
sf::Color(170,170,170),
sf::Color(85,85,85),
sf::Color(0,0,0),
};
const sf::Color Palette::transparent(0,0,0,255);
Palette::Palette(bool transparent0)
: transparent0(transparent0)
{
setRegValue(0);
}
void Palette::setRegValue(u8 regval)
{
for(int i = 0; i < 4; i++, regval >>= 2)
idx_to_color[i] = regval & 0x3;
}
u8 Palette::getRegValue()
{
u8 regval = 0;
for(int i = 0; i < 4; i++, regval <<= 2)
regval |= idx_to_color[i] & 0x3;
return regval;
}
const sf::Color& Palette::getColorByIdx(u8 idx)
{
if(idx == 0 && transparent0) return transparent;
return colors[idx_to_color[idx]];
}