之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 # _! ]: w5 C: ^8 v7 s
: y2 f' l3 s, P" X一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。 8 y# G |5 @. F4 E& A5 t, K
6 _" L9 a8 K' B( T相关内容可以看这里 8 a% @) I" B! I8 ^+ r( q
http://www.si-gamer.net/gulikoza/dosbox.html 3 ?" ~# w% N( V# x7 U* U# E
http://www.si-gamer.net/gulikoza/ 0 ]3 B5 y# w7 G% I/ d3 f
* c0 g* A# P1 ]/ fDosBox的小方块测试如下 # @9 b3 \8 {( [/ U
https://www.chinaavg.com/read.php?tid=17242
. M, y! v8 Z9 p& l/ m
a& D+ v3 G+ k" B. R4 ?暂时写到这里,有新的发现再更新。 3 a4 A* n. r, F7 Y% w! I, U
, k$ S( j( Z% A* ] u-----------------------------------------------------% t, n( e3 X5 ~3 W' @
2010.4.6 更新
6 U$ x ?# b Z5 _5 o* L2 {' z4 X0 t放上支持directx版本的dosbox的源代码。8 M) y$ G, m+ r( T" U+ ~
写一下对于画面简单的游戏的汉化思路。
) }7 m# s& E7 I$ X$ G' n" M( G8 B0 p比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。9 C8 e9 K' ~# s6 P- G$ U
比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)# B1 u! B5 i3 a7 d
和void ANSIFile::close()函数。
( u A7 G4 y) [- o
8 C; i% Z; `% E: |8 {$ I4 w1 `我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。 |