284. Validación cpu escribe memoria de ppu y luego renderiza
VALIDACIÓN: la CPU escribe en la memoria de la PPU y luego Console renderiza el framebuffer de fondo.
Lección 284 de 356 · tests/chapter_05_rendering_pipeline/test_284_VALIDATION_cpu_writes_ppu_memory_then_render.py
No debería hacer falta ninguna implementación nueva para este test si los pasos anteriores de CPU, PPU, bus y renderizado están completos.
Por qué existe esta validación
El emulador ahora tiene dos rutas importantes
CPU/PPU write path:
CPU program writes PPUADDR/PPUDATA
-> PPU memory changes
Rendering path:
Console.render_background_framebuffer()
-> reads current PPU memory
-> returns FramebufferEste test verifica que esas rutas observan el mismo estado de la PPU.
Ruta de extremo a extremo
CPU executes STA $2006/$2007
-> CpuBus routes $2000-$2007 to PPU registers
-> PPUADDR selects PPU memory address
-> PPUDATA writes through PpuBus
Console.render_background_framebuffer()
-> reads nametable/palette/pattern memory from console.ppu
-> renders pure Framebuffer dataComportamiento del pequeño programa de CPU
write $01 to PPU $2000
nametable[0] = tile ID 1
write $0F,$01,$02,$03 to PPU $3F00-$3F03
background palette 0 maps color index 3 to NES color $03Configuración sintética del CHR
Los datos de CHR se preparan directamente en la memoria de la PPU para esta validación. Esto mantiene el test centrado en las escrituras de la CPU en la tabla de nombres/RAM de paleta y en la ruta de renderizado. Para Mapper000/CHR ROM, los gráficos CHR normalmente provienen del cartucho.
Resultado esperado
top-left framebuffer pixel uses get_nes_rgb_color($03)Invariante importante
Las escrituras de la CPU y el renderizado de Console deben usar la misma instancia de PPU.
Fuera de alcance
- visualización con pygame
- fixture de ROM real
- carga de CHR ROM a través del cartucho
- sprites
- scroll
- OAMDMA
Ejecutar esta lección
uv run pytest tests/chapter_05_rendering_pipeline/test_284_VALIDATION_cpu_writes_ppu_memory_then_render.py -v