在Windows7下玩老游戏花屏的解决办法
来源:互联网 发布:安卓订餐系统源码 编辑:程序博客网 时间:2024/06/07 15:54
在Windows7下玩老游戏花屏的解决办法
地狱门神
在Windows7下玩老游戏,如星际争霸,会出现花屏的现象。
这个现象的原因是Win7的DirectDraw的256色调色板的兼容性问题,据说是默认配置下,程序无法获取调色板锁。
一个简单的解决方法是杀掉explorer进程,估计这样就会停止桌面主题修改调色板。
但是这不是一个一劳永逸的办法。
经过在网上搜索,发现有这样一个解决方案。
DirectDraw有一个注册表项,用于开启兼容模式,位于
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility
(Win7 x64)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility
(Win7 x86)
在这个注册表项下添加需要启用兼容模式的exe,如:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\StarCraft116]
"Name"="Starcraft.EXE"
"ID"=hex:ca,89,65,49
"Flags"=hex:00,08,00,00
(Win7 x64)
就可以使得对应的程序运行于兼容模式下。
这三个键值中,Name是程序的文件名,Flags是常量,而ID是程序的时间戳。
以星际争霸1.161为例,我们可以使用CFF Explorer打开Starcraft.exe,然后在Nt Headers-File Header中找到TimeDateStamp一项,发现其值为496589CA。
将该整数倒过来写作低字节优先的形式(little-endian),就是ca,89,65,49,这就是注册表中的ID值。
网上的有解决方案声称HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication下的ID记录的就是上一次运行的游戏的时间戳。
但是我验证的时候发现不一致。
通过此方法,星际争霸已经可以在我的机器上正常运行。
此外,还有一种方法是通过Hook掉DirectDraw的函数来完成的,见
http://sol.gfxile.net/ddhack/
不过这个实现是通过软件方法来进行 索引->颜色 转换的,没有使用到显卡加速,在运行星际争霸时比较卡。
但这种方法只需要在程序文件夹下放入一个ddraw.dll的文件就可以实现,比较方便。
也许以后会有人通过DirectX或者OpenGL来模拟DirectDraw的功能,能够比较完善的解决这个问题。
首先感谢国家
感谢暴雪和暴雪官方的ftp
感谢“地狱门神”所写的《在Windows7下玩老游戏花屏的解决办法》“http://www.cnblogs.com/Rex/archive/2011/01/02/1924327.html”
感谢NTCore
所有的reg文件都非常简单,其中的scbw116_x86.reg和scbw116_x64.reg都来自于暴雪的官方ftp:“http://ftp.blizzard.com/pub/starcraft/”,
其他的reg文件是根据暴雪的官方版本略加修改得到的,主要修改的是其中的“ID”,为了得到这个“ID”,使用了NTCore的免费工具:
“CFF Exporer VII”。
- 在Windows7下玩老游戏花屏的解决办法
- 关于windows7和帝国时代2花屏的解决办法
- 在windows7下安装vs2008失败的解决办法
- 在windows7下安装vs2008失败的解决办法
- 在Windows7下Word没有了菜单栏的解决办法
- windows7光驱找不到的解决办法
- 关于opencv2.4.9和VS2013在windows7下无法打开摄像头的问题的扯淡解决办法
- 在 windows7 中无法显示 chm 文件内容的问题【解决办法】
- 一种ClickOnce应用程序在Windows7上安装时发生错误的解决办法
- windows7无法打开网业的解决办法
- windows7 打开方式不能使用的解决办法
- Windows7更新失败的一个解决办法
- windows7(win7)不能注册控件的解决办法
- windows7使用临时配置文件登录的解决办法
- 关于windows7开机黑屏的解决办法
- Windows7任务栏无法删除图标的解决办法
- Windows7下VS2008试用版到期的解决办法
- Windows7下VS2008试用版到期的解决办法
- hdu 3067 小t的游戏 (找规律)
- Common FileUpload组件的使用
- War
- hdu1686
- html2
- 在Windows7下玩老游戏花屏的解决办法
- An easy problem
- [LeetCode] Balanced Binary Tree
- C语言 二维数组(指针)动态分配和释放
- MIPS指令系统能流水的5个有利条件
- 约瑟夫问题(猴子选大王)
- 教你怎么阅读外文文献
- centos 安装中文字体和中文输入法
- HTML表格标签的使用-<table>