之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 8 m$ x4 X5 Q1 r
, \, _1 T$ b& I3 |
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。 + U" \/ {. S9 V
7 u. w, _- \$ j' K2 F6 P$ b
相关内容可以看这里 8 c* G* ] N0 @3 X( C- o3 _
http://www.si-gamer.net/gulikoza/dosbox.html
1 q, T1 C$ Y- W; c! Ehttp://www.si-gamer.net/gulikoza/ 5 o; Y% Z7 S; ?# w( Q/ ]
# I. ^' H5 e# O9 G
DosBox的小方块测试如下
9 d+ L4 i$ b$ l! T3 L/ phttps://www.chinaavg.com/read.php?tid=17242 + {$ X9 S7 x _" l e
2 E: e$ u9 P6 R- t$ h# T
暂时写到这里,有新的发现再更新。 T' f1 d- ^# T8 [
8 x2 t2 J: k J/ v-----------------------------------------------------4 R: o( y' `0 T5 P
2010.4.6 更新% W" K& o1 n0 I3 f9 L
放上支持directx版本的dosbox的源代码。1 X7 f, v4 O# T2 L8 N
写一下对于画面简单的游戏的汉化思路。
/ d% J; A4 r3 |+ Q1 P( O比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
$ T: k+ t. [1 z; f$ K比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)( b6 f, b& A2 h2 k
和void ANSIFile::close()函数。
- Y" j6 H2 P: q$ [; f" X& E* P' A2 T* v9 ]6 B7 k
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |