最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

究極綠寶石5.3——科普向,什么是金手指(十)

2022-02-02 12:00 作者:圍巾胖頭魚  | 我要投稿

說在前面:

????本期是這個(gè)系列專欄正文的最后一期(后面可能會(huì)有作為內(nèi)容補(bǔ)充的專欄),以V3格式碼的一個(gè)高級(jí)用法結(jié)束對(duì)金手指的介紹。

????上期專欄的末尾提到:原始格式的金手指只能做到修改變量,而V3格式的金手指可以做到寫程序。今天要介紹的金手指——隨身攜帶的精靈中心,就是用V3格式碼實(shí)現(xiàn)的一個(gè)小程序。

No$GBA Debugger

????首先要給大家介紹一個(gè)非常強(qiáng)大的工具:No$GBA Debugger,官方網(wǎng)站在這里:https://problemkaputt.github.io/gba.htm

????這個(gè)工具的中文名稱叫做“沒錢GBA調(diào)試器”。調(diào)試是計(jì)算機(jī)領(lǐng)域的術(shù)語,指的是在程序運(yùn)行的過程中通過查看變量、修改變量等方式,對(duì)程序中可能出現(xiàn)的錯(cuò)誤進(jìn)行修正。

????如果只是用來探索金手指的話,我們當(dāng)然不需要在游戲運(yùn)行的時(shí)候?qū)Τ绦蜻M(jìn)行什么修正,但是No$GBA給我們提供的“運(yùn)行時(shí)查看變量”的功能是十分強(qiáng)大的,對(duì)于“隨身攜帶的精靈中心”這個(gè)金手指的發(fā)現(xiàn)也是至關(guān)重要的。

????首先來看一下它的界面:

No$GBA界面

????這個(gè)界面里顯示了很多內(nèi)容,我們能用到的是左側(cè)上下兩個(gè)信息欄。左上的信息欄和VBA模擬器的“變量地址查看器”很像,也是左側(cè)的一列排列出來變量地址,右側(cè)列舉出變量取值,只不過在No$GBA中,它的當(dāng)前地址基本上都是08開頭的,回憶一下第五期專欄的內(nèi)容,08開頭的地址含義是游戲程序代碼。No$GBA作為調(diào)試器,當(dāng)然是在程序運(yùn)行的時(shí)候提供查看變量的功能,所以它左上信息欄中的變量取值一般來說都是程序代碼。

????左下信息欄目前顯示的也是“變量地址查看器”,只不過右側(cè)是以單字節(jié)的形式展示變量取值,功能和左上信息欄稍微有些重復(fù)。我們之后添加斷點(diǎn)的時(shí)候,這個(gè)左下信息欄會(huì)變成斷點(diǎn)查看器,斷點(diǎn)的概念會(huì)在下面給出。

????現(xiàn)在先通過菜單中的“File-Cartridge menu (FileName)”,或者在win10系統(tǒng)上按下F12按鍵,來加載游戲的GBA文件。加載時(shí)可能會(huì)提示有錯(cuò),不過沒關(guān)系,按OK鍵跳過即可。加載成功后,會(huì)出現(xiàn)一個(gè)新的窗口,這個(gè)窗口就是平時(shí)玩游戲的模擬器窗口:

No$GBA游戲界面,左側(cè)是新出現(xiàn)的模擬器窗口

????左側(cè)的模擬器是可以正常玩游戲的,在玩的過程中,如果切換回右邊的調(diào)試器界面,游戲就會(huì)暫停,左上信息欄會(huì)停止在當(dāng)前正在運(yùn)行的代碼處,這是它的第一個(gè)功能。這個(gè)功能在本期專欄用不上,因?yàn)槲覀儾恍枰来a是什么內(nèi)容。

????工具先暫時(shí)介紹到這里,為了實(shí)現(xiàn)“隨身攜帶的精靈中心”金手指,我們還需要介紹幾個(gè)概念。

按鍵觸發(fā)事件

????想要實(shí)現(xiàn)“隨身攜帶的精靈中心”這個(gè)功能,我們希望在游戲中達(dá)到這樣的效果:通過按下某個(gè)組合鍵,進(jìn)入到和精靈中心護(hù)士的對(duì)話,完成隊(duì)伍中全部精靈的回復(fù)后,返回到正常的游戲流程。因?yàn)槭请S時(shí)隨地可以實(shí)現(xiàn)精靈回復(fù),所以才將這個(gè)金手指稱為“隨身攜帶的精靈中心”。

????這條金手指和之前用原始格式代碼修改變量取值的金手指有很大的不同,它不能通過簡(jiǎn)單地修改變量來實(shí)現(xiàn),仔細(xì)看一下功能的描述就會(huì)知道,我們?cè)陂_啟這條金手指之后,還需要在游戲中按下某些特定的按鍵才能實(shí)現(xiàn)功能,而不像之前的金手指開啟之后馬上就能看到效果。

????這種按鍵實(shí)現(xiàn)的方式也是非常方便的,如果是開啟金手指之后馬上就進(jìn)入和精靈中心護(hù)士的對(duì)話,反而可能出問題,比如游戲一直卡在和護(hù)士的第一句對(duì)話上,無法進(jìn)入接下來的精靈回復(fù)階段等等。

????因?yàn)檫@條金手指的功能需要按下特定按鍵才能觸發(fā),因此它也被稱作按鍵觸發(fā)事件。

????其實(shí)正常游戲中就有按鍵觸發(fā)事件,例如我們按“上”鍵的時(shí)候主角就會(huì)向上走,按“Start”鍵的時(shí)候就會(huì)打開菜單。我們想要把“按鍵”這個(gè)關(guān)鍵因素結(jié)合到金手指代碼中來,首先需要找到按鍵對(duì)應(yīng)的變量地址在哪里。

????在第五期專欄中,作者給出了一個(gè)簡(jiǎn)單版的GBA文件內(nèi)存視圖,里面只畫出了2個(gè)區(qū)域:游戲存檔區(qū)和游戲本體區(qū),其他的灰色區(qū)域并沒有做過多的解釋。其實(shí)完整的GBA文件內(nèi)存視圖可以在No$GBA這個(gè)程序的“幫助”界面找到,打開“Help-GBA Specs”

GBA詳情
GBA幫助界面

????上面給出的這個(gè)幫助界面是全英文內(nèi)容,里面對(duì)GBA文件的組織結(jié)構(gòu)進(jìn)行了詳細(xì)介紹,其中“GBA Memory Map”就是GBA的完整內(nèi)存視圖。本期專欄只介紹從里面提取出的相關(guān)內(nèi)容,也就是“GBA Keypad Input”里有關(guān)鍵盤輸入的部分。下面直接介紹結(jié)論。

????以0400開頭的變量地址描述的是和游戲程序輸入/輸出相關(guān)的變量,電腦的鍵盤或者手機(jī)的按鍵可以看做是游戲程序的輸入,而04000130這個(gè)位置描述的是當(dāng)前鍵盤按鍵的情況,變量長(zhǎng)度為2個(gè)字節(jié)。

????“按鍵情況”這個(gè)變量是不能通過金手指修改的,因?yàn)樗?span id="s0sssss00s" class="color-pink-03">變量地址不是0202或者0203開頭的,我們只能“看”,不能“改”。如果讀者利用“變量地址查看器”去游戲中查看這個(gè)變量,會(huì)發(fā)現(xiàn)它通常情況下的變量取值都是03FF。但是,如果在游戲界面中,我們按住鍵盤上對(duì)應(yīng)到“Select”鍵的那個(gè)按鍵不放手,然后再用鼠標(biāo)去選擇“工具——反匯編”去查看變量,就會(huì)發(fā)現(xiàn)它的變量取值發(fā)生了改變,變成了03FB。用類似的方法,我們可以探索出全部按鍵的映射表:

按鍵映射表

????按鍵映射表的第三行列舉的是變量取值和03FF的按位異或值,“按位異或”這個(gè)操作在第七期專欄中介紹“閃光精靈”的時(shí)候提到過。仔細(xì)觀察一下第三行,我們會(huì)發(fā)現(xiàn)每個(gè)數(shù)值轉(zhuǎn)換為二進(jìn)制后,只有1位是1,其他的位都是0。這么設(shè)計(jì)是什么原因呢?是為了方便表示組合按鍵的變量取值。

