超级任天堂图形芯片如何工作:超级PPU指南

图片

PPU概念说明


超级PPU

超级“图片处理设备”是一种视频控制器芯片,可处理图块图形,滚动平面和SNES子画面。 该功能类似于PPU控制台NES。

虚拟RAM

视频 RAM-超级PPU使用的RAM。 包含图块。 每种屏幕模式都使用其自己的图块大小。 每个图块通常为8x8或16x16像素。 VRAM的容量为64 KB。

燕麦

“对象属性存储器”-包含子画面的数据定义。 可能包含不超过128个精灵的数据。 与NES中的OAM类似,但更高级。

为每个精灵存储的OAM数据

  • X子画面位置(9位,0-511或$ 00- $ 1FF)
  • 子画面位置在Y中(8位,0-239或$ 00- $ EF)。 值0-239在屏幕上,从-63到-1-“在屏幕上方”,因此sprite的底部在屏幕顶部可见。 这意味着非常大的精灵可以从底部开始,从顶部结束。
  • 第一个精灵图块的ID。 8位索引
  • 精灵名称表
  • Sprite使用的调色板的ID(0-7 / $ 00- $ 07)。 Sprite在最后8个子选板中使用子选板索引,因此ID实际上为7 + N
  • 精灵的大小。 1位:0 =较小的精灵可用于当前模式(通常为1个图块16x16像素),1 =较大的精灵可用于当前模式(通常为4个图块(2x2瓦片16x16像素))
  • 精灵优先 OAM优先级:2比特; 这些位确定子画面相对于背景平面的优先级(请参见下面的图形平面部分)。 优先于其他精灵。 OAM中的零精灵具有最高优先级。 OAM中的第一个精灵具有较低的优先级。 第二个更低,依此类推。


OAM Viewer模拟器No $ sns(SMW)

两种主要类型的机器


NTSC控制台

  • 超级任天堂(SNES),60赫兹的机器,主要在美国销售。 屏幕分辨率256x224像素(如NTSC NES)

PAL控制台

  • Super Famicom(SFC)的50赫兹汽车销往世界各地。 屏幕分辨率256x240像素(与PAL Famicom相同)


左:NTSC超级任天堂(1型),右:PAL超级家族

瓷砖卡


SNES具有7种不同的“模式”后台处理

  • 他们被称为模式0-7。 模式1具有变化模式。 模式7具有模式7 Ext的子模式。 BG 每种模式都有其自己的可用背景平面数量。 对于该模式下可用的背景平面,每种模式都有其自己的颜色数量。 每个背景的渲染属性略有不同。 在图形的所有模式和所有平面中,任何子调色板中的颜色索引0始终表示透明颜色。


模式汇总表

4个平面图形


SNES最多可以处理4个图形平面,称为BG1-BG4。 这些图形平面可以滚动(滚动)。

磁贴卡大小

  • 滚动平面的平铺图的大小可以为32x32、32x64、64x32或64x64切片。 根据磁贴卡每个块的大小(16x16 px / 1磁贴块或32x32 / 2x2磁贴块),磁贴卡的大小可能从256x256到1024x1024像素不等
  • 有关图块地图中图块大小的更多信息,请参见本文的“图块地图和角色图” 部分。

瓦片地图中每个瓦片的属性

  • V / HFlip砖(垂直/水平反射)
  • 平铺优先级(低/高)
  • 调色板编号(3位,0-7 / $ 00- $ 07)。 飞机使用CGRAM的前8个子选板; 后8个子选板用于精灵(OAM)
  • 磁贴ID


SWM中用于4个背景(BG)的Tilemap Viewer

视频模式

模式0

  • 4个背景(BG),每个背景有4种颜色
  • 优先BG(从前到后)

模式1

  • 2 BG 16种颜色
  • 1 BG 4种颜色
  • 优先级BG(从前到后)。 优先级根据寄存器$ 2105中第3位的状态而变化。


