- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FC按键修改教程
作者:FlameCyclone(QQ:1490868135)
时间:2015.12.29
工具:
调试器FCEUX;
实验ROM(这里以魂斗罗为例);
Hxd编辑器;
一些6502汇编知识.
首先打开FCEUX,并且打开试验品:
接下来开始游戏:
接下来,打开作弊码查找工具:
勾选活跃时暂停,单击重设按钮,将数据重设:
接下来进行按键查找:
1.不按任何按键,在已知值中填入数据00, 单击,此时筛选出来的就是数据为00的地址:
2.接下来点击游戏窗口回到游戏,按住一个按键不放(比如上键), 然后点击查找窗口,再单击””按钮,此时筛选出符合条件的地址:
3.回到游戏,不要按任何按键,然后点击查找窗口,再单击”已知值”,按钮,此时筛选出符合条件的地址:
):
4.重复第2步,可以得到以下结果:
把里面的地址分别添加锁定单独测试:
回到游戏,最后发现地址00F1锁定时,游戏动不了,说明按键地址就是00F1.
接下来记住这个地址.
打开调试器:
单击添加按钮添加地址00F1的写入断点(注意写要打钩),单击确定:
游戏暂停了,调试器如下:
显示的程序:
07:C1F1:94 F1 STY $F1,X @ $00F1 = #$00
07:C1F3:94 F9 STY $F9,X @ $00F9 = #$00
就是对按键地址00F1的写入操作,记下地址C1F1.
接下来做一个按键切换子弹的修改:
先双击00F1断点取消断点,再单击运行.
使用前面作弊码查找的方法找出子弹地址:
1.重设数据:
2.去吃一个子弹道具:
吃到后回到查找窗口单击按钮:
然后去送死,子弹恢复花生米后去查找窗口单击按钮,再单击已知值(填写00):
根据这些地址,我们可以确定子弹地址就是00AA,为何?
自己去测试就知道了,另外,按键地址00F1按住后值保持不变,如果要做到按一次只变化一次,那么就需要一边按按键,一遍在十六进制编辑器中观察,得到00F5符合条件.
通过十六进制编辑器:
在00AA地址输入数据可以知道:
00=普通子弹;
01=M弹;
02=F弹;
03=S弹;
04=L弹;
10=普通子弹;
11=M弹;
12=F弹;
13=S弹;
14=L弹;
其他不可正常使用.
接下来使用十六进制编辑器查找空白空间为写程序做准备:
下拉滚动条滑块,这里可以找到FB70有空白空间:
接下来打开Hxd,新建一个文件:
写入断点代码并加上PHA指令 48:
94 F1 94 F9 48
注释:48 PHA 累加器进栈指令,用来保护寄存器A的数据;
接下来写按键换子弹程序:
B5 F5 C9 20 D0 16 B5 AA C9 04 D0 04 A9 0F 95 AA B5 AA C9 14 D0 04 A9 FF 95 AA F6 AA
最后补上68 60:
指令解释:
B5 F5 C9 20: 比较按键值是否为0x20(选择键的按键值)
D0 16: 若不是,则效果0x16字节,否则继续
B5 AA C9 04: 比较子弹值是否为0x04,
D0 04: 若不是,则效果0x04字节,否则继续
A9 0F 95 AA: 将0x0F送入子弹地址
B5 AA C9 14: 比较子弹值是否为0x14,
D0 04: 若不是,则效果0x04字节,否则继续
A9 FF 95 AA: 将0xFF送入子弹地址
F6 AA: 子弹地址加1.
68: 出栈
60: 转回
注释:
68 PHA出栈指令,恢复寄存器A状态;
60 RTS 子程序转回指令,用于跳转回指令跳转处.
把Hxd中的数据全部复制下来:
打开十六进制编辑器,找到地址FB70,转到其ROM地址:
然后粘贴数据:
打开调试器,双击00F1断点开启断点:
回到十六进制编辑器: 单击NES内存查看:
再输入转到地址C1F1,确定:
然后转到ROM地址:
修改94 F1 94 F9为20 70 FB EA:
指令解释:
20 70 FB: JSR 跳转到地址FB70
EA: NOP
回到调试器窗口,单击运行:
可以看到程序跳转成功.
接下来双击00F1取消断点,并单击运行:
回到游戏,试了试,和预料一样,按一次选择键,子弹换一次.
回到十六进制编辑器,保存文件:
修改到此结束.
您可能关注的文档
最近下载
- 二年级语文上单元归类复习.pdf VIP
- ASME B18.29.1-2010 螺旋线圈螺纹插入-自由运行和螺纹锁定(英寸系列).pdf VIP
- 电力行业检查标准清单(发电部分).docx VIP
- 2025至2030年中国四川省渔业行业发展趋势预测及投资规划研究报告.docx
- 新苏教版六年级科学上册试卷1-5单元测试卷含答案5单元全册打包期中期末复习.docx VIP
- 危大工程与超过一定规模的危大工程清单(住建部2018第31号文).pdf VIP
- 2025小学科学学科教师基本功大赛试题(理论部分附答案).docx VIP
- 钢筋混凝土化粪池22S702.docx VIP
- L23R401 城镇热水管道直埋敷设图集.docx
- GMP文件管理规程(新版).pdf VIP
文档评论(0)