????比如說我們想按下“Select+上”這個(gè)組合按鍵,那么它對(duì)應(yīng)的變量取值就是

????(0040 or 0004) xor 03FF = 03BB

????先將兩個(gè)數(shù)進(jìn)行“按位或”操作,然后再和“03FF”進(jìn)行“按位異或”操作?!鞍次换颉保蛘哒f“或”(or)這個(gè)運(yùn)算,不嚴(yán)格來說也是針對(duì)0和1的運(yùn)算,它的含義是:

0 or 0 = 0, 0 or 1 = 1, 1 or 0 = 0, 1 or 1 = 1

????也就是說兩個(gè)運(yùn)算數(shù)中至少有一個(gè)1,結(jié)果就是1,只有運(yùn)算數(shù)都是0的時(shí)候結(jié)果才是0。

????將兩個(gè)數(shù)“按位或”起來,可以直觀上理解為同時(shí)包含兩種情況。在上面那個(gè)例子中,就是“按下Select鍵”和“按下上鍵”兩種情況同時(shí)發(fā)生。

????通過查看04000130這個(gè)位置處的變量,我們就能得知當(dāng)前游戲中什么按鍵被按下了。

對(duì)話程序

????在游戲中,我們會(huì)與各種各樣的人物對(duì)話,一旦觸發(fā)對(duì)話后,后續(xù)的對(duì)話或者選擇都是由游戲程序設(shè)計(jì)好的,因此這種通過人物對(duì)話觸發(fā)的劇情可以被稱作對(duì)話程序:


對(duì)話程序

????主角來到精靈中心,和護(hù)士對(duì)話后會(huì)觸發(fā)精靈回復(fù)的功能,這也是一個(gè)“對(duì)話程序”。這個(gè)“對(duì)話程序”,我們可以看做是一個(gè)變量,它的變量取值控制著當(dāng)前的游戲頁面上顯示出來什么樣的對(duì)話,或者控制著主角觸發(fā)什么樣的劇情或者功能。

????對(duì)于“對(duì)話程序”的變量,GBA幫助界面給出有關(guān)它們的幾個(gè)事實(shí):

  1. “對(duì)話程序”變量的變量地址是以0300開頭的,它的長(zhǎng)度是4個(gè)字節(jié)。由于不是0202或者0203開頭,因此它的變量取值不能任意修改,只能修改成游戲程序中寫好的那些有意義的取值。

  2. 在游戲中沒有觸發(fā)對(duì)話的情況下,對(duì)應(yīng)的變量取值固定是0。觸發(fā)了對(duì)話后,變量取值會(huì)根據(jù)對(duì)話內(nèi)容和劇情發(fā)生變化。

????有了以上幾個(gè)事實(shí),我們可以利用第八期專欄介紹的“模糊查找”功能,找到對(duì)話程序的變量地址:03000e48,長(zhǎng)度是4個(gè)字節(jié)。

組裝第一條金手指

????介紹了“按鍵觸發(fā)事件”和“對(duì)話程序”這兩個(gè)概念后,我們可以嘗試著“組裝”一下“隨身攜帶的精靈中心”這個(gè)金手指了。

????這個(gè)金手指的第一行,我們想要達(dá)到這樣的效果:

????按下某個(gè)組合鍵之后,會(huì)讓下一條金手指執(zhí)行;沒有按下這個(gè)組合鍵的時(shí)候,什么都不做。

????想達(dá)到這樣的效果,先來回答兩個(gè)問題。

????第一個(gè)問題:為什么是按下組合鍵,而不是單個(gè)的某個(gè)按鍵呢?

