213. Dataclass de la cabecera iNES
añade
Lección 213 de 356 · tests/chapter_02_rom_loading/test_213_ines_header_dataclass.py
añade emulator/cartridge/ines.py::INesHeader.
Por qué existe este paso
El objeto da nombre a los metadatos inmutables de los primeros 16 bytes y conserva las flags en bruto para futuras características del formato, en lugar de obligar al código posterior a volver a analizar los bytes de origen. Las constantes de disposición de la lección 212 son el vocabulario previo necesario para la cabecera aquí representada.
Implementación sugerida tras las constantes de la lección 212
from dataclasses import dataclass
@dataclass(frozen=True)
class INesHeader:
prg_rom_banks: int
chr_rom_banks: int
mapper_number: int
has_trainer: bool
flags_6: int
flags_7: intInvariantes: el orden de los campos es exacto, y la dataclass es inmutable (frozen) porque los metadatos analizados son un hecho sobre el archivo. prg_rom_banks y chr_rom_banks siguen siendo recuentos, no longitudes en bytes. No descartes flags_6/flags_7 tras derivar los valores del trainer y del mapper.
Fuera de alcance para este paso
1. Lesson 214 parses and validates the header bytes.
2. Lessons 215-216 represent and extract the ROM sections.
3. Mapper behavior and interpretation of mirroring bits come later.Ejecutar esta lección
uv run pytest tests/chapter_02_rom_loading/test_213_ines_header_dataclass.py -v