最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。" ~! s+ a7 f5 k& N: e
, O0 ]( t+ q3 i5 O( q% u字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。
1 c' c0 S1 v- E4 z% h4 L" \TTF字体在\Interface\Fonts目录里,替换后能见到效果。
( f" Y5 F5 p) M: |看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。7 D: q" ^2 P1 \, Q. ^ b& w9 a
具体来说就是2 \2 N0 |& [5 g% r# R3 j3 v
! ?) V0 w: N X; Y, o1 M) ?+ F5 Q1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。
/ y7 A2 ^7 q8 u: h( t# N2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。
7 Z1 e3 W; g( D8 H6 ?0 K. D- Q {; D2 ~# n
感觉只要想办法去掉字符边界检查就行了。* D U& n6 z( t$ _: p
由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。7 I% X: r4 ]# j2 j& v. A
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。" f/ @9 E* n' K7 s7 t2 E4 W
) S' L+ _8 k% M* c
本人对此游戏的分析暂时告一段落。 |