????因?yàn)閱蝹€(gè)按鍵在游戲中都有它固定的作用,比如A鍵可以觸發(fā)對(duì)話、確認(rèn)選項(xiàng),B鍵可以退出對(duì)話、取消選項(xiàng),Start鍵可以打開菜單,等等。每個(gè)單個(gè)按鍵的功能已經(jīng)確定,如果我們的金手指寫成了“按A鍵觸發(fā)精靈回復(fù)”這種樣子,那就會(huì)出現(xiàn)以下兩種情況之一:要么A鍵只能觸發(fā)精靈回復(fù),之前的作用就消失了,比如按A鍵再也無法與游戲里的人物對(duì)話了;要么A鍵還是之前的功能,這條金手指怎么也用不了。無論是哪種情況都是我們不想遇到的。

????第二個(gè)問題:選擇什么組合鍵呢?

????組合鍵可以是2個(gè)按鍵一起按下,也可以是3個(gè)按鍵一起按下,甚至更多。但是為了操作方便,通常是選擇2個(gè)按鍵一起按。

????那么選哪兩個(gè)按鍵呢?根據(jù)作者的測(cè)試,發(fā)現(xiàn)這兩個(gè)按鍵中有一個(gè)必須是Select鍵,否則組合鍵不會(huì)生效。而且使用Select鍵時(shí),必須解除它登記到的背包中重要物品,如下圖:

重要道具的登記功能

????這里的“登記”功能是讓Select鍵成為一個(gè)使用重要道具的快捷鍵,比如登記了“音速自行車”之后,按Select鍵就能馬上騎上自行車,不再需要到背包中選擇“音速自行車”使用了。但是,為了使用“隨身攜帶的精靈中心”這條金手指,只好犧牲了這個(gè)功能,讓Select鍵發(fā)揮更強(qiáng)大的作用。

????剩下的第二個(gè)按鍵,需要考慮我們使用金手指的場(chǎng)景,在使用場(chǎng)景中,越是不經(jīng)常使用的按鍵,作為組合鍵越合適。我們使用“隨身攜帶的精靈中心”的時(shí)候,通常是主角在戰(zhàn)斗之外,沒有和任何人對(duì)話的情況下,這個(gè)時(shí)候按B鍵是沒有作用的(除了在水下的情況,按B鍵是選擇是否浮出水面);除此之外,L鍵和R鍵使用到的情況也非常少。因此,比較理想的組合是Select+B、Select+L、Select+R這三種組合鍵(組合鍵沒有前后順序,Select+B和B+Select是同樣的組合鍵)。

????解答了這兩個(gè)問題,就可以組裝第一條金手指了。我們以組合鍵Select+B為例。

????Select鍵是0004,B鍵是0002,按照公式,Select+B同時(shí)按下的時(shí)候,04000130這個(gè)變量的取值應(yīng)該是:

????(0004?or 0002) xor 03FF = 03F9

????下一步是要實(shí)現(xiàn)這個(gè)功能:Select+B鍵按下的時(shí)候,執(zhí)行下一條金手指;否則什么都不做。

????這個(gè)功能要求我們?nèi)he Secrets of Professional GameShark(tm) Hacking這個(gè)文檔里去AR V3 Codes Types這個(gè)表格中找對(duì)應(yīng)的代碼類型,這在第九期專欄有詳細(xì)的介紹。我們來看“Type 05”這個(gè)代碼類型:

Type 05類型

????這個(gè)類型的代碼含義是:

????如果位于XXXXXXXX的雙字節(jié)變量等于ZZZZ,那么就執(zhí)行下一條金手指

????Halfword這個(gè)詞是“半字”的意思,其實(shí)就是兩個(gè)字節(jié)。

????我們把對(duì)應(yīng)的地址和取值套進(jìn)去:

????如果位于04000130的雙字節(jié)變量等于03F9,那么就執(zhí)行下一條金手指

????這恰好就是我們想要的效果?,F(xiàn)在來看這個(gè)原始代碼怎么轉(zhuǎn)換到中間代碼。

????根據(jù)“Type 05”類型的“原始代碼轉(zhuǎn)換規(guī)則”——02024EA4 -> 0A224EA4,我們需要把004000130變成0A400130,類比一下即可。

????所以第一條金手指的中間代碼就是:

組裝第二條金手指

