最近看了一下纪念品 Keepsake这个游戏。
! |# [' {% Y! A. o c发现这个游戏使用的是\res\interface\1024x768\font 目录下面的2个图片字库。
8 {" v: I$ `# D4 d" {字库在caligula和system,各为256张单独的字符图片。 - F* u2 H; C" l V" G, f
我用OD在\bin\keepsake.dll 里找到了程序读取图片字库的函数。
O3 V1 z9 J' Y4 E抓图如下 7 v! p3 W) h1 w9 m3 d+ z5 u- H
R, U( X1 Z# ^9 M9 p
3 K: [+ t1 u) C* D% D用下内存断点的方法,找到了对话选择画面的文本显示函数
3 {5 X/ C( `6 x8 C/ o- S& I抓图如下
* ?8 E9 A$ T3 r; Z; z" Z : Q) |5 P, U% L- s0 L
, j }! ?1 i5 c$ o7 f! K- N- N
通过修改这几个地方的代码,就有希望实现此游戏的汉化。
6 [+ `) e0 ^7 @2 b: A& u5 i; `$ H7 O
4 _) S, N& p. b; C z------------------------------------------------------- * w8 ~, v1 e, a" F
2010.9.20 更新
2 E( c; @! _' q$ x2 {, |$ x
, W. Z) j9 E, G/ F* h最近又研究了一下这个游戏,又有了不少新的发现。
4 x, u8 }+ p! |! Y5 I0 [9 N我发现这个游戏用了不少opensource的东东。 5 [4 t: t* r* J( k z; p
在bin\encoding下面,我们可以找到一个叫cp1252.enc。
; F: w2 B, S4 S$ u2 R+ d. e在google上检索了一下,终于找到了这个东西的老家。
) j3 p2 X6 h" I在这里还可以找到简体中文的编码文件gb2312.enc,这是一个线索。 1 F6 |* ^: _( d7 h/ a. O
http://www.opensource.apple.com/source/tcl/tcl-3.1/tcl/library/encoding/ : X7 Z* H6 i3 J6 S0 j
在res\scripts下面有好多.tcl的文件,我查了一下,这是一种脚本文件。 % r4 _7 v6 a9 P- U% g& m) S: u
关于这种脚本语言的介绍可以看这里
K9 k1 g, k$ Z% P- z& P1 Thttp://en.wikipedia.org/wiki/Tcl ' Q9 H( _3 o) C3 x. [
然后,我根据\bin下面的好多DLL的版本信息,发现这个游戏使用了一个叫做 3 f5 Z% [( Q) N+ ~& W
Crystal Space的开源游戏开发包,具体可以参考以下网址。
3 v7 X# W8 O' d8 khttp://www.crystalspace3d.org/main/Main_Page 8 ~" \7 S$ z# W+ ^: ~( q$ K2 ^
综合以上的信息,也许可以找到汉化的方法。
- K2 D- Q& g3 s7 ^3 [
' G/ z2 m' k7 w$ U: ?http://tmml.sourceforge.net/doc/tcl/encoding.html1 F. t/ Y5 y/ _+ B
http://tmml.sourceforge.net/doc/tcl/CEncoding.html
: X( Z5 h1 r1 O4 j# D) o |