Каждый пиксель состоит из двух битов, допускающих до 4 оттенков серого. Из раздела Монохромные ЖК-палитры pandocs мы можем разработать алгоритм получения цвета (в случае, если я его правильно понял):
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
прозрачен вместо белого? Почему меняется определение палитры вместо номера цвета, используемого для получения цвета из палитры?