之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 4 _; k8 V0 a" w. p" b
( }- Q" Q% Y3 v( n; ]5 h一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
* R, B% c% S8 R) x9 y4 w- ?6 {6 ?0 x0 s. W6 c9 u! {$ |1 {3 o
相关内容可以看这里
- F+ w2 Y( v8 O* h0 [( }& qhttp://www.si-gamer.net/gulikoza/dosbox.html
+ X* Y2 ]% k! J7 Xhttp://www.si-gamer.net/gulikoza/
+ u4 U# x. [# l" {. o# `# z+ n, l% e* i/ i! P
DosBox的小方块测试如下 3 o/ w: g. v$ P0 F4 X6 F
https://www.chinaavg.com/read.php?tid=17242
+ L6 H8 O% G2 F m0 t f. c8 [+ v: p: M' q: `4 T
暂时写到这里,有新的发现再更新。 % q, \4 T8 B1 I7 ]/ C0 X) V/ y
/ B& D8 K0 y1 T-----------------------------------------------------
; ]- R% T& ~7 E2010.4.6 更新5 _8 y4 y& q& c3 z! q1 @. W
放上支持directx版本的dosbox的源代码。/ c) S' M9 f9 {# M* X
写一下对于画面简单的游戏的汉化思路。
, ?' A( n0 Y& ]9 \1 Y! E/ L2 X比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。' a- I4 `2 \5 |$ K) i; M
比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)3 @+ L; o6 k9 V7 ^0 r& V6 s8 N" ]' D6 o
和void ANSIFile::close()函数。5 \0 u4 z7 H# x, D4 z
O0 O! j5 z* ?4 e, L& ~+ O
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |