04 章的时候了解了 NES 文件结构,NES 文件本质上只是从卡带上 dump 下来的信息,所以首先需要实现卡带的模拟,把程序等数据加载进内存后,才能进行下一步 *** 作
Mapper 已经在前面的文章出现过很多次了,现在来详细了解一下
03 篇文章提到过,NES 总线上,PRG 的寻址范围为 0x8000 - 0xFFFF,CHR 寻址范围为 0x0000 - 0x2000,他们大小分别为 32K 和 8K,对于大型游戏这么点空间是远远不够的,显然任天堂在设计的时候也考虑到了这一点,所以采用 Mapper 来进行各种扩展
Mapper 并不位于主机中,而位于卡带上。每一张卡带都对应了一种 Mapper,在 NES 10 格式中,可以表示多达 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。对于 CPU 来讲,只需要在意 Mapper 的读写能力,所以需要定义 write 和 read 接口
最后,Cartridge 当中只需要 Info 和 Mapper 两个实例就够了
在这里举个例子讲一下 Cartridge 如何模拟(只列举核心逻辑,其他简单的逻辑就等你自己完成了)
一共需要两个类,一个 Cartridge,一个 Mapper0
文件 cartridgets
文件 mapper0ts
这个, 说难也不难, 不过你首先要有DEBUG工具 和16进制编辑器(winHex或UltraEdit), 最重要还要懂汇编语言(汇编就是介于机器语言和高级语言之间的 程序设计语言。 代码都是0-9 A-F) 如果没记错NES 用的是6502汇编语言,很著名8位CPU , 任天堂的FC游戏、文曲星电子词典用的都是这种语言编写的
当然,如果你不是从事程序开发的话,我说这些你可能不会懂。 如果你只是想打通游戏,去下载EC修改器吧,各种FC\GBA 等模拟器游戏都可以作弊。 因为它只修改游戏运行时的内存数据,而不是深入代码本身。如果这个EC修改器没有这个游戏的作弊码,你可以网上搜索这个游戏的金手指,在模拟器中加载就可以了(其实EC只是把金手指代码保存成一个文件) 直接加载,省去你每次手动加载的麻烦
回答了这么多,不知道你理解了没有。我当年也是狂热的FC迷 从吃豆 、超级玛丽到 忍者龙剑传 RPG 最终幻想。 FC游戏少说也玩了几百个(不是街上几百合一的垃圾重复卡,全部是比较优秀经典的) FC时代我目前知道的大概有4000多个NES游戏, 现在家里的硬盘上还保存有我精心收集整理的600多个非常经典的,它们是我整个童年和少年时期无所释怀的回忆
我也是从最开始的喜欢玩, 到尝试着修改,慢慢爱上程序 经历了很多,今天突然见有人提到这种问题, 就兴起回答了
你可以批判着继承,觉得有用就看完,没用就略过去吧 呵呵
者要先看的手机是否支持nes格式文件,如果支持的话,在内存卡里面找到它就可以直接打开,如果不支持的话就不能打开。
智能手机(Smartphone)是指具有移动 *** 作系统,可通过安装应用软件、游戏等程序来扩充功能,并可以通过移动通讯网络来实现无线网络接入手机类型的总称。智能手机具有优秀的 *** 作系统、可自由安装各类软件(仅安卓系统)、完全大屏的全触屏式 *** 作感这三大特性,其中Google(谷歌)、苹果、三星、诺基亚、HTC(宏达电)这五大品牌在全世界最广为皆知,而小米(Mi)、华为(HUAWEI)、魅族(MEIZU)、联想(Lenovo)、一加手机(oneplus)等品牌在中国备受关注。世界上公认的第一部智能手机IBMSimon(西蒙个人通讯设备)诞生于1993年,它由IBM与BellSouth合作制造。
以上就是关于NES 模拟器开发教程 04 - NES 卡带(Cartridge)全部的内容,包括:NES 模拟器开发教程 04 - NES 卡带(Cartridge)、怎么把nes游戏修改成无敌模式、想问安卓手机如何打开.nes文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)