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

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

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

2022-01-25 18:19 作者:圍巾胖頭魚  | 我要投稿

說在前面:

????在第一期專欄的末尾,作者一共提出了三個(gè)問題。從第二到第四期,我們用了三期專欄,簡要回答了前兩個(gè)問題:

????我們想要改的數(shù)字在哪里——變量地址查詢

????我們要改的數(shù)字是什么含義,或者說我們想改的東西對應(yīng)了什么數(shù)字——變量與實(shí)體的映射表

????本期專欄將會(huì)回答第三個(gè)問題:

????用了金手指管不管用,要是壞檔了怎么辦——修改變量的副作用

金手指怎么用?

????不知道有多少看過第一期專欄的讀者,發(fā)現(xiàn)題目雖然有“金手指”,但里面竟然一句金手指的代碼都沒有,是不是會(huì)感到有些失望?甚至覺得那篇專欄太水了,一點(diǎn)實(shí)際用途也沒有?

????其實(shí)金手指代碼在網(wǎng)上并不稀缺,隨便搜索一下都可以找到一頁頁全是代碼的“綠寶石……金手指……”的內(nèi)容,不過說金手指怎么用的文章卻是寥寥無幾,就算有,也主要是說明這條金手指代碼會(huì)起到什么作用;再多說一點(diǎn),會(huì)提到這個(gè)代碼的輸入格式;再詳細(xì)的,可能會(huì)提示你要及時(shí)關(guān)閉金手指,否則游戲會(huì)卡死等等。一個(gè)典型的例子是在百度搜索中搜索“口袋妖怪游戲中的綠寶石金手指怎么用”,出現(xiàn)的“百度知道”的回答。

????有了前幾篇專欄的知識(shí)基礎(chǔ),再介紹金手指怎么用就是水到渠成的事。還是以VBA模擬器為例,讓我們懷著激動(dòng)的心態(tài),打開模擬器中的“金手指——金手指列表”,這就是我們輸入金手指代碼的地方!

金手指列表
金手指輸入界面


????仔細(xì)看一下上面這個(gè)“金手指”列表界面,下方居然有8個(gè)按鍵!這還不包括左側(cè)有一個(gè)“還原為前一個(gè)數(shù)值”的可勾選框。這么復(fù)雜的界面,如果是第一次接觸金手指的讀者,就算給你一行金手指代碼,你知道該輸入到什么地方去嗎?下面作者將一一介紹這些按鈕和左邊那個(gè)可勾選框的功能。

????第一行的四個(gè)按鈕,“代碼(C)...”“修改(H)...”“Gameshark...”“CodeBreaker...”,指的是金手指的格式。金手指的格式可以大致分為3類:

  1. 原始代碼,也被稱為raw code。格式為:變量地址:變量取值。具體來說,原始代碼的一行是由冒號分隔的兩個(gè)十六進(jìn)制數(shù),這一行除了兩個(gè)數(shù)字、冒號和結(jié)尾那個(gè)看不見的回車符,沒有任何其他符號??催^之前幾期專欄的讀者對變量地址變量取值這兩個(gè)概念應(yīng)該是再熟悉不過了。變量地址一定是8位的十六進(jìn)制數(shù),而變量取值可以是2位、4位或者8位十六進(jìn)制數(shù)任選一種。這條代碼的含義就是將變量地址處的變量設(shè)置為變量取值代表的數(shù)字。

  2. GameShark,也被稱為GS碼、V3格式碼。格式為:8位十六進(jìn)制數(shù) 8位十六進(jìn)制數(shù)。具體來說,GS碼的一行是由單個(gè)空格分隔的兩個(gè)8位十六進(jìn)制數(shù),這一行除了兩個(gè)數(shù)字、單個(gè)空格和結(jié)尾那個(gè)看不見的回車符,沒有任何其他符號。GS碼是基于原始代碼和其他特定規(guī)則,由加密算法生成的代碼,作者在第九期專欄究極綠寶石5.3——科普向,什么是金手指(九)有詳細(xì)介紹。

  3. CodeBreaker,也被稱為代碼斷路器。這種類型的金手指沒有必要詳細(xì)介紹,因?yàn)樗茏龅降墓δ?,原始代碼和GS碼也能做到,因此專欄的內(nèi)容只會(huì)涉及到前兩種代碼。

