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

   经过一天的努力终于琢磨出怎么修改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试试。



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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351997.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【3DS】必做清单

3DS必做清单 引言 翻新后的小贴士 本文用于记录我的New Nindendo 3DSLL 软件翻新历程。 因为国内很多都提供现成的懒人包,如果上游有更新,没办法第一时间拿到。 如果你的网络条件够好,可以试试在Universal-Updater里面搜对应软件名字就好. 晚…

dstwo linux 模拟器,dstwo sfc模拟器插件Catsfc使用教程

dstwo作为史上最为优秀的一款nds烧录卡,这个烧录卡不仅支持完美运行nds游戏,还可以利用强大的硬件来运行许多经典模拟器游戏,其中就包括经典的sfc模拟器,下面给大家带来一款目前在兼容性和速度最好的dstwo用sfc模拟器插件Catsfc的…

nds linux模拟器下载,NDS模拟器Desmume

DeSmuME是一个 Nintendo Dual Screen 模拟器。开源,更新很勤快有希望能替代 No$GBA。DeSmuME是一个开源的适用于Linux,Mac OS和Windows的任天堂DS(NDS)模拟器。 DeSmuME支持保存,增加屏幕的大小,支持的过滤器,以提高图…

nds linux模拟器下载,NDS模拟器

《NDS模拟器》是一款能在电脑上模拟NDS的软件。DeSmuMe模拟器在图像和声音上有较大的优化。尤其表现在图像质量方面,颜色更加鲜明,甚至许多用NO$GBA看不清楚地细节都可以在DeSmuME中看到。 NDS模拟器软件背景 DeSmuME 最初是由YopYop156使用C开发并运行在…

Linux端NDS模拟器DeSmuME添加金手指

本文以Deepin上的DeSmuME客户端为例来说明如何添加金手指。本文参考的文章的链接为https://blog.wxm.be/2015/08/09/action-replay-codes-in-desmume-on-linux.html。 通过命令行apt install方式安装的DeSmuME客户端,游戏的存档、金手指等文件位于 ~/.config/desmum…

excel自动行高后只显示一行怎么回事?

当Excel自动调整行高后,如果只显示一行,可能是因为单元格中的文本内容过多,导致显示不全。可以尝试以下解决办法: 1. 双击单元格的边界。双击单元格的边界可以将单元格的高度调整为适合文本内容的高度。 2. 改变设置。点击单元格…

搭建Nextcloud私有云【零基础搭建私有云盘并内网穿透远程访问】

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章:使用Nextcl…

Ampere 又放大招,推出自研192 核AmpereOne 系列处理器,已投产

作者 | 伍杏玲 近日,Ampere Computing 发布2023年度战略和产品路线图,并推出全新的AmpereOne系列处理器,拥有多达 192 个单线程 Ampere 核,内核数量为业界最高。这是第一款基于 Ampere 新自研核的产品,由 Ampere 自有…

软件测试周刊(第18期):一个精确的测量胜过一千个专家的意见

这里记录过去一周我们看到的软件测试及周边的行业动态,周五发布。 本周刊开源(GitHub: SoftwareTestingWeekly ),欢迎提交 issue,投稿或推荐软件测试相关的内容。 科普 碳中和 碳达峰、碳中和最近频繁出现在大众视野…

【Linux】Nginx编译安装及系统服务添加

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Nginx 一、关于 NginxNginx和Apache的差异Apache的优势Nginx的优势 二. 编译安装Nginx服务1.关闭防火墙2.安装依赖包3.创建运行用户、组4.编译安装Nginx5.检查、启动、重启、…

清华大学刘知远教授:如何写一篇合格的NLP论文

作者 | 刘知远 编辑 | NewBeeNLP 来源 | 左下角阅读原文处 周末重读&分享清华大学刘知远老师的干货文章,虽然题目是如何写一篇合格的NLP文章,但是可以适用于人工智能相关的其他领域,以下是原文,希望也对你有帮助~ 前几天刚过…

[当人工智能遇上安全] 2.清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing

您或许知道,作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个《当人工智能遇上安全》系列博客,详细介绍人工智能与安全相关的论文、实践,并分享各种案…

我的程序人生——初识代码,从学好C语言开始

我正在参与CSDN《新程序员》有奖征文,本次活动的地址为:《新程序员》有奖征文 文章目录 从学好C语言开始稀里糊涂就进入实验室从烙铁杀手到主要程序员竞赛中的坎坷大学中我的建议1. 绩点很重要2. 从事本专业或许是你最容易的选择 聊聊我自己吧&#xff0…

研究生期间如何成为科研大佬?

作者 | 叶小飞北美奔驰研究员 整理 | NewBeeNLP 由于不清楚小伙伴们的研究方向,以下分享只针对ML/DL/CV/NLP方向。 先泼个冷水,如果你本科积累不多,也不是天赋异禀,硕士成为真正的科研大佬是不太可能的,成为“灌水大…

野生瓜还是裂口瓜?

这是学习笔记的第 2404篇文章 最近刷视频的时候看到了《杀瓜》的片段,虽然我在豆瓣确认了下这电影的分数不高,但是里面有一段话感觉很不错: 瓜农陈草:“今年啊,我这地里的裂口瓜特别多,你说这是为什么呢&am…

清华NLP实验室刘知远:如何写一篇合格的NLP论文

Datawhale干货 作者:刘知远,清华大学,来源:大数据文摘 本文作者刘知远为清华大学计算机科学与技术系副教授 。刘老师总结了研究者在写NLP论文时常见的几类问题,并写成了这篇文章。除了对于NLP研究者,这篇文…

打开程序员心理B面,这些黑红话题他们亲自回应丨1024特辑

1024对于程序员的特殊意义大概只有程序员才懂,正如外界对程序员的刻板印象永远停留在“高收入”、“低情商”、“发际线”、“格子衫”等特殊标签上,无论是光环还是恶名,背后实际都藏着太多只有程序员才懂的无奈与辛酸。 不求被全世界理解是程…

让人瞩目的插画设计秘诀在哪?为你揭开3D辅助绘画技术面纱!

插画设计秘诀到底在哪?3D技术如何辅助绘画技术?今天,硅谷洞察(原硅谷密探, ID:guigudiyixian)有幸请来了疯景老师,并对他进行了一次独家的专访。希望可以对喜欢和从事插画的你们得到一些帮助和启发。 —— …

安卓不知道怎么学?看十年码农如何回答这个问题。

有很多朋友问过怎么学习 Framework,之前写了三篇文章,主要说的是之前开发应用的如何过渡到开发 Framework 。喜欢的可以通过下面的链接阅读。 Android 如何从应用深入到Framework (一) Android 如何从应用深入到Framework &…

对话南科大沈平:在人工智能开源中,高校能扮演什么角色?

2021-04-20 01:47:54 作者 | 陈彩娴 采访整理 | 刘冰一 2020年被称为深度学习框架开源的元年。 那一年,继百度飞桨之后,旷视开源天元(MegEngine),华为推出MindSpore,清华大学计算机系的图形学实验室也发…