256. 验证:从一个微型 iNES ROM 解码 CHR 图块

验证测试:通过真实路径从一个微型 iNES ROM 解码一个 CHR 图块。

256 / 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_256_VALIDATION_decode_chr_tile_from_tiny_ines_rom.py

这个文件不是一个学生实现步骤。

这个测试没有新内容需要实现,它的存在只是为了验证目前为止搭建的图形数据各部分能否通过它们真实的边界协同工作:

iNES bytes
    -> Cartridge.from_ines_bytes(data)
    -> CpuBus(cartridge=cartridge, ppu=ppu)
    -> mapper connected to ppu.ppu_bus
    -> ppu.ppu_bus.read($0000-$000F)
    -> decode_chr_tile(tile_bytes)
    -> 8x8 grid of color indexes

为什么需要这个验证

之前的测试分别验证了 CHR ROM 读取、PpuBus 映射器路由,以及 CHR 图块解码。这个测试证明了来自一个真实微型 iNES ROM 的 CHR 字节能够流经卡带/映射器/PPU 总线的路径,并被解码为图形数据。

重要说明

这仍然不是渲染。解码器返回的是 0-3 的调色板索引,而不是最终的 RGB 颜色,也不是屏幕帧缓冲区。

本测试使用的已知第一个 CHR 图块

low plane row 0:   1100_0011
high plane row 0:  1010_0101

解码出的第一行

[3, 1, 2, 0, 0, 2, 1, 3]

不在本步骤范围内

  • 图案表图像渲染
  • 名称表背景渲染
  • 调色板颜色查找
  • VBlank/NMI 时序
  • 精灵

运行本课

uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_256_VALIDATION_decode_chr_tile_from_tiny_ines_rom.py -v