Re: [心得] 簡單來談談BizHawk記憶體修改程式

作者: flingcould (載雨拾乘三)   2025-03-27 23:38:40
今天來實作模糊搜尋
實作前先來說明一下
先確定你要找的未知數是定值,但,你無法用精準搜尋找出來
可能是血條,可能是未顯示的參數,可能是時間,而這個未知
數可能是有跡可循,只是我們不知道它的起始值與變動值
我建議要練手先找有金手指位址的遊戲來練習,這樣才好控制
變數,你才知道自己的操作有沒有做錯,有沒有脫靶不小心排
除掉目標位址
流程不外乎先暫停→搜「等於來定起始值」→解除暫停回遊戲
產生變動值→按暫停→切換大於或小於按搜尋→解除暫停回遊
戲產生變動值→按暫停→切換大於或小於按搜尋→位址剩下個
位數位址→邊玩遊戲邊判斷剩餘位址是否有連動?是否是你要
的位址?
失敗就流程再來過
判斷是否是正確位址有時需要大膽修改數值或直接鎖定凍結
鍵盤的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之間
另外,搜尋時本來就會暫停,不過,事先精確暫停比較不會出意
外,小心駛得萬年船,加油!
作者: if4 (if)   2025-03-28 07:02:00
推一個 XD
作者: tinyfan (小風扇)   2025-03-28 16:19:00
心得就給推
作者: if4 (if)   2025-03-28 22:44:00
f大 模糊有搜浮點數的嗎 以前聽說有經驗 生命用浮點數別款遊戲
作者: flingcould (載雨拾乘三)   2025-03-29 08:47:00
問得很好,我從1.8版玩到2.10版沒遇到改浮點數……沒印象,而且,抓得到的金手指好像都是整數的,我不清楚
作者: if4 (if)   2025-03-29 19:35:00
好的,謝謝 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com