244. Validación: una ROM minúscula escribe en la memoria de la PPU
TEST DE VALIDACIÓN: una ROM iNES minúscula escribe en la memoria de la PPU a través de PPUADDR/PPUDATA.
Lección 244 de 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_244_VALIDATION_tiny_rom_writes_ppu_memory.py
Este archivo no es un paso de implementación para el estudiante.
No hay nada nuevo que implementar para este test. Existe únicamente para validar que las piezas construidas hasta ahora funcionan juntas a través de sus límites reales:
iNES bytes
-> Cartridge.from_ines_bytes(data)
-> CpuBus(cartridge=cartridge, ppu=ppu)
-> CPU.reset()
-> CPU.step()
-> STA $2006 / STA $2007
-> CpuBus.write(...)
-> PPU.write_register(...)
-> PPUADDR sets vram_addr
-> PPUDATA writes through PpuBus
-> VRAM stores the bytePor qué existe esta validación
Los tests anteriores verificaron de forma aislada PPUADDR, PPUDATA, el comportamiento de incremento de PPUCTRL, PpuBus y el enrutamiento de CpuBus. Este test demuestra que un programa real de CPU, obtenido desde una ROM iNES minúscula respaldada por un cartucho, puede escribir en la memoria del lado de la PPU.
Programa minúsculo colocado en la dirección de CPU $8000:
A9 20 LDA #$20
8D 06 20 STA $2006 ; PPUADDR high byte
A9 00 LDA #$00
8D 06 20 STA $2006 ; PPUADDR low byte
A9 AA LDA #$AA
8D 07 20 STA $2007 ; PPUDATA write to PPU memory at $2000
EA NOPResultado esperado
ppu.ppu_bus.read($2000) == $AA
ppu.vram_addr == $2001Fuera del alcance
- renderizado
- precisión del espejado de nametable
- precisión de la RAM de paleta
- escrituras en CHR RAM
- lecturas de PPUDATA/almacenamiento en búfer de lectura
- temporización de VBlank/NMI
Ejecutar esta lección
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_244_VALIDATION_tiny_rom_writes_ppu_memory.py -v