之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 * ]* G/ `" D" J( y
; C+ g0 q1 y9 i2 D X
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
, R$ `5 j. P. V+ d
0 j. C2 q' h7 W0 k# t& V7 S* u$ j相关内容可以看这里 # R" e, R5 ]: v" E2 d
http://www.si-gamer.net/gulikoza/dosbox.html
; X: V4 o$ ?' Jhttp://www.si-gamer.net/gulikoza/
" V' G4 D: V& E( I8 u4 S9 u0 U( v# {7 L5 b% Z4 D
DosBox的小方块测试如下 O% `/ M( N9 ?
https://www.chinaavg.com/read.php?tid=17242 p( f4 h; m4 E* ]; e( E% W
8 u! O+ W7 P* Z+ T) @& ] `暂时写到这里,有新的发现再更新。
% C& ]5 b7 n/ I2 Z8 }8 j2 d; {9 \& W( r% i8 ~1 _
-----------------------------------------------------
6 R$ b. `4 s8 ]7 T4 g; o9 F2010.4.6 更新
# @: y8 W1 q3 |( d; M放上支持directx版本的dosbox的源代码。
& m1 k( s& a( G1 @" p* v/ S. D* u写一下对于画面简单的游戏的汉化思路。: m3 t% u8 R+ m9 A) ^! L s9 B0 ~$ y$ w
比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
1 {. W) ^! d; {4 I比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)
" W+ J, |+ g- i和void ANSIFile::close()函数。/ G' S: Z4 Y3 Z0 m& O
8 v. M/ |" c, r! a I我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |