FC按键修改教程之一键开关
一.需要具备的知识:懂6502汇编,不需要精通,至少会使用比较指令,传送指令,逻辑运算,跳转指令等.
二.需要用到的工具: FCEUX 2.2.1.2807汉化绿色版(非常好用的FC模拟器及调试器及编辑器),Hxd 1.7.7.0(好用的十六进制编辑器),ROM实验品一个,对应的作弊码.
四.修改教程:
以魂斗罗一代日语版为例,
其作弊码如下:
生命:1P:0032,2P:0033
无敌:1P:00B0,2P:00B1
子弹:1P:00AA,2P:00AB
先用FCEUX打开游戏:
先进行按键修改,打开工具>作弊,点击重设,不按任何游戏按键,搜已知值0x 00,回到游戏,按住任意一个按键,点击搜索作弊窗口的[>]搜大于的数据,再回到游戏, 多按住一个按键, 再点击搜索作弊窗口的[>]搜大于的数据,然后不按任何游戏按键,搜[<]小于的数据, 再搜已知值0x 00,搜出来地址为00F1和00F9.
好的,可以进行按键修改了,打开调试>调试器,
点击添加按钮,勾上[写]如下,并确定:
,
窗口变化了,如下:
就从这里写按键修改的跳转指令:
C1F1:94 F1 STY $F1,X @ $00F1 = #$00
C1F3:94 F9 STY $F9,X @ $00F9 = #$00
打开Hxd, 新建文件:
写上如下指令94 F1 94 F9 48 68 4C F5 C1:
回到游戏,打开调试>十六进制编辑器:
下拉滚动条到最后,慢慢上拉找大片的FF FF FF FF FF FF FFFF FF FF FFFF
在FB60有大片的空白空间FF FF点击该FF,再点右键,单击转到ROM文件对应位置:
把Hxd的数据全部复制过来粘贴在这里:
回到调试器窗口,点击断点地址,右击复制地址:
回到十六进制编辑器,点击查看>点击NES内存:
按Ctrl+A或点击文件>转到地址:
把地址粘贴进去,点击确定
由于FB60是按键跳转后的程序,所以必须把94 F1 94 F9改为4C 60 FB EA(最后的F9可以不改)
回到调试器窗口,双击断点,再点击运行:
游戏能正常运行,说明按键跳转修改成功.
接下来先做一个暂停时按键换子弹的程序
先要找游戏暂停的地址,现在讲简略些,依照前面的方法,暂停时搜1,非暂停时搜0,找到地址是0025,为了后面按键修改的一键开关,需要在0000-07FF地址之间找一个一直不变的地址,我找到是07AA
修改原理:以07AA作为暂停时操作判断地址,暂停时按选择键地址若为1执行其他程序……非暂停时不执行只跳过,用07A0作为其他功能的判断地址,判断07A0的8个位元中哪个位置1就去执行某个程序,本篇以无敌为例.
打开Hxd新建文件,下面是对判断地址的操作及无敌的操作:
当暂停时,按一次选择键后,按上键可开启无敌,再按关闭无敌
将其写到游戏中:
游戏正常运行并能按照操作开关无敌,好了,本来想加个暂停时不按选择键时方向键换子弹的,空间太小不够写,要扩容有点麻烦,所以就写这些了.