215. Dataclass de la ROM iNES
añade
Lección 215 de 356 · tests/chapter_02_rom_loading/test_215_ines_rom_dataclass.py
añade emulator/cartridge/ines.py::INesRom.
Por qué existe este paso
Este resultado inmutable del analizador mantiene juntos la cabecera interpretada y las secciones de programa y gráficos extraídas, de modo que parse_ines_rom no necesite devolver valores sueltos. Se construye sobre el modelo de cabecera y el analizador de las lecciones 213-214.
Implementación sugerida tras parse_ines_header:
@dataclass(frozen=True)
class INesRom:
header: INesHeader
prg_rom: bytes
chr_rom: bytesInvariantes: el orden de los campos es header, prg_rom, chr_rom; ambas cargas útiles son de tipo bytes; y la dataclass es inmutable (frozen) porque describe el contenido del archivo. No confundas este resultado a nivel de formato con el Cartridge orientado al emulador.
Fuera de alcance para este paso
1. Lesson 216 calculates offsets, skips trainers, and validates payload size.
2. Lesson 217 introduces the emulator-facing `Cartridge`.
3. Lessons 218-219 implement mapper address translation.Ejecutar esta lección
uv run pytest tests/chapter_02_rom_loading/test_215_ines_rom_dataclass.py -v