之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 . }& J- {- w$ r9 X. Q/ T. e
$ A& w& j* E; A
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
0 z/ n9 Q' `5 M5 L+ @# ^6 D+ P, g3 X; i9 W& z& V) J
相关内容可以看这里 ) K- j) \6 {: f/ l0 y: V
http://www.si-gamer.net/gulikoza/dosbox.html
: n0 u. u4 ^$ O+ Mhttp://www.si-gamer.net/gulikoza/ ! Y( v7 y+ z }; ?: d2 M& \
1 c) @' Z3 I0 t) N
DosBox的小方块测试如下 ' f* y4 l2 D$ n# } |0 z
https://www.chinaavg.com/read.php?tid=17242
4 Z' T8 N X8 C( W- I1 B
1 y/ q& n2 j- K4 E* ^& i8 u暂时写到这里,有新的发现再更新。 + M5 ~* w6 c; e: b- x2 Q
7 e" k E/ f2 s7 c-----------------------------------------------------
3 p5 a/ O6 F& F. X% v2010.4.6 更新
' U1 g. G, T* J r }% Y- ]& y) W; D放上支持directx版本的dosbox的源代码。, C5 ^: `% W* r+ K+ _$ }0 \& E1 I" S
写一下对于画面简单的游戏的汉化思路。3 l7 ~( i7 \8 x9 L6 c
比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
" V: I8 ]8 x8 E/ [4 o' C8 J' x比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode) X* h n9 b% e! G
和void ANSIFile::close()函数。
8 w$ O9 l! O! P7 _1 Y- p+ `# h! Z: K% q3 @: w% J. m5 }
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |