006. FakeROM
Crear un almacenamiento FakeROM escribible para los tests de la CPU.
Lección 6 de 356 · tests/chapter_01_cpu/test_006_FakeROM.py
Archivo a crear
emulator/memory/fake_rom.pyUbicación
class FakeROM(MemoryDevice)Por qué existe este paso
Los tests de instrucciones necesitan bytes de programa deterministas antes de disponer del análisis real de cartuchos. FakeROM modela la ventana PRG máxima $8000-$FFFF como 0x8000 bytes locales y permite que los tests la rellenen directamente.
Implementación de ejemplo completa
from dataclasses import dataclass, field
from emulator.memory.memory_device import MemoryDevice
@dataclass
class FakeROM(MemoryDevice):
_data: bytearray = field(
default_factory=lambda: bytearray(0x8000),
init=False,
)
def read(self, addr: int) -> int:
return self._data[addr]
def write(self, addr: int, value: int) -> None:
self._data[addr] = valueInvariantes importantes
- FakeROM almacena exactamente 0x8000 bytes
- sus direcciones son desplazamientos locales $0000-$7FFF
- las escrituras existen solo para preparar programas y datos de prueba
Error común
FakeROM no es un mapeador de cartucho real y su método de escritura no implica que la ROM PRG de la NES sea escribible. Es infraestructura de test controlada.
Fuera de alcance
- mapear FakeROM en las direcciones de la CPU
- análisis de iNES
- conmutación de bancos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_006_FakeROM.py -v