小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

漢化基礎(chǔ)教程——文字篇(三)

 成長的園地.a 2011-10-09

在掌握字庫修改和編碼查找文本修改后基本上就掌握了游戲機游戲漢化的原理了,但僅僅懂得原理也還不夠。雖然我們會使用《TLP》《UE》等這些工具來修改游戲,但這些工具的初衷并不是針對漢化設(shè)計的,面對如此多的文字內(nèi)容要一點一點地人工修改,即便是神仙也會感覺到累,因此我們就有必要命令電腦來幫我們做一些規(guī)律性的操作(我很嫉妒電腦有光速一般的計算能力)。例如文本腳本的導(dǎo)入導(dǎo)出、中文字庫的生成等等。

  下個定義:文本腳本——文本內(nèi)容依照指定的編碼所對應(yīng)的十六進(jìn)制數(shù)字串。例如上一節(jié)找到“キャラクター……”的腳本“ 58 00 99 00 78 00 59 00……”。從這一段的特征上我們可以判斷出“0058”對應(yīng)“キ”、“0099”對應(yīng)“ャ”等等,依此類推就可以得到該游戲的全部文字編碼。得到了所有文字的編碼后就可以編寫程序,讓電腦幫我們把這些數(shù)字化的文字給轉(zhuǎn)換出來(導(dǎo)出)便于日后翻譯,在翻譯完后還要利用程序把翻譯好的內(nèi)容導(dǎo)入游戲程序中。文本腳本的導(dǎo)入導(dǎo)出實現(xiàn)的手段相對比較多,如多你稍微有一點編程能力的話還是最好自己編程,畢竟每個游戲都有每個游戲的特殊性(見得多了自然就會感覺到的)。如果實在沒有這個能力只有借助現(xiàn)成的工具了,比較常用的就是《Script Extractor》和《Script Insertor》,兩者是雙胞胎前者導(dǎo)出后者導(dǎo)入,無論你采用自編軟件還是使用《SEX/SIN》都需要編寫一個碼表文件。前面說過編碼的集合就是碼表,導(dǎo)入導(dǎo)出工具程序根據(jù)碼表說明的對應(yīng)關(guān)系來轉(zhuǎn)換數(shù)字和字符的,碼表就如同一本數(shù)/符字典。

  碼表編寫很簡單,Windows的記事本程序就可以編寫了,格式上不同的工具會有不同的要求,如果是自己編寫的處理程序格式可以自己定編寫格式,不過最好還是采用目前通用的書寫格式比較好。通用格式為:

(字符編碼1)=(字符1)
(字符編碼2)=(字符2)
(字符編碼3)=(字符3) 
……

編寫的時候一般是按照編碼從小到大的順序編寫的。以下是我書寫的《光明之魂2》碼表的部分內(nèi)容:

《光明之魂2》的原始字庫有七八百個字,一行一行地寫也確實費事,書寫的時候注意積累經(jīng)驗。小技巧:先用EXCEL(不會沒用過吧?)創(chuàng)建形如這樣的表格:

