最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
- @, s2 t! J- _# {7 A8 x. ?, _" Y! o
字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。# _/ C) [5 _, j$ `. X' Q
TTF字体在\Interface\Fonts目录里,替换后能见到效果。
3 z3 y* ^& P! I% N& K5 ~; H! v* q3 I看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。 o \7 t( ~5 z; B
具体来说就是
( o. L: y6 ]& O/ W' |' d6 f
1 m0 Z/ z% m% o- q8 h8 `1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。+ `/ r6 Y/ s5 g; m( e
2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。, n( a- W" H* }- P' B0 X6 I' Q/ ]
* d$ r* A' F) F; U! x) G k: M感觉只要想办法去掉字符边界检查就行了。0 V1 } f7 B$ ?; [8 u+ a
由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。
5 B4 W" p* N" H! `找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。) a9 K" Q$ C# g( B: O& `8 Y) h
9 q! T5 y% l& a
本人对此游戏的分析暂时告一段落。 |