解决WIN7 64位运行暗黑2 1.11B(大箱子+全图HM)花屏问题的方法!
首先奉上原贴地址:http://www.cnblogs.com/Rex/archive/2011/01/02/1924327.html
此贴是帖主解决星际争霸的方法,我拿来套用了一下暗黑2 1.11B 打过大箱子10.0和全图补丁HM的游戏文件,实测有效!!!
下面奉上花屏原因及解决方法:
在Windows7下玩老游戏花屏的解决办法
原帖:地狱门神
在Windows7下玩老游戏,如暗黑2,会出现花屏的现象。
这个现象的原因是Win7的DirectDraw的256色调色板的兼容性问题,据说是默认配置下,程序无法获取调色板锁。
一个简单的解决方法是杀掉explorer进程,估计这样就会停止桌面主题修改调色板。
但是这不是一个一劳永逸的办法。
经过在网上搜索,发现有这样一个解决方案。
DirectDraw有一个注册表项,用于开启兼容模式,位于
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility
(Win7 x64)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility
(Win7 x86)(注册表路径没错,但本人64位WIN7旗舰版,所以没有实测32位的,但是已帮大家写好32位的注册文件,下面会看到)
在这个注册表项下添加需要启用兼容模式的exe,如:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\Diabol]
"Name"="D2Loader.exe"
"ID"=hex:5C,27,9F,3F
"Flags"=hex:00,08,00,00
(此为Win7 x64的路径)
就可以使得对应的D2Loader程序运行于兼容模式下。
这三个键值中,Name是程序的文件名,Flags是常量(固定不变),而ID是程序的时间戳。
以D2Loader为例,我们可以使用CFF Explorer(绿色软件,地址:http://pan.baidu.com/s/1gf1HAc7)打开D2Loader.exe,然后在Nt Headers-File Header中找到TimeDateStamp一项,发现其值为496589CA。
将该整数倒过来写作低字节优先的形式(little-endian),就是ca,89,65,49,这就是注册表中的ID值。
网上的有解决方案声称HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication下的Name就是上一次运行的EXE文件,ID记录的就是上一次运行的游戏的时间戳(其实就是同目录下的Name的时间戳)。
原帖中说有问题,可能是忽视了真正运行的EXE文件。我发现我打过大箱子10.0和全图HM后的1.11B,双击D2Loader-1.11b.exe后,实际最后运行的是游戏根目录下的Game.exe文件,而不是D2Loader-1.11b.exe!所以我们要关闭除暗黑2以外的所有软件,以防有不必要的干扰,然后运行游戏,再查看HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication中的name名字,他就是你需要记住并修改的值!!!
以我实际找到的程序为例:
把[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\Diabol]中的值对应修改成下面的值(Flags不用修改)
"Name"="Game.exe"
"ID"=hex:A8,8C,02,43
"Flags"=hex:00,08,00,00
改成这样就可以了!
----------------------以上就是花屏的故障原因和解决思路--------------------
----------------------下面就是具体步骤方法-------------------------------------
对于非电脑小白,可以自行修改注册表;(友情提示:改前一定要备份,或者截图!)
如果不会改注册表的可以用我写的注册表文件进行注册,如果杀软报毒,选择信任!(我已离开360等一系列全家桶好多年,因为经常误报我自己的程序!)
干脆把五个文件的时间戳都送上来吧,可以手动改:
"Name"="diablo.exe"
"ID"=hex:AB,92,C3,32
"Name"="Diablo II.exe"
"ID"=hex:E7,81,13,3B
"Name"="D2Loader.exe"
"ID"=hex:5C,27,9F,3F
"Name"="D2Loader-1.11b.exe"
"ID"=hex:AA,BE,94,45
"Name"="Game.exe"
"ID"=hex:A8,8C,02,43
注册表文件包:http://pan.baidu.com/s/1boz7AUF
内涵1.11B中diablo、diablo Ⅱ、D2Loader、D2Loader-1.11b、Game五个文件的时间戳注册表(32、64的都有),大家可通过上面讲的,查看最后一次运行的EXE文件的注册表值来确定你们用哪个文件!(①)
然后就是对D2Loader-1.11b.exe文件或是他的快捷方式进行兼容设置,右键文件-属性-兼容性:在兼容模式下-勾选以兼容模式运行这个程序;在设置里勾选禁用视觉主题和禁用桌面元素;(推荐勾选以管理员模式运行此程序,以防有些垃圾系统自带的用户权限不够)确定。(②)
再设置有些根目录下的D2VidTst.exe:
运行D2VidTst.exe,点击执行测试,等待测试结束,点选DirectDraw(2D),ok!(因为我选3D会报错,we go big error here,不知道是不是和补丁有关- -!所以我选择2D模式!)(③)
完成①②③步,就大功告成了!
通过此方法,暗黑2 1.11B+大箱子10.0+全图HM的版本 已经可以在我的WIN7 64位 旗舰版 1920*1080桌面分辨率的机器上以800*600分辨率全屏无黑边正常运行,已经运行1小时了,没有花屏。中间切出来双开也没问题!。
--------------------以下方法我并没有尝试-------------------------------------------
此外,还有一种方法是通过Hook掉DirectDraw的函数来完成的,见
http://sol.gfxile.net/ddhack/
不过这个实现是通过软件方法来进行 索引->颜色 转换的,没有使用到显卡加速,在运行星际争霸时比较卡。
但这种方法只需要在程序文件夹下放入一个ddraw.dll的文件就可以实现,比较方便。
也许以后会有人通过DirectX或者OpenGL来模拟DirectDraw的功能,能够比较完善的解决这个问题。
--------------------有兴趣的朋友可以试试-------------------------------------------
大年初二晚上无意间找到的方法,实验总结了几个小时,已经是初三凌晨了!希望能给大家带来惊喜!2017新年快乐!
首先奉上原贴地址:http://www.cnblogs.com/Rex/archive/2011/01/02/1924327.html
此贴是帖主解决星际争霸的方法,我拿来套用了一下暗黑2 1.11B 打过大箱子10.0和全图补丁HM的游戏文件,实测有效!!!
下面奉上花屏原因及解决方法:
在Windows7下玩老游戏花屏的解决办法
原帖:地狱门神
在Windows7下玩老游戏,如暗黑2,会出现花屏的现象。
这个现象的原因是Win7的DirectDraw的256色调色板的兼容性问题,据说是默认配置下,程序无法获取调色板锁。
一个简单的解决方法是杀掉explorer进程,估计这样就会停止桌面主题修改调色板。
但是这不是一个一劳永逸的办法。
经过在网上搜索,发现有这样一个解决方案。
DirectDraw有一个注册表项,用于开启兼容模式,位于
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility
(Win7 x64)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility
(Win7 x86)(注册表路径没错,但本人64位WIN7旗舰版,所以没有实测32位的,但是已帮大家写好32位的注册文件,下面会看到)
在这个注册表项下添加需要启用兼容模式的exe,如:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\Diabol]
"Name"="D2Loader.exe"
"ID"=hex:5C,27,9F,3F
"Flags"=hex:00,08,00,00
(此为Win7 x64的路径)
就可以使得对应的D2Loader程序运行于兼容模式下。
这三个键值中,Name是程序的文件名,Flags是常量(固定不变),而ID是程序的时间戳。
以D2Loader为例,我们可以使用CFF Explorer(绿色软件,地址:http://pan.baidu.com/s/1gf1HAc7)打开D2Loader.exe,然后在Nt Headers-File Header中找到TimeDateStamp一项,发现其值为496589CA。
将该整数倒过来写作低字节优先的形式(little-endian),就是ca,89,65,49,这就是注册表中的ID值。
网上的有解决方案声称HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication下的Name就是上一次运行的EXE文件,ID记录的就是上一次运行的游戏的时间戳(其实就是同目录下的Name的时间戳)。
原帖中说有问题,可能是忽视了真正运行的EXE文件。我发现我打过大箱子10.0和全图HM后的1.11B,双击D2Loader-1.11b.exe后,实际最后运行的是游戏根目录下的Game.exe文件,而不是D2Loader-1.11b.exe!所以我们要关闭除暗黑2以外的所有软件,以防有不必要的干扰,然后运行游戏,再查看HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication中的name名字,他就是你需要记住并修改的值!!!
以我实际找到的程序为例:
把[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\Diabol]中的值对应修改成下面的值(Flags不用修改)
"Name"="Game.exe"
"ID"=hex:A8,8C,02,43
"Flags"=hex:00,08,00,00
改成这样就可以了!
----------------------以上就是花屏的故障原因和解决思路--------------------
----------------------下面就是具体步骤方法-------------------------------------
对于非电脑小白,可以自行修改注册表;(友情提示:改前一定要备份,或者截图!)
如果不会改注册表的可以用我写的注册表文件进行注册,如果杀软报毒,选择信任!(我已离开360等一系列全家桶好多年,因为经常误报我自己的程序!)
干脆把五个文件的时间戳都送上来吧,可以手动改:
"Name"="diablo.exe"
"ID"=hex:AB,92,C3,32
"Name"="Diablo II.exe"
"ID"=hex:E7,81,13,3B
"Name"="D2Loader.exe"
"ID"=hex:5C,27,9F,3F
"Name"="D2Loader-1.11b.exe"
"ID"=hex:AA,BE,94,45
"Name"="Game.exe"
"ID"=hex:A8,8C,02,43
注册表文件包:http://pan.baidu.com/s/1boz7AUF
内涵1.11B中diablo、diablo Ⅱ、D2Loader、D2Loader-1.11b、Game五个文件的时间戳注册表(32、64的都有),大家可通过上面讲的,查看最后一次运行的EXE文件的注册表值来确定你们用哪个文件!(①)
然后就是对D2Loader-1.11b.exe文件或是他的快捷方式进行兼容设置,右键文件-属性-兼容性:在兼容模式下-勾选以兼容模式运行这个程序;在设置里勾选禁用视觉主题和禁用桌面元素;(推荐勾选以管理员模式运行此程序,以防有些垃圾系统自带的用户权限不够)确定。(②)
再设置有些根目录下的D2VidTst.exe:
运行D2VidTst.exe,点击执行测试,等待测试结束,点选DirectDraw(2D),ok!(因为我选3D会报错,we go big error here,不知道是不是和补丁有关- -!所以我选择2D模式!)(③)
完成①②③步,就大功告成了!
通过此方法,暗黑2 1.11B+大箱子10.0+全图HM的版本 已经可以在我的WIN7 64位 旗舰版 1920*1080桌面分辨率的机器上以800*600分辨率全屏无黑边正常运行,已经运行1小时了,没有花屏。中间切出来双开也没问题!。
--------------------以下方法我并没有尝试-------------------------------------------
此外,还有一种方法是通过Hook掉DirectDraw的函数来完成的,见
http://sol.gfxile.net/ddhack/
不过这个实现是通过软件方法来进行 索引->颜色 转换的,没有使用到显卡加速,在运行星际争霸时比较卡。
但这种方法只需要在程序文件夹下放入一个ddraw.dll的文件就可以实现,比较方便。
也许以后会有人通过DirectX或者OpenGL来模拟DirectDraw的功能,能够比较完善的解决这个问题。
--------------------有兴趣的朋友可以试试-------------------------------------------
大年初二晚上无意间找到的方法,实验总结了几个小时,已经是初三凌晨了!希望能给大家带来惊喜!2017新年快乐!