NES 名词解释
本文介绍了 NES(FC、红白机、小霸王)中一些名词或者术语,主要与 PPU 有关。
Tile
8x8 像素图像。每像素 2 比特, 共 16 字节大小。每个像素可以使用 4 种颜色。
Sprite
表示屏幕上可以移动的图片。有两种大小:8x8(WxH)和 8x16(WxH)。
Pattern Table
存储 Tile 像素数据,可以把 Pattern Table 看作是切割并重新组织的图片资源。Tile 每个像素占 2 比特,像素数据按比特顺序划分为两个平面分别存储,每个平面 8 字节。每个 Tile 的 16 字节数据中,低 8 个字节为低位平面,高 8 个字节为高位平面。
一个 Pattern Table 的最大大小为 4 KB,即最多可以存储 256 个 Tile。Pattern Table 通常位于卡带中。
Name Table
Name Table 中存储的是 Tile 索引,每个 Name Table 可以包含 32x30 (WxH)个 Tile 索引,每个 Tile 索引使用 1 字节表示,共 960 字节。由于每个 Tile 为 8x8 的像素图像,因此 Name Table 可以表示一张 256x240 的图片,刚好为全屏图片的大小。
Name Table 通常位于 VRAM 中,与 Attribute Table 一起存储,主要用作背景图渲染。
参考:https://www.nesdev.org/wiki/PPU_nametables
Character Memory
用于存储 Pattern Table 的内存区,位于卡带上,映射到 PPU 地址空间
Attribute Table
共 64 字节。Name Table 中的 Tile 按 2x2 的格子,可以分为 16x15 个块。每个块共享一个属性字节,属性占 2 比特,表示子调色板编号,属性字节中的比特分配方案如下:
+------+------+
| 0..1 | 2..3 |
+------+------+
| 4..5 | 6..7 |
+------+------+
Attribute Table 通常位于 VRAM 中,与 Name Table 一起存储,主要用作背景图渲染时选用子调色板。
参考:https://www.nesdev.org/wiki/PPU_attribute_tables
OAM
对象属性存储区,位于 PPU 内,共 256 字节,用于存储对象的属性。对象有 4 个属性字段,每个属性字段 1 字节,共可以存储 64 个对象的信息。对象属性用于控制 Sprite 渲染,每个字节意义如下:
字节序号 | 含义 |
---|---|
0 | Y 坐标 |
1 | Tile 索引 |
2 | 属性 |
3 | X 坐标 |
参考:https://www.nesdev.org/wiki/PPU_OAM
WRAM
通常意义上的 RAM,位于主板上,共 2 KB,用于存储 CPU 要使用的数据。
VRAM
视频内存,位于主板上,用于存储 PPU 要使用的数据(Name Table 和 Attribute Table), 共 2 KB。VRAM 一般位于 PPU 地址空间 0x2000 ~ 0x3f00 处。
调色板
调色板一词在 NES 世界里可能有两种含义。
第一种是通常意义上的调色板,用索引表示真实的 RGB 颜色。NES 中,这种调色板共 64 色。
第二种实际上是指“调色板 RAM” - 一块位于 PPU 地址空间 0x3f00 ~ 03f1f 共 32 字节的 RAM,这块 RAM 中存储的是颜色的索引。调色板 RAM 按用途,可分为两组。一组用于背景渲染,位于 PPU 地址空间 0x3f00 ~ 0x3f0f;另一组用于 Sprite 渲染,位于 PPU 地址空间 0x3f10 ~ 0x3f1f。每组子调色板又分出了 4 个子调色板,共计 8 个子调色板。
子调色板
子调色板只包含 4 种颜色,共 8 个。每组子调色板理论上可以表示 4x4 共 16 种颜色,但由于每个调色板的 0 号位置用于表示背景色(背景色定义在 $3f00),因此每组子调色板只能表示 13 种颜色。
参考:https://www.nesdev.org/wiki/PPU_palettes
MMC
Memory Management Chip(内存管理芯片)的简称。是一类特殊芯片,用于把 CPU 或 PPU 的地址映射到外部存储器的地址空间中,实际结果相当于扩大了地址空间,使得 CPU 或 PPU 可以使用更大的内存。例如,CPU 访问地址空间
Bank
内存页。MMC 在切换映射范围时,通常是以固定大小整体映射。例如,以 32 KB 大小为单位按公式 n * 32768 + (addr % 32768)
对
Bank Switching
通过配制 MMC,MMC 可以把同一个范围内的地址映射到外部存储器地址空间中不同的范围上,这个切换过程就叫 Bank Switching。
Mapper
Mapper 是 NES 模拟器中的概念,是对 MMC 及卡带本身硬件行为的抽象。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业