之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 % g. U F7 _& w
d$ h; [8 p( _8 Y一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。 - P) J( H6 g* i+ _7 L9 b
- M0 i1 Z% z9 F* P% `0 u相关内容可以看这里
5 f F0 @# B. `http://www.si-gamer.net/gulikoza/dosbox.html 0 t4 p7 \4 O8 @* Y' z
http://www.si-gamer.net/gulikoza/
" B4 u2 K1 u, o0 b! e n( b& @# p- B/ ^/ a7 m1 a9 c8 c# B
DosBox的小方块测试如下 3 q/ B1 a, M5 X! d- i
https://www.chinaavg.com/read.php?tid=17242
7 k5 R0 |; [) ~7 P0 n& q8 d1 ]
4 x% Y4 X+ h0 L5 A* W暂时写到这里,有新的发现再更新。
, \$ G" S+ D+ M5 s) D; d* a# c! z* [9 n5 F' J5 |9 C2 w
-----------------------------------------------------
}5 w, Y+ c1 m5 I2010.4.6 更新
% p3 W) [- E8 J, N6 s放上支持directx版本的dosbox的源代码。
8 L6 [+ y& l+ Z) \7 M X8 l写一下对于画面简单的游戏的汉化思路。# k G, V( U9 a f
比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
3 u' H, z2 Z$ }; K, |5 |5 Z比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)8 j) x+ `2 x! \" M# Q
和void ANSIFile::close()函数。 b T8 ?" [, P, k
$ }: J% u& y3 Z) X" q我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |