GBA金手指代码教程文档格式.docx
- 文档编号:20811354
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:32
- 大小:865.30KB
GBA金手指代码教程文档格式.docx
《GBA金手指代码教程文档格式.docx》由会员分享,可在线阅读,更多相关《GBA金手指代码教程文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
開始遊戲。
初始資金是500Gil,如下圖。
按Alt+A,打開搜索代碼對話框,如下圖。
Searchtype下選擇SpecificValue(搜索指定値)
Datasize決定搜索的字節數,8bits代表單字節,16bits代表雙字節,32bits代表四字節。
此時應選擇16bits。
Comparetype一直選擇Equal(相等)就行了
右邊的Signed代表帶正/負數的十進制,Unsigned代表不帶負數的十進制,Hexadecimal代表十六進制。
這裡爲了保持正統,一律用十六進制。
接著在Entervalue中輸入500Gil的十六進制1F4h(h代表十六進制的符號,實際輸入時無需輸入此字母),點Start按鈕,再點Search按鈕,此時效果見下圖。
此時出現了一大堆地址,代表還未搜出唯一値。
那麼先繼續遊戲,去設法讓此數値發生變化。
在購入一把武器後,數値變成了492,見下圖。
再按Alt+A,接著在Entervalue中輸入492的十六進制1ECh並點Search按鈕,結果見下。
此時找到了唯一的地址02002ab4,這就是金錢的地址。
(如果想重新搜索其它項目的地址必須再點Start按鈕然後重新打數字搜索)
接著用鼠標點這個地址,再點下面的Addcheat按鈕添加代碼,出現下圖的對話框。
這時可以在Value中輸入自己想修改的數値的十六進制形式;
在Description中輸入代碼的註解,可以幫助記住此碼的作用;
點OK按鈕就行了。
但注意圖中的紅圈部分,16-bit前有個點,表示此時最多可修改兩個字節,卽可以修改0000h至FFFFh。
如果想增加修改範圍可以先點Cancel按鈕取消,回到之前的搜索對話框,然後選中左邊的32bits,見下圖的紅圈。
此時再點Addcheat按鈕就會見到下圖的樣子,那個灰點移到了32-bit處,此時可修改的範圍擴大至00000000h至FFFFFFFFh。
輸入F423Fh後效果點OK按鈕關閉此對話框,再點搜索對話框的那個OK按鈕。
這是再看看修改後的效果,見下圖。
資金變999999Gil了且金手指不關閉的話這個數値是鎖定不變的。
此時按Alt+E打開代碼列表可以看見之前搜到的代碼已經被添加進列表了,代碼註解也有,見下圖。
代碼左邊的鈎子代表此碼是啓用狀態,點擊該處去掉鈎子就能關閉此碼的鎖定效果了。
當然也可以直接在上圖的對話框添加代碼,點Cheat按鈕後出現下圖的對話框。
可以在此框中自己輸入地址、修改値、註解、修改範圍和數値類型,但須注意以下重點:
如果選擇16-bit,地址尾數必須是0、2、4、6、8、A、C或E;
如果選擇32-bit,尾數必須是0、4、8或C。
列表管理
當列表中的代碼越加越多時下方的代碼就看不到了,見下圖。
此時要把滾動條拉下去才能看到下面的代碼。
但VBA有個不體貼的設定就是下方代碼無論啓用還是禁用任何一條後都會自動彈回最上方,這裡就教大家一個竅門:
把滾動條拉下去後利用Ctrl鍵和Shift鍵配合鼠標可一次選中多行代碼,(就像在Windows的資源管理器下選擇多個文件那樣)這時點擊下方的Enable/Disable按鈕就能啓用或禁用所有選中的代碼。
(啓用的變禁用,禁用的變啓用)
同理,一次想刪除多行代碼也可以用此方法,換點下方的Remove按鈕就行了,具體效果見下圖。
還有那個RemoveAll按鈕是把列表中所有代碼清空,且清空前無提示,使用前請三思。
中級教程
之前的是最簡單的修改,算是熱身吧,現在教些有點難度的了。
這次的修改例子是美版《CastlevaniaAriaofSorrow》的怪物圖鑒全部開啓。
涉及到圖鑒之類的修改通常要用到二進制和十六進制的互相換算,因爲此時修改單位通常精確到最高的比特級。
還是照舊先打開Rom,然後NewGame。
此時圖鑒空空如也,見下圖。
接著去闖城。
在遊戲中可以打死的第一種怪物是Zombie,在圖鑒中排第二個位置,見下圖。
旣然佔第二個位置,那麼在二進制中圖鑒地址的第一個字節就是00000010b(b代表二進制符號,實際操作時無需輸入此字母),換算成十六進制就是02h。
這裡我解釋解釋一下,1個字節可以拆分爲8個比特,從右向左是低位到高位。
圖鑒中第幾個怪物圖鑒開啓了,那麼那一位比特就被置1,否則就是0。
現在第二個位置圖鑒開啓了,那麼從右向左數第二位就被置1,所以第一個字節的二進制形式此時就是00000010b。
現在就可以開始搜索了,把搜索範圍擴大成32bits,類型選十六進制,然後輸入02開始搜索。
此時已找出了部分地址,圖鑒的第一個地址就在其中。
接著繼續遊戲,第二種能打死的怪物是Bat,見下圖。
由於Bat在圖鑒中佔第一個位置,那麼最低位也被置1了,所以此時第一個地址的二進制應該是00000011b,卽03h。
接著在搜索對話框中輸入03再搜索,此時應該衹剩下兩個地址了:
02010364和020133a0,後面那個就是正確的地址。
旣然地址找到,當然要把這些地址全部置1了。
由於遊戲一共有112種怪物,而每個字節最多可以將8比特置1,所以一共要修改112÷
8=14個字節。
那麼從020133a0開始連續把14個地址修改成FFh吧(因爲FFh的二進制就是11111111b),卽輸入以下代碼:
020133a0ffffffff(四字節修改)
020133a4ffffffff(四字節修改)
020133a8ffffffff(四字節修改)
020133acffff(雙字節修改)
這樣就能將全部怪物名稱全改出來了。
但是光改出怪物名稱還不夠,每種怪物身上掉落的道具名稱還未改出啊,見下圖。
這時可不妨大膽地再往後多修改幾個地址。
當改到020133b0時第一格道具名稱也改出來了,表示此地址是第一格道具名稱的起始地址。
接著一直修改到020103bc時所有怪物的第一格道具名稱也全改出來了,代碼如下:
020133b0ffffffff(四字節修改)
020133b4ffffffff(四字節修改)
020133b8ffffffff(四字節修改)
020133bcff(單字節修改)
同理,所有怪物的第二格道具地址是從020133c0開始,具體代碼如下:
020133c0ffffffff(四字節修改)
020133c4ffffffff(四字節修改)
020133c8ffffffff(四字節修改)
020133ccffff(雙字節修改)
關於搜索前如何確定DataSize,這裡分享一下筆者的經驗:
搜索金錢和經驗値等數値較大的單位時大可以選擇最大的32bits來搜索;
搜索HP、MP和人物能力時可以選擇16bits;
搜索道具種類和個數時建議選最小的8bits。
總之,DataSize選得越大搜到的結果越少,當然可以更快地找到想要找的地址,但往往會把眞正的地址搜漏了,導致找到的地址全是錯的或乾脆一個地址都沒找到;
而DataSize選得越小搜到的結果越多,眞正的地址不容易被遺漏,但需要反復多搜幾遍將搜到的地址數不斷減少才能找出眞正的地址。
當然也可以利用模擬器的卽時存檔功能,用Shift+F1、Shift+F2等分別保存幾個數値不同的卽時存檔,再反復讀取它們同時反復搜索這些數値,可以很快地找到眞正的地址。
高級教程
頂樓講述的是尋找代碼的一些技巧和經驗,能領悟多少就看各位的造化了。
接下去就是本文的高潮部分,筆者將講解形形色色的VBA金手指碼的格式。
首先見下圖。
這是在代碼列表中點Cheat按鈕出現的對話框,Size那一欄決定了那行代碼的修改量:
8-bit代碼單字節修改,修改値範圍是00h~FFh;
16-bit代碼雙字節修改,修改値範圍是0000h~FFFFh;
32-bit代碼四字節修改,修改値範圍是00000000h~FFFFFFFFh。
其中選雙字節修改的話地址尾數必須是0、2、4、6、8、A、C或E,四字節修改必須是0、4、8或C。
通過這種方式添加的就是VBA自身的格式(以下簡稱VBA格式),它的地址範圍一共有兩段,具體見下:
第一段是02000000h~0203ffffh,第二段是03000000h~03007ffffh,任何VBA格式的碼地址都離不開這個範圍。
當然VBA格式的碼也單調了些,就是直接修改並鎖定數値,這個EC也能做到。
而且代碼列表中最多衹能保存100行代碼,就算每行都是四字節修改也衹能修改400個地址,對於一些SLG或S·
RPG來説400個地址肯定不夠修改。
雖然可以通過刪除後添加新代碼或把代碼列表另存爲多個clt文件解決100行代碼上限的難題,但這麼做始終不方便。
那麼接下來筆者將介紹其它幾種金手指格式。
GameShark&
CodeBreaker
這兩種金手指是北美的兩家金手指廠商生産出來的正牌金手指。
很慶幸VBA可以兼容它們的格式,且在代碼列表中不同格式的碼可以共存並互不影響。
筆者先貼兩段這兩種格式的碼給大家看看。
GameShark
[M]MustBeOn
90228AE1216C
D61188E40A0B
585E6716AEAD
EnterDebugMenu[Sel+Up]
78583111C11C
B1BEA190F347
17CF08B36EA5
ExitDebugMenu[Sel+Dwn]
7C59241BC739
078F8AB77AAB
CodeBreaker
EnableCode(MustBeOn)
0000D1E9000A
100D8F940007
InfiniteHP
8201509E03E7
InfiniteMP
820150A003E7
可以看出GameShark(以下簡稱GS)格式根本看不出地址和修改値在哪裡,這種形式的碼就被稱爲暗號化形式;
而CodeBreaker(以下簡稱CB)格式根VBA格式很像,一下子就能看出地址和修改値在哪,這種就被稱爲復號化形式。
其實GS碼包含的命令種類和CB碼是完全一樣的,不過在VBA中要使用GS碼的話非得將必須碼置頂([M]MustBeOn就是必須碼),當然要是必須碼上面有其它格式的碼存在也是允許的。
不過筆者也不推薦使用GS碼,首先那暗號化的形式根本讓人看不出甚麼地址將修改成甚麼數値,最麻煩的就是那必須碼。
由於GS官網公佈的幾乎都是美、歐版遊戲,日版遊戲的必須碼很難找到,使得GS碼的使用率大打折扣,所以筆者推薦大家使用CB碼。
因爲CB碼在VBA中沒有必須碼也能使用,而且它是復號化形式,除了第一個數字代碼不同的命令外,後面的地址和VBA格式完全一樣。
接下去筆者將講解CB碼的各種命令。
3XXXXXXX00YY
表示單字節修改並鎖定修改値,YY前面的00卽使改成其它數字也不作處理。
舉例:
0200283933(單字節修改)
轉換成CB格式後就是
320028390033
8XXXXXXXYYYY
表示雙字節修改並鎖定修改値。
020028385533(雙字節修改)
820028385533
4XXXXXXXYYYY
aaaannnnzzzz
表示從地址XXXXXXX開始,連續作nnnn行修改,每行地址間隔zzzz字節,每行修改値遞增aaaa,第一行地址修改的初始値爲YYYY。
這個就是俗稱的壓縮碼,有了它短短的兩行碼就可以替代原本的數十行甚至數百行,使得代碼列表中那100行碼可以修改超過400個字節的上限。
0202ab960201
0202ab980403
0202ab9a0605
0202ab9c0807
4202ab960201
020200040002
因爲一共4行,所以nnnn取4h;
每行地址間隔2h,所以zzzz取2h;
每個修改値遞增202h,所以aaaa取0202h。
再擧一例:
03002320ff
03002321ff
03002322ff
03002323ff
03002324ff
03002325ff
03002326ff
43002320FFFF
000000060001
先將第一行和第二行的修改値合併成一行,所以YYYY取FFFFh;
一共有7行,由於開頭兩行合併了,所以nnnn取6h;
地址間隔1h,所以zzzz取0001h;
由於修改値全是一樣的,所以aaaa取0000h。
那麼頂樓那個《Castlvania》的全圖鑒開啓碼就可以轉成如下格式:
420133A0FFFF
000000070002
420133B0FFFF
0000000C0001
420133C0FFFF
原本12行的VBA碼就這樣被縮短了一半了,而且效果完全相同。
另外要注意的是CB的壓縮碼衹能作雙字節修改。
7XXXXXXXYYYY
表示當XXXXXXX上的數値等於YYYY時,執行下一個命令。
這個就是俗稱的條件碼,要配合其它的碼來使用才能發揮作用。
比如
7201200201FE
320120040001
表示當02012002上的數値爲FEh且02012003上的數値爲01h時,把02012004上的數値修改成01h,否則跳過此命令繼續執行下條命令。
注意我這裡說的是命令不是行,因爲壓縮碼雖然佔兩行,但也衹算一個命令,所以壓縮碼上面也衹需加一行條件碼卽可。
這裡會有人問到:
條件碼有甚麼主要作用?
其實條件碼主要是用來配合GBA的按鍵來使用的,就是當按下GBA的哪個單鍵或組合鍵時啓動相應的指令。
那麼如何才能找到每個遊戲中代表按鍵的地址呢?
先看看下面每個鍵位代表的數値:
0001A鍵
0002B鍵
0004選擇鍵
0008開始鍵
0010右鍵
0020左鍵
0040上鍵
0080下鍵
0200L鍵
0100R鍵
有了這個鍵位代碼表就可以很輕易地找出每個遊戲的按鍵地址了。
卽按住某個鍵不放開始搜索它的地址,DataSize選16bits,然後換個按鍵繼續找,很快就能找到該地址了。
比如美版的《FinalFantasyⅠ&
Ⅱ》中一代的按鍵地址就是02001df0。
72001DF00102
82002AB4270F
表示當按下R+B鍵時金錢就變成9999Gil了。
AXXXXXXXYYYY
表示當XXXXXXX上的數値不等於YYYY時,執行下一個命令。
這個和7開頭的條件碼作用正好相反,但其它細節都一樣,筆者就不多介紹了。
EXXXXXXXYYYY
表示在地址XXXXXXX上不停地增加或減少一定的數値,增減量由YYYY決定。
這個就是俗稱的加減碼,可以對某個地址增加或減少自己定義的數値。
當YYYY等於0001h~7FFFh時表示增加;
當YYYY等於8000h~FFFFh時表示減少。
還是以美版《FinalFantasyⅠ&
Ⅱ》中的一代舉例:
A2002AB4FFFF
E2002AB40001
表示當金錢不是65535Gil時就不停地增加直到等於65535Gil爲止。
那麼如何添加GS碼和CB碼呢?
見下圖。
點下面那個Gameshark按鈕就是添加GS碼,點CodeBreaker按鈕就是添加CB碼。
點擊後分別會出現下面兩個對話框。
Description那欄可以添加代碼註解,Code那欄添加代碼。
注意GS碼必須要把必須碼置頂添加,那後面的碼才會生效;
CB碼則不用添加必須碼。
GameShark碼轉CodeBreaker碼
雖然CB碼很好用,但CB官網那裡已經好久都沒更新新遊戲的碼了;
相反GS官網卻更新得很勤快。
那麼如何才能把GS碼轉成CB碼呢?
答案是通過轉碼器。
此轉碼器的名字叫CBAcrypt(下載點見2樓),界面如下圖。
把GS碼複製進左邊的框中且必須碼一定要置頂。
由於GS碼是沒有空格的,所以要在每行的第8個字節後人工添加一個空格,然後再點Decrypt按鈕,右邊的框中就會出現轉換後的CB碼。
具體效果就像上圖那樣。
之前筆者說過CB的壓縮碼衹能作雙字節的連續修改,但要是需要作單字節的連續修改,並且地址不連續而是那種間隔性的時候怎麼辦呢?
筆者在此推薦給大家另一款功能強勁的金手指。
ActionReplay
這是與GS和CB齊名的另一種金手指(以下簡稱AR),在VBA中使用時同樣無需必須碼。
廢話少說,先貼一段它的碼給大家看看。
HaveAllItems
b4315888
d5eab772
c0ae59e9
7a0799aa
ae361d0e
e67fb25d
569fdb7a
e807ff44
b1e5d7a1
13cedbc1
49f752a0
727c7b65
這就是從AR官網原封不動搬來的一段碼,作用是將美版《FinalFantasyⅠ&
Ⅱ》中一代的全部消費道具改出。
可以看出它也是暗號化形式的,實際在VBA中輸入時也是輸入這種暗號化形式。
那麼如何將它轉成復號化形式看它的作用呢?
當然也是通過轉碼器,名字叫ARCrypt。
(下載點見2樓)
轉換方法稍後介紹,先介紹一下它的復號化形式中的各種命令。
00XXXXXXnnnnnnYY
表示從地址XXXXXX開始,連續作nnnnnn+1行的單字節修改,修改値全都是YY。
0200ac3503
轉成AR格式後就是
0020AC3500000003
0200ac3507
0200ac3607
0200ac3707
0200ac3807
0200ac3907
0020AC3500000407
一共有5行,所以nnnnnn取5-1=4h;
YY取07h。
這裡要順帶解説一下AR復號化後的地址:
開頭兩個數字是該行的命令符,後面的就是地址了。
VBA格式地址轉AR格式地址的轉換表如下:
VBA格式
AR格式
020xxxxx
YY2XXXXX
0300xxxx
YY30XXXX
PS:
YY代表AR的命令符。
02XXXXXXnnnnYYYY
表示從地址XXXXXX開始,連續作nnnn+1行的雙字節修改,修改値全都是YYYY。
0203fffe03e7
0223FFFE000003E7
0300000003e7
0300000203e7
0300000403e7
0300000603e7
0223FFFE000403E7
一共有5行,所以nnnn取5-1=4h;
YYYY取03E7h。
04XXXXXXYYYYYYYY
表示四字節修改並鎖定修改値。
03002ffc05f5e0ff
04302FFC05F5E0FF
0000000080XXXXXX
000000YYaannzzzz
表示從地址XXXXXX開始,連續作nn行的單字節修改,每行地址間隔zzzz字節,每行修改値遞增aa,第一行地址修改的初始値爲YY。
這就是筆者之前說的作單字節修改,且地址是連續間隔性的那種壓縮碼,也是GBA所有金手指中唯一可以作此修改的命令。
02012a0702
02012a0a03
02012a0d04
02012a1005
02012a1306
0000000080212A07
0000000201050003
一共有5行,所以nn取5h;
每行地址間隔3h,所以zzzz取0003h;
每個修改値遞增1h,所以aa取01h。
0000000082XXXXXX
0000YYYYaannzzzz
表示從地址XXXXXX開始,連續作nn行的雙字節修改,每行地址間隔zzzz乘以2字節,每行修改値遞增aa,第一行地址修改的初始値爲YYYY。
02003a001003
02003a041005
02003a081007
02003a0c1009
0000000082203A00
0000100302040002
一共有4行,所以nn取4h;
每行地址間隔4h,所以zzzz取4÷
2=2h;
每個修改値遞增2h,所以aa取02h。
0000000084XXXXXX
YYYYYYYYaannzzzz
表示從地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GBA 手指 代码 教程