之所以叫汉化备忘录是因为目前还没有时间做详细的研究。
# g* J- o+ l. G; o( @: W. S
7 @' i9 o% l+ J2 D' G一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
6 q( z/ A; X8 `9 g5 i3 y$ @9 ]3 c5 s4 {, M v
相关内容可以看这里
' W- T2 Y3 r/ Qhttp://www.si-gamer.net/gulikoza/dosbox.html
+ p! }/ ^4 m3 c h- Nhttp://www.si-gamer.net/gulikoza/
+ H# J8 b+ o# A3 }9 e* `! M& ~* v' f0 j9 S* i% @
DosBox的小方块测试如下 , `$ C7 F; Q' R. }3 u' D
https://www.chinaavg.com/read.php?tid=17242 0 e: x$ `$ ]" P0 Y! w0 E7 `
' }+ e: ~/ ]9 B% o
暂时写到这里,有新的发现再更新。
# N- u5 |& Y% ]4 p3 h# o' l* ?; y8 ?5 @! L, T) v
-----------------------------------------------------
. R1 p& o e+ Z) m' {2010.4.6 更新
8 x; m, f. @+ s3 x放上支持directx版本的dosbox的源代码。
8 u' U3 I3 f1 c" z写一下对于画面简单的游戏的汉化思路。
) A; w0 m9 o% ~比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
- S' `: J% t2 D- C* ]比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)
1 l4 \. q& |6 @4 a x3 f# |和void ANSIFile::close()函数。7 y3 k2 M* x3 [6 S. j6 ^
2 h5 a& K3 Q$ {; e) ]
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |