💡
原文中文,约4200字,阅读约需10分钟。
📝
内容提要
本文介绍了NES红白机中nametable的镜像计算,包括渲染过程、分辨率、Pattern Table和Attribute Table的作用,以及四个nametable的布局和镜像计算方式。作者还提供了两种计算方式的代码和性能测试结果,并总结了古早系统中为了性能而采用的各种技巧。
🎯
关键要点
- NES红白机的渲染过程复杂,屏幕分辨率为256x240,基本渲染单元为tile。
- 每个tile为8个像素,屏幕上有3230个tile,背景图案存放在Pattern Table中。
- Attribute Table存放每个tile的属性,如颜色和翻转信息。
- NES设计了四个nametable,理论空间为4KB,但PPU的VRAM只有2KB。
- 为了复用背景,采用mirror计算,四个nametable的布局为A、B、C、D。
- 常见的mirror计算方式有垂直镜像和水平镜像。
- 使用哈希表进行地址映射,但需要额外空间和寻址操作。
- 提出更高效的取模运算方法来优化镜像计算。
- 通过位运算和模运算简化了水平镜像的计算逻辑。
- 性能测试显示新方法比旧方法快约30%。
- 总结古早系统中为了性能所采用的各种技巧。
➡️