最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
8 b, w# T2 O% X0 R! u$ _8 o. F! @" u8 f5 c3 a$ ?. ~) p, x+ F9 U2 G) u
字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。
+ q4 d3 N6 n: v! _. C) zTTF字体在\Interface\Fonts目录里,替换后能见到效果。& w0 V& x+ ?" R) i g; y1 U
看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。8 u4 ~( R$ l; l1 e0 r8 }( J% f
具体来说就是
+ x: G5 b% _9 t7 L& q
0 @2 m" b- \0 W3 w1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。
2 l/ p( O# i3 F/ ^ R8 J: ]5 L F2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。8 ~3 ^! ~, I' z5 Z
" ?" D$ N" t v5 k8 w# f
感觉只要想办法去掉字符边界检查就行了。7 z: ?5 e; m6 j* Z: m5 f% w
由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。! T8 f2 n( E& v6 j6 E
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。
+ m, Z0 t5 ]! D3 P0 ~4 V
( P' ]) }% a8 z' h' b0 y本人对此游戏的分析暂时告一段落。 |