GBA金手指代码教程.docx

上传人:b****3 文档编号:5331461 上传时间:2022-12-15 格式:DOCX 页数:32 大小:865.27KB
下载 相关 举报
GBA金手指代码教程.docx_第1页
第1页 / 共32页
GBA金手指代码教程.docx_第2页
第2页 / 共32页
GBA金手指代码教程.docx_第3页
第3页 / 共32页
GBA金手指代码教程.docx_第4页
第4页 / 共32页
GBA金手指代码教程.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

GBA金手指代码教程.docx

《GBA金手指代码教程.docx》由会员分享,可在线阅读,更多相关《GBA金手指代码教程.docx(32页珍藏版)》请在冰豆网上搜索。

GBA金手指代码教程.docx

GBA金手指代码教程

初心者教程

準備工作

VBA模擬器肯定是要的,筆者採用的是1.7-beta4英文版。

另外函數型計算器也要有一個,用來換算十進制、十六進制和二進制,當然也可以用Windows自帶的計算器代替。

在打開Rom前,先熟悉一下VBA的金手指菜單,見下圖。

Searchforcheats

搜索代碼

Cheatlist

代碼列表

Automaticsave/loadcheats

自動保存/加載代碼列表文件(不推薦使用)

Disablecheats

啓用金手指功能(這是個作者失誤的地方,字面意思是禁用金手指功能,但實際效果相反。

打鈎就是啓用金手指。

)-本文原载于A9VG游戏社区

Loadcheatlist

加載代碼列表文件

Savecheatlist

保存代碼列表文件

金手指列表最多可以保存100行代碼,且可以另存爲列表文件。

(擴展名clt,佔7.82K)

筆者建議保存列表文件前把列表中的所有代碼設置成禁用狀態,(設置方法後文會介紹到)這樣以後打開列表文件時就可以避免自動啓用某些自己暫時不想啓用的代碼。

如果啓用自動保存/加載代碼列表文件,那打開Rom時會自動加載與Rom同名的clt文件,關閉Rom時會自動保存此文件。

還有模擬器的卽時存檔功能也可以把代碼列表保存在卽時存檔文件中,包括哪些代碼啓用哪些禁用都會完整保留,可以善加利用此點。

另外筆者習慣把Searchforcheats和Cheatlist兩個功能加上快捷鍵,增加方法見下。

打開上圖的Customize,出現下圖的對話框。

先選中左邊的CheatsList,再把鼠標移到標紅圈的框内。

按住Alt鍵不放再按下E鍵,框中會出現Alt+E的字樣。

點綠圈中的Assign添加Alt+E的快捷鍵。

CheatsSearch的設置方法一樣,筆者設置成Alt+A。

效果見下圖。

之所以設置這兩個快捷鍵是因爲SFC模擬器Snes9X的金手指快捷鍵也是這兩個,當然各位可以按照自己的喜好來設置。

修改始動

以下以美版《FinalFantasyⅠ&Ⅱ》中的一代爲例,作最簡單的修改介紹。

開始遊戲。

初始資金是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

B1BEA190F347

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(雙字節修改)

轉換成CB格式後就是

820028385533

4XXXXXXXYYYY

aaaannnnzzzz

表示從地址XXXXXXX開始,連續作nnnn行修改,每行地址間隔zzzz字節,每行修改値遞增aaaa,第一行地址修改的初始値爲YYYY。

這個就是俗稱的壓縮碼,有了它短短的兩行碼就可以替代原本的數十行甚至數百行,使得代碼列表中那100行碼可以修改超過400個字節的上限。

舉例:

0202ab960201

0202ab980403

0202ab9a0605

0202ab9c0807

轉換成CB格式後就是

4202ab960201

020200040002

因爲一共4行,所以nnnn取4h;每行地址間隔2h,所以zzzz取2h;每個修改値遞增202h,所以aaaa取0202h。

再擧一例:

03002320ff

03002321ff

03002322ff

03002323ff

03002324ff

03002325ff

03002326ff

轉換成CB格式後就是

43002320FFFF

000000060001

先將第一行和第二行的修改値合併成一行,所以YYYY取FFFFh;一共有7行,由於開頭兩行合併了,所以nnnn取6h;地址間隔1h,所以zzzz取0001h;由於修改値全是一樣的,所以aaaa取0000h。

那麼頂樓那個《Castlvania》的全圖鑒開啓碼就可以轉成如下格式:

420133A0FFFF

000000070002

420133B0FFFF

0000000C0001

420133C0FFFF

000000070002

原本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

轉成AR格式後就是

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

轉成AR格式後就是

0223FFFE000003E7

再擧一例:

0203fffe03e7

0300000003e7

0300000203e7

0300000403e7

0300000603e7

轉成AR格式後就是

0223FFFE000403E7

一共有5行,所以nnnn取5-1=4h;YYYY取03E7h。

04XXXXXXYYYYYYYY

表示四字節修改並鎖定修改値。

舉例:

03002ffc05f5e0ff

轉成AR格式後就是

04302FFC05F5E0FF

0000000080XXXXXX

000000YYaannzzzz

表示從地址XXXXXX開始,連續作nn行的單字節修改,每行地址間隔zzzz字節,每行修改値遞增aa,第一行地址修改的初始値爲YY。

這就是筆者之前說的作單字節修改,且地址是連續間隔性的那種壓縮碼,也是GBA所有金手指中唯一可以作此修改的命令。

舉例:

02012a0702

02012a0a03

02012a0d04

02012a1005

02012a1306

轉成AR格式後就是

0000000080212A07

0000000201050003

一共有5行,所以nn取5h;每行地址間隔3h,所以zzzz取0003h;每個修改値遞增1h,所以aa取01h。

0000000082XXXXXX

0000YYYYaannzzzz

表示從地址XXXXXX開始,連續作nn行的雙字節修改,每行地址間隔zzzz乘以2字節,每行修改値遞增aa,第一行地址修改的初始値爲YYYY。

舉例:

02003a001003

02003a041005

02003a081007

02003a0c1009

轉成AR格式後就是

0000000082203A00

0000100302040002

一共有4行,所以nn取4h;每行地址間隔4h,所以zzzz取4÷2=2h;每個修改値遞增2h,所以aa取02h。

0000000084XXXXXX

YYYYYYYYaannzzzz

表示從地址

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1