之所以叫汉化备忘录是因为目前还没有时间做详细的研究。
1 _4 z' T/ c% F9 @! |/ \3 M0 ~+ w
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
! }( h* M: [% }$ Y7 j8 F: R: C
$ Q: n6 }0 v' }5 {0 g$ o相关内容可以看这里
9 x' D9 ~5 O1 e: Lhttp://www.si-gamer.net/gulikoza/dosbox.html
9 ~1 a. l- q$ k. h3 ]http://www.si-gamer.net/gulikoza/ ; n$ q, c% R+ c/ m9 |3 y! h
. a6 n- x- H3 \+ Y
DosBox的小方块测试如下
0 F& ?# b4 z2 z' `1 hhttps://www.chinaavg.com/read.php?tid=17242 4 r' c# ?1 P1 Z4 D9 V0 ^5 M
2 B: l: g( ?; ?4 s+ M暂时写到这里,有新的发现再更新。
% e. s: K5 @, h; J
/ k' C" ?' f% a: \& u+ X-----------------------------------------------------
6 s2 h" k; {! E: d C! X2010.4.6 更新
8 x) f7 K2 ~: i& H% K+ w* {放上支持directx版本的dosbox的源代码。/ h4 R& o6 }8 N) S. D% b
写一下对于画面简单的游戏的汉化思路。0 P7 O6 A% w0 m1 n$ U
比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
1 D- [3 e5 p* [比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)/ ]7 G# ~/ H0 B4 q z" ]
和void ANSIFile::close()函数。
D; P8 T" c2 Z! b# f! K7 n$ J, B# r5 X
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |