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