231. Ppu 状态标志常量
定义 PPUSTATUS 标志常量。
第 231 / 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_231_ppu_status_flag_constants.py
要更新的文件
emulator/ppu/ppu.py要添加的常量
VBLANK_STARTED (Will be used in next test)
SPRITE_ZERO_HIT (Will be used later...)
SPRITE_OVERFLOW (Will be used later...)为什么需要这一步
PPUSTATUS 是 CPU 可读的 PPU 状态寄存器,位于 $2002。它是一个字节,其重要的硬件状态标志位于高位:
bit: 7 6 5 4 3 2 1 0
V S O - - - - -含义
V = VBlank started
S = Sprite 0 hit
O = Sprite overflow为什么使用常量
像 0x80、0x40、0x20 这样的魔法数字在机制上可以工作,但它们掩盖了硬件含义。命名常量能让之后的 PPU 行为更易读:
self.status &= ~VBLANK_STARTED比下面这样更清晰:
self.status &= ~0x80重要范围说明
这一步只是命名状态位,尚未实现 sprite 0 命中或精灵溢出行为。那些需要渲染、精灵评估、OAM 和扫描线时序的支持。
建议实现的伪代码
VBLANK_STARTED = 1 << 7
SPRITE_ZERO_HIT = 1 << 6
SPRITE_OVERFLOW = 1 << 5为什么是 1 << 7:
将 1 左移 7 位会得到一个只有第 7 位被置位的字节
1 << 7 == 0b1000_0000 == 0x80运行本课
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_231_ppu_status_flag_constants.py -v