最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
! Q- f9 h& }7 }5 C7 a. h
, v7 y+ Z9 I9 Z* g7 d$ t: i字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。
" a3 ^' G4 Q0 k: a: E& aTTF字体在\Interface\Fonts目录里,替换后能见到效果。
! Q- t: M) _- Q' O, O看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。
# s; M& G& i' t& v1 E' k具体来说就是% s6 Z6 Z: L: D% p
# v$ O7 O8 ^; g1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。
: C* u2 E0 A9 @) Y9 I& x2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。
5 D/ L2 Z. S o9 x; S* Z
7 {2 H' I$ a7 G$ W/ F& Z. n6 G/ b0 v感觉只要想办法去掉字符边界检查就行了。
6 K U; S& [& D/ N O, w* G由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。# m% i' s q/ o% g: f2 Q
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。+ i- \+ R* z$ [5 E; D0 h- ]/ o
2 R, h" m2 Y! ]. h" z! K& u J本人对此游戏的分析暂时告一段落。 |