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不变量:字段顺序为 header、prg_rom、chr_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