a8854086 發表於 2013-9-20 20:11

GAME BOY的金手指GS碼轉EC碼教學


EC如何轉GS碼的,有人舉了一個例子:
[戰後EXP]
1000=3A6C,E8,03
01E86CDA
01036DDA
01006EDA
以上數字中紅色的是EC碼,藍色的是GS碼。看出規律了嗎?
首先,我看到的GS碼全部都是01開頭的,這就不說了。
接下來說數值。還是以戰後EXP為例,在DQM2裡,EXP最大值是9999999,轉換成16進制就 是98967F,16進制有6位元數位,每條GS密碼能控制2位元數位(98,96,7F),因此需要三個密碼。在這裡,EXP的值只有1000,轉成16進 制是3E8,這時需要把前端的空位用0補齊,就是0003E8,三段密碼分別是00,03,E8。這時看一下EC碼,數字分別是E8和03,只有四位,那是因為EC碼中把等於0的數位都省去了(如果經驗是999999999,EC碼後面就應該表示為7F,96,98),EC碼把6位元的數字分成3段,倒序排 列。
再後來是地址。現在我們來看一下EC碼第一個逗號之前的四位轉成GS碼的規律(具體原理我並不清楚,也 就是說說規律罷了):EC碼的3A變成了GS碼裡的DA,6C沒變。GS碼的倒數第2位似乎是在原EC碼的第1位上加了12得到的,而6C應該是“起始地 址”,由於每條GS碼只能控制2位元元數,所以需要從6C開始,依次加1,於是尚有6D、6E,共3條。
因此得到如下規律:
1、一條EC碼轉換成的GS碼條數應該與其最大值所需“逗號數”相等;
2、EC碼的第1、2位分別為GS碼的倒數第2、1位,其中要將EC碼第1位的值加12後所得值作為相應GS碼的倒數第2位(均為16進制);
3、EC碼的第3、4位分別為GS碼的倒數第4、3位,其中EC碼的第3、4位為“起始位址”,此後每條密碼需要依次加1,累計“逗號數”個(均為16進制)。
……如果還覺得抽象的話看看我改鑰匙的實例:
DQM2中鑰匙的預設序列並不是顯示在鑰匙卡上的序列,而是玩家取得該鑰匙的先後序列,這個序列如果記不清了,可以去鑰匙鑒定屋看看。第一把鑰匙的EC碼是2707,1,FF,FF,80(中心鑰匙),如果完成任務後就是 2707,41,FF,FF,80(★中心鑰匙),不過對於中心鑰匙來說意義不大。
如果“想要”把這把鑰匙換成“最後粘土鑰匙”的話,先去查查EC碼,得知第一把鑰匙的首碼是 2707,X,X。第一把鑰匙的種類是2709,X,X。而“最後”系列和“粘土”系列的EC碼分別是0,F和0,63。看來可以確定 2707,0,F,0,63就是第一把鑰匙為“最後粘土鑰匙”的EC碼了!
把這條EC碼按上面的規則轉換成GS碼則是:
010007E7
010F08E7
010009E7
01630AE7
將這4條GS碼一起輸入VBA,一看,得!果然第一把鑰匙變成“最後粘土鑰匙”啦!但這樣中心鑰匙就沒有了,以後遊戲都沒法進行了?咋辦?很簡單,重新替換一把鑰匙,不要取代中心鑰匙不就完了?
於是改第八把鑰匙,由於每1把鑰匙占4個位址(第一鑰匙占07-0A),類推,第八把就是23-26,GS碼為:
010023E7
010F24E7
010025E7
016326E7刪除之前的GS碼,讀檔以後再輸入這次的——真成啦!這下第八把鑰匙變成“最後粘土鑰匙”啦!
頁: [1]
查看完整版本: GAME BOY的金手指GS碼轉EC碼教學