????第二條金手指就是滿足組合鍵按下的情況下,我們想要觸發(fā)“精靈中心回復(fù)”這個(gè)功能。它的原理是修改03000e48這個(gè)地址處的變量,讓它切換到和精靈中心護(hù)士的對(duì)話程序中,這樣就相當(dāng)于我們此時(shí)此刻就站在精靈中心的護(hù)士面前,和她進(jìn)行對(duì)話了。

????那我們應(yīng)該把這個(gè)變量改成什么呢?

????先來嘗試一下,VBA模擬器中的“變量地址查看器”是不是可以。讓主角來到精靈中心和護(hù)士對(duì)話:

查看對(duì)話程序的變量取值

????此時(shí)位于03000e48的變量取值是08271338,游戲中是精靈中心的護(hù)士剛剛說完第一句話。這個(gè)取值能不能用呢?很遺憾,不行,有興趣的讀者可以用這個(gè)變量按照接下來的流程走一遍,會(huì)發(fā)現(xiàn)用這個(gè)變量組裝成的金手指沒有預(yù)期效果。

????為什么這個(gè)變量不起作用呢?我們?cè)賮韲L試一下,這一次需要一點(diǎn)手速,在按下A鍵開始和護(hù)士對(duì)話、但護(hù)士還沒來得及說出第一個(gè)字的時(shí)候,打開“變量地址查看器”:

拼手速來查看變量取值

????此時(shí)的變量取值是0827192a,和剛才的不一樣。這說明剛才的那個(gè)變量取值不能對(duì)應(yīng)到這段對(duì)話程序的開始,而是對(duì)應(yīng)到對(duì)話程序的中間某一步,如果我們用了上面那個(gè)取值,運(yùn)行的對(duì)話程序?qū)⑹遣煌暾?,這就是08271338不起作用的原因。

????那么0827192a可以用嗎?也不行。事實(shí)上,這個(gè)變量是多少取決于手速,在按下A鍵之后但護(hù)士說出第一個(gè)字之前,打開“變量地址查看器”的時(shí)機(jī),決定了這個(gè)變量的取值是多少。換句話說,這個(gè)變量取值變化得十分迅速,但我們想要的是剛剛按下A鍵之后它的取值,也就是從0變到不是0的那第一個(gè)取值,這個(gè)取值是無論你手速有多快都找不到的。

????我們?cè)趺茨馨颜?span id="s0sssss00s" class="color-blue-03">變量取值這種事情交給不靠譜的手速呢?更靠譜的辦法,是要利用No$GBA調(diào)試器提供的斷點(diǎn)功能。

????斷點(diǎn)是讓程序運(yùn)行時(shí)強(qiáng)制暫停的一個(gè)標(biāo)記,如果程序因斷點(diǎn)的存在而暫停執(zhí)行,我們就說這個(gè)斷點(diǎn)被觸發(fā)了??梢酝ㄟ^設(shè)置斷點(diǎn)的條件來讓程序在條件滿足的時(shí)候暫停執(zhí)行,這種斷點(diǎn)也被稱作條件斷點(diǎn)。

????我們用No$GBA來玩一局究極綠寶石5,讓主角走到精靈中心的護(hù)士面前,然后回到No$GBA的主界面來設(shè)置斷點(diǎn):

設(shè)置條件斷點(diǎn)

????按Ctrl+B,或者在菜單中選擇“Debug-Define Break/Condition”,會(huì)出現(xiàn)一個(gè)輸入條件斷點(diǎn)的輸入框,在框中輸入:

????將變量地址03000E48用中括號(hào)包含起來,然后在后面加一個(gè)嘆號(hào)(都是英文字符)。這個(gè)條件斷點(diǎn)的含義可以在“幫助”菜單內(nèi)找到,是當(dāng)03000E48這個(gè)地址的變量被程序修改時(shí),觸發(fā)斷點(diǎn)讓程序暫停。

????為了看到03000E48這個(gè)位置處的變量,我們可以用Ctrl+I(HIJK里面的那個(gè)I),或者在菜單中選擇“Debug-Define Watchpoint”,來添加一個(gè)查看特定變量的標(biāo)記(術(shù)語叫監(jiān)視變量):

設(shè)置監(jiān)視變量

