283. Framebuffer de fondo de console

Exponer los datos actuales del framebuffer de fondo desde Console.

Lección 283 de 356 · tests/chapter_05_rendering_pipeline/test_283_console_background_framebuffer.py

Archivo a actualizar

emulator/console.py

Por qué existe este paso

El renderizador ahora puede extraer un framebuffer de fondo a partir de la memoria actual de la PPU:

ppu_background_to_framebuffer(ppu)

Console es el coordinador de la máquina de más alto nivel que posee la relación CPU/PPU. El código del frontend debería poder pedir eventualmente a Console el framebuffer de fondo actual sin conocer los detalles de la extracción de memoria de la PPU.

Este paso añade un pequeño método

console.render_background_framebuffer() -> Framebuffer

Separación importante

Console.step()
    advances emulation time

Console.render_background_framebuffer()
    observes current PPU memory and returns pure framebuffer data

No renderices dentro de Console.step(). Un fotograma real contiene muchas instrucciones de CPU; renderizar después de cada instrucción de CPU sería derrochador y mezclaría la temporización con la observación.

Ejemplo de implementación sugerida

from emulator.rendering.framebuffer import Framebuffer
from emulator.rendering.ppu_background_renderer import ppu_background_to_framebuffer


class Console:
    ...

    def render_background_framebuffer(self) -> Framebuffer:
        return ppu_background_to_framebuffer(self.ppu)

Regla de arquitectura

Esto sigue devolviendo datos de framebuffer puros. No importes pygame aquí.

Fuera de alcance

  • visualización con pygame
  • step_until_frame/run_frame
  • sprites
  • OAMDMA
  • entrada del mando

Ejecutar esta lección

uv run pytest tests/chapter_05_rendering_pipeline/test_283_console_background_framebuffer.py -v