每个像素由两位组成,最多允许 4 种灰度。从pandocs 的 LCD Monochrome Palettes 部分,我们可以开发获取颜色的算法(在我理解正确的情况下):
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
是透明而不是白色?为什么调色板定义会发生变化,而不是用于从调色板中获取颜色的颜色编号?