212. Файл iNES и константы

определите константы формата iNES в

Урок 212 из 356 · tests/chapter_02_rom_loading/test_212_ines_file_and_constants.py

определите константы формата iNES в emulator/cartridge/ines.py.

Зачем нужен этот шаг

Формат iNES относится к cartridge, а не к обобщённой памяти, поскольку эти значения описывают контейнер файла картриджа. Определение общих размеров в первую очередь даёт последующим урокам по разбору единообразное описание этой структуры.

Предлагаемая реализация

INES_MAGIC = b"NES"
INES_HEADER_SIZE = 16
TRAINER_SIZE = 512
PRG_ROM_BANK_SIZE = 16 * 1024
CHR_ROM_BANK_SIZE = 8 * 1024

Инварианты: сигнатура состоит ровно из четырёх байт; заголовок и trainer имеют фиксированный размер; байты заголовка 4 и 5 считают банки PRG по 16 КиБ и CHR по 8 КиБ соответственно. Не путайте количество банков с длиной в байтах.

Вне рамок этого шага

1. Lesson 213 adds `INesHeader`.
2. Lesson 214 adds `parse_ines_header`.
3. Lessons 215-216 add `INesRom` and `parse_ines_rom`.

Запустить этот урок

uv run pytest tests/chapter_02_rom_loading/test_212_ines_file_and_constants.py -v