? ? 注1:本期專欄發(fā)表近一年之后,作者為了專欄內(nèi)容的完整性,在第十一期專欄代碼斷路器介紹——科普向,什么是金手指(十一)中介紹了CodeBreaker這一金手指代碼類型。

????注2:這里提到的代碼格式是針對VBA模擬器來說的,如果是其他的模擬器,例如手機(jī)上的myboy,它的原始代碼中間就是用空格隔開,而不是像VBA用冒號隔開。雖然格式可能會(huì)有區(qū)別,但同一條金手指代碼中出現(xiàn)的數(shù)字在不同的模擬器上是不會(huì)有區(qū)別的。

????現(xiàn)在回到第一行的4個(gè)按鈕,“代碼(C)...”和“修改(H)...”都是輸入原始代碼的,“Gameshark...”是用來輸入GS碼的,“CodeBreaker...”是用來輸入代碼斷路器格式代碼的。由于“修改(H)...”和“代碼(C)...”這兩個(gè)按鈕在功能上有重復(fù),而作者又暫時(shí)不打算介紹代碼斷路器,因此在這里只介紹第一行的“代碼(C)...”“Gameshark...”這兩個(gè)選項(xiàng)。

????先點(diǎn)擊“代碼(C)...”按鈕,會(huì)出現(xiàn)一個(gè)輸入框:

原始代碼輸入界面

????點(diǎn)擊按鈕后,會(huì)出現(xiàn)一個(gè)新的界面,里面有兩個(gè)輸入?yún)^(qū)域,上面是“注釋”,隨便寫什么都可以(空著不寫也行),主要就是提示你這條金手指是干什么用的,如果你自己記得住,或者用過一次就不用了,就沒必要寫。下面是“代碼”,就是輸入原始代碼的地方。

????我們還是舉第二期專欄結(jié)尾的那個(gè)例子,變量地址0202450c映射到隊(duì)伍中第一只精靈的種族,而變量取值02b0映射到三首惡龍。按照原始代碼的格式,0202450c:02b0這句話的含義就是把變量地址0202450c處的變量取值修改為02b0,體現(xiàn)在游戲中,就是把首位精靈改成三首惡龍。

????下面我們來嘗試一下,作者拿一個(gè)臨時(shí)存檔測試,目前隊(duì)伍里首位精靈是搭檔伊布:

首位精靈:搭檔伊布

????打開“金手指——金手指列表”,點(diǎn)擊“代碼(C)...”按鈕,在“代碼”框里輸入:0202450c:02b0

輸入代碼

????這里多提一句,這個(gè)頁面內(nèi)輸入的任何字母都會(huì)強(qiáng)制變成大寫的,就算不按Shift或者大寫鎖定鍵Capslock也是這樣。然后點(diǎn)擊確定,這個(gè)界面會(huì)退出,回到剛才的“金手指列表”界面:

金手指列表界面

????此時(shí),列表界面上顯示出剛才輸入的代碼,由于沒寫注釋,“注釋”那一列是空的;后面的“狀態(tài)”這一列,“E”表示這條代碼正在生效,就像右上角提示的那樣。同時(shí)這條代碼的左側(cè)出現(xiàn)了一個(gè)打?qū)吹目颍绻c(diǎn)擊一下這個(gè)框,對勾會(huì)消失,同時(shí)右側(cè)的“狀態(tài)”會(huì)變成“D”,表示這條代碼現(xiàn)在不生效,只是寫在了這里,如下圖:

代碼不生效

????和代碼左側(cè)的那個(gè)打勾框功能相同的,還有界面下方第二行的“開/關(guān)(E)”按鈕,當(dāng)我們點(diǎn)擊列表中的第一條代碼時(shí),界面下方第二行的“刪除”和“開/關(guān)(E)”按鈕都會(huì)變成可點(diǎn)擊的狀態(tài):

