215. Датакласс iNES ROM
добавьте
Урок 215 из 356 · tests/chapter_02_rom_loading/test_215_ines_rom_dataclass.py
добавьте emulator/cartridge/ines.py::INesRom.
Зачем нужен этот шаг
Этот неизменяемый результат разбора хранит интерпретированный заголовок и извлечённые секции программы и графики вместе, чтобы parse_ines_rom не приходилось возвращать разрозненные значения. Он опирается на модель заголовка и парсер из уроков 213-214.
Предлагаемая реализация после parse_ines_header:
@dataclass(frozen=True)
class INesRom:
header: INesHeader
prg_rom: bytes
chr_rom: bytesИнварианты: порядок полей — header, prg_rom, chr_rom; обе полезные нагрузки имеют тип bytes; датакласс заморожен, поскольку описывает содержимое файла. Не путайте этот результат уровня формата с обращённым к эмулятору Cartridge.
Вне рамок этого шага
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.Запустить этот урок
uv run pytest tests/chapter_02_rom_loading/test_215_ines_rom_dataclass.py -v