大家好. 小弟是Kanon中文化成員中的一位. 聽哈泥蛙兄提到您們在中文化AIR, 因此小弟把目前我所知的資料寫在這兒. 這是我分析Kanon的SEEN.TXT之後所知道的一些結果.
首先請到這個網頁:
http://www.multimania.com/usapyon/
這邊有大量的珍貴資料可以用. 包括將SEEN.TXT在「保留控制碼」的狀況解開的程序. 以及AVG32的相關資料.
1.我們測試的結果, AVG32中是有文字encode限制的. 除非成品中的中文全部要用"日文漢字"來代替, 否則光是將文字中文化後壓入SEEN.TXT中亦無法使用.
而關於這點, 如哈泥蛙兄所說, 我們這邊的負責人程序的人已經離開, 我們手邊也沒有拿到相關技術資料, 幸好嘉神·零兄似乎已經解決了這個問題? 如果可以, 希望能夠提供給我們這方面的技術.
2.SEEN.TXT
這是一個內含大量控制碼的文件檔. 用上面那個網頁中的Vadecode解開SEEN.TXT後, 會得到許多SEENxxx.TXT的小檔.
但是, 將文字翻成放回SEENxxx.TXT中會發生一句日文翻成中文之後, 字數不一定會一致的狀況. 這樣在故事進行到許多SEENxxx.TXT時會出現錯誤. 光是insert byte或是delete byte也會錯誤. 因為SEEN.TXT中連這個都有記錄.
這邊有SEEN.TXT的各種已知命令列表:
http://www.creator.club.ne.jp/~jagarl/avg32_commands.txt
解決字數不同的問題, 目前我們所知的有兩個.
其一是, 該字數限制不是以「一句話」來計算, 而是以「一段場景」來算. 「一段場景」有多長, 請看看解開後的SEENxxx.TXT, 被兩大群控制碼夾住的那些文字就是用來計算的「一段場景」的量. 只要刪減整段的文字敘述, 使其長度與日文原文相同即可.
其二是, 找到記錄文字量的控制碼, 修改它.
關於這個方法, 目前我所知道的相關控制碼是上面命令列表中的"jump系"部分. Kanon的SEEN.TXT是在0x1C(無條件跳躍)及0x15(條件式跳躍)控制區段後面以一個int(4 bytes)來記錄SEENxxx.TXT的某個target offset. 只要重新計算新的target數之後改寫即可. AIR的我則不清楚, 但我想應該類似才是.
又, 雖然我們還沒有開始做, 但我想這個部分可以利用修改xkanon, 或是這邊這個:
http://www.geocities.co.jp/Playtown-Denei/1506/
將Kanon DreamCast的人物語音解出來的程式來寫. 這個有附source code, 是VC++.
3.修改圖像
有些文字不是存在SEEN.TXT中, 而是圖檔. 這個問題我們已經解決了.
這邊有可以把BMP file和PDT file互相轉換的程式:
http://www30.cds.ne.jp/~yukinaka/eureka/library/trial/
xkanon中的小程式visarc也一定要準備好.
光將BMP->PDT行不通. 將編好的BMP檔用上面程式轉成PDT時, 有些檔會出問題. 必須用visarc中輸出PDT檔的"mask"的功能, 將輸入的mask file準備好. 然後使用上面BMP->PDT的程式, 轉檔時要load mask進來才可以.
4.SEENxxx.TXT壓縮回SEEN.TXT
這個我們也還在測試. visarc有這個功能, 但「壓縮」回去的file size比未「壓縮」前大.
若不是很在意這個, 可以將GAME.INI中的:
#DIRC.TXT="DAT" =P:"SEEN.TXT"
改成
#DIRC.TXT="DAT" =P:N
並且將SEENxxx.TXT放在SEEN.TXT的directory中. 如此, AVG32應該不會讀SEEN.TXT而是SEENxxx.TXT, 也就是說, 即使不壓縮回去也可以使用了.
以上. 若是能對AIR的中文化多少有些幫助就好了. 希望兩邊此後也能互相合作.
——————————————————————————————————————
把所有原始seen***.txt拆开之后,修改game.ini为
#DIRC.TXT="DAT" =P:N
得出来的结果是可行的,AVG32将会去读取拆开的档案并且正常运作。
然后AFIC所说几个测试的程序,这边列出曾经做过的部分:
1.没有试过,不过应该是可行的。
2.会出现乱码,因为AVG32会以日文编码的方式来显示繁体中文,而且字数与原文不同的话,程序将会强迫终止执行。
3.应该可行,因为我昨天已经成功用visarc把翻译好的格式压缩回seen.txt。因此seen.txt的格式应该是如AFIC所说,只是把所有档案打包起来,作个简单编码之后加个文件头罢了。
总之,visarc是没有问题的,现在就看你们要用日文汉字来作,还是研究如何让AVG32的系统显示简体中文啦。这边会在成员把手边的事情结束之后,全力进行内文的翻译作业,至于程序部分的脚步会暂缓下来,因为现在唯一的限制只是字数检查,而这也是可以简单解决的事情。
————————————————————————————————————
补充:
1.解开并删除SEEN.TXT中的某个SEENxxx.TXT, 将得到的档案在「不作任何处理的状况下」, 使用visarc压缩回SEEN.TXT中, 原始的AVG32「可以正常执行」. 但, 使用visarc这个program来list SEEN.TXT中所有的SEENxxx.TXT来看, 被压缩回去的SEENxxx.TXT已经变大了. 为何生成的档案已然不同, AVG32却仍然能够正常读入, 这点我们也尚未查明.
2.设定#DIRC.TXT="DAT" =P:N, 随便找一个SEENxxx.TXT, 使用日文码修改内文之後, 若字数相同, 则执行状况完全正常, 否则可能会出现错误. 说「可能」是因为「有些档会错误, 有些档不会」. 其关键为何, 目前尚未确定.
3.visarc并没有限制编码. 有限制的是AVG32执行档. 因为哈泥蛙兄已经使用visarc压缩修改後的档案, 并成功执行了.
若想测试visarc, 却没有Lunix或FreeBSD, 可以使用cygwin. 我们这边使用cygwin生成了visarc, 它可在dos mode下执行, 不需要Linux或FreeBSD.
如果需要的话请告诉我们, 我们可以用email把visarc寄过去.
————————————————————————————————
多谢哈泥蛙的回答,但是还有一些问题希望指教,谢谢。
首先,我说的1,2都是在SEEN.TXT解开成SEENxxx.TXT,并把这些SEENxxx.TXT散放在文件夹中,改变game.ini条件下作的。
但为什么,2中字数与原文不同会终止,而你却认为1不会有问题呢?
而且我不知道你大概用的是什么big5的汉字,大部分big5汉字好像都和日文汉字兼容,如果这个字‘呢’沒問題的化,基本上2算是成功的。而且这时如果开启南极星等翻译软件强行转换内码为big5的话如何?
就三来说,请问压缩是正常完成了,但是压缩完的文件是否可以执行呢,这里当然要确保你翻译的部分被执行了。而且压缩之前呢,也就是你的翻译方法是用日文汉字呢,还是直接就是big5?字数方面是否相同呢?
关于visarc,我要说的是,现在看来无论何种编码的SEENxxx.TXT它都可以生成SEEN.TXT,但这并不一定代表正确,也许是设计visarc的人根本就没有考虑到会有人输入jis以外的字符,据我的经验,alicesoft也有一套编译系统,那个系统也是通过一些源文件生成类似SEEN.TXT的剧本文件,那个系统相对visarc要成熟的多,那个系统使用的是s-jis编码,如果输入了非s-jis的字符,那么编译根本无法进行,因为,我们输入的中文在经过编译之后,有可能和程序代码生成的编码冲突,因为SEEN.TXT并不能直接打开,所以文字是经过处理的,同样,那些跳转之类的命令应该也是经过处理的,显然,文字和编码的编译方法应该是不同的,(文字大多应该是压缩,代码则是转换)这就会导生成结果相同和者相似,进而导致冲突,也是我担心的。
〉现在唯一的限制只是字数检查,而这也是可以简单解决的事情。
这个么,我并不这么认为,当然,你翻译的比原文短的话添加空格就可以了,但是如果长呢,日文可以省略的东西在中文并不一定都可以省略,所以我认为字数限制也是应该解决的问题之一。
最想知道的当然是台湾方面打算用日文汉字还是big5码?
————————————————————————————————————
后面不转了,具体看的话在这儿
http://www.sakurasky.net/air/guestbook/show.asp?id=244