之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 ) D4 [+ H2 D* J
+ T/ U( Z3 z6 I7 Q" G一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
) o8 q1 R' V$ f/ V$ H7 r3 z
" a3 T; o# A9 V& f0 I相关内容可以看这里
g: F2 g( Q3 xhttp://www.si-gamer.net/gulikoza/dosbox.html
. H4 N9 p5 a4 R% u4 Shttp://www.si-gamer.net/gulikoza/ - P' ?; a p( d8 m6 |( E
2 @, D! N3 F8 k: T- z
DosBox的小方块测试如下 ' v- P: K3 b. w/ o/ s/ H
https://www.chinaavg.com/read.php?tid=17242
8 j$ l. _1 S( U# F' e2 M4 A1 J1 [8 m# e" q' ?# x9 V7 c, t1 R
暂时写到这里,有新的发现再更新。 : X: ?) n1 a& L3 U4 \3 j; L& _$ ]* [
- o9 Q5 \* i) C! z; T-----------------------------------------------------
; K6 p) J4 I7 [8 z+ d/ _# R2010.4.6 更新# d7 ]) {+ k9 ~% V" C* l
放上支持directx版本的dosbox的源代码。
4 J3 ], v( _) j) O8 m; a写一下对于画面简单的游戏的汉化思路。
5 | q( z5 l$ }9 k! n比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
; ?2 s( i* h- _/ L: _8 T1 h$ e2 f7 P ~比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)) T. m4 y, j! C3 ]. ^2 G( d' W) l
和void ANSIFile::close()函数。
( u1 p3 {& J, ?" V: a+ E1 E2 S% s8 O% h) j4 l! e: H
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |