[原创] MD按键HACK简单教程
注:本人原创,若转载请注明 作者以及出处。多谢疾风之狼的帮助了需要工具:EmuCheat,HexCmp(UE也行,个人兴趣)。68k指令集。
修改目的:按下START键已达到加99个飞镖,及补血。
EC码:
[镖]
ON=432B,99
[血]
ON=430D,7F
本例是以MD游戏蝙蝠侠【Batman (J)】的按键修改来说明。
步骤:1,用HexCmp打开Rom,点击Search,输入F9 00 A1 00 03,再点OK。如图
找到后,就来到这里了。
用笔记下41 F9 00 A1 00 03,以及00121E(就是03后面那个数的地址)。
步骤2:找一块空地(0000或FFFF都行),我找的这里07FA60。
然后就靠自己发挥了。
先输入41 F9 00 A1 00 03,这看过狼大大的教程就知道了,不用多说。
接下来输入0C 39 00 80 00 FF 4A 94 ,意思就是将80(即Start键的键值)和4A94(按键地址数值)作对比66 10 就是指不相等的话,
便跳过16个字节,你按下Start键后,就会执行以下的指令:33 FC 00 99 00 FF 43 2B (意思是将数值99送入432B中,就是加99个飞镖啦)。
33 FC 00 7F 00 FF 43 0D(就是将数值7F送入430D 中,以达到补血)。最后4E F9 00 00 12 1E ,跳回原程序。00 12 1E就是开始用笔抄的地方。
步骤3:回到开始查到F9 00 A1 00 03的地方,将41 F9 00 A1 00 03 改为4E F9 00 07 FA 60 ,即跳转到空地的地址。
如图:
这样就OK了。还有一步,就是红屏修正,用FixCheckSum就可以搞定,论坛里有下的。
最后,就是用模拟器测试吧。这就是结果图。
http://bbs.emu618.com/forum/attachments/month_0902/20090221_9e8633a697aeb126c758zgd6POmfD6rM.jpg
结束。
注:要说明的几点。
一,要学会用EC查按键地址。一般MD键值是这样的↑:1 ;↓:2;←:4;→:8
B:10;C:20;A:40;Start:80.。有的是比较特殊的,比如我改的银河战士,按键
键值就不同,不按任何键时键值为FF,一般为00.还有就是有时按键地址也会偏移,向左或向右偏一点。
二,还有一种方法,适用于所有MD按键Hack。首先知道按键地址4A94,打开Testcore,输入4A94,设置断点,来到这里,如图。
然后,打开HexCmp,找到001280,如图。
将33 FC 00 00 00 A1 11 00改为4E F9 00 07 FA 604E 71
记下001288.
然后回到第二步。如图
接下来的事不用多说了。个人认为,如果一般能查到F9 00 A1 00 03,
还是使用第一种方法简单、如果查不到的话,只能用Debugger了。
本人还是菜鸟,如有不足之处,多谢指出。多谢Shinwa提醒我完善此教程。
[ 本帖最后由 HeavenTrain 于 2009-5-23 13:44 编辑 ] 学习了,谢谢分享。 楼主我笨学不会了只能玩完游戏;了 教程写得不错,支持一下!:loveliness: 支持楼主的教程!;)
不错的说! 来瞧瞧:kiss:
简单的教材不简单哦 直接搜索按键EC 断点跳转 不是更准确吗~~~~~~~
直接搜索机器码?难道说每个ROM的按键程序那里都那样??? 这只是一种最简单的修改,适合初学者。LS说的对,直接用按键EC跳转,是最准确的,不过感觉比这个稍复杂一些。
大多数这种修改适用,也简单,也有不能修改的,可以省去用debugger。
多谢LS提出问题,教程于2.22号已作补充说明。
[ 本帖最后由 HeavenTrain 于 2009-2-24 16:35 编辑 ] 感谢楼主提供!!!支持原创~ 我想学了,楼主可不可以把/需要工具:EmuCheat,HexCmp(UE也行,个人兴趣)。68k指令集的下载地址帖出来啊 :@ 感谢分享,有空了仔细研究看看
回复 11楼 的帖子
http://www.emu618.com/EmutoolsList-4-0_1.aspx EmuCheat在这里.http://bbs.emu618.com/forum/thread-20393-1-1.html资料.
HexCmp我网盘上有. 请问一下“以及00121E(就是03后面那个数的地址)”那个00 12 1E 在哪呢?没有看到呀。
(已明白了):L
[ 本帖最后由 kongmao45678 于 2009-3-22 23:49 编辑 ]
回复 14楼 的帖子
那個是地址,圖2的最左邊 请问:“便跳过16个字节”这是什么意思?,"4A94(按键地址数值)"这个4A94按键数值,是不是不同游戏不同呀?start这个按键值怎么找?我只会找到上下左右的按键值。另外我用找到的方向的按键值的地址后,一找断点,就定了,我还没按方向呢?!还有我找到的按键值,锁定后,比如是魂斗罗的“下”,人物会一会站一会下,是不是还要找个常按的地址呀?:L请问[ 本帖最后由 kongmao45678 于 2009-3-23 16:20 编辑 ] 1.就是跳過33 FC 00 99 00 FF 43 2B 33 FC 00 7F 00 FF 43 0D這16個字節到4E F9 00 00 12 1E這
即不執行33 FC 00 99 00 FF 43 2B 33 FC 00 7F 00 FF 43 0D的命令
2.不同的遊戲按鍵地址當然不同
按住start鍵然後用EC去查找,再放開start鍵查,反復幾次就能找到 用EC改游戏,要学会寻址 楼主辛苦了,谢谢 原帖由 kongmao45678 于 2009-3-23 15:30 发表 http://bbs.emu618.com/forum/images/common/back.gif
请问:“便跳过16个字节”这是什么意思?,"4A94(按键地址数值)"这个4A94按键数值,是不是不同游戏不同呀?start这个按键值怎么找?我只会找到上下左右的按键值。另外我用找到的方向的按键值的地址后,一找断点,就 ...
MD的按键是超过8位的 也就是用2个字节存放了,所以一个字节里只能有8个按键,不过地址是连续的,你找到了一个看看边上的就可以了,一共2个字节。所以你搜MD按键的时候可以直接搜索16位。以后熟练了只要花一两分钟就搜索到了,至于搜到的地址是否靠锁定就可以控制人物,那个并不重要,因为你要读取这个数据而已,所以只要找到的内存是随你的按键变化而变化的内存就可以了,之后写程序判断这个内存是否为XX就可以了。按键程序一般是在主程序里的,所以你一下断点就会停住。
页:
[1]
2