当然没有的话我也试着尽量让没基础的人能看懂,之前搜了半天百度只找到一篇很晦涩的博文说了这个方法,本人弄出来了就打算写篇图文教程造福广大没有条件开金手指的玩家。
首先是工具:
1.UltraEdit
大名鼎鼎的16进制文件阅读/修改工具,这个工具主要是修改GBA ROM文件,并保存。
2.NO$GBA1.4C
这个并不是那个著名的NDS模拟器,虽然名字一样,但却是个GBA ROM的DEBUG调试工具,用它能帮助定位需要修改的代码段。
3.VisualBoyAdvance1.6
一定得是这个低版本的GBA模拟器,我被卡了大概一早上就是因为我本来用的是1.72版本的,1.72和NO$GBA1.4C载入后的地址不一样,有偏移。
4.arm汇编手册(中文版)
GBA的CPU用的是ARM汇编语言,有80×86汇编语言基础的朋友可以自己查手册,实现更自由的修改。
好了,我们开始,首先我们来学习怎么找或者说制造VisualBoyAdvance模拟器用的金手指,因为只有会找金手指代码了才能进行下一步的ROM修改。示例游戏是《牧场物语:矿石镇的伙伴》
按照图片上的设置来,然后点 开始→搜索
然后选择“添加代码”
就能看到金手指了
首先选择 设置→模拟器设置 然后按照下图设置按键
在红框框内 右键→GO to…
点击OK后跳转到了光标所在的地址,我此时游戏内的金钱是1600,换算成16进制数是“640”,但这里显示的是4006是怎么回事呢涉及到一个大端小端问题,弄过80×86汇编的人会知道,这里就不展开来说,这里用的是小端模式,计算机的数据都是以字节为单位显示的,一个字节简单来说就是两个数字“00”,所以1600的16进制也可以写成“0640”,小端模式就是要把数据按字节为单位前后颠倒,本来从左往右读的改成从右往左,两位两位的读,故改成“4006”。然后我们用快捷键Ctrl+B,然后在弹出的对话框中输入 [020068b4]!
sub是减法 这一句的意思是,r0寄存器里的值- r1寄存器里的值结果放回r0寄存器。r0=r0-r1
修改成add r0,r0,r1,然后确定
然后在这里按Ctrl+F搜索字符串:211c401a
说明这4个字节的组合是唯一的
这一句的意思是r1=r1+r2,经过测试,去地图里杀敌后增加资金也是这段代码,把ADD改为SUB的话减钱就是加钱,加钱就减钱,问题在于资金数肯定有个上限,超出后恐怕会溢出导致存档损坏什么的,单纯的把加改成减并不安全,我的办法是把add r1,r1,r2改为add r1,r1,1,也就是不管买什么都只加1块钱。但问题来了,杀敌一台本来该加2000也变成了只加1。不过这也不是什么大问题,想加钱的时候换成正常ROM不想花钱了换成改过的ROM,存档是不受影响的。
我已经把修改后的ROM文件一起打包到工具压缩包里了,有兴趣的同学可以自己拿模拟器或者GBA试试。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!