最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。3 q. p& x; `: ?! }4 F* }6 k6 y
# ` z7 Y# K$ p7 r
字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。: ?' K) n& g* L. k( s; v
TTF字体在\Interface\Fonts目录里,替换后能见到效果。
d2 V$ W5 m/ l; I2 H3 d% ]6 Y看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。( [* G* r- u4 c
具体来说就是
) j" T* x+ I$ v
8 v& }1 d6 U, p- r( q: j$ T. K1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。
; I4 h! k. O5 Q+ A9 H; ?2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。6 r/ P& q" o' L4 U# l
m6 i1 x$ v3 |% f% n感觉只要想办法去掉字符边界检查就行了。
# ~- z2 t) D" P/ Z由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。
( L6 t, D% F/ a# Z$ \! n/ }找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。
1 g% U$ _0 S E: y# c- |% z, y# Q7 B; [$ }5 K4 x% C: ]! ]5 B
本人对此游戏的分析暂时告一段落。 |