????這個(gè)框里輸入的就是變量地址了?,F(xiàn)在No$GBA主界面的左下框應(yīng)該是這個(gè)樣子:

斷點(diǎn)/監(jiān)視變量窗口

????里面有兩條,第一條是我們的監(jiān)視變量,可是它只監(jiān)視了1個(gè)字節(jié),但我們需要4個(gè)字節(jié)。所以我們需要將03000E49、03000E4A、03000E4B也添加進(jìn)我們的監(jiān)視變量里面:

完整的監(jiān)視變量

????前四行就是被監(jiān)視的4個(gè)字節(jié),它們拼起來是0,因?yàn)檫€沒有觸發(fā)對(duì)話。第五行是設(shè)置的條件斷點(diǎn)。

????回到No$GBA的游戲界面,我們可以在其中任意走動(dòng),但是一旦和精靈中心的護(hù)士對(duì)話,游戲就會(huì)卡死,說明我們成功觸發(fā)了斷點(diǎn):

觸發(fā)斷點(diǎn)

????此時(shí)就是按下了A鍵,但是護(hù)士還沒來得及說出第一個(gè)字的時(shí)刻。用斷點(diǎn)的方法可以確保我們找到的一定是這個(gè)變量第一次發(fā)生變化的情況,和手速就無關(guān)了。我們可以看到,現(xiàn)在被監(jiān)視的4個(gè)字節(jié)拼起來是081FC01A(按小端序拼接),這就是和精靈中心護(hù)士的對(duì)話程序?qū)?yīng)的變量取值了。

????有一點(diǎn)需要注意:觸發(fā)斷點(diǎn)時(shí),當(dāng)前程序界面會(huì)自動(dòng)從游戲界面切換回No$GBA的主界面,此時(shí)千萬不要再手動(dòng)切換回游戲界面!因?yàn)榍袚Q回游戲界面的含義是跳過當(dāng)前斷點(diǎn),讓程序繼續(xù)執(zhí)行,那我們就錯(cuò)過了當(dāng)前斷點(diǎn)的變量取值了。

????081FC01A是我們?cè)赩BA模擬器中無論手速有多么快都獲取不到的變量取值,而No$GBA的斷點(diǎn)功能則確保我們可以得到它。因此No$GBA的功能是十分強(qiáng)大的!

????我們的第二行金手指的原始代碼就組裝好了:

????下一步是把它轉(zhuǎn)換成中間代碼,又需要查找AR V3 Codes Types這個(gè)表格了:

Type 02

????這次用到的是“Type 02”這個(gè)類型,代碼含義是:

????把地址XXXXXXXX處的變量設(shè)置為ZZZZZZZZ

????按照原始代碼轉(zhuǎn)換規(guī)則,我們應(yīng)該把03000E48變成04300E48,因此第二行中間代碼就是:

????最后一步,用AR Crypt將兩行中間代碼加密成V3格式碼:

最后一步加密過程

????我們的“隨身攜帶的精靈中心”這條金手指就組裝成功了!

????它的格式是V3格式碼,趕快到VBA模擬器中試一下!

金手指效果評(píng)估

????來到VBA模擬器中的游戲,在“金手指列表”的“GameShark”選項(xiàng)中輸入V3格式碼,回到游戲后,看看金手指管不管用:

輸入金手指

????我們?cè)囋嚢碨elect+B這個(gè)組合鍵管不管用。這個(gè)組合鍵有三種按法:

  1. 先按住Select,然后按B

  2. 先按住B,然后按Select

  3. 爭(zhēng)取Select和B一起按

????雖然三種按法都能觸發(fā)金手指,但是實(shí)踐證明第2個(gè)方法最好,因?yàn)楫?dāng)Select鍵沒有登記到重要物品時(shí),單獨(dú)按Select鍵會(huì)跳出一個(gè)介紹Select鍵功能的對(duì)話框,如果按組合鍵的時(shí)候Select鍵按下去的時(shí)間比B鍵早,就會(huì)多出來這么一句對(duì)話,而先按B就沒有這個(gè)問題。金手指效果如下:

隨身攜帶的精靈中心

????目前主角的身邊空無一人,但按下B+Select之后,仿佛精靈中心的護(hù)士就在面前,這就是隨身攜帶的精靈中心,只要是在對(duì)戰(zhàn)和對(duì)話之外,隨時(shí)隨地都可以回復(fù)隊(duì)伍中的全部精靈!

????注意上面這個(gè)條件:對(duì)戰(zhàn)和對(duì)話之外。所以單挑彩虹火箭隊(duì)6位首領(lǐng)時(shí)這條金手指就用不上了,連續(xù)的對(duì)戰(zhàn)和對(duì)話讓你根本沒有使用這條金手指的條件!

????仔細(xì)回想一下,今天介紹的金手指實(shí)際上就是實(shí)現(xiàn)了下面這個(gè)小程序:

如果Select鍵和B鍵同時(shí)按下:

那么:游戲切換到和精靈中心護(hù)士的對(duì)話程序

否則:什么都不做

????這就是V3格式碼真正的強(qiáng)大之處。原始格式碼只能給變量賦值,是無論如何也實(shí)現(xiàn)不了這種功能的。

自己動(dòng)手來嘗試

????還有一個(gè)和“隨身攜帶的精靈中心”一樣有用的金手指,被稱作“隨身電腦”,就是對(duì)話和對(duì)戰(zhàn)外隨時(shí)隨地到自己的電腦倉(cāng)庫(kù)中更換精靈或者存取道具。它的原理和“隨身攜帶的精靈中心”幾乎完全相同:和電腦對(duì)話同樣也是對(duì)話程序。有興趣的話不妨自行探索一下!效果如下圖所示:

隨身電腦

????給個(gè)小提示:和電腦對(duì)話時(shí),對(duì)應(yīng)的對(duì)話程序變量取值是08271D92,可以驗(yàn)證一下讀者用No$GBA的斷點(diǎn)功能是否熟練。不熟練的話也沒關(guān)系,大家完全可以從這一步開始組裝“隨身電腦”這個(gè)金手指,難度已經(jīng)大大降低了!

專欄結(jié)語

????作者用了十期專欄,以究極綠寶石5為例,詳細(xì)回答了“什么是金手指”這個(gè)問題。內(nèi)容難度逐漸上升,從前面幾期較為直觀的現(xiàn)象開始,到后面幾期涉及到編程等計(jì)算機(jī)理論知識(shí),如果讀者能夠弄清楚其中的道理,當(dāng)你再次看到金手指的時(shí)候,想必會(huì)站在一個(gè)更高的視角,得到更深刻的理解。

????然而學(xué)無止境。作者在第五期專欄提到過,08或09開頭的金手指修改的是游戲代碼本身,因此用了這種金手指就相當(dāng)于對(duì)游戲進(jìn)行了改版,用了之后你玩的游戲就不再是究極綠寶石5了。那些代碼的修改為什么能起到作用?這需要涉及到一個(gè)更加專業(yè)的知識(shí):反匯編。這就不是這個(gè)系列專欄所能解釋清楚的問題了。作者將這一部分進(jìn)階的內(nèi)容留到另一個(gè)專欄中去介紹。

????某個(gè)游戲中的反派有一句很有意思的話,分享給大家:

You can pick the game, but you cannot change the rules. By Dimitri Rascalov.

玩什么游戲是你的自由,但你不能破壞游戲規(guī)則。

????最后,感謝大家的支持!如果有什么疑問或者建議、意見,歡迎到評(píng)論區(qū)回復(fù)!


究極綠寶石5.3——科普向,什么是金手指(十)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
章丘市| 双城市| 革吉县| 吴川市| 专栏| 都昌县| 平邑县| 婺源县| 浙江省| 祁连县| 常宁市| 宁波市| 安多县| 安远县| 伊宁县| 沙洋县| 山阴县| 民权县| 迁安市| 蒙山县| 台东市| 亳州市| 安宁市| 定襄县| 东源县| 拉萨市| 东乡族自治县| 嘉义县| 顺昌县| 东台市| 鄯善县| 军事| 彭山县| 高唐县| 新蔡县| 巨野县| 安徽省| 区。| 双峰县| 凉城县| 南丹县|