超级任天堂图形系统如何工作

2024 年 8 月 9 日:SNES 图形系统工作原理

  • 上周文章讨论了超级任天堂的视频系统如何馈送到电视的 CRT,今日总结硬件生成这些图形的理解。
  • 珍贵资源是 Jonathon Donaldson 的 SNES 原理图,推荐全屏查看。此原理图非常精美,已打印并装裱。
  • 图形系统中有四个芯片,分别是像素处理单元 1(PPU1)和像素处理单元 2(PPU2),以及两个 8 位 32KiB 的 SRAM 芯片。后期任天堂将 CPU、PPU1 和 PPU2 融合为一个大型 ASIC,1-CHIP 版本不易故障但有自身问题。
  • 按颜色分组的架构:PPU2 有 R、G、A 和 CSYNC,表明视频信号在此生成,调色板可能也存储在此;PPU1 能寻址 VRAM,PPU2 仅能访问数据线,说明 PPU1 是大脑,PPU2 是合成器;PPU1 和 PPU2 之间有控制线和颜色线,表明 PPU1 在传输“像素”并与 PPU2 同步;系统 8 位数据总线和 8 位地址总线显示 CPU 可向两个芯片发送命令,其他系统无法直接访问 VRAM,所有写入操作都需通过 PPU1。此设计与 Capcom 的 CPS-1 类似。
  • 图形系统中有三个 RAM:VRAM 存储精灵资产、瓦片资产和瓦片地图;对象属性内存(OAM)定义 128 个精灵的属性;CGRAM 存储 256 个 15 位颜色的调色板。
  • SRAM 相关:SNES 的 VRAM 芯片是 LH5P832,其地址线设计特殊。工程师本可将两个 RAM 芯片串联使用,或创建交错以构建 16 位数据总线,但他们创建了一个每个 RAM 芯片可单独寻址但共享引脚 A14 的系统。
  • VRAM 的访问方式因图形模式而异:在模式 0 - 6 中,PPU1 总是访问两个连续的 8 位值;在模式 7 中,由于背景可旋转和缩放,数据访问不再是线性的,PPU1 需要两个地址总线的灵活性,且每个 VRAM 芯片仅使用 16KiB,A14 始终为 0。
  • John McMaster 于 2020 年 10 月拆解并扫描了 PPUs,snesdev.org 社区成员已开始识别区域,但目前仅确定了五个区域,如 512 字节的 OAM、256 x 9 位的行缓冲和 480 字节的颜色调色板颜色区域等,一些猜测可能有误,关于 PPUs 内部的了解仍很少。
  • 下一篇文章将研究瓦片地图和精灵如何渲染。
  • 参考文献:包括关于 SNES 1CHIP 缺点、读取和写入 PPU 内存、瓦片地图、精灵、调色板、LH5P832 数据手册、PPU1 VRAM 及内部区域识别等相关内容的链接。
阅读 79
0 条评论