修改GBA游戏本身
作者:赵思丽(。zZ~~)转载请注明。
本文假设你已经知道80x86汇编(虽然指令集不同)并且会使用TRW2000(尽量)。
管没用)等等来调试程序。
工具:
VisualBoyAdvance-1.5,HexWorkshop(或其他十六进制编辑器),No$Gba
调试器
罗:GBA-302 -戴夫米拉自由式小轮车2 (E)
在写这篇文章的时候,作者刚刚学会如何修改程序指令HACK GBA rom。(花了我整整一大笔钱。
如果你不懂拇指和手臂指令集(像我一样),先看一下。
CPU参考部分没有$Gba帮助,里面有更详细的介绍。在我的黑客的
这个rom用的是THUMB。Hack的目标是无限时间(虽然在游戏里,你这样改,也一样)
游戏无法结束时)。
首先,利用搜索作弊...VisualBoyAdvance-1.5的函数来查找时间的地址。
是0200DBF0。(注意:不要用Emucheat之类的来找,不然会加一定的偏移地址。
很麻烦)
加载不带$gba的ROM。选择调试-& gt;定义休息/条件.填写文本框
[0200DBF0]!,则设置这样的断点。(具体断点见No$gba的帮助。)
当0200DBF0中的值改变时,这将中断。按F9键(可能需要几次)进入。
经常玩游戏。当有时间变化时,会在0800A292中断。注意上面有一个指令sub。
R0,1h和str0,[r1]预计时间在子r0,1h处减少(为什么?《如果你》...
我用trw2000经验告诉你。所以双击线路0800a28e,将开关设置在sub。
按F9,游戏会在一两秒后中断。这时,寄存器r0=77h(十进制119,即
119秒,游戏中显示1:59)。按F7转到下一条指令strr0,[r1] (r1 = 0200dbf0 is。
时间的地址),该指令的作用是使r1中对应地址存储的值等于r0中的值(用
请参见No$Gba帮助中的CPU参考部分)。可以看出,要使时间无限,只要把sub
如果改变r0,1h,r0中的值不会改变,0200dbf0处的值也不会改变。我选择把
将sub r0,1h更改为sub r0,0h(右键单击sub,选择更改指令,并填写sub。
r0,0h).删除断点按F9进入游戏,时间不会减少吗?
接下来,将改变rom。修改前写下机器码,就是0800xxxx旁边的值。
(应该是6808 3801 6008 6810)。然后写下更改后的机器码,应该是6808 3800。
6008 6810。交换高位和低位。切换后应该是0868 0138 0860 1068和0868。
0038 0860 1068。用HexWorkshop打开rom,查找0868 0138 0860 1068。发现
修改为0868 0038 0860 1068。保存。使用VisualBoyAdvance-1.5载入播放。
看,时间是无限的吗?今天到此为止。
如果你有任何问题,请和我讨论。我的QQ号是32743622。