之所以叫汉化备忘录是因为目前还没有时间做详细的研究。
" D8 Y9 a0 r6 [! T3 F1 T" i2 K g, d% Q3 r: D! j
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
, ^9 ^1 ?/ y8 w
- I; o" O9 V. l5 N4 ^1 V; ~' m相关内容可以看这里 ! {5 a5 i" i0 G0 V% C
http://www.si-gamer.net/gulikoza/dosbox.html
; m' T* [( l- G0 Whttp://www.si-gamer.net/gulikoza/
( i+ n/ G; t/ @: F4 r1 B% |1 G3 L' c; J# F3 ^& {& J& ~
DosBox的小方块测试如下
- u6 @5 G' F! p3 g1 r9 t$ O. u8 Ohttps://www.chinaavg.com/read.php?tid=17242
2 B: C4 a) l* R8 H
4 s8 }$ |+ i8 e# S( C, L暂时写到这里,有新的发现再更新。 ; f2 s. S' Z. g k" S v) S
. H; p$ [; @# i9 X" [-----------------------------------------------------5 Y1 M; _; R% d: h5 K, _( X5 p k+ f
2010.4.6 更新
1 ~/ ?, l. a0 A; Q5 x放上支持directx版本的dosbox的源代码。
3 h& _- a4 x. j& q写一下对于画面简单的游戏的汉化思路。
' Q& i2 d, v+ ]! \7 R比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。9 o5 D3 N6 N0 @
比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)7 r: |1 _* t# B9 X8 P
和void ANSIFile::close()函数。
: s8 ~% ?; S, Q$ J/ e6 g
% I9 q8 f$ c9 Z' Q. w0 t我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |