设为首页收藏本站官方微博

汉化资料 【代理DLL汉化研究】借助DosBox汉化Dos AVG新思路备忘录

[复制链接]
查看: 2429|回复: 9
打印 上一主题 下一主题

[汉化资料] 【代理DLL汉化研究】借助DosBox汉化Dos AVG新思路备忘录

跳转到指定楼层
楼主
发表于 2009-5-26 21:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【代理DLL汉化研究】借助DosBox汉化Dos AVG新思路备忘录

之所以叫汉化备忘录是因为目前还没有时间做详细的研究。 . }& J- {- w$ r9 X. Q/ T. e
$ A& w& j* E; A
一直以来,DOS游戏的汉化被认为是最困难的,在DOS下的游戏,基本没有什么共通的API可以使用,所以每个游戏的图形函数库基本上都是不同的。这为我们的汉化造成了很大的困难,但是DosBox这款工具软件的出现为我们提供了一个机会,这是一个windows下的Dos软件模拟器,经过研究我们发现这个模拟器可以使用DirectDraw 或Direct3D来渲染画面,这就意味着我们可以使用代理DLL技术修改某些关键函数,同时结合图像识别技术,也许就能实现DOS下的AVG游戏的汉化。
0 z/ n9 Q' `5 M5 L+ @# ^6 D+ P, g3 X; i9 W& z& V) J
相关内容可以看这里 ) K- j) \6 {: f/ l0 y: V
http://www.si-gamer.net/gulikoza/dosbox.html
: n0 u. u4 ^$ O+ Mhttp://www.si-gamer.net/gulikoza/ ! Y( v7 y+ z  }; ?: d2 M& \
1 c) @' Z3 I0 t) N
DosBox的小方块测试如下 ' f* y4 l2 D$ n# }  |0 z
https://www.chinaavg.com/read.php?tid=17242
4 Z' T8 N  X8 C( W- I1 B
1 y/ q& n2 j- K4 E* ^& i8 u暂时写到这里,有新的发现再更新。 + M5 ~* w6 c; e: b- x2 Q

7 e" k  E/ f2 s7 c-----------------------------------------------------
3 p5 a/ O6 F& F. X% v2010.4.6  更新
' U1 g. G, T* J  r  }% Y- ]& y) W; D放上支持directx版本的dosbox的源代码。, C5 ^: `% W* r+ K+ _$ }0 \& E1 I" S
写一下对于画面简单的游戏的汉化思路。3 l7 ~( i7 \8 x9 L6 c
比如说是真人AVG,假设游戏在播放和终止视频文件的时候,要调用dosbox的某些文件open和close函数。
" V: I8 ]8 x8 E/ [4 o' C8 J' x比如 \src\gui\file.cpp 的bool ANSIFile::open(const char *filename, OpenMode mode)  X* h  n9 b% e! G
和void ANSIFile::close()函数。
8 w$ O9 l! O! P7 _1 Y- p+ `# h! Z: K% q3 @: w% J. m5 }
我们可以在这些函数里插入一段代码,把文件名和时间写入内存共享区,配合directx9 的proxy dll,在发现内存共享区出现某个文件名的时候,就在present里输出对应的字幕,从而实现汉化的效果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-5-27 16:10 | 只看该作者
老大...DOS游戏是16位的...补充一下..不是难,是压根不是一类的东西.现在的PC游戏不是32位就是64位...
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-5-27 17:13 | 只看该作者
引用第1楼firendless于2009-05-27 16:10发表的  :
: x  w$ x% z1 z% d老大...DOS游戏是16位的...补充一下..不是难,是压根不是一类的东西.现在的PC游戏不是32位就是64位...

3 Q2 K2 q& ^$ w0 n0 K# Z8 J你说的我知道。看来你还没理解我的思路。
" s+ t( i* ?3 C0 x$ z4 ^0 T" _我用的方法可不是老式DOS汉化方法喔。
回复 支持 反对

使用道具 举报

地板
发表于 2009-5-28 10:04 | 只看该作者
明白了...借刀杀人...
回复 支持 反对

使用道具 举报

5#
发表于 2009-5-28 10:05 | 只看该作者
我也补充一点,hook api 后有个api或许有用 GetArgumentByName()可以获取参数
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-5-28 11:12 | 只看该作者
恩,某种情况下确实有用。4 ?# h7 ~: `! l5 m' s' n
2 w! Y* ~. _0 A3 O: B5 {- j

8 y7 A5 k8 a( R. s6 u3 L貌似可以用 GetArgumentByName()来直接获取参数8 F" P6 x8 U( i
6 U8 R' J: a! b* L5 Q$ q: `0 p
m_oApiHooker.GetArgumentByName(1)'获取第1个参数$ L9 a* P8 r- T" J4 F! O
.../ ^1 `& u0 m6 a% N3 `4 M0 ~
m_oApiHooker.GetArgumentByName(4)'获取第2个参数
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2010-4-6 22:11 | 只看该作者
2010.4.6  更新
回复 支持 反对

使用道具 举报

8#
发表于 2010-4-7 10:13 | 只看该作者
图,图像识别技术 [s:106]
回复 支持 反对

使用道具 举报

9#
发表于 2010-4-7 11:55 | 只看该作者

dosbox

印刷体的图像识别是可行的
! G; c# S: r& c# B& G( k- f& R有些开源支持,如openCV
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2010-4-7 17:11 | 只看该作者

Re:dosbox

引用第8楼solidji于2010-04-07 11:55发表的 dosbox :
8 X7 j" B' S7 O' z8 N( V印刷体的图像识别是可行的
7 f8 b6 Q/ N( |+ H8 j8 W# ~7 R有些开源支持,如openCV
* \' ], t: i  F1 h7 p, |- v

- |1 H( p8 [; n其实很难,在每帧刷新的时候图像识别,是要讲究速度的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表