212. iNES 文件与常量

定义 iNES 布局常量

212 / 356 · tests/chapter_02_rom_loading/test_212_ines_file_and_constants.py

emulator/cartridge/ines.py 中定义 iNES 布局常量。

此步骤存在的原因

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 字节分别记录 16 KiB PRG 存储体和 8 KiB CHR 存储体的数量。不要把存储体数量误当作字节长度。

此步骤范围之外

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