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 — это доступный для записи CPU регистр маски рендеринга по адресу $2001. Он управляет тем, какие части рендеринга видимы и как усиливаются цвета.
Раскладка битов обычно записывается как
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