Предоставить данные текущего фонового framebuffer из Console.
Урок 283 из 356 · tests/chapter_05_rendering_pipeline/test_283_console_background_framebuffer.py
Файл для обновления
emulator/console.py
Зачем нужен этот шаг
Рендерер уже умеет извлекать фоновый framebuffer из текущей памяти PPU:
ppu_background_to_framebuffer(ppu)
Console — это координатор машины верхнего уровня, владеющий связью CPU/PPU. В будущем код фронтенда должен иметь возможность запрашивать у Console текущий фоновый framebuffer, не зная деталей извлечения памяти PPU.
Console.step()
advances emulation time
Console.render_background_framebuffer()
observes current PPU memory and returns pure framebuffer data
Не выполняйте рендеринг внутри Console.step(). Реальный кадр содержит множество инструкций CPU; рендеринг после каждой инструкции CPU был бы расточительным и смешивал бы тайминг с наблюдением.
Пример предлагаемой реализации
from emulator.rendering.framebuffer import Framebuffer
from emulator.rendering.ppu_background_renderer import ppu_background_to_framebuffer
classConsole:
...
defrender_background_framebuffer(self) -> Framebuffer:
return ppu_background_to_framebuffer(self.ppu)
Архитектурное правило
Метод по-прежнему возвращает чистые данные framebuffer. Не импортируйте pygame здесь.
Вне рамок этого шага
отображение pygame
step_until_frame/run_frame
спрайты
OAMDMA
ввод с контроллера
Запустить этот урок
uv run pytest tests/chapter_05_rendering_pipeline/test_283_console_background_framebuffer.py -v