之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 # A( k; S$ p* t: k; w
+ F( r1 Y. E, w4 b! v一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。 1 g+ P9 ^9 w+ R& [3 U7 S$ Y& f# G+ w
: Y$ J6 h. h5 }8 a j" _! X相关内容可以看这里
- [" X$ ^) L/ ~% g. S1 ?& {http://www.si-gamer.net/gulikoza/dosbox.html
- Z. r8 S# u3 p2 x. e) ?9 c' F* v: xhttp://www.si-gamer.net/gulikoza/ 6 a* N2 ~1 Q K
" g8 d) W' K9 B& k' M9 c1 y' `
DosBox的小方块测试如下 3 e& ]+ f5 N$ I* l5 V& ]- h
https://www.chinaavg.com/read.php?tid=17242 / i' E9 f% [! ^
; @6 i3 o, H+ r$ C( I
暂时写到这里,有新的发现再更新。
& X# B/ d" ?8 X6 S' j7 s Y" N- [5 |1 G2 `
-----------------------------------------------------9 v1 B9 f2 Q( K& K* t
2010.4.6 更新
. D9 x7 D. l6 _$ K# S9 L, \放上支持directx版本的dosbox的源代码。; i6 P- d/ n! L1 ?% m
写一下对于画面简单的游戏的汉化思路。3 V3 B$ E4 G# g6 e
比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
7 E' j$ Y6 j; l比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)
& \: U1 G) N3 q ?0 s和void ANSIFile::close()函数。1 W- h) b7 t4 v( ~$ O: l
! t- C+ s {# ~ t- |8 H/ ~
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |