上游戲,開CE,附加進(jìn)程——直接開始正題。
首先百度一下金手指代碼,這個(gè)會(huì)在后期給予我們巨大的幫助。
截圖太長(zhǎng),所以用文本方式列出來,如下:
079E-01-03 透明無敵
07FA-01-09 時(shí)間
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 保護(hù)<00肉體,01金身>
07FA-01-01 時(shí)間鎖定<00正常,01鎖定>
0484-01-00 踩壞蛋的分?jǐn)?shù)<00-10,10為1UP>
0706-01-FF 跳躍問題<00-40,值越大跳躍越輕松>
076A-01-01 周目數(shù)(00世界一,01世界二)
0781-01-02 行走樣式<00正常,01飛毛腿,02溜冰>
0786-01-00 彈簧質(zhì)量<00優(yōu)質(zhì),01劣質(zhì),02報(bào)廢>
0791-01-10 體質(zhì)<00-09,10刀槍不入但刺猬、食人花、火、錘子等除外>
0797-01-FF 敵人狀態(tài)<00動(dòng)態(tài),FF僵硬>
079E-01-01 隱身<00正常,01隱身>
07FA-01-01 時(shí)間鎖定<00正常,01鎖定>
0754-01-FF 上穿墻
然后我們通過CE來查找這些地址在游聚游戲平臺(tái)上,對(duì)應(yīng)的真實(shí)地址。
肯定要通過容易自己控制變化的數(shù)值來尋找,原因不多說了,會(huì)用CE的人都知道為什么。
本文通過找生命數(shù)來進(jìn)行。
對(duì)3進(jìn)行搜索,結(jié)果太多。然后死掉一個(gè)人,再搜索2,結(jié)果有145個(gè)。再死掉一個(gè)人,搜搜1,此時(shí)結(jié)果就只有1個(gè)了。
雙擊它,添加到下面的地址列表中。
然后,是重點(diǎn)。千萬千萬不要試圖用“找出是什么訪問了這個(gè)地址”或者“找出是什么修改了這個(gè)地址”這種常規(guī)的方法。
因?yàn)镃E只是win32匯編的內(nèi)存地址搜索工具,而包括游聚游戲平臺(tái)在內(nèi)的模擬器,是將原本6502匯編開發(fā)的游戲進(jìn)行了
指令重寫,然后執(zhí)行的,所以是無法用這種方法搜索到根本地址的。
并且在這里,如果按照修改exe游戲的方式去更改cmp或者jmp之類的,基本上直接把游戲平臺(tái)給崩潰掉。這里我們巧
妙的使用掃描指針的方式來進(jìn)行。
從金手指代碼中找到生命數(shù)是075A,所以在內(nèi)存瀏覽器中點(diǎn)工具-指針掃描,然后如下圖:
最大等級(jí)為什么是1,當(dāng)然你也可以寫2,寫3,都能得到正確結(jié)果經(jīng)驗(yàn)告訴我,這個(gè)游戲上,寫1就足夠了。。我們肯
定期望用最少的指針地址來辦事。
搜索結(jié)果有很多,都是可以用的。我們就用第一個(gè)好了。
生命數(shù)地址:emulib3.dll + 47C1BC +75A
接下來事情就變得簡(jiǎn)單多了。比如我要修改直接發(fā)射子彈,看金手指列表,子彈的地址是
0756-01-02

所以就這樣添加進(jìn)去,可以看到不會(huì)發(fā)射子彈是0.
按照金手指代碼,最后要改成2。于是照著改,結(jié)果就成了。
在CE中改數(shù)值,操作不夠簡(jiǎn)潔,尤其是正在玩的時(shí)候。所以我們做成修改器來用。
生命數(shù)應(yīng)該允許玩家自己修改吧——

發(fā)射子彈的數(shù)值是固定的,就不用選上“允許用戶更改這個(gè)數(shù)值”了。
然后做一些相關(guān)的設(shè)置,最后生成。
做好的樣子是這樣的。
效果測(cè)試:
問:為什么用生命數(shù)沒用子彈能否發(fā)射狀態(tài)呢?
答:子彈狀態(tài)是2才能發(fā)射子彈的,如果按照常規(guī)方法肯定發(fā)射1,不能發(fā)射搜0.最后什么都得不到。
總結(jié):現(xiàn)成的金手指代碼,給本文工作帶來了大量的方便,回避了CE不能搜索6502匯編的問題。
有些修改,比如跳關(guān),是3個(gè)值控制的,讓用戶去記住每個(gè)關(guān)卡的3組值自己輸入,顯然不合適。
如果全部列出來,會(huì)使得修改成程序非常的長(zhǎng)。
如果我們用下拉框,就需要用不太友好的lua來編寫代碼。并且有些地方,比如顯示boss的剩余血量,也是需要lua來寫的,非常不方便。
本文講的是模擬器游戲的修改。windows游戲修改有一篇很好的教程可以觀看:
http://www.52pojie.cn/thread-563694-1-1.html
下期講如何使用c語言編程游戲修改,包括命令提示符窗口方式,和界面化設(shè)計(jì)的方式。
本期重在金手指代碼如何用到模擬器游戲上,下期重在編程開發(fā)。
|