最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
1 `. s, Y0 r& P! e/ L/ ^ e9 E9 P( {( O! X. ~ a- m- E' n" S
字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。
& t- }3 q, t& T$ Y- {$ p& VTTF字体在\Interface\Fonts目录里,替换后能见到效果。* a' @) U/ B9 o
看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。$ J- P5 u. G: O
具体来说就是
0 U9 L* k6 r3 `" Q" H% G5 t9 ~0 n& U- p0 W' N
1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。9 g' j& K9 P& A& p8 T" Q
2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。- K+ g7 D$ w* g0 p( d3 i$ O
. m& K& W+ p6 C3 W0 i) C9 d8 N+ o$ g
感觉只要想办法去掉字符边界检查就行了。* \& c! y' g( g( C V3 c
由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。/ K! V+ h: b8 j- p6 w/ E' ~4 K
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。( D) p+ D W% z+ E1 x
! F- A' [; O" I2 y本人对此游戏的分析暂时告一段落。 |