Steins;Gate PC版npa文件的解包与封包程序
我上個月才知道這個游戲,遂下載了pc版,結果找遍互聯網也沒有漢化包。
花了三天時間看完了KFC的中文影像,非常喜歡這個游戲的劇情。
貌似KFC去年就開始了漢化工作,感慨龜速的同時也非常同情一些像我一樣對日文一竅不通的ACG FANs。
因此本著互聯網分享的精神,我開始了漢化包的制作。
因為自己之前也從來沒搞過漢化這方面的,網上也鮮有教程。
摸著石頭過河,我寫了一個流程。
1.解包資源文件。(使用exsgnpa.exe)
2.導出字幕。(使用nsb2txt.exe,這個程序只能簡單的導出)
3.翻譯。(需要翻譯和輸入大量的文字,我估計得有幾十甚至上百萬字,我一個人是沒戲了)
4.制作并導回字幕。
5.打包資源文件。(使用pksgnpa.exe)
目前我進行到了2,翻譯我不懂跳過。打包程序已經寫好。
那么就剩下4這個關鍵步驟了。
要使字幕正常工作,我想到了三個方法。
1.敲字幕使用繁體字(因為大部分日語漢字都是繁體字,呵呵),然后轉為Shift-JIS編碼,利用Shift-JIS編碼中的日語漢字來顯示中文字幕。但是這個方法有很大的局限性。Shift-JIS中的日語漢字數量太少,很多字不能正常顯示,在制制作字幕時還要經常考慮換一種表達方式來避過不能使用的漢字。
2.敲字幕使用簡體字,保存為GBK編碼。然后修改游戲,讓游戲調用GBK字符集。這個方法顯示最完美。但是首先這只是我的想法,并不知道這個方法能不能行得通,再者我不會逆向工程。
3.敲字幕使用簡體字,保存為Shift-JIS編碼。重新為游戲制作一個字庫(擴展Shift-JIS,加入常用漢字),讓游戲調用這個字庫。不過貌似這個方法更玄乎也更麻煩了。
個人感覺第二種方法最省心,但是必須讓游戲采用GBK編碼。
以上均為我的yy,咱也沒漢化過游戲,不知道漢化小組是怎么解決這個問題的。
還有就是就算解決了編碼的問題,因為字幕數據塊大小不同的原因不能正常載入nss.npa。
所以需要分析nsb和map文件格式,分別為字幕文件和字幕控制文件。
我也覺得像這個老外說的文件格式好像是xml,但是又不是。
貌似是N+模仿xml語法規則自己定義的。我在分析map文件時發現采用了和npa一樣的數據排列手法,什么length,offset之類的。
官方已經發布了1.20升級補丁,應該是做了一些字幕的修復。可是使用1.10的破解主程序加載。
關于解包程序 exsgnpa.cpp
asmodean簡直就是個HENTAI,竟然寫了那么多解包程序:http://asmodean.reverse.net逆向技術很強大啊。
我的打包程序就是根據其源代碼分析了npa文件,完成了打包程序。
關于打包程序 pksgnpa.cpp
但是經過簡單測試,其他三個npa文件包括cg.npa還是可以載入的,貌似主程序沒有驗證文件大小的步驟。
可以修改cg.npa里的圖片完成圖片的漢化。
當然你也可以修改system.npa文件,來去除窗口標題的亂碼。
關于文件格式的分析
map文件格式沒有加密,有一些正常的字符。所以我是根據16進制碼來分析的,比較緩慢。
當然如果知道了文件的調用機制的話,就快多了,還是得會逆向工程啊。。。
附件為我破解過程中的一些文件,有興趣的可以下載。
至于為什么我還沒完成就發出來了。
一是讓有興趣漢化的同學可以少費點時間,
二是我馬上要考試了,估計考試完了才能繼續破解工程。
包括:
exsgnpa.cpp (by asmodean)
as-util.h
nsb2txt.cpp
pksgnpa.cpp
npa.png (npa文件格式分析)
map.png (map文件格式分析,未完成)
請用MinGW編譯。
http://u.115.com/file/dnsbvzos
有技術的同學幫幫忙。
附郵箱一枚:blxode [AT] gmail.com
總結
以上是生活随笔為你收集整理的Steins;Gate PC版npa文件的解包与封包程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 系统的启动顺序
- 下一篇: OpenVX