之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 9 Y, _, T+ X+ A( \5 O
# x* {5 T0 N" L8 c" x* j5 t7 A一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。 0 G6 s9 Z i0 T4 \. }) |
& V$ H5 E' K: {9 y4 J7 y' h* U
相关内容可以看这里 ; O1 l! j3 {( y) R' x
http://www.si-gamer.net/gulikoza/dosbox.html 6 _! F3 D6 i' s, j7 @
http://www.si-gamer.net/gulikoza/
3 ?: Z$ P7 X, I Y O+ }0 L& g- N4 M! `! s2 B
DosBox的小方块测试如下 & W0 e+ T7 K% U: @
https://www.chinaavg.com/read.php?tid=17242 2 f; B' w: e4 v W0 M5 {' |9 V
- q7 A, @' V9 H* i暂时写到这里,有新的发现再更新。 , u/ ^( k! e4 n4 m; e
9 W$ s4 ^# T" \3 T; l-----------------------------------------------------
( Y5 [ f5 s+ x) `7 W* C2010.4.6 更新8 B$ z b1 ]6 q' _6 |
放上支持directx版本的dosbox的源代码。
, `# E2 y; t# z8 g9 R0 N& x% F. m写一下对于画面简单的游戏的汉化思路。
6 [5 V8 [5 `/ S3 f9 F比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。& Z, T: \% N( Q5 |* X8 y% A
比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)
& }2 M/ a" C% P( ~& O! o- Q' s和void ANSIFile::close()函数。
* [3 @# X* g: x# \
% V5 F% w1 K) e7 p% f5 X4 K* f我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |