235. Lectura y escritura de vram en el bus de la ppu
Añade el reenvío básico de lectura/escritura de PpuBus a VRAM.
Lección 235 de 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_235_ppu_bus_vram_read_write.py
Archivo a actualizar
emulator/bus/ppu_bus.pyMétodos a implementar
PpuBus.read(addr: int) -> int
PpuBus.write(addr: int, value: int) -> NonePor qué existe este paso
Antes de que PPUADDR/PPUDATA puedan escribir en la memoria de vídeo, la PPU necesita un objeto tipo bus que pueda aceptar direcciones de la PPU y realizar acceso a memoria.
Para este primer paso de lectura/escritura, evita probar la región CHR $0000-$1FFF. La CHR se probará por separado porque implica el comportamiento del mapper del cartucho.
Usa por ahora direcciones que no sean CHR, como $2000:
PpuBus.write($2000, $AA)
PpuBus.read($2000) -> $AAPseudocódigo de implementación sugerido para la región por defecto/no CHR
def read(self, addr: int) -> int:
addr = addr & PPU_ADDRESS_MASK
return self.vram.read(addr)
def write(self, addr: int, value: int) -> None:
addr = addr & PPU_ADDRESS_MASK
self.vram.write(addr, value)Más adelante, estos métodos crecerán con secciones para
- área CHR: $0000-$1FFF
- área de nametables: $2000-$3EFF
- área de paletas: $3F00-$3FFF
Ejecutar esta lección
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_235_ppu_bus_vram_read_write.py -v