[FC][Trainer扩容方法]

[FC][Trainer扩容方法]

时间:2016.10.2

作者:FlameCyclone

工具:Hxd_1.7.7.0;FCEUX_2.3.3;普通ROM一个

方法:

先引用《任天堂产品系统文件》

NES文件格式

.NES文件为模拟用来储存NES卡带的映像。下面是一个.NES文件的结构。 

偏移

字节数

内容

0-3

4

字符串“NES^Z”用来识别.NES文件

4

1

16kB ROM的数目

5

1

8kB VROM的数目

6

1

D0:1=垂直镜像,0=水平镜像

 

 

D1:1=有电池记忆,SRAM地址$6000-$7FFF

 

 

D2:1=在$7000-$71FF有一个512字节的trainer

 

 

D3:1=4屏幕VRAM布局

 

 

D4-D7:ROM Mapper的低4位

7

1

D0-D3:保留,必须是0(准备作为副Mapper号^_^)

 

 

D4-D7:ROM Mapper的高4位

8-F

8

保留,必须是0

16-

16KxM

ROM段升序排列,如果存在trainer,它的512字节摆在ROM段之前

-EOF

8KxN

VROM段, 升序排列

 

如上表,当ROM文件头第6个字节的D2位=1时,ROM有512字节的trainer放在ROM段之前,于是我想到在trainer上做修改,为ROM增加512字节空白空间,接下来看操作。

比方我们为洛克人4扩容,使用FCEUX打开后观察C000到FFFF,你会发现根本没有空间可以写其他东西,唯一的办法就是扩容。

使用Hxd打开洛克人4的ROM:

 

修改第06字节为44,将光标移动到地址0010再插入512字节:

 

 

 

 

保存文件,Trainer扩容到此完成。

FCEUX打开ROM: 文件正常运行:

 

打开帮助->信息记录:

 

 

与源文件相比较,多了个‘有作弊’属性,其他与源文件没有丝毫差异。

然后打开调试->十六进制编辑器,跳转到地址7000:

 

 

 

 

 

 

地址7000-71FF就是之前在ROM程序段增加的512个空白字节。

为了验证是否能够作为扩容空间使用,接下来做一个按键修改测试:

查找到洛克人按键地址为0016,血量为B0,生命数为A1,然后做一个按选择键补满血量和生命数的修改。

打开调试->调试器:

 

添加0016的写断点:

 

程序暂停了:

 

打开Hxd:

写上如下程序:

95 14 94 16 48 A5 16 C9 20 D0 08 A9 09 85 A1 A9 9C 85 B0 68 60

 

将其覆盖插入到地址0010并保存文件:

 

 

删除当前目录下的模拟器进度后重新打开ROM:

 

再次查看地址7000:

 

内容已经变化了.

继续0016写断点:

 

添加C3B2的执行断点:

 

 

跳转到按键程序地址修改其跳转到7000:

 

 

 

 

取消断点:

 

单击运行测试游戏:

 

生命数剩余2:

 

先去受点伤:

 

再按选择键:

 

血量满了,按开始键看看生命数,同样,生命也满了:

 

保存ROM即可:

 

以上便是FC的Trainer扩容方法,教程到此结束。

转载请注明出处:

FlameCyclone.ys168.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值