之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 ' _$ W& J" ^+ ^3 o
: B3 F' |% q" M) a
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。 % b8 U+ |& Q7 V* s* O
: T! Y1 O5 g6 B) f相关内容可以看这里 . G$ s/ G) W# D3 x9 _" E+ P
http://www.si-gamer.net/gulikoza/dosbox.html
, ?! |& J# U# T# _. N3 X q, n% zhttp://www.si-gamer.net/gulikoza/ - p: h0 p5 O# d1 D E6 b. L- X5 {
: n/ g3 c, O; n$ V# W" E: ~
DosBox的小方块测试如下 3 D& j+ w/ a+ A6 U5 g! a
https://www.chinaavg.com/read.php?tid=17242
& F; D# j2 G' ^. x
7 t( Y0 C* U0 L; C5 A3 Q* H暂时写到这里,有新的发现再更新。 . |/ M9 `% Q: y) e' w
# K! X7 _0 F8 P8 P" J-----------------------------------------------------8 e \) N U$ d. M% |) D" t9 f+ d) K
2010.4.6 更新 t8 O6 t8 `+ D4 f0 `
放上支持directx版本的dosbox的源代码。 O8 E# M* P" H2 {4 F" B
写一下对于画面简单的游戏的汉化思路。0 F- Y6 V5 h* f5 L) O
比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
$ [7 Q/ T8 D4 g* E) W; s比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)7 H6 u& e. t2 F! R' Q
和void ANSIFile::close()函数。
c1 k7 A4 A& t8 D* X5 a L+ j1 a" \ |$ l" ]. }; F) Z% [, `
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |