247. Ppumask 位常量
定义 PPUMASK ($2001) 的位常量。
第 247 / 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_247_ppumask_bit_constants.py
参考资料
https://www.nesdev.org/wiki/PPU_registers#PPUMASK要更新的文件
emulator/ppu/ppu.py要添加的常量
MASK_GRAYSCALE
MASK_SHOW_BACKGROUND_LEFT_8
MASK_SHOW_SPRITES_LEFT_8
MASK_SHOW_BACKGROUND
MASK_SHOW_SPRITES
MASK_EMPHASIZE_RED
MASK_EMPHASIZE_GREEN
MASK_EMPHASIZE_BLUE为什么需要这一步
PPUMASK 是位于 $2001 的 CPU 可写渲染掩码寄存器。它控制渲染的哪些部分可见,以及色彩如何被强调。
其位布局通常写作
BGRs bMmG含义
B = emphasize blue
G = emphasize green
R = emphasize red
s = show sprites
b = show background
M = show sprites in leftmost 8 pixels
m = show background in leftmost 8 pixels
G = grayscale重要范围
本测试只要求定义命名常量。渲染行为将在之后使用这些名称。在这一步中,请不要实现实际的灰度、色彩强调、背景渲染或精灵渲染。
建议的实现伪代码
# PPUMASK ($2001) bits: BGRs bMmG
MASK_GRAYSCALE = 1 << 0
MASK_SHOW_BACKGROUND_LEFT_8 = 1 << 1
MASK_SHOW_SPRITES_LEFT_8 = 1 << 2
MASK_SHOW_BACKGROUND = 1 << 3
MASK_SHOW_SPRITES = 1 << 4
MASK_EMPHASIZE_RED = 1 << 5
MASK_EMPHASIZE_GREEN = 1 << 6
MASK_EMPHASIZE_BLUE = 1 << 7常用值
$1E == 0b0001_1110该值会启用
- 背景最左侧 8 像素
- 精灵最左侧 8 像素
- 背景渲染
- 精灵渲染
超出范围
- 实际的像素渲染
- 灰度调色板行为
- 色彩强调行为
- 左边缘裁剪行为
运行本课
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_247_ppumask_bit_constants.py -v