之所以叫汉化备忘录是因为目前还没有时间做详细的研究。
' T: s; m5 Q5 _$ }2 A2 d$ D- [+ P8 r( }8 C% f- H
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
9 s! b# W8 S# x: V1 g# F+ i. r; u2 q
相关内容可以看这里 ( d/ ~1 ?- F+ D) }# o
http://www.si-gamer.net/gulikoza/dosbox.html
# _! |( w: e4 p$ C& E5 ahttp://www.si-gamer.net/gulikoza/ " ~9 _' Z k2 j9 k7 z
1 ^# f4 |* K' r. CDosBox的小方块测试如下 0 T+ S" G! U7 E2 |7 ^. r
https://www.chinaavg.com/read.php?tid=17242 # f/ z5 r8 B6 _
- Q; ~( O4 q: F1 U& T _! V4 B暂时写到这里,有新的发现再更新。
0 ^6 _2 n0 v& ^, S+ n3 s& n% B8 ] Y- P! F; m& X& L
-----------------------------------------------------
]2 [* k+ D. ^ k* K2 [2010.4.6 更新; A' @, Z' }; N5 B: ?( x* t9 r
放上支持directx版本的dosbox的源代码。
5 e7 d" Q1 s8 n% u! D- Q& Q& Q8 ]! ~写一下对于画面简单的游戏的汉化思路。
0 G1 B6 T- R9 p5 I$ s: `比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
. Q5 ]+ I" V$ _# J0 K/ M8 s6 D. D比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)1 v d# q5 Y5 U$ S- {% ^' \7 x; [
和void ANSIFile::close()函数。3 _7 i9 `$ s' ]$ z4 |/ z9 y; G
1 v8 |- X6 g1 F
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |