admin 管理员组

文章数量: 887030


2024年1月24日发(作者:java equals方法)

初心者教程

準備工作

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

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

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

Search for

cheats

Cheat list

Automatic

save/load cheats

搜索代碼

代碼列表

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

啓用金手指功能(這是個作者失誤的地方,字面意思是禁用金手指功能,但實際效果相反。打鈎就是啓用金手指。) - 本文Disable cheats

原载于A9VG游戏社区

Load cheat list

Save cheat list

加載代碼列表文件

保存代碼列表文件

金手指列表最多可以保存100行代碼,且可以另存爲列表文件。(擴展名clt,佔7.82K)

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

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

還有模擬器的卽時存檔功能也可以把代碼列表保存在卽時存檔文件中,包括哪些代碼啓用哪

些禁用都會完整保留,可以善加利用此點。

另外筆者習慣把Search for cheats和Cheat list兩個功能加上快捷鍵,增加方法見下。

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

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

按住Alt鍵不放再按下E鍵,框中會出現Alt+E的字樣。點綠圈中的Assign添加Alt+E的快捷鍵。

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

效果見下圖。

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

修改始動

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

開始遊戲。初始資金是500 Gil,如下圖。

按Alt+A,打開搜索代碼對話框,如下圖。

Search type下選擇Specific Value(搜索指定値)

Data size決定搜索的字節數,8 bits代表單字節,16 bits代表雙字節,32 bits代表四字節。此時應選擇16 bits。

Compare type一直選擇Equal(相等)就行了

右邊的Signed代表帶正/負數的十進制,Unsigned代表不帶負數的十進制,Hexadecimal代表十六進制。這裡爲了保持正統,一律用十六進制。

接著在Enter value中輸入500 Gil的十六進制1F4h(h代表十六進制的符號,實際輸入時無需輸入此字母),點Start按鈕,再點Search按鈕,此時效果見下圖。

此時出現了一大堆地址,代表還未搜出唯一値。

那麼先繼續遊戲,去設法讓此數値發生變化。

在購入一把武器後,數値變成了492,見下圖。

再按Alt+A,接著在Enter value中輸入492的十六進制1ECh並點Search按鈕,結果見下。

此時找到了唯一的地址02002ab4,這就是金錢的地址。(如果想重新搜索其它項目的地址必須再點Start按鈕然後重新打數字搜索)

接著用鼠標點這個地址,再點下面的Add cheat按鈕添加代碼,出現下圖的對話框。

這時可以在Value中輸入自己想修改的數値的十六進制形式;在Description中輸入代碼的註解,可以幫助記住此碼的作用;點OK按鈕就行了。

但注意圖中的紅圈部分,16-bit前有個點,表示此時最多可修改兩個字節,卽可以修改0000h

至FFFFh。

如果想增加修改範圍可以先點Cancel按鈕取消,回到之前的搜索對話框,然後選中左邊的32 bits,見下圖的紅圈。

此時再點Add cheat按鈕就會見到下圖的樣子,那個灰點移到了32-bit處,此時可修改的範圍擴大至00000000h至FFFFFFFFh。

輸入F423Fh後效果點OK按鈕關閉此對話框,再點搜索對話框的那個OK按鈕。這是再看看修改後的效果,見下圖。

資金變999999 Gil了且金手指不關閉的話這個數値是鎖定不變的。

此時按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按鈕就行了,具體效果見下圖。

還有那個Remove All按鈕是把列表中所有代碼清空,且清空前無提示,使用前請三思。

中級教程

之前的是最簡單的修改,算是熱身吧,現在教些有點難度的了。

這次的修改例子是美版《Castlevania Aria of Sorrow》的怪物圖鑒全部開啓。

涉及到圖鑒之類的修改通常要用到二進制和十六進制的互相換算,因爲此時修改單位通常精確到最高的比特級。

還是照舊先打開Rom,然後New Game。此時圖鑒空空如也,見下圖。

接著去闖城。在遊戲中可以打死的第一種怪物是Zombie,在圖鑒中排第二個位置,見下圖。

旣然佔第二個位置,那麼在二進制中圖鑒地址的第一個字節就是00000010b(b代表二進制符號,實際操作時無需輸入此字母),換算成十六進制就是02h。

這裡我解釋解釋一下,1個字節可以拆分爲8個比特,從右向左是低位到高位。圖鑒中第幾個怪物圖鑒開啓了,那麼那一位比特就被置1,否則就是0。現在第二個位置圖鑒開啓了,那麼從右向左數第二位就被置1,所以第一個字節的二進制形式此時就是00000010b。

現在就可以開始搜索了,把搜索範圍擴大成32 bits,類型選十六進制,然後輸入02開始搜索。

此時已找出了部分地址,圖鑒的第一個地址就在其中。

接著繼續遊戲,第二種能打死的怪物是Bat,見下圖。

由於Bat在圖鑒中佔第一個位置,那麼最低位也被置1了,所以此時第一個地址的二進制應該是00000011b,卽03h。

接著在搜索對話框中輸入03再搜索,此時應該衹剩下兩個地址了:02010364和020133a0,後面那個就是正確的地址。

旣然地址找到,當然要把這些地址全部置1了。由於遊戲一共有112種怪物,而每個字節最多可以將8比特置1,所以一共要修改112÷8=14個字節。

那麼從020133a0開始連續把14個地址修改成FFh吧(因爲FFh的二進制就是11111111b),卽輸入以下代碼:

020133a0 ffffffff (四字節修改)

020133a4 ffffffff (四字節修改)

020133a8 ffffffff (四字節修改)

020133ac ffff (雙字節修改)

這樣就能將全部怪物名稱全改出來了。

但是光改出怪物名稱還不夠,每種怪物身上掉落的道具名稱還未改出啊,見下圖。

這時可不妨大膽地再往後多修改幾個地址。

當改到020133b0時第一格道具名稱也改出來了,表示此地址是第一格道具名稱的起始地址。

接著一直修改到020103bc時所有怪物的第一格道具名稱也全改出來了,代碼如下:

020133b0 ffffffff (四字節修改)

020133b4 ffffffff (四字節修改)

020133b8 ffffffff (四字節修改)

020133bc ff (單字節修改)

同理,所有怪物的第二格道具地址是從020133c0開始,具體代碼如下:

020133c0 ffffffff (四字節修改)

020133c4 ffffffff (四字節修改)

020133c8 ffffffff (四字節修改)

020133cc ffff (雙字節修改)

關於搜索前如何確定Data Size,這裡分享一下筆者的經驗:

搜索金錢和經驗値等數値較大的單位時大可以選擇最大的32 bits來搜索;

搜索HP、MP和人物能力時可以選擇16 bits;

搜索道具種類和個數時建議選最小的8 bits。

總之,Data Size選得越大搜到的結果越少,當然可以更快地找到想要找的地址,但往往會把眞正的地址搜漏了,導致找到的地址全是錯的或乾脆一個地址都沒找到;

而Data Size選得越小搜到的結果越多,眞正的地址不容易被遺漏,但需要反復多搜幾遍將搜到的地址數不斷減少才能找出眞正的地址。

當然也可以利用模擬器的卽時存檔功能,用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行代碼上限的難題,但這麼做始終不方便。

那麼接下來筆者將介紹其它幾種金手指格式。

Game Shark & Code Breaker

這兩種金手指是北美的兩家金手指廠商生産出來的正牌金手指。

很慶幸VBA可以兼容它們的格式,且在代碼列表中不同格式的碼可以共存並互不影響。

筆者先貼兩段這兩種格式的碼給大家看看。

Game Shark

[M] Must Be On

90228AE1216C

D61188E40A0B

585E6716AEAD

Enter Debug Menu [Sel+Up]

78583111C11C

B1BEA190F347

17CF08B36EA5

Exit Debug Menu [Sel+Dwn]

7C59241BC739

B1BEA190F347

078F8AB77AAB

Code Breaker

Enable Code (Must Be On)

0000D1E9 000A

100D8F94 0007

Infinite HP

8201509E 03E7

Infinite MP

820150A0 03E7

可以看出Game Shark(以下簡稱GS)格式根本看不出地址和修改値在哪裡,這種形式的碼就被稱爲暗號化形式;

而Code Breaker(以下簡稱CB)格式根VBA格式很像,一下子就能看出地址和修改値在哪,這種就被稱爲復號化形式。

其實GS碼包含的命令種類和CB碼是完全一樣的,不過在VBA中要使用GS碼的話非得將必須碼置頂([M] Must Be On就是必須碼),當然要是必須碼上面有其它格式的碼存在也是允許的。

不過筆者也不推薦使用GS碼,首先那暗號化的形式根本讓人看不出甚麼地址將修改成甚麼數値,最麻煩的就是那必須碼。

由於GS官網公佈的幾乎都是美、歐版遊戲,日版遊戲的必須碼很難找到,使得GS碼的使用率大打折扣,所以筆者推薦大家使用CB碼。

因爲CB碼在VBA中沒有必須碼也能使用,而且它是復號化形式,除了第一個數字代碼不同的命令外,後面的地址和VBA格式完全一樣。

接下去筆者將講解CB碼的各種命令。

3XXXXXXX 00YY

表示單字節修改並鎖定修改値,YY前面的00卽使改成其它數字也不作處理。

舉例:

02002839 33 (單字節修改)

轉換成CB格式後就是

32002839 0033

8XXXXXXX YYYY

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

舉例:

02002838 5533 (雙字節修改)

轉換成CB格式後就是

82002838 5533

4XXXXXXX YYYY

aaaannnn zzzz

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

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

舉例:

0202ab96 0201

0202ab98 0403

0202ab9a 0605

0202ab9c 0807

轉換成CB格式後就是

4202ab96 0201

02020004 0002

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

再擧一例:

03002320 ff

03002321 ff

03002322 ff

03002323 ff

03002324 ff

03002325 ff

03002326 ff

轉換成CB格式後就是

43002320 FFFF

00000006 0001

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

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

420133A0 FFFF

00000007 0002

420133B0 FFFF

0000000C 0001

420133C0 FFFF

00000007 0002

原本12行的VBA碼就這樣被縮短了一半了,而且效果完全相同。

另外要注意的是CB的壓縮碼衹能作雙字節修改。

7XXXXXXX YYYY

表示當XXXXXXX上的數値等於YYYY時,執行下一個命令。

這個就是俗稱的條件碼,要配合其它的碼來使用才能發揮作用。

比如

72012002 01FE

32012004 0001

表示當02012002上的數値爲FEh且02012003上的數値爲01h時,把02012004上的數値修改成01h,否則跳過此命令繼續執行下條命令。

注意我這裡說的是命令不是行,因爲壓縮碼雖然佔兩行,但也衹算一個命令,所以壓縮碼上面也衹需加一行條件碼卽可。

這裡會有人問到:條件碼有甚麼主要作用?

其實條件碼主要是用來配合GBA的按鍵來使用的,就是當按下GBA的哪個單鍵或組合鍵時啓動相應的指令。

那麼如何才能找到每個遊戲中代表按鍵的地址呢?先看看下面每個鍵位代表的數値:

0001 A鍵

0002 B鍵

0004 選擇鍵

0008 開始鍵

0010 右鍵

0020 左鍵

0040 上鍵

0080 下鍵

0200 L鍵

0100 R鍵

有了這個鍵位代碼表就可以很輕易地找出每個遊戲的按鍵地址了。

卽按住某個鍵不放開始搜索它的地址,Data Size選16 bits,然後換個按鍵繼續找,很快就能找到該地址了。

比如美版的《Final Fantasy Ⅰ & Ⅱ》中一代的按鍵地址就是02001df0。

舉例:

72001DF0 0102

82002AB4 270F

表示當按下R+B鍵時金錢就變成9999 Gil了。

AXXXXXXX YYYY

表示當XXXXXXX上的數値不等於YYYY時,執行下一個命令。

這個和7開頭的條件碼作用正好相反,但其它細節都一樣,筆者就不多介紹了。

EXXXXXXX YYYY

表示在地址XXXXXXX上不停地增加或減少一定的數値,增減量由YYYY決定。

這個就是俗稱的加減碼,可以對某個地址增加或減少自己定義的數値。

當YYYY等於0001h~7FFFh時表示增加;當YYYY等於8000h~FFFFh時表示減少。

還是以美版《Final Fantasy Ⅰ & Ⅱ》中的一代舉例:

A2002AB4 FFFF

E2002AB4 0001

表示當金錢不是65535 Gil時就不停地增加直到等於65535 Gil爲止。

那麼如何添加GS碼和CB碼呢?見下圖。

點下面那個Gameshark按鈕就是添加GS碼,點CodeBreaker按鈕就是添加CB碼。

點擊後分別會出現下面兩個對話框。

Description那欄可以添加代碼註解,Code那欄添加代碼。

注意GS碼必須要把必須碼置頂添加,那後面的碼才會生效;CB碼則不用添加必須碼。

Game Shark碼轉Code Breaker碼

雖然CB碼很好用,但CB官網那裡已經好久都沒更新新遊戲的碼了;相反GS官網卻更新得很勤快。

那麼如何才能把GS碼轉成CB碼呢?答案是通過轉碼器。

此轉碼器的名字叫CBAcrypt(下載點見2樓),界面如下圖。

把GS碼複製進左邊的框中且必須碼一定要置頂。

由於GS碼是沒有空格的,所以要在每行的第8個字節後人工添加一個空格,然後再點Decrypt按鈕,右邊的框中就會出現轉換後的CB碼。

具體效果就像上圖那樣。

之前筆者說過CB的壓縮碼衹能作雙字節的連續修改,但要是需要作單字節的連續修改,並且地址不連續而是那種間隔性的時候怎麼辦呢?

筆者在此推薦給大家另一款功能強勁的金手指。

Action Replay

這是與GS和CB齊名的另一種金手指(以下簡稱AR),在VBA中使用時同樣無需必須碼。

廢話少說,先貼一段它的碼給大家看看。

Have All Items

b4315888

d5eab772

c0ae59e9

7a0799aa

ae361d0e

e67fb25d

569fdb7a

e807ff44

b1e5d7a1

13cedbc1

49f752a0

727c7b65

這就是從AR官網原封不動搬來的一段碼,作用是將美版《Final Fantasy Ⅰ & Ⅱ》中一代的全部消費道具改出。

可以看出它也是暗號化形式的,實際在VBA中輸入時也是輸入這種暗號化形式。

那麼如何將它轉成復號化形式看它的作用呢?當然也是通過轉碼器,名字叫AR Crypt。(下載點見2樓)

轉換方法稍後介紹,先介紹一下它的復號化形式中的各種命令。

00XXXXXX nnnnnnYY

表示從地址XXXXXX開始,連續作nnnnnn+1行的單字節修改,修改値全都是YY。

舉例:

0200ac35 03

轉成AR格式後就是

0020AC35 00000003

再擧一例:

0200ac35 07

0200ac36 07

0200ac37 07

0200ac38 07

0200ac39 07

轉成AR格式後就是

0020AC35 00000407

一共有5行,所以nnnnnn取5-1=4h;YY取07h。

這裡要順帶解説一下AR復號化後的地址:

開頭兩個數字是該行的命令符,後面的就是地址了。VBA格式地址轉AR格式地址的轉換表如下:

VBA格式

020xxxxx

0300xxxx

PS:YY代表AR的命令符。

AR格式

YY2XXXXX

YY30XXXX

02XXXXXX nnnnYYYY

表示從地址XXXXXX開始,連續作nnnn+1行的雙字節修改,修改値全都是YYYY。

舉例:

0203fffe 03e7

轉成AR格式後就是

0223FFFE 000003E7

再擧一例:

0203fffe 03e7

03000000 03e7

03000002 03e7

03000004 03e7

03000006 03e7

轉成AR格式後就是

0223FFFE 000403E7

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

04XXXXXX YYYYYYYY

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

舉例:

03002ffc 05f5e0ff

轉成AR格式後就是

04302FFC 05F5E0FF

00000000 80XXXXXX

000000YY aannzzzz

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

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

舉例:

02012a07 02

02012a0a 03

02012a0d 04

02012a10 05

02012a13 06

轉成AR格式後就是

00000000 80212A07

00000002 01050003

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

00000000 82XXXXXX

0000YYYY aannzzzz

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

舉例:

02003a00 1003

02003a04 1005

02003a08 1007

02003a0c 1009

轉成AR格式後就是

00000000 82203A00

00001003 02040002

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

00000000 84XXXXXX

YYYYYYYY aannzzzz

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

舉例:

03001084 03e70002

03001088 03e70004

0300108c 03e70006

03001090 03e70008

轉成AR格式後就是

00000000 84301084

03E70002 02040001

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

08XXXXXX 000000YY

表示當XXXXXX上的數値等於YY時,執行下一行。

這就是AR格式的條件碼之一了,而且是單字節作比較的,GS和CB那種的衹能雙字節作比較。

舉例:

082002AC 00000063

022002AE 000203E7

表示當020002ac(VBA格式)上的數値爲63h時從020002ae開始連續作3行雙字節修改,修改値爲03e7h,否則跳過此行繼續執行下行命令。

注意我這裡說的是行不是命令,如果要配合佔兩行的壓縮碼就不能使用此命令。

10XXXXXX 000000YY

表示當XXXXXX上的數値不等於YY時,執行下一行。

這個和08開頭的條件碼作用正好相反,其它細節都一樣。

0AXXXXXX 0000YYYY

表示當XXXXXX上的數値等於YYYY時,執行下一行。

這個和08開頭的條件碼作用差不多,衹不過是作雙字節比較,其它細節都一樣。

12XXXXXX 0000YYYY

表示當XXXXXX上的數値不等於YYYY時,執行下一行。

這個和0A開頭的條件碼作用正好相反,其它細節都一樣。

0CXXXXXX YYYYYYYY

表示當XXXXXX上的數値等於YYYYYYYY時,執行下一行。

這個和08開頭的條件碼作用差不多,衹不過是作四字節比較,其它細節都一樣。

14XXXXXX YYYYYYYY

表示當XXXXXX上的數値不等於YYYYYYYY時,執行下一行。

這個和0C開頭的條件碼作用正好相反,其它細節都一樣。

48XXXXXX 000000YY

表示當XXXXXX上的數値等於YY時,執行下兩行,否則跳過下兩行。

這個就能配合佔兩行的壓縮碼來使用了,比如:

48000203 00000001

00000000 84200100

03E703E7 000A0001

作用就不用筆者多解釋了吧。

50XXXXXX 000000YY

表示當XXXXXX上的數値不等於YY時,執行下兩行,否則跳過下兩行。

這個和48開頭的條件碼作用正好相反,其它細節都一樣。

4AXXXXXX 0000YYYY

表示當XXXXXX上的數値等於YYYY時,執行下兩行,否則跳過下兩行。

這個和48開頭的條件碼作用差不多,衹不過是作雙字節比較,其它細節都一樣。

52XXXXXX 0000YYYY

表示當XXXXXX上的數値不等於YYYY時,執行下兩行,否則跳過下兩行。

這個和4A開頭的條件碼作用正好相反,其它細節都一樣。

4CXXXXXX YYYYYYYY

表示當XXXXXX上的數値等於YYYYYYYY時,執行下兩行,否則跳過下兩行。

這個和48開頭的條件碼作用差不多,衹不過是作四字節比較,其它細節都一樣。

54XXXXXX YYYYYYYY

表示當XXXXXX上的數値不等於YYYYYYYY時,執行下兩行,否則跳過下兩行。

這個和4C開頭的條件碼作用正好相反,其它細節都一樣。

以上就是AR碼的所有命令,可惜沒有加減碼,所以要配合CB碼互補使用才是王道。

添加AR碼的方法和添加GS碼的是完全一樣的,都是按那個Gameshark按鈕,添加的是暗號化形式。

AR碼的暗號化和復號化形式的互轉

如上圖,左邊的框中輸入要轉換的碼。

如果是暗號化轉復號化的話紅圈中選AR V3(現在AR官網公佈的都是V3格式了),綠圈選RAW,最後點藍箭頭所指的Proceed按鈕,這樣右邊就會出現復號化形式了。

如果是復號化轉暗號化的話紅圈中選RAW,綠圈選AR V3,最後點Proceed按鈕,這樣右邊就會出現暗號化形式了。

至於紫圈中選項的作用是將右框中的碼重新排版:

選Auto是不排版,樣式和左框一樣;

選XXXXXXXXYYYYYYYY(中間無空格)是將右框強行排版成XXXXXXXXYYYYYYYY樣式;

選XXXXXXXX YYYYYYYY(中間有空格)是將右框強行排版成XXXXXXXX YYYYYYYY樣式;

選2 Lines樣式是將右框的碼一行強行拆成兩行,也就是AR官網公佈的原始樣式。

無論哪種樣式,最後添加進VBA時都是自動變成XXXXXXXXYYYYYYYY(中間無空格)這種,當然添加的必須是暗號化形式。

如上圖,美版《Final Fantasy Ⅰ & Ⅱ》一代的全消費道具的碼轉成復號化形式後就是這樣的。

當然這個碼也可以用CB的壓縮碼來代替,具體如下:

420027EC 0101

0100002B 0004

420027EE 0063

0000002B 0004

作用是完全一樣的。當然筆者建議這個碼用CB的好,因爲可以少輸兩行。

區分不同格式

