236. Protocolo de interfaz del mapper
Crea MapperInterface como un protocolo para los límites bus/mapper.
Lección 236 de 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_236_mapper_interface_protocol.py
Archivo a crear
emulator/cartridge/mapper_interface.pyProtocolo a implementar
MapperInterfacePor qué existe este ayudante
PpuBus no debería depender directamente de Mapper000. Mapper000 es solo un mapper de cartucho. Los mappers posteriores pueden conmutar bancos de PRG/CHR de forma distinta, pero PpuBus solo debería necesitar una pequeña interfaz:
read_prg(addr)
read_chr(addr)Esto mantiene a PpuBus consciente de los mappers sin hacerlo específico de Mapper000.
¿Qué es un Protocol? Un Protocol describe los métodos que debe proporcionar un objeto. Una clase no necesita heredar del Protocol explícitamente. Si tiene los métodos correctos, coincide con el protocolo de forma estructural.
Pseudocódigo de implementación sugerido
from typing import Protocol
class MapperInterface(Protocol):
def read_prg(self, addr: int) -> int:
...
def read_chr(self, addr: int) -> int:
...Nota futura
Cuando se implementen las escrituras en CHR RAM, este protocolo podría crecer
write_chr(addr, value)No lo exijas todavía, porque Mapper000 no implementa escrituras en CHR en esta etapa.
Ejecutar esta lección
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_236_mapper_interface_protocol.py -v