最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。! w2 g# ^6 b3 l& f4 f% g
$ q/ f% {- \' Z. v( E4 a
字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。
h; L! S! O* \/ t* BTTF字体在\Interface\Fonts目录里,替换后能见到效果。
' f, a( m9 a$ z* Y8 z7 \% y# ]9 ~看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。
- n1 b; Q! d' F$ a+ M具体来说就是9 }( k6 e H9 W' f& l
. b" L8 S) e2 C9 b) {
1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。
l* Z% P) r9 \" C1 O$ E0 {2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。; s ~: |' d$ F+ Q8 B
% a) f$ Z0 |: }. b+ N
感觉只要想办法去掉字符边界检查就行了。
7 |/ Y1 J- H% P8 G) Q- H" Y由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。9 @% }8 {' [& n Z9 e
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。 r$ E. n: D% I* j- v
9 O8 k. _+ z& {' C* V/ i& y本人对此游戏的分析暂时告一段落。 |