首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拥有多个调色板的GameBoy有什么意义?

问拥有多个调色板的GameBoy有什么意义?
EN

Stack Overflow用户
提问于 2019-06-29 18:29:58
回答 1查看 136关注 0票数 1

每个像素由两个比特组成,允许多达4种灰度。从LCD Monochrome Palettes section of the pandocs中,我们可以开发获取颜色的算法(在我理解正确的情况下):

代码语言:javascript
复制
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是透明的而不是白色的?为什么调色板定义会更改,而不是用于从调色板中获取颜色的颜色编号?

EN

回答 1

Stack Overflow用户

发布于 2019-06-30 02:35:53

你说“两个一模一样”是什么意思?您有三个不同的调色板。一个用于背景和窗口。两个用于精灵,你可以使用精灵属性中的特殊位为每个精灵单独选择。为什么改变调色板而不是颜色号码?更改调色板或精灵属性比重写精灵或窗口的每个磁贴以在屏幕上实现某些效果要便宜得多。你甚至可以在游戏男孩在屏幕上绘制图像时实时改变调色板。

例如,假设我想实现闪烁效果,整个背景在正常颜色和白色或黑色之间闪烁。而不是重写每一帧上的每个背景瓦片,我只需要改变调色板和时间,只影响我需要的部分屏幕。甚至有一个描述类似技术的article。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56816799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档