231. Constantes de flags de estado de la ppu

Define las constantes de flags de PPUSTATUS.

Lección 231 de 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_231_ppu_status_flag_constants.py

Archivo a actualizar

emulator/ppu/ppu.py

Constantes a añadir

VBLANK_STARTED      (Will be used in next test)
SPRITE_ZERO_HIT     (Will be used later...)
SPRITE_OVERFLOW     (Will be used later...)

Por qué existe este paso

PPUSTATUS es el registro de estado de la PPU legible por la CPU en $2002. Es un byte, y sus flags de estado de hardware importantes viven en los bits altos:

bit:  7 6 5 4 3 2 1 0
      V S O - - - - -

Significado

V = VBlank started
S = Sprite 0 hit
O = Sprite overflow

Por qué usar constantes

Los números mágicos como 0x80, 0x40 y 0x20 funcionan mecánicamente, pero ocultan el significado del hardware. Las constantes con nombre facilitan la lectura del comportamiento posterior de la PPU:

self.status &= ~VBLANK_STARTED

es más claro que:

self.status &= ~0x80

Alcance importante

Este paso solo nombra los bits de estado. Todavía no implementa el comportamiento de sprite 0 hit ni de sprite overflow. Eso requiere renderizado, evaluación de sprites, OAM y temporización de scanlines.

Pseudocódigo de implementación sugerido

VBLANK_STARTED = 1 << 7
SPRITE_ZERO_HIT = 1 << 6
SPRITE_OVERFLOW = 1 << 5

Por qué 1 << 7:

Desplazar 1 a la izquierda 7 posiciones crea un byte con solo el bit 7 activado

1 << 7 == 0b1000_0000 == 0x80

Ejecutar esta lección

uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_231_ppu_status_flag_constants.py -v