每个像素由两个比特组成,允许多达4种灰度。从LCD Monochrome Palettes section of the 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是透明的而不是白色的?为什么调色板定义会更改,而不是用于从调色板中获取颜色的颜色编号?
发布于 2019-06-30 02:35:53
你说“两个一模一样”是什么意思?您有三个不同的调色板。一个用于背景和窗口。两个用于精灵,你可以使用精灵属性中的特殊位为每个精灵单独选择。为什么改变调色板而不是颜色号码?更改调色板或精灵属性比重写精灵或窗口的每个磁贴以在屏幕上实现某些效果要便宜得多。你甚至可以在游戏男孩在屏幕上绘制图像时实时改变调色板。
例如,假设我想实现闪烁效果,整个背景在正常颜色和白色或黑色之间闪烁。而不是重写每一帧上的每个背景瓦片,我只需要改变调色板和时间,只影响我需要的部分屏幕。甚至有一个描述类似技术的article。
https://stackoverflow.com/questions/56816799
复制相似问题