最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
; W/ Y, \7 z% H& }
' Q" L* f- j2 b字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。# v! ]* p* u/ n6 ?# [ u! R
TTF字体在\Interface\Fonts目录里,替换后能见到效果。
3 |9 n$ ^2 h( O* j8 [- D/ y E8 S看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。
+ X' E) `7 Y9 N0 `. x& v具体来说就是
& i6 b) q; n) R" Q) n9 a+ @3 U+ e/ H* q
1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。! B6 P7 c$ K# k( f/ G% P. B# r
2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。
8 p( W1 u2 R7 V& T) f& j. O$ _* W3 s4 H |0 G6 R7 k. [* T
感觉只要想办法去掉字符边界检查就行了。3 X! M7 p; {0 k. F9 H" F
由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。. Y! Z# S2 {: X4 ~$ h( t, U
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。2 W+ u1 k7 s6 K8 n
. J V- T7 k/ S: ?1 ~# |2 Q( p7 d本人对此游戏的分析暂时告一段落。 |