選中一條代碼

????如果點(diǎn)擊“刪除”,這條代碼就會(huì)從列表中消失;如果點(diǎn)擊“開/關(guān)(E)”,就會(huì)切換這條代碼的狀態(tài)(從啟用E到不啟用D,或者反過來)。刪除一條金手指也會(huì)讓它失效,從功能上來說,相當(dāng)于先把它設(shè)置成不生效,然后再把它從列表中移除。而“全部刪除”按鈕就是把輸入的所有金手指全部變?yōu)椴簧Рh除。我們可以點(diǎn)擊“開/關(guān)(E)”按鈕,將這條代碼的狀態(tài)恢復(fù)為“啟用”,然后點(diǎn)擊界面右下角的“確定”按鈕,就回到游戲了。

????回到游戲后,如果停留在剛才的隊(duì)伍精靈查看界面,我們會(huì)發(fā)現(xiàn)首位精靈還是搭檔伊布,沒有發(fā)生任何變化,這是因?yàn)橛螒蜻€停留在輸入金手指之前的狀態(tài),我們需要對游戲操作一下,讓金手指修改的數(shù)字能夠反映到屏幕上來,比如我們可以選中搭檔伊布,查看它的概況(也可以先退出隊(duì)伍精靈查看界面,然后再次進(jìn)入到隊(duì)伍精靈查看頁面):

精靈被改成三首惡龍

????此時(shí)首位精靈就變成了三首惡龍,隨之而來的是各種各樣數(shù)不清的問題。

????如果有人把這張圖片發(fā)到貼吧中,馬上就會(huì)被一眼看出:“這是開金了吧!”(“開金”就是“使用金手指”的意思)。一個(gè)三首惡龍,名字怎么會(huì)叫“搭檔伊布”呢?好吧,如果說有人有奇特的愛好,在凱那市改名字小屋那里把這只三首惡龍硬改名改成“搭檔伊布”,那最下面那句“橙華森林遇到”是什么情況?橙華森林里哪有什么三首惡龍?還是“Lv5時(shí)”遇到的?這是開金手指會(huì)出現(xiàn)的第一個(gè)問題:只修改一處,和其他信息不對應(yīng)。

????如果你的隊(duì)伍還有其他精靈,一不小心換到首位去了,就會(huì)發(fā)現(xiàn)無論什么精靈,換到首位之后全都變成三首惡龍了!怎么回事?原來是金手指忘關(guān)了!這是開金手指會(huì)出現(xiàn)的第二個(gè)問題:忘記關(guān)閉金手指,讓金手指一直生效,出現(xiàn)了意料之外的效果。

????有的讀者說,我自己爽就行了,也不會(huì)把這種讓人一眼就認(rèn)出來“開金”的圖隨便亂發(fā),所以上面的第一個(gè)問題我不管了;第二個(gè)問題也可以解決,我回到剛才那個(gè)金手指頁面把代碼關(guān)了或者刪了,那是不是就萬事大吉了呢?我們拿著剛改好的三首惡龍,找一個(gè)NPC訓(xùn)練師打打看。

對戰(zhàn)訓(xùn)練師

????剛才只改了精靈的種族,沒有改技能,而搭檔伊布之前學(xué)的技能,三首惡龍一個(gè)也學(xué)不會(huì),在對戰(zhàn)NPC訓(xùn)練師的時(shí)候,被游戲的反作弊機(jī)制刪除了所有技能。其實(shí)這還算好的,有的時(shí)候,這只精靈在對戰(zhàn)訓(xùn)練師的時(shí)候直接就消失了。不信的話,可以用剛才的方法,在游戲剛一開始的時(shí)候改出來烈空坐試試。這里強(qiáng)調(diào)一下是究極綠寶石的5.3版本,里面的反作弊機(jī)制還是很強(qiáng)大的!這是開金手指會(huì)出現(xiàn)的第三個(gè)問題:金手指觸發(fā)了游戲的反作弊機(jī)制,不但沒有效果,反而還遭受了損失。

????如果有細(xì)心的讀者會(huì)發(fā)現(xiàn),之前那張圖上的搭檔伊布的等級是73,HP是246,怎么進(jìn)入對戰(zhàn)之后,三首惡龍就變成了等級68,HP是267了呢?我們并沒有開修改等級和HP的金手指啊。

????這里就要對變量取值再做一個(gè)進(jìn)一步的說明。有的變量取值面板值,它是根據(jù)其他的變量取值由游戲程序計(jì)算出來的,而有的變量取值非面板值,它的取值和其它的變量沒有依賴關(guān)系。用上面的例子,精靈種族就是非面板值,但是精靈的等級和HP就是面板值,因此修改了精靈種族之后,精靈的等級和HP就會(huì)被游戲本身計(jì)算出來一個(gè)新的值,替換掉原來的。

????怎么區(qū)分哪些變量取值是面板值,哪些不是呢?這個(gè)問題留到之后的第七期專欄再回答。

????這個(gè)“觸發(fā)反作弊機(jī)制”的問題,才是讓各位開過金的讀者們最頭疼的問題吧?有的人因此在貼吧內(nèi)指責(zé)制作組,說這種設(shè)計(jì)太影響游戲體驗(yàn)了。就作者在貼吧中的觀察,對于這種言論,有兩種態(tài)度:

天使的態(tài)度:制作組用愛發(fā)電,把這款游戲免費(fèi)給你玩,你還有什么不知足的?你老老實(shí)實(shí)玩游戲不開金、不開作弊,反作弊機(jī)制就反不到你身上來,對游戲體驗(yàn)又能有什么影響?你說打道館不讓帶神獸,那你去玩究4的神戰(zhàn)版啊!你說劇毒羽棲順風(fēng)這些技能機(jī)和教學(xué)都沒有了,很難受,但制作組就是嚴(yán)格按照八代的設(shè)定來的,要噴去噴GF啊……

魔鬼的態(tài)度:你開金觸發(fā)反作弊機(jī)制了?那是因?yàn)槟闳?,沒本事,不知道怎么繞開反作弊機(jī)制,不去好好鉆研計(jì)算機(jī)知識(shí),卻在這里怨天尤人。妥妥的一個(gè)“無能狂怒人”……

????無論天使也好,魔鬼也好,總之這種言論都討不了好。我們回到專欄內(nèi)容本身,探討一下開金手指遇到的問題——修改變量的副作用。

使用金手指會(huì)碰到的問題

????上一節(jié)作者總結(jié)出三個(gè)開金手指會(huì)出現(xiàn)的問題:

????第1個(gè)問題:只修改一處,和其他信息不對應(yīng)。

????第2個(gè)問題:忘記關(guān)閉金手指,讓金手指一直生效,出現(xiàn)了意料之外的效果。

????第3個(gè)問題:金手指觸發(fā)了游戲的反作弊機(jī)制,不但沒有效果,反而還遭受了損失。

????我們一個(gè)一個(gè)來看。

????第1個(gè)問題,本質(zhì)上是“變量與實(shí)體的映射表”找不全的原因。就金手指修改精靈而言,精靈的信息可不止種族這一項(xiàng),性格、特性、努力值、個(gè)體值、攜帶道具、技能……這些都需要改,要改就改全套的。只改其中一個(gè),弄出個(gè)四不像來,反作弊機(jī)制不針對你會(huì)針對誰呢?只不過話說回來,找全映射表是個(gè)大工程,第三期和第四期專欄只介紹了一些難度還不算很大的映射表查找方法。本期介紹了利用金手指修改變量取值的方法,其實(shí)它在映射表查找方面是能起到大作用的!到了下一期,作者會(huì)再舉出一些映射表查找的方法,這里可以先給出一個(gè)結(jié)論:描述一只精靈的全部信息,100個(gè)字節(jié)就夠了。

????第2個(gè)問題,涉及到金手指的功能。有的金手指需要一直開啟才能起作用,有的金手指只需要開一次,就可以關(guān)上了,一直開著反而會(huì)出問題。就拿剛才那個(gè)修改精靈種族的金手指為例,這就是個(gè)開了一次就需要關(guān)上的金手指,除非你想讓隊(duì)伍里的精靈都變成三首惡龍、你抓來的精靈也變成三首惡龍、你從電腦里拿出來的精靈還是變成三首惡龍……那么這個(gè)“開了一次再關(guān)上”具體是怎么操作的?開多久再關(guān)上這次金手指才算是生效了呢?

????回到金手指列表的界面:

金手指列表

????前面我們強(qiáng)調(diào)過:原始代碼的金手指就是把一個(gè)變量的取值改成了另一個(gè)。這句話的原理在這幾期的專欄中也給大家講清楚了。這個(gè)“更改取值”的操作,是在頁面上右下角那個(gè)“確定”按鈕按下去之后,就馬上生效的(當(dāng)然前提是列表中的代碼處于“啟用”狀態(tài))?!按_定”按鈕按下去之后,“金手指列表”的界面會(huì)消失,這時(shí)就可以再次打開“金手指列表”,把這條代碼關(guān)閉或者刪除,這就是“開了一次再關(guān)上”的具體操作,甚至都不需要在游戲中進(jìn)行任何操作。

????在“金手指列表”中,還剩下最后一個(gè)功能沒有介紹,就是“還原為前一個(gè)數(shù)值”這個(gè)勾選框。前面舉的例子中,這個(gè)框都沒有勾選,這是有原因的。這個(gè)框被勾選的含義是:當(dāng)代碼被刪除或者關(guān)閉時(shí),代碼修改的變量取值恢復(fù)到使用這條代碼之前的樣子。如果是這種只開一次的金手指,把這個(gè)框勾選上可就麻煩了。一方面,只開一次的金手指,點(diǎn)擊“確定”按鈕之后就可以關(guān)閉或者刪除了,不能一直開著;另一方面,一旦關(guān)閉或者刪除了金手指,變量就會(huì)恢復(fù)到開金手指之前的樣子,忙了這么半天等于什么都沒做。所以在用這種只開一次的金手指的時(shí)候,這個(gè)“還原為前一個(gè)數(shù)值”的框是不能勾選的!

????可是,如果是有時(shí)需要一直開啟,有時(shí)又需要關(guān)閉的金手指,這個(gè)框就需要勾選上了!比如說草叢不遇到野生精靈的金手指,它不能開了之后就馬上關(guān)掉,畢竟主角需要在草叢中走好長一段時(shí)間,但需要遇到野生精靈的時(shí)候,又需要把變量恢復(fù)到之前的樣子,否則就一直碰不到野生精靈了。此時(shí)就需要在按下“確定”按鈕之前,把“還原為前一個(gè)數(shù)值”這個(gè)框勾選上。

????這個(gè)框還有一個(gè)功能,就是從網(wǎng)上找了一個(gè)來歷不明的金手指之后,不知道能不能用,想試試看,此時(shí)最好把“還原為前一個(gè)數(shù)值”這個(gè)框勾選上,如果用了之后出現(xiàn)了什么意外情況,可以把它刪掉,同時(shí)還能恢復(fù)到使用金手指之前的狀態(tài)。

????第3個(gè)問題,需要好好強(qiáng)調(diào)一下。反作弊機(jī)制是制作組實(shí)現(xiàn)在游戲程序中的代碼,它代表的是游戲的邏輯,這和變量還是有很大區(qū)別的。事實(shí)上,網(wǎng)上的有些金手指改的是游戲代碼,而不是變量,這類金手指是最容易觸發(fā)壞檔(存檔損壞)的。

????反作弊機(jī)制需要繞過嗎?如果金手指只是修改變量的話,是可以做到讓任何反作弊機(jī)制都檢測不到的!這是一個(gè)從原理上就能說清楚的問題:游戲程序本身也可以修改變量,金手指也可以修改變量,可是變量本身不會(huì)知道是誰修改的它。如果我們用的金手指能夠做到和游戲程序修改變量相同的效果,那么任何反作弊機(jī)制都無法識(shí)別這兩者的區(qū)別!但是,如果金手指修改了游戲程序,也就是說,修改了游戲的邏輯,那就另當(dāng)別論了,因?yàn)檎5挠螒蛄鞒淌遣粫?huì)修改游戲程序本身的。

????換一種方式來說,如果只是用金手指修改變量的話,還可以勉強(qiáng)說我們玩的游戲是究極綠寶石5;如果用金手指修改了游戲程序,那我們玩的其實(shí)是另一個(gè)游戲,一個(gè)基于究極綠寶石5改版之后游戲。

????拿烈空坐舉個(gè)例子。在游戲流程走到二周目天空之柱頂層捕捉烈空坐之前,用金手指修改變量修改出來的烈空坐,只要和訓(xùn)練師對戰(zhàn)就會(huì)消失,這是游戲邏輯和反作弊機(jī)制決定的。而在捕捉烈空坐的劇情之后,就算用金手指改出來一隊(duì)伍的烈空坐,對戰(zhàn)時(shí)也不會(huì)消失,因?yàn)榇藭r(shí)烈空坐已經(jīng)成為了合法精靈,并且從神奧黃半仙那里拿到的神獸蛋也有可能孵出來烈空坐,所以隊(duì)伍中的烈空坐從游戲邏輯上來說可以不止一個(gè)。這種情況下,如果金手指修改出來的烈空坐,和游戲程序“讓你抓到”的烈空坐對應(yīng)的變量一樣的話,那么反作弊機(jī)制是無法區(qū)分這兩種烈空坐的。

????如何判斷哪些金手指是修改變量的,哪些金手指是修改游戲程序的呢?這和原始代碼中,左半邊的變量地址有關(guān)。

再談變量地址

????在第二期的專欄中,作者介紹了變量和變量地址,并以“一條大街”作為比方,形容這些變量的變量地址就像是門牌號,從小到大依次排列開,在VBA模擬器的“變量地址查看器”中可以看到。當(dāng)時(shí)并沒有給出比喻中的“大街”對應(yīng)的學(xué)術(shù)名稱是什么,這里可以介紹一下,這條“大街”其實(shí)就是VBA模擬器的內(nèi)存。

????VBA模擬器程序打開后,會(huì)模擬一個(gè)游戲機(jī)操作系統(tǒng)的環(huán)境,有點(diǎn)類似于在我們的電腦、手機(jī)上再打開一個(gè)小電腦、小手機(jī)。電腦和手機(jī)的內(nèi)存,對應(yīng)到實(shí)實(shí)在在的硬件,如果有讀者拆過電腦或者手機(jī)的話,可以找到內(nèi)存條這種硬件,就是一塊小電路板的樣子。VBA模擬器的內(nèi)存,是在它的運(yùn)行環(huán)境中模擬出來的一個(gè)硬件,本質(zhì)上就是在電腦或者手機(jī)的內(nèi)存中找到一段空間拿出來給自己用。

????VBA的模擬器內(nèi)存中,既包含了游戲程序,也包含了變量。當(dāng)我們打開VBA模擬器,加載好“究極綠寶石5”這個(gè)游戲之后,究極綠寶石5的GBA文件(游戲本體文件)就被加載進(jìn)了模擬器的內(nèi)存中;如果我們載入之前的游戲存檔,存檔也會(huì)被加載進(jìn)模擬器的內(nèi)存中,并且只會(huì)修改其中的變量部分。VBA模擬器內(nèi)存可以通過VBA模擬器的“工具——反匯編...”(也就是作者常說的“變量地址查看器”)來查看:

變量地址查看器

????其實(shí)嚴(yán)格來說,這里面的地址對應(yīng)的不只是變量,還有可能是游戲程序的代碼。GBA文件格式規(guī)定了變量應(yīng)該放在哪些地址,程序代碼應(yīng)該放在哪些地址,這種分配方式又被稱作內(nèi)存視圖,一個(gè)簡易版的GBA文件內(nèi)存視圖如下(圖中數(shù)字均為十六進(jìn)制):

GBA文件內(nèi)存視圖

????上圖的綠色區(qū)域,地址范圍是02020000~0203FFFF,這個(gè)區(qū)域內(nèi)的數(shù)字代表的都是變量,如果讀者們翻一翻前幾期的專欄,就會(huì)發(fā)現(xiàn)里面所有的變量地址都在這個(gè)范圍內(nèi);紅色區(qū)域,地址范圍是08000000~09FFFFFF,這個(gè)區(qū)域內(nèi)的數(shù)字代表的都是程序代碼。如果要一個(gè)簡單的記法,就是:

????金手指的原始代碼,左半邊的數(shù)字以0202或者0203開頭的,都是修改變量的金手指;以08或者09開頭的,都是修改程序代碼的金手指。

????我們計(jì)算一下,就會(huì)發(fā)現(xiàn)02020000~0203FFFF一共有128K(這里的K=1024)個(gè)字節(jié),如果大家還記得究極綠寶石5的存檔類型是“Flash 128K”的話,發(fā)現(xiàn)這兩個(gè)數(shù)字是對得上的。沒錯(cuò),這128K個(gè)字節(jié)其實(shí)就是游戲存檔,所以用64K存檔的玩家一定會(huì)壞檔:它丟掉了一半的變量!

????注:這里作者的說法其實(shí)是有問題的,這段空間大小為128K,與存檔大小相同僅僅是一個(gè)巧合,但是用了64K存檔的玩家的確會(huì)壞檔。(于2023年1月23日修正)

????同理,08000000~09FFFFFF一共有32M(這里的M=1024*1024)個(gè)字節(jié),如果我們在電腦或者手機(jī)上去查看GBA文件的大小,會(huì)發(fā)現(xiàn)這個(gè)文件大小恰好是32MB!沒錯(cuò),這32M個(gè)字節(jié)就是VBA模擬器加載進(jìn)來的游戲本體?,F(xiàn)在大家對一條原始代碼的金手指修改的究竟是變量還是游戲代碼本身應(yīng)該會(huì)有一個(gè)非常直觀的概念了。

????那圖中的灰色區(qū)域是什么?這里作者為了說明方便,給出的是一個(gè)簡易的GBA文件內(nèi)存視圖,其實(shí)灰色的區(qū)域也有各自的用途,只不過和金手指相關(guān)的內(nèi)容不多,這里就不多做介紹了,第十期專欄會(huì)涉及到,我們到時(shí)候再說。

????另外,上面指出了是原始代碼格式的金手指才有這個(gè)規(guī)律,如果是GS碼(也被稱為GameShark、V3格式碼)呢?這是第九、十期專欄會(huì)介紹的內(nèi)容。

總結(jié)一下

????只要是按照游戲正常流程能達(dá)到的游戲狀態(tài),使用金手指也能達(dá)到,并且不會(huì)被反作弊機(jī)制檢測到。

????這里舉個(gè)最典型的例子:孵蛋孵出個(gè)體值為6V的精靈。

????玩家們費(fèi)盡千辛萬苦,抓母本、抓6V百變怪、帶上紅線不變石遺傳性格和個(gè)體的V、來到紫堇市左側(cè)的飼養(yǎng)屋生蛋、在大街上騎自行車刷步數(shù)、等待生蛋、看生出來的是不是6V、是的話在隊(duì)首放上火焰之軀特性的精靈減少孵蛋步數(shù)、孵出來精靈練到100級、刷好努力值和技能……這么一通忙活之后,總算是練好了一個(gè)極品精靈。有不少玩家們就是從這種固定的流程中,體會(huì)到了游戲的樂趣,一分耕耘一分收獲??!

????可是有了金手指之后,我們發(fā)現(xiàn):既然一只極品的精靈是通過游戲正常流程可以達(dá)到的游戲狀態(tài),那么用金手指同樣也能達(dá)到。上面提到過,描述一只精靈,用100個(gè)字節(jié)就足夠了。使用金手指修改這100個(gè)字節(jié),同樣也能得到一個(gè)極品精靈,并且任何設(shè)計(jì)出來的反作弊機(jī)制都無法檢測。

????這里講一個(gè)不太恰當(dāng)?shù)墓适拢?/span>

老師在黑板上出了一道題:“1+2+3+……+10000=?”,這就是今天的家庭作業(yè)。

同學(xué)A回到家之后,拿出計(jì)算器,開始摁1+2+3……摁出來一萬個(gè)數(shù)字和九千九百九十九個(gè)加號之后,最后一步按等號,出結(jié)果了!作業(yè)做出來了,好有成就感!

同學(xué)B回到家之后,在計(jì)算器上輸入“10000*10001/2=”,也得到了一個(gè)結(jié)果。

第二天,同學(xué)A和同學(xué)B把結(jié)果交給老師,老師說他們算的結(jié)果都對。同學(xué)A跟同學(xué)B說:“昨天我做作業(yè)做得好辛苦啊,計(jì)算器都快摁壞了?!蓖瑢W(xué)B說:“不就是算一下的事嗎,有什么辛苦的?”同學(xué)A趕緊問同學(xué)B是怎么做的,得知真相后,同學(xué)A忍不住大吼一聲:“你作弊!”

????這個(gè)故事還沒結(jié)束:

同學(xué)C看到黑板上的題目后,陷入了沉思:一萬個(gè)數(shù)相加,這個(gè)家庭作業(yè)也太沒有體驗(yàn)了吧!這得算到什么時(shí)候去?于是同學(xué)C在大家下課之后,把黑板上的最后一個(gè)數(shù)10000,擦掉了后面兩個(gè)“零”,題目變成了“1+2+3+……100”,然后高高興興回家做作業(yè)去了。

第二天,同學(xué)C把結(jié)果交給老師,老師說算的不對,同學(xué)C指著黑板說:“這不是寫的讓我們算1+2+3+……+100等于幾嗎?”老師說:“我昨天明明寫的是加到10000,是哪個(gè)同學(xué)把題目給改了?是不是覺得老師的記性不好啊?”

????之所以說這個(gè)例子舉的不太恰當(dāng),是因?yàn)橛行┦麓_實(shí)不能類比。使用金手指的利弊得失,還是請眾位讀者自行斟酌吧。

????到本期專欄為止,作者總算把第一期專欄提出的三個(gè)問題都回答了,也就算是回答了這個(gè)系列專欄題目中的問題:什么是金手指。五期專欄,內(nèi)容相對完整,而且作者盡量以科普的寫法來介紹這里面涉及的概念、原理等,盡量讓沒有任何編程基礎(chǔ)的讀者也能看懂。有什么問題的話,歡迎大家在討論區(qū)提出!

????不過,專欄并沒有到此結(jié)束,圍繞著金手指還有很多有趣的事情可以發(fā)掘,讀者們也看到了這期專欄留了不少坑(比如說金手指的GS碼是怎么回事、哪些變量是面板值等等)。聯(lián)想到究極綠寶石5中,游戲一開始需要選擇難度模式,這里類比一下,如果說前五期專欄涉及的內(nèi)容難度都是“助手模式”和“標(biāo)準(zhǔn)模式”的話,那么接下來的專欄內(nèi)容難度,將是“挑戰(zhàn)模式”,甚至是“大赦未檢閱”——“Lunatic Mode”(瘋狂模式)。感興趣的讀者可以繼續(xù)等待更新,不過要是想要理解的話,還是建議大家要時(shí)不時(shí)翻一翻前五篇專欄的基礎(chǔ)知識(shí)。

????再次感謝大家的支持!





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

分享到微博請遵守國家法律
罗田县| 天镇县| 龙海市| 扎鲁特旗| 门头沟区| 板桥市| 建阳市| 兴化市| 社旗县| 洮南市| 淳安县| 新民市| 西丰县| 通化市| 巨鹿县| 丰原市| 保德县| 彭水| 神池县| 张家界市| 弥勒县| 怀化市| 望谟县| 彩票| 广汉市| 同心县| 香港 | 米泉市| 岑巩县| 循化| 康定县| 阿合奇县| 阜平县| 吉隆县| 伽师县| 全南县| 谢通门县| 永德县| 察哈| 鲁甸县| 博白县|