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

汉化资料 影音文件匹配汉化法----奇妙的新型通用汉化方法(Part1)

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

[汉化资料] 影音文件匹配汉化法----奇妙的新型通用汉化方法(Part1)

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

影音文件匹配汉化法----奇妙的新型通用汉化方法(Part1)

最近我又想出来一种新的汉化方法,按照惯例,在动手实现之前,先把思路写出来。然后再逐步实现。 9 P1 m: r" J" V% m1 |

' C8 \. I5 v/ X- h# B% k9 ?基本思路
7 v4 J1 X& q  ?' |; X
+ E7 M1 W+ h) `$ \/ H3 h$ [7 N" a我们知道,现在大多数AVG都是全程语音的,也就是说,有一部分字幕每个都各自对应了一个语音文件。 % s0 Z. U' y6 O1 N( i
这个语音文件可以是一个单独的文件,也可以是一个包含在包文件里面的子文件。语音文件和字幕文件不同,一般不是在游戏的一开始载入内存,而是在游戏播放语音文件文件时才打开这个文件。
" B8 A' J  ^1 _& ~# m3 V9 w0 O0 d$ _+ |+ a4 C
所以,如果我们可以监视到游戏打开一个语音文件或者是打开一个含有语音文件的包文件并且在语音文件所在的偏移处进行读取操作的话,就说明游戏马上就要播放这个语音文件。同时也就是说明游戏马上就要显示和这个语音文件相对应的字幕了。这就是一个切入口。 2 c, Q7 \: y) I) y, j/ O
& |. W" B5 H' n
1.监视文件操作
# Y  I# k! E( ~1 f$ a& |, K
下面来说说如何监视文件操作,其实还是用老方法,那就是HOOK。具体怎么个HOOK法呢?我最近找到了一份著名文件监视工具Filemon的源代码,只要我们把这份源代码研究清楚了,可以说,Filemon能监视到的文件操作我们也能监视到。
$ h& L. R$ G- x: [" g3 i. D. q8 I% b# h! N+ ?3 u) t
2.利用共享内存文件实现进程间通讯
* I2 p# c7 l9 a8 t/ P, x在监视到文件操作以后再怎么办呢?自然是要报告给我们的一个程序,然后让这个程序在屏幕上输出
2 T9 j, L- e2 J" T! o' b我们翻译以后的中文字幕。那么通过什么机制向我们的程序报告呢?我想,利用共享内存文件是一个
% S- q% l/ K* I好方法。HOOK工具监视到语音文件的操作以后,就向共享内存文件里写入一些标志和有关的信息。共享内存文件主要的功能就是用来实现进程间通讯的嘛。
" T2 q- a* O+ N
9 _$ E0 e- d" s: O/ }: b) _7 j3.利用代理DLL或是OverLay技术实现输出中文字幕
- e4 m; j; F9 a4 u
上面说的HOOK工具是信息的发送方,那么信息的接受方是说谁呢?接受方应该是向屏幕输出中文字幕的程序。我考虑可以用代理DLL或是OverLay技术来实现。 4 D+ e# p' c, J  }- B4 S
对于DirectX8,9的游戏,我们可以用代理DLL,由于游戏在不断地刷新游戏画面的时候都会调用present函数, 在present中我们可以插入一段代码来监视共享内存文件,如果发现共享内存文件存在有关语音文件的信息的时候,就向屏幕输出相应的中文字幕。注意在输出中文字幕以后要把共享内存文件里面的有关语音文件信息删除掉。中文字幕输出的时间长度可以实现设定好或者是根据字幕的长度计算后得出。 ! @, G# L3 F- u8 U2 p7 B. J
1 I) }7 Y+ ?$ O  s5 S9 O
未完待续。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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