3 个不稳定版本
0.2.0 | 2023 年 5 月 18 日 |
---|---|
0.1.1 | 2023 年 4 月 23 日 |
0.1.0 | 2023 年 4 月 23 日 |
#268 in 模拟器
每月 29 下载
71KB
966 行
这是一个针对 NTSC NES PPU (2c02) 的模拟器,它提供了一个类似于实际 NES 硬件上存在的通用接口。此外,该接口还包含了一些在 NES 上不可用的便利功能,以便使编程更加直观。
功能
无 std
支持- 基于周期的模拟,包括精灵处理和映射器访问的精确计时
- 模拟所有 PPU 寄存器(0x2000-0x2007)
- 支持任意自定义内存映射器和输出格式
- 大多数系统怪癖都得到了适当的模拟
- 垃圾名字表抓取
- 偶数帧和奇数帧上的不同总周期数
- 溢出标志行为错误
- 在渲染过程中读取 OAMDATA 时窃听内部精灵处理状态
- 当 VRAM 地址索引调色板 RAM 时,强制空白期间的错误颜色输出
- 等等。
限制
- PPU 寄存器访问“瞬间”发生,不会导致 PPU 前进,尽管在真实硬件上读取/写入可能需要多个周期
- 因此,为了真正精确的图形,用户必须小心权衡所做的工作与 PPU 的计时方式及频率之间的关系
- 不支持 PAL 或 Dendy PPU
- 不模拟开总线行为
- 映射器读取需要 1 个周期来解决,而不是真实硬件上的 2 个周期(读取开始的计时仍然准确)
致谢
本模拟器的开发离不开 NESdev 社区成员对 www.nesdev.org 多年来的研究,也离不开 NESdev Discord 服务器 成员的帮助。
依赖关系
~0.4–0.9MB
~20K SLoC