上游戏,开CE,附加进程——直接开始正题。
首先百度一下金手指代码,这个会在后期给予我们巨大的帮助。
截图太长,所以用文本方式列出来,如下:
079E-01-03 透明无敌
07FA-01-09 时间
0756-01-02 子弹
079F-01-09 无敌
0754-01-02 大小
075A-01-09 生命
0704-01-01 超能力<00水中大跳,01空中游泳>
0754-01-FF 上穿墙问题<00-FF,值越大穿墙越轻松>
079E-01-01 隐身<00正常,01隐身>
079F-01-01 保护<00肉体,01金身>
07FA-01-01 时间锁定<00正常,01锁定>
0484-01-00 踩坏蛋的分数<00-10,10为1UP>
0706-01-FF 跳跃问题<00-40,值越大跳跃越轻松>
076A-01-01 周目数(00世界一,01世界二)
0781-01-02 行走样式<00正常,01飞毛腿,02溜冰>
0786-01-00 弹簧质量<00优质,01劣质,02报废>
0791-01-10 体质<00-09,10刀枪不入但刺猬、食人花、火、锤子等除外>
0797-01-FF 敌人状态<00动态,FF僵硬>
079E-01-01 隐身<00正常,01隐身>
07FA-01-01 时间锁定<00正常,01锁定>
0754-01-FF 上穿墙
然后我们通过CE来查找这些地址在游聚游戏平台上,对应的真实地址。
肯定要通过容易自己控制变化的数值来寻找,原因不多说了,会用CE的人都知道为什么。
本文通过找生命数来进行。
对3进行搜索,结果太多。然后死掉一个人,再搜索2,结果有145个。再死掉一个人,搜搜1,此时结果就只有1个了。
双击它,添加到下面的地址列表中。
然后,是重点。千万千万不要试图用“找出是什么访问了这个地址”或者“找出是什么修改了这个地址”这种常规的方法。
因为CE只是win32汇编的内存地址搜索工具,而包括游聚游戏平台在内的模拟器,是将原本6502汇编开发的游戏进行了
指令重写,然后执行的,所以是无法用这种方法搜索到根本地址的。
并且在这里,如果按照修改exe游戏的方式去更改cmp或者jmp之类的,基本上直接把游戏平台给崩溃掉。这里我们巧
妙的使用扫描指针的方式来进行。
从金手指代码中找到生命数是075A,所以在内存浏览器中点工具-指针扫描,然后如下图:
最大等级为什么是1,当然你也可以写2,写3,都能得到正确结果经验告诉我,这个游戏上,写1就足够了。。我们肯
定期望用最少的指针地址来办事。
搜索结果有很多,都是可以用的。我们就用第一个好了。
生命数地址:emulib3.dll + 47C1BC +75A
接下来事情就变得简单多了。比如我要修改直接发射子弹,看金手指列表,子弹的地址是
0756-01-02
所以就这样添加进去,可以看到不会发射子弹是0.
按照金手指代码,最后要改成2。于是照着改,结果就成了。
在CE中改数值,操作不够简洁,尤其是正在玩的时候。所以我们做成修改器来用。
生命数应该允许玩家自己修改吧——
发射子弹的数值是固定的,就不用选上“允许用户更改这个数值”了。
然后做一些相关的设置,最后生成。
做好的样子是这样的。
效果测试:
问:为什么用生命数没用子弹能否发射状态呢?
答:子弹状态是2才能发射子弹的,如果按照常规方法肯定发射1,不能发射搜0.最后什么都得不到。
总结:现成的金手指代码,给本文工作带来了大量的方便,回避了CE不能搜索6502汇编的问题。
有些修改,比如跳关,是3个值控制的,让用户去记住每个关卡的3组值自己输入,显然不合适。
如果全部列出来,会使得修改成程序非常的长。
如果我们用下拉框,就需要用不太友好的lua来编写代码。并且有些地方,比如显示boss的剩余血量,也是需要lua来写的,非常不方便。
本文讲的是模拟器游戏的修改。windows游戏修改有一篇很好的教程可以观看:
http://www.52pojie.cn/thread-563694-1-1.html
下期讲如何使用c语言编程游戏修改,包括命令提示符窗口方式,和界面化设计的方式。
本期重在金手指代码如何用到模拟器游戏上,下期重在编程开发。
|