然后往下使用粘貼復(fù)制大法,一分鐘就能搞定所有的編碼了。接下來再對照《字模精靈組合器》里顯示的字模一個字一個字地輸入C列(老實點吧,這里就別想著用程序幫你寫了。電腦把字庫當(dāng)圖片了不會認(rèn)識的。OCR可是世界難題喲,如果你真的寫出這段程序的話就平步青云了,呵呵!?。??!蹲帜>`組合器》是設(shè)計成16*16字的顯示模式并伴有顯示字符位置的功能,每寫一大段就對照一下位置,剛好可以避免遺漏掉字符(錯位了可不得了呀,導(dǎo)出的文本會大變樣)。等所有的字符都寫完后就把全部內(nèi)容粘貼到記事本中,最后替換掉制表位空白(TAB)就可以了。寫完后一定要檢查最后一個編碼,代入游戲中看是否正確。檢查完畢后就可以保存下來了,tbl是碼表的公認(rèn)擴(kuò)展名,其實個人認(rèn)為txt也未嘗不可,兩者的實際內(nèi)容是一樣的,而且這樣更便于查看編輯。

  在《光明之魂2》的文本腳本之中你還會發(fā)現(xiàn)一些形如“FFF?”這樣的編碼,而這些編碼在游戲中并沒有具體字符與之對應(yīng),而是出現(xiàn)的主角名字、字符顯示速度減慢、換行、分段等等的控制功能,這樣的編碼稱作控制符。寫碼表前不僅要摸清楚每個字符的編碼而且還要弄清楚游戲中有多少控制符,每個控制符的具體功能是什么。我所研究出來的是:F5FF=主角名、F6FF=主角名、F7FF=數(shù)值、F8FF=恢復(fù)速度、FAFF=慢速、FCFF=主角名3、FFFF=換行、FEFF=塊結(jié)束、FDFF=段結(jié)束等等。至于這些控制符該不該往碼表文件里面寫就要看程序是怎么設(shè)計的了,絕大多數(shù)程序都是要求從外部鍵入換行分段這些關(guān)鍵控制符的,其他只影響文本顯示的控制符一般就寫入碼表,同文本一并導(dǎo)出。對于像減慢速度、變換字體顏色這樣的控制符無法在導(dǎo)出的純文本文件中體現(xiàn),就可以將它們用特定的符號表示,自己記清楚哪種符號表示什么。還有一些不知道功能的控制符也可以用某個特別符號來表示,如果這樣的控制符很多的話道出文本鐘就會相應(yīng)地出現(xiàn)過多的符號不便于瀏覽翻譯,這時可以讓程序把這些未知的控制符的值輸出到導(dǎo)出文本中就可以的。不過要注意,因為這些文本在翻譯后還要再次導(dǎo)入游戲中,同樣需要靠工具程序完成,因此在設(shè)計導(dǎo)出程序的時候盡量考慮一下導(dǎo)出時候的處理,例如對未知控制符的值在導(dǎo)出的時候就可以加上“[ ]”符號括起來等等,導(dǎo)入時候程序判斷到有這個符號便照中間的內(nèi)容直接寫入游戲中,而不用轉(zhuǎn)換。辦法都是自己想、自己定,初次接觸難免有考慮不周的地方。

  碼表做好后接下來就該搞清楚游戲ROM中哪些才是腳本內(nèi)容?我們該導(dǎo)出哪些?一般地說在游戲文件中文本腳本都是一句接一句地放在一起的,構(gòu)成腳本區(qū)??赡芩械奈谋灸_本都放在一起也可能腳本會分割成幾個大的段分別來放置,前者為數(shù)更多。只要我們找到了一段腳本區(qū)的最開始就可以順次導(dǎo)出了,所以找出腳本頭是最關(guān)鍵的。至于查找實際上是不用什么特殊工具來完成的,在這里靠工具不如靠自己肉眼觀察。這次我們從《光明之魂2》第一關(guān)的第一句開始找起。

到了這里大家已經(jīng)整理好了碼表,所以就可以把這句話直接翻譯成編碼后用《UE》查找就可以了,完全不用上一節(jié)介紹的方法,那樣操作太復(fù)雜了。大家頭腦一定要清晰,我們所做的每一步都是由針對性的。兩分鐘搞定,查找到0x368578,這就是句子的開始。根據(jù)一系列的試驗我們發(fā)現(xiàn)一句話的構(gòu)成:開頭4位“00 00 01 00”為腳本句子的開頭(在與NPC對話的時候這里標(biāo)示說話人頭像的代碼),然后緊接著就是句子主體,其中還包含一個換行符“FFFF”(因為游戲文本區(qū)顯示14*2個字符。由于該游戲并沒有自動處理換行的程序,換行是靠控制符實現(xiàn)的),“FDFF”是一段的結(jié)尾符。等我們總結(jié)出腳本的特征后就在附近瀏覽看看哪些地方還有這些特征,有這個特征的多半就是文本。經(jīng)過一陣的觀察發(fā)現(xiàn)從0x368574以后的很大一塊區(qū)域具有該特征并具有連續(xù)性,而這之前的區(qū)域沒有這個特征。

基本上就可以認(rèn)為0x368574就是腳本的開頭了,起碼應(yīng)該是這一塊腳本的開頭。至于還有沒有其他的先可以不考慮,等到文本導(dǎo)出后再說。至于腳本的結(jié)尾到不用太在意去找了,導(dǎo)出的時候多導(dǎo)出點超出也沒什么關(guān)系,大不了把后邊的多余部分刪除掉就完事了。

  文本腳本導(dǎo)入導(dǎo)出工具強烈建議有能力者自行編寫!這可以讓你更加深入地理解腳本的原理。本人漢化《光明之魂2》采用了PGCG漢化小組自行設(shè)計的一套導(dǎo)入導(dǎo)出工具,經(jīng)過以上分析并編程得到導(dǎo)出文本(片斷演示):

<368578> •••ヒソヒソ
<36858E> •••え?そうなんですか? 
<3685B0> シッ! 今•••物音がしたぞ
<3685D2> あ•••今の••• 私のおなかの音です ……

  大體上介紹一下《Script Extractor》?!禨cript Extractor》是使用得比較多的導(dǎo)出工具,該工具是以字節(jié)為單位導(dǎo)出數(shù)據(jù)并轉(zhuǎn)化為文本的,所有控制符要求寫入碼表中。“line: xx”表示行結(jié)束;“msg: xx”表示塊結(jié)束;“sect: xx”表示段結(jié)束;“prog cont char: xx=...”表示控制符,其他功能可以查看軟件的README,有詳細(xì)說明。

從上到下依次輸入的是碼表文件名、ROM文件名、導(dǎo)出文本文件名、導(dǎo)出開始地址、導(dǎo)出文本量(字節(jié))。該工具有個最大的弊端就是導(dǎo)出的文本段沒有注明腳本的地址,這會給導(dǎo)入制造很大的麻煩,好在程序包里面附帶了C++源程序可以修改,不過不懂C++還是慎用該工具?!禨cript Insertor》主要功能是導(dǎo)入,操作方法和《SEX》差不太多,具體運用還是查看說明文檔。除此之外還有一款國產(chǎn)的文本工具《菜鳥》,是由漢化者“菜鳥小生”編寫的,功能設(shè)計上比較全也比較雜,初學(xué)者不太容易掌握。這個工具可以在《游戲漢化聯(lián)盟》網(wǎng)站上下載。

  在這節(jié)的最后我再談?wù)動嬎銠C編碼的問題。雖然之前我說過計算機編碼和游戲編碼一點聯(lián)系也沒有,但GBA游戲最初也是在電腦上編寫的,某些程序員為了編寫效率降低成本也可以說是懶惰、偷工減料,部分甚至全部采用了計算機編碼,如果是這樣的話倒是給我們漢化時編寫碼表帶來了不少方便。字庫編碼是字庫組織的依據(jù),不同國家和地區(qū)有不同的編碼標(biāo)準(zhǔn),和中文字庫有關(guān)的常見編碼有:單字節(jié)編碼、GB2312-80、GB12345-90、GBK、Unicode編碼、ISO10646 / Unicode字符集、GB18030-2000、BIG5編碼、方正748編碼,下面簡要介紹幾個比較常用的:

  “MS Windows:Windows Latin 1(ANSI)”這是Windows操作系統(tǒng)最基本的默認(rèn)編碼,在記事本的另存為對話框里可以清楚地看到這個編碼。

  “GB2312-80” 全稱是GB2312-80《信息交換用漢字編碼字符集 基本集》,1980年由中國頒布,是中文信息處理的國家標(biāo)準(zhǔn),在中國大陸地區(qū)及海外使用簡體中文的地區(qū)(如新加坡等)是強制使用的唯一中文編碼(時不時感到自豪呢?)。在中文Windows3.2和蘋果OS中就是以GB2312為基本漢字編碼,Windows 95/98則以GBK為基本漢字編碼、但兼容支持GB2312。該編碼共收錄6763個簡體漢字、682個符號,其中一級漢字3755個,以拼音排序,二級漢字3008個,以偏旁排序。該標(biāo)準(zhǔn)的制定和應(yīng)用為規(guī)范、推動中文信息化進(jìn)程起了很大作用?;ヂ?lián)網(wǎng)上的大多數(shù)簡體中文網(wǎng)站都是采用這個編碼的,在網(wǎng)頁內(nèi)查看一下編碼就知道了。在1990年國家還頒布了“GB12345-90”字符集,主要添加了非常用字和繁體字部分,以適用于古籍等的編定。此外中文字庫還有“GBK”、“BIG5”等等,后者在中國香港澳門以及中國臺灣得到廣泛使用(知道為什么以前玩臺灣游戲會出現(xiàn)亂碼了吧?需要切換一下編碼的)。還有一種特殊的編碼“Universal Multiple Octet Coded Character Set(Unicode)”,這是一種包含有中日韓等多國文字的編碼集,是由美國人頒布的(吃飽了就該看好世貿(mào))。

  “Shift-JIS”、“EUC-JIS”等等這些都是鬼子們國內(nèi)使用編碼,在游戲機游戲中前者更為常見,雖然游戲本身用不到這么多字符但不用自己去整理文字了,省事啊。

  以上這些編碼的詳細(xì)標(biāo)準(zhǔn)以及碼表很為龐大,這里考慮篇幅不詳細(xì)介紹,有興趣可以查看文字處理方面的網(wǎng)站,比如“方正字處理”等等,這是一門學(xué)問別小看了。

小結(jié):這一節(jié)介紹了文本腳本的導(dǎo)出,理論并不深入但過程比較繁瑣,大家要理清頭緒。在編寫字庫的時候又有幾點:日文漢字輸入可以安裝一個日文輸入法,以前95下玩港臺游戲所使用的《南極星》就不錯,Windows自帶的字符映射表也可以,里面有所有日文字符的(還有尼加拉瓜文字?厲害)。書寫編碼的時候也要注意到導(dǎo)出工具的特征,是不是需要高低反等等,就拿上面我編寫的那個《光2》碼表來說,由于導(dǎo)出工具是以字節(jié)為單位讀取數(shù)據(jù)的(編寫程序上要相對簡單些吧),所以就需要高低反;你自己編寫工具是雙字節(jié)的就不需要反了。書寫字符的時候盡量采用ANSI或者GBK,對于游戲中的特殊符號找不到的可以使用近似符號代替,反正我們又不去翻譯符號,不過還得記清楚符號之間的對應(yīng)關(guān)系。如果漢化的游戲文本很大,那千萬不要使用《SEX》,因為沒有標(biāo)出文段地址,而大多數(shù)情況下翻譯后的中文句子字符數(shù)量遠(yuǎn)遠(yuǎn)小于日文句子,如果沒有地址標(biāo)示在寫入的時候只能順序?qū)懭耄谑蔷蜁l(fā)生腳本前移的問題。上面的《光2》文本導(dǎo)出演示可以清楚地看到每句前都有地址標(biāo)示。自己在編寫工具的時候也一定要記得讓程序標(biāo)出地址,切記!!。還有就是本節(jié)之所以不以上一節(jié)的那句“請選擇……”開始查找是因為對話文本的情況最為復(fù)雜,控制符也最多,我們在導(dǎo)出文本之前一定要整理出所有的控制符一個都不能漏掉的。還有一個原因就是游戲的文本腳本一般都是按照出場的先后順序?qū)戇M(jìn)游戲內(nèi)容中的,從最開頭的內(nèi)容找起這樣更容易發(fā)現(xiàn)腳本頭部。不知道大家玩了PGCG漢化的《光明之魂2》中文版沒有?游戲中的文字顯示的時候偶爾花屏甚至造成死機,這全都是因為我當(dāng)初在書寫碼表的時候沒有分析完整,把其中一個為“FFFE”的控制符給漏掉了,到后來導(dǎo)入的時候恍然大悟,灰心喪氣差點沒氣死,最后還是手工一句一句導(dǎo)入的,不得已采用了一些非常手段,最后還是造成了游戲運行的不穩(wěn)定,而VBA模擬器對這個游戲本身兼容性也有一點問題(絕非推卸,那個飛天的惡魔天使賴著不下來和中文版沒有關(guān)系)才使游戲出現(xiàn)這個BUG。以身說法是為了讓大家知道不在意細(xì)節(jié)會釀成怎樣的后果?大家一定要細(xì)心!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多