工作室
  
- 贡献度
- 1054
- 金元
- 4788
- 积分
- 4795
- 精华
- 10
- 注册时间
- 2007-12-1
|
昨晚制作了杀手3契约中文版的MCD补丁 之后在众网友的反馈问题中 卡屏和游戏中部分变回英文的问题比较普遍
看了很多热情网友的介绍回答 在此 我贴出一些我的研究成果 希望大家能够明白
关于游戏的卡屏一说是由于集成声卡的硬件加速问题 另一说是由于生成erro文件的原因 所以我对于此进行了专门的跟踪和分析
先来解答几个问题
1 为什么游戏安装完后覆盖MCD补丁后 双击没有反应
请先察看你游戏的安装方法 在网上下载来的RAR并不是游戏镜像 要分别截压 之后用UltraISO制作成光盘ISO镜像 用虚拟光驱载入安装游戏 (中途会提示换盘)
2 为什么我进入游戏是英文版的
在游戏安装完成后 还需下载 http://download.chnren.com/SoftView.asp?SoftID=4313 中文化补丁 这个是网上流传的MCD其实只是一些外挂汉化的必须文件 对MCD一点帮助没有 把它解压并覆盖到原目录 这样游戏进入就是中文的了
说明一下原理 这个游戏应该属于是外挂汉化 从网上下载的游戏只是英文原版+中文外挂执行文件 而网上流传的中文版MCD没有一个exe 所以只是一个外挂中文化的资源补丁 并不能免CD
而我昨晚制作的那个中文版MCD http://3dmgame.chnren.com/bbs/showtopic-421735.html 才是真正跳过光驱检测的执行文件
从网上下载的中文版游戏再不打任何补丁的情况下 将HitmanContracts.dat文件改名为HitmanContracts.exe就可以进入游戏 只不过是英文版 所以这个HitmanContracts.dat文件改名为HitmanContracts.exe后 其实就是英文版MCD 所以可以汉化 是因为作者的那个中文版启动exe的作用 应该属于是外挂汉化……
3 为什么游戏会变卡而且出现部分英文?
我把他们放在一起说 因为我猜测这两个问题的发生是相关联的 卡屏后出现部分英文……
如果和我猜测得没错 那应该是生成erro文件的原因 这个文件是一个外挂汉化程序的错误记录文件 打开文件可以看到其纪录的内容为
xxxxxx位于xxxxx.cpp文件的xxxx行
所以在游戏过程中 由于出现问题 所以大量的错误被记录 耗用系统资源 导致卡屏 因为出现了错误 所以有一部分的汉化就是失效了……出现了部分英文问题 希望我的猜测斯正确的
最后在附上一点点地研究成果
00401450 /$ 55 push ebp
00401451 |. 8BEC mov ebp, esp
00401453 |. 6A FF push -1
00401455 |. 68 90984000 push 00409890 ; SE 处理程序安装
0040145A |. 64:A1 0000000>mov eax, dword ptr fs:[0]
00401460 |. 50 push eax
00401461 |. 64:8925 00000>mov dword ptr fs:[0], esp
00401468 |. 51 push ecx
00401469 |. B8 6C120000 mov eax, 126C
0040146E |. E8 6D0F0000 call 004023E0
00401473 |. 53 push ebx
00401474 |. 56 push esi
00401475 |. 8B75 08 mov esi, dword ptr [ebp+8]
00401478 |. 57 push edi
00401479 |. 8965 F0 mov dword ptr [ebp-10], esp
0040147C |. 68 00040000 push 400 ; /Count = 400 (1024.)
00401481 |. 68 E8CC4000 push 0040CCE8 ; |Buffer = 1_.0040CCE8
00401486 |. 33C0 xor eax, eax ; |
00401488 |. C785 88FEFFFF>mov dword ptr [ebp-178], 44 ; |
00401492 |. B9 10000000 mov ecx, 10 ; |
00401497 |. 8DBD 8CFEFFFF lea edi, dword ptr [ebp-174] ; |
0040149D |. 6A 65 push 65 ; |RsrcID = STRING "发生一个严重错误,当前进程将被退出!
请在 <Free_Data> 子目录中找出错误信息文件:LG_Try_Error.log
发至信箱:FreeLocal@163.com"
0040149F |. F3:AB rep stos dword ptr es:[edi] ; |
004014A1 |. 8B3D 40314200 mov edi, dword ptr [<&user32.LoadStr>; |USER32.LoadStringA
004014A7 |. 33DB xor ebx, ebx ; |
004014A9 |. 56 push esi ; |hInst
004014AA |. 895D FC mov dword ptr [ebp-4], ebx ; |
这是程序在调试过程中某段的代码 MS是一个错误反馈 而反馈的文件正是我们的LG_Try_Error.log
对于希望继续研究的网友 我仅能提供这一点点线索……
至于问题的解决方法 我想只有原作者可以搞定 因为那些xxxxxx.cpp的VC++源文件应该只有他自己手上有
有兴趣的玩家可以根据线索发邮件到 FreeLocal@163.com 询问。
读于昨晚发布的MCD补丁 只是跳过了程序对光驱校验的部分 并无其他改动…… |
|