NES PPU的名称选择

时间:2017-10-07 11:51:29

标签: emulation nintendo

我正在为NES写一个模拟器,我正在尝试运行超级马里奥兄弟。 一切都运行正常,除了游戏使用名字表1时发生的一些屏幕闪烁。

如果你不知道,SMB在顶部有一个恒定的分数条显示(大约31条扫描线),而它下方的屏幕其余部分则水平滚动。此分数显示仅位于Nametable 0(以及名称表2,因为映射器使用垂直镜像)。

游戏将PPUCTRL设置为在NMI开头的名称表0,然后等待精灵0命中(在第30行附近发生),然后根据屏幕其余部分的要求将名称表设置为0或1 。

我的仿真器发生了什么,甚至在渲染第一条扫描线之前,PPUCTRL被设置为奇数。结果它显示了正确名称表中的分数栏,我得到了闪烁。

我用标准模拟器fceux确认了这种行为。 PPUCTRL也设置为奇数值。但是那里的模拟器仍然从左侧的名字表中抽取。

我对PPUCTRL的理解不正确吗?在精灵0命中之前,PPU总是使用名称表吗?

0 个答案:

没有答案