模式2

  • 2个BG,每种16种颜色
  • 优先BG(从前到后)

  • 第一种模式具有“按瓦片偏移”(有关更多详细信息,请参见模式2

模式3

  • 1个256色BG
  • 1 BG 16种颜色
  • 优先BG(从前到后)

  • 可用的直接彩色模式(注册2130美元)

模式4

  • 1个256色BG
  • 1 BG 4种颜色
  • 优先BG(从前到后)

  • 第二种模式是“平铺”(有关更多详细信息,请参见模式4

模式5

  • 1 BG 16种颜色
  • 1 BG 4种颜色
  • 优先BG(从前到后)

  • “模式5与以前的模式不同。 它始终使用宽度为16像素(高度仍然可以是8或16)的图块,而不使用宽度为8/16像素的标准图块,并且仅使用一半的像素(从零开始,子屏幕图块为偶数像素,主屏幕图块为奇数像素)。 然后,它切换为伪整数以渲染512像素宽的栅格线。 此外,如果启用了隔行模式(请参见寄存器$ 2133的位0),则屏幕高度而不是224或239是448或478个半行。 在每个帧中绘制偶数或奇数行,这由$ 213f寄存器中的位7确定。 这也意味着可以为$ 212c和$ 212d分配相同的值,以获得“预期”显示。”

模式6

  • 1 BG 16种颜色
  • 优先BG(从前到后)

  • 特殊属性:与模式5类似,它具有一定的区别。 与模式2一样,它也是向平铺模式的转变。 “但是,值得记住的是,模式6始终使用宽度为8像素(16个半像素)的图块,这与BG3和BG1有关。 “不能将偏移量应用于8个半像素的图块或16像素宽的区域(仅当您不对两个8像素区域使用两个偏移值时)。”

模式7

  • 1个256色BG
  • 一种非常不同的模式; 允许BG层的矩阵变换
  • 在Super Mario Kart,FZero等游戏中用于伪3D效果。
  • 有关更多详细信息,请参见模式7



克格拉姆


“彩色图形RAM”

  • 包含调色板的颜色信息
  • 总共包含256($ FF)个调色板颜色条目。
  • 每个图形模式将256个调色板条目划分为多个子调色板,每个子调色板具有N种颜色。 N取决于视频模式。 默认情况下,每个子调色板包含16种颜色(256个颜色/每个子调色板16种颜色= 16个子调色板)。 默认情况下,前8个子调色板(ID为0-7 / $ 00- $ 07,调色板记录ID为0-63 / $ 00- $ 3F)用于前景图块(FG),后8个子调色板(子调色板ID为8-16 / $ 08- $ 10,记录ID调色板64-127或$ 40- $ 80)-用于精灵对象。 使用此子调色板,子调色板中的第一种颜色对于图块/子图形变为透明
  • 15位BGR颜色格式。 CGRAM中的每个颜色条目的格式均为2个字节(“字”),格式为0BBBBBGG GGGRRRRR(B =蓝色位,G =绿色位,R =红色位)。 16位,不使用第一位,因此保留15位颜色范围。 每个颜色分量(B,G,R)的值范围为0-31(十进制)或$ 00- $ 1F(十六进制)


SNES调色板的细分(调色板查看器模拟器中的“超级马里奥世界”没有$ sns)

推荐的调试和图形工具


寻找一款优秀的软件来创建复古图形,将像素图稿拆分为多个图块并减少要在各种SNES视频模式下处理的色彩数量可能是一个困难的过程。 以下是与复古图形和专用仿真器一起使用的推荐软件列表,可让您浏览VRAM和平面的内容。

图形软件:

y


Irfanview

  • 用于查看/编辑通用程序的程序,具有插件,并广泛支持许多文件类型
  • 可以编辑,导出和导入调色板,以及增加/减少图像中的颜色数量并显示该数量
  • 免费和开源软件
  • 有一个PNG插件,用于在保留调色板顺序的同时更改颜色深度更改
  • 网页首页

推荐的用于调试Super PPU的专用仿真器

没有$ sns

  • 调试SNES模拟器
  • 可以模拟SNES-CD Super Disc自制软件原型
  • 可以显示机器/ CPU状态
  • 即时显示BG图层
  • 可以即时显示OAM
  • 可以在各种颜色模式下显示VRAM磁贴的内容
  • 可以显示CGRAM内容
  • 资讯中心

希根

  • 各种复古控制台的模拟器
  • 具有 SNES设备周期的非常精确的仿真; 用于模拟/调试SNES硬件问题
  • 资讯中心

链接和其他阅读



Source: https://habr.com/ru/post/zh-CN478580/


All Articles