213. iNES 文件头数据类
添加
第 213 / 356 · tests/chapter_02_rom_loading/test_213_ines_header_dataclass.py
添加 emulator/cartridge/ines.py::INesHeader。
此步骤存在的原因
该对象为前 16 个字节中的不可变元数据赋予名称,并保留原始标志位供后续格式特性使用,从而避免下游代码重新解析源字节。第 212 课的布局常量是这里所表示文件头所需的前置词汇。
在第 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: int不变量:字段顺序是精确固定的,并且该数据类是冻结的,因为解析出的元数据是关于该文件的事实。prg_rom_banks 和 chr_rom_banks 始终是数量,而不是字节长度。在推导出训练器和映射器(mapper)取值之后,不要丢弃 flags_6/flags_7。
此步骤范围之外
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.运行本课
uv run pytest tests/chapter_02_rom_loading/test_213_ines_header_dataclass.py -v