234. Forma básica del bus de la ppu
Crea la forma básica de PpuBus.
Lección 234 de 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_234_ppu_bus_basic_shape.py
Archivos a crear/actualizar
emulator/bus/ppu_bus.pyClase a implementar
PpuBusPor qué existe este paso
La NES tiene dos espacios de direcciones distintos
CPU address space: $0000-$FFFF
routed by CpuBus
PPU address space: $0000-$3FFF
routed by PpuBusLa PPU no debería escribir directamente en la VRAM en bruto para siempre. Debería comunicarse con un límite estable
del espacio de direcciones de la PPU
PPU -> PpuBus -> VRAM / mapper CHR / palette RAM laterEsto permite que el comportamiento de PPUDATA se mantenga estable mientras el interior de PpuBus se vuelve más preciso con el tiempo.
Constante importante
PPU_ADDRESS_MASK = 0x3FFFPor qué
Las direcciones de la PPU son de 14 bits. Enmascarar con 0x3FFF pliega cualquier dirección dentro del rango direccionable de la PPU $0000-$3FFF.
Almacenamiento inicial
Por ahora, PpuBus posee un gran almacén VRAM. Esta es una simplificación temporal que nos permite construir PPUADDR/PPUDATA antes de tener plena precisión de nametables/paletas.
Pseudocódigo de implementación sugerido
from dataclasses import dataclass, field
from typing import Optional
from emulator.memory.vram import VRAM
from emulator.cartridge.mapper_interface import MapperInterface
PPU_ADDRESS_MASK = 0x3FFF
@dataclass
class PpuBus:
vram: VRAM = field(default_factory=VRAM)
mapper: Optional[MapperInterface] = NoneEjecutar esta lección
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_234_ppu_bus_basic_shape.py -v