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

不变量:字段顺序为 headerprg_romchr_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