今天來實作模糊搜尋
實作前先來說明一下
先確定你要找的未知數是定值,但,你無法用精準搜尋找出來
可能是血條,可能是未顯示的參數,可能是時間,而這個未知
數可能是有跡可循,只是我們不知道它的起始值與變動值
我建議要練手先找有金手指位址的遊戲來練習,這樣才好控制
變數,你才知道自己的操作有沒有做錯,有沒有脫靶不小心排
除掉目標位址
流程不外乎先暫停→搜「等於來定起始值」→解除暫停回遊戲
產生變動值→按暫停→切換大於或小於按搜尋→解除暫停回遊
戲產生變動值→按暫停→切換大於或小於按搜尋→位址剩下個
位數位址→邊玩遊戲邊判斷剩餘位址是否有連動?是否是你要
的位址?
失敗就流程再來過
判斷是否是正確位址有時需要大膽修改數值或直接鎖定凍結
鍵盤的Pause鍵預設就是BizHawk的暫停,按它會畫面凍結連
遊戲時間值都會停止,如果小遊戲有需要按暫停,解除暫停當
然就是再按一次,你也可以改熱鍵指定手把未使用按鍵作為即
時暫停來用相當節省時間
請注意底下每一張截圖都是在暫停狀態,去挨打是一定解暫停
再挨打再暫停再進行截圖,以防你沒注意到我必須先說明清楚
實作開始
還記得46億年HP用10進位或16進位精準搜尋搜不到嗎?今天
模糊搜尋實作就拿它來一步一步操作,看需要多少次完成
上面兩張圖是起始狀態,HP:20/20
我們先來看看精準搜尋20
先來挨第一下傷害-2,HP:18/20
我們再來搜18,果然搜不到
沒關係,我們清掉按NEW,流程重來先設好不指定數值、10進
位、1BYTE,正式來模糊搜尋
上面圖是按NEW之後我正常會用等於起手排除變動值位址,不
過,這次我起始值想用大於零起手
目前我們狀態是,HP:18/20,再來我們會再挨一下
傷害-2,HP:16/20,再來我們會搜小於
再來我們會再挨一下傷害-2,HP:14/20
再來我們會搜小於
再來我們會再挨一下傷害-1,HP:13/20
再來我們會搜小於
再來我們會再挨一下傷害-1,HP:12/20
再來我們會搜小於
再來我們會再挨一下傷害-1,HP:11/20
再來我們會搜小於
再來我們會再挨一下傷害-2,HP:9/20
再來我們會搜小於
再來我們會再挨一下傷害-2,HP:7/20
再來我們會搜小於
再來我們會再挨幾下傷害-5,HP:2/20
再來我們會搜小於
到了這裡位址剩一個,HP:2/20
正常到了這一步就算接近收工了,剩下就是觀察數值變動,再三
確認,這個位址你可以鎖定起來,也可以回遊戲做變動,或者大
膽修改數值反覆回遊戲查看,再來確認一下是否是我們找的目標
位址?
這裡我選擇回遊戲咬死怪,吃掉肉補血來確認
吃肉補血+2,HP:4/20
再來我們看位址數值變化,數值:4
到了這裡我們再比對金手指表單,果然位址相符
00C5
最後就是自己判斷它這個位址變化趨勢,一般我會複製兩組同一
位址,一個1BYTE10進位,一個1BYTE16進位
道具數量正常不會超過255,1BYTE很夠用了
HP多半不會超過65535,2BYTE很夠用了
金錢、經驗原則上大概是2BYTE到4BYTE之間
另外,搜尋時本來就會暫停,不過,事先精確暫停比較不會出意
外,小心駛得萬年船,加油!