之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 9 j5 N7 F0 R& ?$ H2 Z$ c
8 ~5 L$ t4 Q" t
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。 ( Q' Z7 Y; s) O. N! `4 ~) H
) J) M/ Q& m2 a4 o* Q相关内容可以看这里
" v: W. j7 g; \, Q4 E) K& `http://www.si-gamer.net/gulikoza/dosbox.html % E( v8 e# [0 ^: h; U u3 f
http://www.si-gamer.net/gulikoza/ + }) g* L' \5 [ n! l1 T. N1 U1 q% i m
0 M4 J- N* I1 R8 _+ J! eDosBox的小方块测试如下 " P- b# v9 L- e$ c+ Q
https://www.chinaavg.com/read.php?tid=17242 * ?3 v, M+ l% v6 p- b2 f
0 Z. a4 g# n! Q7 v' p暂时写到这里,有新的发现再更新。
7 f3 ^2 u# i# Q) R% L$ @1 y) N# q$ B" S) n/ x. _ D
-----------------------------------------------------& S" T- {+ G$ `9 M/ U
2010.4.6 更新5 Z! @" ]' b1 j: q
放上支持directx版本的dosbox的源代码。& }5 J. G2 U/ E0 L' b* F
写一下对于画面简单的游戏的汉化思路。
W/ `/ w4 ^/ m" Q比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。3 r6 h: t1 X6 K( p* V5 a
比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)8 t6 \! v* B9 J# i5 |# D
和void ANSIFile::close()函数。
\3 Y, v$ }( [) F
) [" X' N7 W9 F+ i5 h2 K我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |