经过一天的努力终于琢磨出怎么修改GBA的游戏文件也就是俗称的ROM文件,起因是因为偶然看到二手GBM,顿时抑制不住买了一台,可惜买得晚了,完美运行游戏又带金手指功能的烧录卡买不到了。SUPERCARD烧录卡看评论说费电,玩游戏会拖慢什么的,最后权衡再三买了个EZ4烧录卡,缺点就是不能开金手指。但是我这种从小开惯金手指的人没有金手指怎么驰骋游戏?好了废话不多说开始进入正题,看本文最好有80x86汇编语言基础,理解什么是代码段,什么是数据段,用CE OD调试修改过PC游戏的最佳。

当然没有的话我也试着尽量让没基础的人能看懂,之前搜了半天百度只找到一篇很晦涩的博文说了这个方法,本人弄出来了就打算写篇图文教程造福广大没有条件开金手指的玩家。

首先是工具:

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汇编语言,有80x86汇编语言基础的朋友可以自己查手册,实现更自由的修改。

http://download.csdn.net/detail/l198738655/9903635     本文提到的工具

好了,我们开始,首先我们来学习怎么找或者说制造VisualBoyAdvance模拟器用的金手指,因为只有会找金手指代码了才能进行下一步的ROM修改。示例游戏是《牧场物语:矿石镇的伙伴》

现在的钱是500,选择菜单栏中的 修改→搜索修改

按照图片上的设置来,然后点 开始→搜索

出来一个结果,有时候会出现多个结果,这时候只能去买点东西让数值变动重新搜索,好在GBA游戏比较简单数据比较少,不会出现PC游戏一个数值几百上千个结果的事情,可能也是我这个存档是游戏刚开始,所以干扰数据比较少。

然后选择“添加代码”

然后选择 修改→修改代码列表

就能看到金手指了

金手指已经生效,钱被修改成了800。此时要记下“修改代码列表”里的地址“020068b4”这就是存储金钱的地址,这个地址下存储着金钱数“320”这是个16进制数,换算成10进制正好是800,不清楚的人可以自己用WINDOWS的计算器点“查看”切换成程序员来换算。做到这一步就可以关闭VBA模拟器了,现在打开NO$GBA1.4C。

首先选择 设置→模拟器设置 然后按照下图设置按键

用鼠标点一下游戏画面才能开始操作游戏

在红框框内 右键→GO to...


   
   然后再对话框内输入刚才找到的地址,输入完后点OK

点击OK后跳转到了光标所在的地址,我此时游戏内的金钱是1600,换算成16进制数是“640”,但这里显示的是4006是怎么回事呢?这涉及到一个大端小端问题,弄过80x86汇编的人会知道,这里就不展开来说,这里用的是小端模式,计算机的数据都是以字节为单位显示的,一个字节简单来说就是两个数字“00”,所以1600的16进制也可以写成“0640”,小端模式就是要把数据按字节为单位前后颠倒,本来从左往右读的改成从右往左,两位两位的读,故改成“4006”。然后我们用快捷键Ctrl+B,然后在弹出的对话框中输入 [020068b4]!

来设置条件断点,让游戏访问这个地址里的金钱数据时断下来,我们就能知道是那一段代码在访问这个内存地址,然后我们买个东西,花点钱让代码段访问以下这个地址

买一袋种子后断在了红框框处,现在按一下键盘上的"Delete"键删除[020068b4]!这个断点。这一句我们不用理他,看这一句的上面一句

sub是减法 这一句的意思是,r0寄存器里的值- r1寄存器里的值结果放回r0寄存器。r0=r0-r1

我们在这一句上下一个断点,就是点一下这行末尾出现“BRK”就说明断点已经设立,然后买个120G的东西,又断下来了,我们看r0和r1寄存器此时的值

r0为640就是10进制的1600;r1是78就是10进制的120。所以我们只要编辑这行代码让它由减变加,就能实现买东西反而倒找钱的功能了。在下了断点那行再点一下,"BRK"消失,取消断点,然后在此行上右键选择“Change Instruction”来修改代码

修改成add r0,r0,r1,然后确定

然后我们用鼠标点击一下游戏画面,让游戏跑起来

因为我们在买的时候断下,修改代码后重新运行,此时游戏逻辑已经改变,现在钱变成了1720正好是1600+120,但是此时我们要把代码改回去,为何呢?因为这个调试器是无法保存我们的修改的,我们得改回去然后用之前提到的16进制文件编辑器来查找到这段代码,再修改后才能保存。改回去后记住红框框内的4个字节。

我们要记下图片中的这4个字节:1C211A40,然后转换成小端形式:211c401a,然后我们用UltraEdit打开 牧场物语.gba 文件

然后在这里按Ctrl+F搜索字符串:211c401a 
     
   

看我们找到了,如果怕不是这个我们可以再搜索一次就会出现

说明这4个字节的组合是唯一的

我们要把sub修改成add,也就是要把 211c401a 改为 211c4018,选中a,用键盘改它为8,然后保存退出就修改成功了。此时把这个ROM文件拖入任何一个烧录卡,任何设备的GBA模拟器,修改都会生效,没有金手指也能纵横GBA世界。修改GBA ROM主要就是找SUB或ADD语句,下面再以机战OG2为例子,说一个用加法实现减钱效果的代码的修改。有时候代码实现减法不一定会用SUB而是用ADD,用一个正数加上一个负数也能实现减法。

这一句的意思是r1=r1+r2,经过测试,去地图里杀敌后增加资金也是这段代码,把ADD改为SUB的话减钱就是加钱,加钱就减钱,问题在于资金数肯定有个上限,超出后恐怕会溢出导致存档损坏什么的,单纯的把加改成减并不安全,我的办法是把add r1,r1,r2改为add r1,r1,1,也就是不管买什么都只加1块钱。但问题来了,杀敌一台本来该加2000也变成了只加1。不过这也不是什么大问题,想加钱的时候换成正常ROM不想花钱了换成改过的ROM,存档是不受影响的。

我已经把修改后的ROM文件一起打包到工具压缩包里了,有兴趣的同学可以自己拿模拟器或者GBA试试。

转载请注明出处尊重一下鄙人的劳动成果多谢多谢

自己动手丰衣足食-自己动手修改GBA ROM游戏文件相关推荐

  1. android go rom下载地址,一步一步学Android ROM开发(一)——修改现有ROM资源文件-Go语言中文社区...

    一,准备工作 1.一台开发手机. 我推荐最好用G7,也是就HTC Desire那款(是不是有些广告嫌疑...),这台机各种ROM都很全,资料也多些,很容易刷到root,android版本也是最新的2. ...

  2. 一步一步学Android ROM开发(一)——修改现有ROM资源文件

    一,准备工作 1.一台开发手机. 我推荐最好用G7,也是就HTC Desire那款(是不是有些广告嫌疑...),这台机各种ROM都很全,资料也多些,很容易刷到root,android版本也是最新的2. ...

  3. 从0开始编写dapper核心功能、压榨性能、自己动手丰衣足食

    我偶然听说sqlsugar的性能比dapper强.对此我表示怀疑(由于我一直使用的dapper存在偏见吧),于是自己测试了sqlsugar.freesql.dapper发现他们的给我的结果是 sqls ...

  4. 一键免费下载全网在线视频素材,自己动手丰衣足食

    最近经常分享一个下载视频和音乐的下载方法,今天看到这个震惊了. 一键免费下载全网在线视频素材,自己动手丰衣足食

  5. xlnt踩坑记2_自己动手丰衣足食

    可以参考鄙人上一篇博客 xlnt踩坑记1 然后就这样我爆肝一下午之后终于搞到了xlnt库,他的dll和lib 我开始认识到了--当我开始搞一些比较偏的Project的时候,真的就要靠 自己动手丰衣足食 ...

  6. dealunay triangulation 之 自己动手丰衣足食

    总算搞到了个简化的watson 算法.自己动手丰衣足食.这个是标准的2维watson算法,顺便介绍一下这个算法的特点.和delaunay三角化的定义.对于平面上任意给定的点集,存在一种唯一的三角化,满 ...

  7. 直接修改gba_修改GBA游戏本身

    满意答案 vhewq 2013.07.14 采纳率:42%    等级:11 已帮助:7209人 如何Hack GBA ROM 作者:zhaosili(.zZ~~) 转载请注明 本文假定你已经了解80 ...

  8. 不使用物理引擎,自己动手做真实物理的模拟投篮游戏

    最近打算做一个2D投篮游戏,由于对于BOX2D等物理引擎并不熟悉,加之一开始低估了游戏所需要的碰撞检测复杂度,认为仅仅涉及4面墙,篮球,篮板,篮筐,篮网的碰撞检测并不复杂.因此决定自己实现所需要的碰撞 ...

  9. android自动改,【玩机组ROM修改教程】自己修改安卓ROM 刷机包教程

    本帖最后由 威风凛凛77 于 2018-5-4 18:02 编辑 偉鎽凛凛头衔01.gif (279.94 KB, 下载次数: 85) 2018-5-4 12:41 上传 [玩机组ROM修改教程]自己 ...

  10. 【手册】如何编译/修改三星手机Rom(三)

    上一篇文章<[手册]如何编译/修改三星手机Rom(二)>介绍如何打包三星Rom,这篇文章接上上一篇文章,介绍如何在三星Rom上做一些基础的mod. 引入 接下来我们会带你吧Rom制作玩得更 ...

最新文章

  1. R语言使用integrate函数进行函数积分计算实战
  2. Win10开始菜单中的天气不更新问题的解决方法
  3. svn trunk branches tags 的用法
  4. ASP.NET中的Theme和Skin
  5. 一条sql语句,要修改一个字段的俩个值,比如把字段sex中的男改为女,女改为男...
  6. DIV+CSS两种盒子模型(W3C盒子与IE盒子)
  7. 终端、虚拟控制台与伪终端
  8. QGS/300 performance issue
  9. python入门小程序代码_Python入门小程序(二)
  10. python正则表达式代码_python正则表达式的使用(实验代码)
  11. 【五级流水线CPU】—— 6. 加载存储指令(14)
  12. Excel如何导出自定义架构xml
  13. SSM框架整合(参考尚硅谷视频和文档
  14. 使用C++Test进行白盒测试
  15. vue.js官方中文文档
  16. 全国计算机能力挑战赛含金量高吗,大学里,有哪些含金量高,又容易得奖的国家级比赛?...
  17. 用东野圭吾的方式说爱你
  18. Tomcat使用过滤器实现页面的限制访问,登录才能访问受限页面
  19. 软件工程 用户故事地图 是什么 怎么用 实例
  20. vs code中文乱码

热门文章

  1. 验证码~正则表达式【整理汇总】
  2. matlab画图画点画直线
  3. matlab能打开mdl文件吗,simulink打开mdl文件的问题
  4. android avrcp处理流程,android 蓝牙avrcp功能的实现.doc
  5. 一个很好用的,免费的UML在线画图网站
  6. matlab 图像中加入高斯白噪声,matlab – 使用imnoise为图像添加高斯噪声
  7. 基于python实现网络课程秒刷
  8. 算法笔记(23)网格搜索及Python代码实现
  9. matlab安装前有兼容性问题,matlab安装及问题解决
  10. Linux忘记密码的找回方法