Каждый пиксель состоит из двух битов, что позволяет использовать до 4 оттенков серого. В разделе палитры монохромных ЖК-панелей мы можем разработать алгоритм получения цвета (в случае, если я правильно понял):
COLOR_NUMBER_PALETTE_BITS = {
0: (1, 0),
1: (3, 2),
2: (5, 4),
3: (7, 6)
}
COLORS = {0: WHITE, 1: LIGHT_GRAY, 2: DARK_GRAY, 3: BLACK}
def get_pixel_color(palette_address, color_number):
palette = read_memory(palette_address)
high_bit, low_bit = COLOR_NUMBER_PALETTE_BITS[color_number]
color_high_bit = get_bit(palette, high_bit)
color_low_bit = get_bit(palette, low_bit)
color = (color_high_bit << 1) | color_low_bit
return COLORS[color]
Но просто глядя на сигнатуру функции, мы можем сделать вывод, что одни и те же номера цветов могут давать разные цвета; это зависит от палитры, которую мы используем.
У меня вопрос: зачем нам несколько цветовых палитр, если две из них идентичны, а единственная разница с третьей в том, что 0
прозрачна, а не белая? Почему изменяется определение палитры вместо номера цвета, используемого для получения цвета из палитры?