close
一般的情況下,每個遊戲之中總會有部分空白區域,換句話說文件的內容並不一定連續,我們可以適當地利用這些空白,如果這些空白仍然不夠使用就可以把新字庫生成到原來文件的末尾區域以達到擴容的目的。新字庫擴容後還需要修改字庫地址的計算公式,很多時候文件中都有一個基址指針,適當地修改就可以達到目的,不過尋找起來有點麻煩,倘若運氣好就是一個絕對地址,就像文本腳本的指針一樣,這樣尋找起來就比較簡單了。還有兩點需要注意:即便是在遊戲末尾添加的字庫也不能刪除原字庫,如果刪除了會使字庫後邊的程序遷移而失去原有功能,指針地址會指向錯誤的地方,所以只能替換,絕不能進行添加刪除等會造成位置移動的操作,這也是整個漢化過程自始至終都要注意的。有些遊戲的容量必須使用標準的容量,特別是任天堂的遊戲。1Mb 2Mb 4Mb 8Mb 16Mb 32Mb等等,這些是任天堂定的標準容量,如果字庫擴容後超出了上一級的標準容量就必須滿足次級的容量。比如說一個8Mb的遊戲擴容後可能到了10Mb,我們就需要繼續在文件末尾添加「垃圾」一直到16Mb為止,某些遊戲在文件的頭部還記錄了整個文件的校驗信息甚至文件的容量大小,擴容後這些地方也需要改,比如SFC。好在對於GBA來說並沒有這麼多的關聯地方。 
  
新字庫的生成最好使用工具來完成,除非你覺得有那份閒情逸誌喜歡手工描繪。生成前需要把翻譯文本中所有用到的漢字都統計出來(可以使用《Counter》),然後再生成,這樣做既避免了字模的重複又不會產生垃圾字模。

字模生成後就可以製作新碼表了,其實這個步驟可以在生成新字庫的時候一起完成了,每添加一個字模就產生一個對應碼,依次進行下去。這裡的字符編碼並不是由你自己定義,而是由原編碼來決定的。比如在原碼表中「0001=A」,在你把「A」的字模替換成了「啊」以後對應關係就是「0001=啊」,字符編碼是用作位置計算的,特別是在擴容字庫後一定要認清楚對應的位置關係。整個字庫都導入完畢後可以使用《TLP》這些工具再次查看一下字庫是否已經按照要求排列好了。

以上都準備完畢並確認以後就可以導入文本了,這個過程基本上和導出相逆,同樣建議自己編寫工具完成,《SIN》實在不怎麼樣。導入的時候注意整體的統一,如果個別句子移動了位置還要考慮是不是有指針等等,每個細節都需要去考慮,考慮得越多出現問題的機率越小。

導入完成後基本上遊戲的文字漢化就結束了,最後就是找幾個愛玩遊戲的朋友適當測試一下,看看有沒有什麼BUG的。對於GBA遊戲來說最好是VBA模擬器上和GBA遊戲機上都進行測試。雖然說VBA模擬器遊戲兼容性很高,但模擬器絕不能簡單地認為是電腦上的遊戲機,等你對模擬器實現原理有一定瞭解後就知道為什麼要這樣說了。換句話說就是這個世界上沒有100%兼容的遊戲模擬器,除非遊戲機也使用Inter的80x86CPU。在發現問題後記錄下詳細的情況,以便後期進行修改並再次測試。模擬器上的測試可以適當使用記憶功能來進行測試,再次提醒大家,慎用模擬器的即時記憶(VBA的.sgm),盡量使用遊戲自己的記憶功能(VBA的.sav)。
 




小結:

多數時候,一個遊戲並不是只有一個字庫系統,有兩個三個是很正常的事情,各個字庫分工不同,有些是用來顯示正文的;有些是用來顯示道具名的;有些是用來顯示人名的等等。比如《光2》就有兩個字庫系統:遊戲開始輸入玩家姓名的時候使用的8*8的小規模的字庫,而遊戲中的文字使用了16*16的主要字庫。基本上每個字庫都是獨立存在的互不影響,這時每個字庫就可以單獨研究並進行修改,但有時候也是有聯繫的,比如《光2》雖然有兩個字庫,但這兩個字庫是重疊的,8*8的取名字庫的碼表和16*16字庫的開頭部分是一致的,因此16*16這個字庫的最開始的百多個字符將會出現在取名系統裡,為了符合取名的意義,所以也要適當地排列一下字模的前後順序。又如《SD高達》裡面12*12的字模和8*12的字模就是完全獨立的,互不影響。

到這裡本教程的文字漢化的基本原理介紹就結束了,教程的介紹相對淺顯,還有很多很多問題無法通過幾萬的漢字就能說清楚的,多數時候遇到問題都需要你自己去解決。教程介紹的情況都是最基本的,但實際情況下很多時候都會存在壓縮格式甚至OBJ對像這些比較難以解決的問題。要想修改的話就必須先進行解壓縮(可別以為需要Winzip WinRAR什麼的),因此就必須得研究壓縮的算法等等,這些都是需要進行ASM跟蹤破解遊戲程序。只有ASM才是破解遊戲最萬能的方法,下一節適當地為大家介紹一下ASM,不過你得對彙編有一定瞭解才行。
arrow
arrow
    全站熱搜

    ohgi01 發表在 痞客邦 留言(0) 人氣()