导读 小周给大家谈谈nes模拟器,以及fcnes模拟器应用的知识点,希望对你所遇到的问题有所帮助。 nes模拟器(fcnes模拟器)

小周给大家谈谈nes模拟器,以及fcnes模拟器应用的知识点,希望对你所遇到的问题有所帮助。

nes模拟器(fcnes模拟器)nes模拟器(fcnes模拟器)


1、04 章的时候了解了 NES 文件结构,NES 文件本质上只是从卡带上 dump 下来的信息,所以首先需要实现卡带的模拟,把程序等数据加载进内存后,才能进行下一步操作Mapper 已经在前面的文章出现过很多次了,现在来详细了解一下03 篇文章提到过,NES 总线上,PRG 的寻址范围为 0x8000 - 0xFFFF,CHR 寻址范围为 0x0000 - 0x2000,他们大小分别为 32K 和 8K,对于大型游戏这么点空间是远远不够的,显然任天堂在设计的时候也考虑到了这一点,所以采用 Mapper 来进行各种扩展Mapper 并不位于主机中,而位于卡带上。

2、每一张卡带都对应了一种 Mapper,在 NES 1.0 格式中,可以表示多达 256 种 Mapper每种 Mapper 行为都不一样,比如有的 Mapper 增加了音频芯片提高音频性能,有的 Mapper 增加了寄存器扩展程序大小,有的还有中断计数的功能比如 Mapper2,增加了 Bank 选择寄存器,以控制不同的 Bank 映射到 0x8000 - 0xFFFF,这样就扩充了游戏容量了解 Mapper 作用之后,首先看看最简单的 Mapper - Mapper0,这个 Mapper 没有任何的扩容能力,所以它的 ROM 最大只有 32K + 8K = 40K唯一需要注意的是:了解了 Mapper 作用后,就可以开始定义 API 了首先定义 ROMInfo 接口,表示从 NES 文件解析的 Header 信息另外还需要一个 Mapper 对象,用来表示不同的 Mapper。

3、对于 CPU 来讲,只需要在意 Mapper 的读写能力,所以需要定义 write 和 read 接口最后,Cartridge 当中只需要 Info 和 Mapper 两个实例就够了在这里举个例子讲一下 Cartridge 如何模拟(只列举核心逻辑,其他简单的逻辑就等你自己完成了)一共需要两个类,一个 Cartridge,一个 Mapper0文件 cartridge.ts文件 mapper0.ts。

本文到这结束,希望上面文章对大家有所帮助。