之所以叫汉化备忘录是因为目前还没有时间做详细的研究。
2 s6 j* ?/ f4 W# d/ }, O i c W( k: U( I
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
% B' P$ j" K/ r4 s3 \6 e" @, q9 Y
7 Z+ T7 ]+ u( `1 g- \$ Z$ t( A0 l& r相关内容可以看这里 ) k6 D: ?$ R) _! X- L1 x1 g
http://www.si-gamer.net/gulikoza/dosbox.html
- X* s) |' | W. Ahttp://www.si-gamer.net/gulikoza/ - j8 O! q& t8 ]7 `$ _; A0 {* g! j
' C4 ^: U( @# e8 S. Q' VDosBox的小方块测试如下 # e% ^4 ~, D9 q! q
https://www.chinaavg.com/read.php?tid=17242
& I' J3 } s. c/ f
8 Y* _. ]# i7 D2 m暂时写到这里,有新的发现再更新。
/ K% K" s" h$ B; o/ w
: _- n) i( K/ B9 ~% _) v( J-----------------------------------------------------
/ S* a- m* v3 ` @) O$ s' G/ Y2010.4.6 更新
8 C0 _$ a/ J& k$ ^放上支持directx版本的dosbox的源代码。
) p0 P) Z6 m5 x4 U写一下对于画面简单的游戏的汉化思路。
3 ] r% s' f3 e/ A$ c$ B8 A% `比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
, D- t/ Q# b( a" z0 ]比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)% X7 Z# |. ~; X. P$ P
和void ANSIFile::close()函数。
/ [+ a6 P: X( \2 {3 e% f* D4 W( G
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |