在windowsXP下玩Dos游戏.docx

上传人:b****5 文档编号:11875527 上传时间:2023-04-08 格式:DOCX 页数:20 大小:46.09KB
下载 相关 举报
在windowsXP下玩Dos游戏.docx_第1页
第1页 / 共20页
在windowsXP下玩Dos游戏.docx_第2页
第2页 / 共20页
在windowsXP下玩Dos游戏.docx_第3页
第3页 / 共20页
在windowsXP下玩Dos游戏.docx_第4页
第4页 / 共20页
在windowsXP下玩Dos游戏.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

在windowsXP下玩Dos游戏.docx

《在windowsXP下玩Dos游戏.docx》由会员分享,可在线阅读,更多相关《在windowsXP下玩Dos游戏.docx(20页珍藏版)》请在冰豆网上搜索。

在windowsXP下玩Dos游戏.docx

在windowsXP下玩Dos游戏

新系统下老游戏重玩全攻略告别的年代,失色的回忆——新系统下老游戏重玩全攻略

  编者按:

无需再为过去那些经典的游戏立碑作传,对于老玩家,它们的意义已不仅是打开电脑之门的钥匙,而更是一种关于时间的回忆——如果你是跟随着《大众软件》一同走过这段年代,这种记忆也许会更深刻。

当然现在也有不少玩家只是在某个特殊的情况下接触了一些老游戏,尽管它们可能已无法发声、更缺乏华丽的动画,然而精彩的情节与对白、严谨的设计与画风,仍有可能给你一种特殊的吸引力。

不过游戏毕竟还是属于应用软件,凡属应用软件就必须严格遵守其所在操作系统制订的规则。

因此,当微软年复一年推出新操作系统的同时,无数的软件在新规则下结束了曾经辉煌的时光,这里面当然也包括了大量的经典老游戏——是的,无需为它们叹息,因为永远有更好的软件、更精彩的游戏不断出现。

只是,过去的这些真的已经成为——告别的年代,失色的回忆?

你不妨带着这样的疑问来看这篇文章。

  “新”与“老”当然是相对的,不过在开篇之前有必要确定我们的讨论范畴,这里的“老”是指为Win98之前的操作系统,包括DOS和Win32/95,而新系统则是指Win98/2000/XP。

毫无疑问,有很多老游戏都很值得我们来重温,但重温的方法也各异,有的人会去买例如奔腾133的“老爷级”机器,专门用于玩老游戏;不过老PC也不是谁都能买到的,而且为了玩老游戏真愿意如此大动干戈,也算是骨灰级玩家了。

于是典型的解决方法是采用多系统,其中有一个系统装上MSDOS6.22+Win32或Win95,不过这种方法也会碰上新显卡、声卡与老游戏不兼容的难题。

  实际上,大部分用户都会在现有系统上尝试老游戏,在这方面,使用Win98的用户似乎比WinXP的用户拥有更多的笑容(越“老”越好?

这是否准确,还请参见后文)。

除了一些兼容性非常好的游戏,大部分已不可能运行,而所谓兼容性好的游戏也基本上不可能听到游戏原声。

那么,要实现完美的重温效果,是否注定要调整硬件、注定要安装多系统呢?

经过笔者的一番艰苦探索,发现并不是这样,大部分的老游戏在新系统下仍旧可以找到合适的解决方案。

  一、DOS游戏的重玩

  在大家所碰到的经典老游戏中,DOS游戏无疑占有绝对多的比例。

然而辛辛苦苦找出来的游戏,当在视窗下双击主运行程序时,却会出现各种莫名的情况。

在Win98下还好一些,好歹能让你看到出错信息(当然一般情况下这个出错信息我们都弄不明白),至于Win2000/XP,往往是黑色屏幕一闪而过,一些情况下还会出现访问地址非法的提示,总之会让人不明所以。

  然而这种种不能正常运行的情况并不完全是因为新系统与老游戏不兼容的缘故,熟悉DOS的用户都知道,DOS是一个开放的系统,其软件操作并不像Windows下那样多数是“傻瓜式”,特别是DOS下的多媒体软件(例如游戏)要正常运行,往往需要对运行环境作特殊的设置,如果只是“双击”,当然不符DOS“风格”了。

因此一款DOS游戏在新系统下不能重玩,实质是兼容与设置两方面的问题均可能有,这也提示了我们解决问题的一些思路。

  由于在不同系统下,DOS游戏运行的环境大不一样,因此在下文中,将主要讲述WinXP下的解决方案,之后回到Win2000和Win98环境下,探讨重玩的方法。

这样行文还有一个原因:

事实上从Win98到2000再到XP,操作系统对DOS的兼容性是不断提高的,这恰与我们想像的相反——这一点很快就能从下文中看出。

   

(一)WinXP下DOS游戏重玩的方案

  WinXP在DOS支持上和Win2000有许多共性,因此本段涉及的许多内容都适用于Win2000,不过毕竟二者还是存在着一些区别,因此将在本段之后讲述Win2000所不同的地方。

  而Win98虽与WinXP相差过远,但一些原理性的东西亦是相通。

  首先需要简单了解一下WinXP下DOS命令运行的环境,大部分熟悉这个系统的用户都会认为,所谓有DOS环境当然是Cmd.exe的命令行运行窗口,实则不然,Cmd.exe提供的是对系统中所有类型程序的支持,包括32位和16位;而真正的16位DOS命令运行窗口需要由Command.exe提供,在WinXP中这个文件位于系统盘\Windows\system32目录下,图1是Cmd和Command运行窗口的比较。

  不过无论是在Cmd窗口下执行16位DOS命令,还是直接打开Command窗口,实际上都是由一个名为NTVDM.exe的进程提供NT下的DOS虚拟机支持(NTVirtualDOSMachine,简称NTVDM)。

因此可以说WinXP已完全摆脱了对16位DOS的依赖,此系统上所谓的DOS程序运行环境不过是一个完全虚拟的PC机!

理解这一点很重要,因为这预示着这个虚拟的“PC机”与你真实的硬件毫不相关,所有的硬件环境都是虚拟出来的,因此能够实现更好的兼容性。

  虚拟机是怎样模仿真实DOS系统的启动过程呢?

熟悉DOS的用户都会对Config.sys和Autoexec.bat这两个文件有难言的欣喜与痛苦——它们对系统的配置实在太为重要,在DOS启动时,首先会按Config.sys配置驱动,然后再执行Autoexec.bat中的命令。

在NTVDM中还能不能找到它们的身影?

既然说是“真实虚拟”当然应当是有的:

它们默认位于Windows\system32下,只不过名字已稍作改动,分别为Config.nt和Autoexec.nt。

你可以用记事本打开这两个文件进行编辑,不过在编辑之前最好进行备份,以防不测。

  理解了这些之后,我们就可以开始尝试解决实际问题了。

  1.内存问题的解决

  大部分老游戏不能正常运行的原因都是由于内存“不够”所导致,没有从DOS时代走过来的用户肯定会对“不够”二字极尽怀疑,事实上正是不够。

DOS有一套独有的内存使用方案,这个方案实际上较复杂,但对问题的解决至关重要,不过我们这里不必了解得一清二楚,因此用简单的图文说明如下(如果觉得生涩,可以先跳过这一部分,看到后面的例子不明白时再回过头来看):

  如图2所示,如果不加载特殊的内存管理工具,DOS最多只能识别1MB的内存,而这1MB,有384kB将被保留给诸如系统、硬盘控制器、显存等使用,称为上位内存(UpperMemoryBlock,简称UMB),剩下的640kB称作常规内存(ConventionalMemory),这640kB可不是全部空余的,系统启动后就会被占用一部分,这样一般程序只能利用常规内存的剩余(Free)部分了,理解这一点非常重要。

  然而虚拟机所提供的的内存容量绝对超过1MB,这部分被称作扩展内存,由于在使用上必须服从扩展内存标准(eXtendMemoryStandard),而被简称为XMS,要使用XMS就必须在Config.sys(现在是Config.nt)中加载Himem.sys驱动程序。

当然扩展内存最底层,靠近刚才所说的那1MB的地方,有近64kB的容量,DOS不使用XMS标准即可访问,这一内存区域被称为高端内存区(HighMemoryArea),DOS经常会将自己的一部分驻留在此区域(MS-DOSresidentinHighMemoryArea),以将常规内存尽量空出一些给应用程序使用。

  最后一个扩充内存EMS(为ExpandedMemoryStandard的缩写)的概念非常重要但又比较难理解,简单来讲它是CPU的欺骗者:

CPU“看起来”它是在UMB中(在1MB内,可自由使用),而实际上它在XMS中,是XMS的一部分或全部,这样程序就能够有效地使用1MB以外的扩展内存了。

不过要使CPU能识别扩充内存,需要在Autoexec.bat(现在是Autoexec.nt)中装载扩充内存管理器EMM(ExpandedMemoryManager),在DOS下一般是用EMM386.exe。

这里需要说明,由于EMS占用了XMS的空间,所以XMS的可用(Available)部分会减少。

旧DOS是一个非常自由的系统,在上面运行的游戏可自由决定是否使用EMS,甚至还会决定要多少EMS,否则就……嘿嘿,罢工。

  从以上看来,与我们的话题密切相关的有两块内存:

常规内存和扩充内存,这两个也恰巧是无数DOS在新系统下运行的“杀手”,好在我们现在已知已知彼,可以开战了。

  以下实例均在WinXPProSP1版本下进行。

(1)扩充内存EMS的正确配置

  实例1:

《中关村启示录》

  在游戏的安装目录h:

\dosgame\ZGC下有一个Play.bat的批处理文件,双击即可执行,然而如此执行的结果却是黑色窗口一闪而过——不过这么出名的游戏怎能轻易放过,一定得探个究竟才是。

于是在Play.bat对应图标上点击右键,选择“编辑”,系统会调用记事本打开文件,看到其中有两条命令:

runqbj和go,分别对应同一目录下的R和Go.bat,显然Go.bat还是一个批处理文件,用记事本打开后发现其中又有3条命令:

  univbe、game和univbe/u,这3条对应两个可执行文件:

Univbe.exe和Game.exe。

为了找到原因所在,笔者将逐条执行runqbj、univbe和game命令。

  在“开始”→“运行”对话框中输入“command”并回车,在打开的Command窗口中改变目录到游戏安装目录,逐条输入3行命令,当执行完Univbe后,提示找不到所支持的显卡(图3),暂时不去理会,执行完最后一条命令Game,在屏幕上看到一行字:

EMSmemorymanagernotfound(找不到EMS内存管理器)。

难道是因为WinXP的NTVDM默认就不加载EMM吗?

  事实正是如此。

在前面提到的Config.nt文件里关于EMS的说明中,笔者发现这么一段话(图4):

EMS的大小将由Pif文件决定,这个Pif文件要么是DOS程序的快捷方式,要么默认为系统盘Windows目录下的_default.pif,如果在Pif文件的设置中EMS被设定为“0”,则EMM将不会加载。

  大家对Pif文件及其图标一定都不会陌生,从Win3X时代起,为了能在视窗界面中给DOS程序提供自定义的内存配置,微软设计了一个“Pif”的概念,看起来这个Pif只是原来程序的一个快捷方式,实际上可以在其中进行大量的自定义设置。

由于游戏安装目录下找不到任何Pif文件,所以根据以上一段说明,双击时将会调用_default.pif中的设置。

于是我们找到_default.pif,并在其上点击右键选择弹出菜单中的“属性”(图5),在打开的对话框中点“内存”标签卡,发现里面的EMS赫然设为“无”(图6)!

《中关村启示录》运行需要EMS支持,这样设置当然会出错。

而刚才运行的C也符合这一原则,其属性对话框的内存页与图6完全相同。

  那么解决方法你一定已经想到了,由于WinXP无法对.bat文件配置内存,所以你可以:

1.修改_default.pif属性中的内存配置;2.修改C的内存配置,并在其窗口中运行Play.bat。

但修改_default.pif文件显然不可取,因为这个文件将会是所有DOS程序的默认Pif配置文件,有一些程序并不需要EMS,有的甚至只要有EMS就不能运行。

那我们试着把C内存配置中的EMS和XMS两项均调为“自动”(图7),再次运行Command窗口,同上找到安装目录并输入“play”命令,回车之后惊喜的看到了游戏的开始画面(图8)。

  那么到底“自动”是什么概念呢?

再次进入Command窗口并执行命令行“mem”,这个命令可查看当前的内存分配及使用情况(图9),原来“自动”默认为分配4MB的EMS和19MB的XMS(其中只有15MB是可用的)。

这里顺便说一下,显示的第1行就是前面所说的640kB常规内存,第3行非常重要,表示NTVDM启动后常规内存剩下的空间,当然也就是最大可执行程序的大小了(Largestexecutableprogaramsize)。

  不过每次从Command运行再找到Play.bat仍显麻烦,其实有更简便的方法,由于Play.bat文件中第一行runqbj(qbj?

求伯君?

呵呵)对应于Runqbj.exe(记住不是.bat文件),于是在Runqbj.exe的文件图标上点右键并进入“属性”设置,将其中的内存页同图7设置(当然也可将EMS设置为4MB以上的数值),确定后会在当前目录下生成Runqbj.pif文件,之后双击Play.bat即可顺利进入游戏。

  巩固:

《三国志Ⅳ》

  在游戏安装目录San4下有两个运行文件:

和,显然后一个是针对486机器设置的,运行它将拥有更高的游戏性能。

然而点击后能顺利进入KOEI开始画面,但之后就屏幕一闪,并显示出一行字:

NotEnoughMemory(缺乏足够的内存),此时你应当对“不够”二字有所领会了,由于是直接双击,故猜想仍是EMS的问题。

依上法设置的EMS为自动,即可顺利进行游戏(图10)。

  反思及总结:

这类问题的出现比较集中,因为直接双击可执行文件,所启动的NTVDM默认不支持EMS。

对于.exe和.com文件,直接在属性中设置好EMS即可,若是.bat文件,则需参考上述间接修改方法

(2)常规内存的正确配置

  实例2:

《龙骑士4》(Dra4)

  这款游戏由ELF出品,以情节设计的巧妙赢得了不少玩家的欣赏,我们看能不能在WinXP系统下正常运行。

首先必须根据游戏说明其安装在C盘根目录下,进入安装目录c:

\dra4,双击执行其中的Play.bat,出现的情况仍然是黑屏的一晃而过。

于是按照实例1中的方法用记事本打开Play.bat,发现其中只有一行:

dra4start.mesHxC,这是一个带参数运行的命令,主程序是dra4,不过却在安装目录下发现了两个可执行dra4文件:

和dra4.exe,这里你需要知道.com文件执行的优先度高于.exe。

于是对的属性进行修改,将EMS设为8192kB。

可是和我们的意愿相反,双击Play.bat后还是黑色窗口一闪而过……

  于是回到刚才讨论的内存知识中来,除了EMS,还有一个内存杀手就是常规内存。

还记得上面图9中的“最大可执行程序大小(Largestexecutableprogramsize)”吗?

有没有可能581120字节的内存仍不够使用呢?

不妨试着从常规内存中清理出一些空间来。

  这里我们需要先查看NTVDM默认启动时都加载了哪些程序,仍然在“运行”对话框中输入“command”打开DOS命令行窗口,在其中键入“mem/c|more”命令分页查看当前内存的详细利用情况(图11,熟悉DOS的用户会问为什么不用“/p”参数,因为这个参数在NTVDM中已不被支持,只好用“|more”代替)。

从图中可以看到常规内存(ConventionalMemory)中有几个大头:

MSDOS、MOUSE、DOSX,尤其是DOSX,居然占尽了33.9kB的空间,要知道常规内存中可是寸土必争啊。

  实际上DOSX是NTVDM为支持DPMI(DosProtectedModeInterface,DOS内存保护模式接口)类型程序而执行的命令。

保护模式可以让程序获得更多的内存资源,但使用DPMI的游戏都必须附带一个DOS扩展程序,这个程序一般为DOS/4GWv1.96,文件名为DOS4GW.exe,所以游戏是否需要DOSX支持,只需查看其安装目录下是否有DOS4GW.exe文件即可。

  显然在Dra4目录下并没有发现DOS4GW.exe,故判定这33.9kB的DOSX运行空间完全可以释放出来,那么通过什么方法呢?

还记得刚才提到的Autoexec.nt和Config.nt吧,笔者刚才说这是两个让人悲喜交加的初始化文件,那么看一下在这里它们能给我们带来什么样的喜悦。

  由于这两个文件对整个NTVDM系统非常重要,所以修改时要小心,当然可以备份,不过最好的方法还是使用Win2000/XP提供的自定义初始化文件功能。

首先把Autoexec.nt和config.nt从System32下拷贝到c:

\dra4目录下,之后找到文件,依上法进入属性对话框,在程序标签页中点击“高级”按钮(图12),在弹出的WindowsPIF窗口中重新指定专用初始化文件(图13),将二者的位置分别修改为“c:

\dra4\autoexec.nt”和“c:

\dra4\config.nt”并两次“确定”。

  接下来我们要对这两个自定义的初始化文件进行修改。

使用记事本打开Autoexec.bat,可以发现里面有一大堆以“REM”开头的文字行(表示这一行是注释,不会被执行),值得注意的是有3行lh命令(图14),这是将其后程序尽量(不一定成功喔)加载到上位内存的命令,这里的mscdexnt.exe、redir和dosv分别提供了NTVDM对光驱、网络(还可以玩经典游戏的网络版!

)以及DPMI的支持。

这个例子中由于三者都无需使用,因此在这3行前面分别加上“REM”以表示取消(实际上去掉DOSV就足够了,这里干脆一不做,二不休)。

编辑完成之后记得保存,然后回Dra4目录,双击D,你会发现果然是一击奏效(图15),需要提醒的是,在修改Autoexec.nt的同时仍需配置好D的内存参数,特别是EMS。

  反思及总结:

这个例子中并不需要DPMI的支持,但若是碰上了既需要DPMI,同时又得不到常规内存的游戏怎么办?

我们还是有办法的,只需修改Config.nt文件,在其中加入一行“EMM=RAM”。

这样配置后MOUSE和DOSX等程序会部分或全部从常规内存中移到上位内存中,从而获得大量的常规内存(图16,这是修改后用“mem/c|more”命令进行查看的结果,可见DOSX已进入上位内存,而可用常规内存也达到了615.3kB之多)。

最后需要说明,EMS和可用常规内存显然存在潜在性的资源争夺,系统之所以不将EMS默认设为“自动”,原因在于设置EMS后,一些原来驻留在上位内存的一些程序就会被赶到常规内存中去,从而导致可用常规内存减小,所以应根据DOS程序需要选择是否使用EMS。

  2.声音及其他兼容问题的解决

  从上述说明来看,内存问题在WinXP下只能算作配置方面的难题,而本段涉及的才真正是兼容问题。

首先要说明这里的声卡并不是指你真实机器上的声卡,而是NTVDM所模拟出的声卡。

  从WinNT到Win2000,所虚拟的DOS版本都是5.0,而NTVDM提供的硬件为与DOS版本配套,实质上“配置”相当低,这样对DOS游戏的支持也很差,最关键的是,它不支持DOS6时代以来声卡的标准兼容模式——SoundBlaster。

但WinXP在这方面则有所突破,其提供的NTVDM中直接内建有对SoundBlaster2.0的支持,对DOS程序的兼容性将会好很多,此外WinXP继承了Win2000中对鼠标、光驱、网卡和DOS/4GW的默认驱动。

  不过WinXP提供了声卡支持,是福亦是祸:

虽然安装有声卡,但却只能提供2.0支持,大部分DOS程序都支持SoundBlaster16,这样就可能存在潜在冲突。

好的情况下程序尽管检测不到声卡,仍会正常运行,但有的游戏则可能会直接崩溃。

  此外,在WinXP中还有可能存在其他一些兼容问题,例如程序不能对软驱进行任意设置等,在下面这个例子中会有全面的反映。

  实例3:

《大富翁3》

  这可是DOS时代最受MM喜爱的游戏,即使是今天玩起来还是兴味盎然。

然而到该游戏的目录c:

\rich3下双击执行Play.bat,系统经过一番折腾甚至看到了开头的SoftStar动画,最后仍给了一个静止的黑屏——没关系,我们已经习惯了。

于是用记事本打开Play.bat看个究竟,发现里面有一行命令是“substa:

.”,熟悉DOS的用户知道这条命令用于把当前目录映射成A盘,游戏将把A盘当作CD-ROM。

这当然会导致兼容问题,因为虚拟机是不可以直接访问硬件的,WinXP控制下的软驱当然也不能轻易映射。

  于是想到可以将软驱先行屏蔽,好在WinXP可以不重启即停用软驱。

在“我的电脑”上右键选择“属性”打开系统属性对话框,依次选择“硬件”→“设备管理器”(图17),在打开的设备管理器中展开“软盘驱动器”,右键单击菜单下的“软盘驱动器”并选择“停用”(图18,游戏结束后别忘了重复此过程并在这里选择“启用”)。

确定之后回到rich3目录,再次双击Play.bat,结果发现已经能进入开始画面(图19),但只要选定人物并开始游戏,整个NTDVM系统就会崩溃——是全线崩溃,结束任务后连C也无法运行,只有重启才能解决问题。

  这让笔者迷惑了一阵,不过由于能够输出视频,则问题很有可能出在NTDVM虚拟出的声卡上。

于是用记事本打开System32下的Autoexec.nt,文件的最后一部分是对内建声卡的描述(图20),正如前面所言,这里说明WinXP的NTDVM只提供对SoundBlaster2.0的支持。

在文件的最后,说明可将此声卡屏蔽,于是按照说明,在“SETBLASTER=A220I5D1P330T3”一行前加“REM”注释,同时去掉“SETBLASTER=A0”一行前的“REM”。

再次双击Play.bat,果然顺利进入游戏画面(图21)。

  屏蔽声卡能够解决不少游戏无法正常运行的问题,不过到此为止,我们发现:

还没有一款游戏能够正常发声,如此的重温,怎能不让记忆失色?

虽然笔者也曾经通过一定的设置,使几款经典的游戏如《阿猫阿狗》能够正常发声(很好的感觉),但绝大部分游戏并不完全支持SoundBlaster2.0,例如在《天使帝国2》中,即使人声是正常的,背景音乐却完全听不到。

因此这里不再讲如何通过系统配置重现声音的方法,不过更为关键的原因是,我们可以利用一个软件,它不仅可完全解决声卡的兼容性问题,最重要的是它解决了NTDVM系统的最大限制——几乎能使DOS程序的原音完全重现,这个软件就是VDMSound。

  VDMSound是一款符合GNU标准的免费软件,作者的自由开发精神令人敬佩,最新版本为2.0.4。

软件为NTDVM所提供的声音平台包括MPU-401接口(可提供高质量的MIDI音效)、SoundBlaster兼容接口(兼容SBPro1/2、SB1.5/2.0/16/AWE32/32/64,可提供电子及FM/AdLib音效),甚至还包括游戏控制接口(这样就能用手柄和摇杆了)!

VDMSound与你机器上的真实声卡没有关系,它甚至可将DOS程序发出的声音信息输入到磁盘文件中。

下面具体来讲一下使用方法。

  软件下载可参考:

  具体使用方法就更简单了,仍以《大富翁3》为例,你只需在Play.bat上点击右键,选择菜单中的“RunWithVDMS”即可(图22),初次使用时,软件会弹出一个小Tips窗口(图23),笔者建议如果条件允许,可仔细阅读其中的每条提示(软件有一个小Bug,就是不会自动更换Tips,因此逐条阅读比较好),能让你学到不少知

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1