247. Constantes de bits de PPUMASK

Define las constantes de bits de PPUMASK ($2001).

Lección 247 de 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_247_ppumask_bit_constants.py

Referencia

https://www.nesdev.org/wiki/PPU_registers#PPUMASK

Archivo a actualizar

emulator/ppu/ppu.py

Constantes a añadir

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

Por qué existe este paso

PPUMASK es el registro de máscara de renderizado escribible por la CPU en $2001. Controla qué partes del renderizado son visibles y cómo se enfatizan los colores.

La disposición de los bits se suele escribir como

BGRs bMmG

Significado

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

Alcance importante

Este test solo requiere constantes con nombre. El comportamiento de renderizado usará estos nombres más adelante. No implementes la escala de grises real, el énfasis de color, el renderizado de fondo ni el renderizado de sprites en este paso.

Pseudocódigo de implementación sugerido

# 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

Valor común

$1E == 0b0001_1110

Esto habilita

  • fondo en los 8 píxeles izquierdos
  • sprites en los 8 píxeles izquierdos
  • renderizado de fondo
  • renderizado de sprites

Fuera del alcance

  • renderizado real de píxeles
  • comportamiento de paleta en escala de grises
  • comportamiento de énfasis de color
  • comportamiento de recorte del borde izquierdo

Ejecutar esta lección

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