之前筆者說過,VBA可以在同一個代碼列表中讓不同格式的碼共存且互不影響,那麼如何區分這些格式呢?

如上圖,這就是VBA、GS、CB和AR四種格式共存後的效果。可以從以下的細節區分它們:

VBA格式地址和修改値中間有冒號間隔;

AR格式中間無任何間隔且固定每行16個字;

GS和CB最像,但GS因爲是暗號化形式,所以看上去完全無規律,但CB地址欄卻和VBA很

像。

當然實在無法區分的可以在輸入代碼時加一下註解。

Emu Cheat

這個軟件很多人都熟悉吧,國内的許多修改高手都喜歡公佈這種格式的碼,但這也僅是國内的情況而已,老外們公佈的都是GS、CB和AR格式。

作爲一個傻瓜型的軟件,很多金手指初學者都喜歡使用它,畢竟從網上找EC的碼很容易,另存爲CHT文件後再在EC中刷新一下列表就行了。

但EC對GBA修改的功能也實在太簡單了——衹能作單字節修改。

而且每次啓動VBA前先要啓動EC,選中VBA的圖標,再選遊戲,最後才能選碼激活,中途要切換修改效果時還要先切換到EC,改了激活碼後再進遊戲,踫到全屏模式下玩VBA簡直麻煩死了。

再看看VBA自帶的金手指:打開Rom後加載與Rom同名的clt文件,之後按自定義的快捷鍵打開代碼列表或代碼搜索框而無須切換到其它軟件窗口,全屏模式下更顯方便;如果自己定義了某些按鍵的條件碼的話連代碼列表都不用開了,直接按相應的按鍵就能啓動不同效果的代碼了。

這樣一比較,EC在GBA上的修改優勢就蕩然無存了。

但畢竟國内的EC碼很好找,那麼接下來筆者就講解一下如何將EC碼轉成VBA用的碼。

首先講解EC格式,舉例如下:

ON=2D7AC,F,27;43D38,FF

ON=後面的2D7AC就是起始地址,後面的逗號和逗號後面的數値就是修改値。

如果想連續修改一串數値那麼就連續打逗號加數値,如果數値開頭是0可以不打;

之後想跳到下一個起始地址的話用分號間隔,之後又是起始地址、逗號和修改値„„

注意EC格式的修改値從左向右是低位到高位,而VBA、GS、CB和AR格式則是高位到低位。

另外EC格式的地址要轉成VBA格式得作相應的偏移,具體偏移方法見下:

EC格式

XXXX

1XXXX

VBA格式

0200XXXX

0201XXXX

2XXXX

3XXXX

4XXXX

0202XXXX

0203XXXX

0300XXXX

那麼上面的例子轉成VBA格式後就是

0202d7ac 270f

03003d38 ff

再擧一例:

ON=31BE,F,27,F,27,F,27,F,27,F,27,F,27,F,27,F,27,F,27,F,27

首先這一看就知道是可以作雙字節的壓縮碼,那麼首先就該想到CB和AR的壓縮碼。

接下去就是數有多少個“,F,27”了,這裡筆者推薦大家利用Word的替換功能來數,方法如下:

先把這串字複製進Word,然後按Ctrl+Home將光標移到最頂端;

接著按Ctrl+H彈出替換對話框,在查找内容中輸入“,F,27”(引號不用輸入),如下圖;

再點全部替換按鈕,可以看出共有10個“,F,27”,如下圖。

那麼結果顯而易見了,轉換後的CB碼如下:

420031BE 270F

0000000A 0002

或者AR碼如下:

022031BE 0009270F

當然AR碼要暗號化後再輸入。

最後再擧一例:

ON=2D8BE,9;2D8C0,9;2D8C2,9;2D8C4,9;2D8C6,9;2D8C8,9;2D8CA,9;2D8CC,9;2D8CE,9;2D8D0,9;2D8D2,9;2D8D4,9;2D8D6,9;2D8D8,9;2D8DA,9;2D8DC,9

這個一看就知道要轉成AR獨有的單字節壓縮碼,具體方法如下:

先用Word查有多少個分號,結果是15個,但注意最後那個修改値後面沒有分號了,所以還要再加1個,也就是16個地址,當然實際輸入時要打十六進制的10h。

轉換結果如下:

00000000 8022D8BE

00000009 00100002

最後再用轉碼器轉成暗號化後輸入VBA就行了。


本文标签: 修改 地址 代碼 格式