275. Таблица шаблонов с палитрой NES
Рендеринг фреймбуфера таблицы шаблонов с использованием палитры NES по умолчанию.
Урок 275 из 356 · tests/chapter_05_rendering_pipeline/test_275_pattern_table_with_nes_palette.py
Файл для обновления
emulator/rendering/pattern_table_renderer.pyПочему этот шаг важен
Универсальный рендерер таблицы шаблонов уже поддерживает пользовательские палитры
pattern_table_to_framebuffer(pattern_table_bytes, palette)Это полезно для тестов и отладочных палитр. Теперь, когда у нас есть RGB-аппроксимация палитры NES по умолчанию, добавим удобную вспомогательную функцию:
pattern_table_to_nes_framebuffer(pattern_table_bytes)Эта вспомогательная функция делает путь с палитрой по умолчанию явным, не убирая поддержку пользовательских палитр.
Что она должна делать
pattern_table_to_nes_framebuffer(pattern_table_bytes)
-> pattern_table_to_framebuffer(pattern_table_bytes, NES_PALETTE_RGB)Пример возможной реализации
from emulator.rendering.nes_palette import NES_PALETTE_RGB
def pattern_table_to_nes_framebuffer(
pattern_table_bytes: bytes,
) -> Framebuffer:
return pattern_table_to_framebuffer(pattern_table_bytes, NES_PALETTE_RGB)Почему бы не сделать NES_PALETTE_RGB аргументом по умолчанию?
Это тоже сработало бы
def pattern_table_to_framebuffer(pattern_table_bytes, palette=NES_PALETTE_RGB):
...Но отдельная вспомогательная функция понятнее для курса
pattern_table_to_framebuffer(..., palette)
custom palette path
pattern_table_to_nes_framebuffer(...)
default NES palette pathПримечание: этот тест использует только синтетические байты CHR. Не используйте в этом тесте данные CHR из коммерческих ROM.
Вне рамок этого шага
- отображение через pygame
- запись файлов изображений
- рендеринг таблицы имён/фона
- поиск в палитровой RAM PPU
- акцентированные цвета PPUMASK
- спрайты
Запустить этот урок
uv run pytest tests/chapter_05_rendering_pipeline/test_275_pattern_table_with_nes_palette.py -v