返回列表 发帖

经典DOS游戏通用说明(转自工程之家)

经典DOS游戏通用说明

鉴于dos时代已经过去,新一代的游戏玩家很少接触DOS系统。很多看来很“简单”的问题,他们也是束手无策。这里简单介绍一下dos游戏的玩法。
  
  适合玩dos游戏的操作系统
  
  dos5.0、dos6.0 (比较稳定的dos旧版,默认目录c:\dos)
  dos6.22 (纯dos的最终版本,默认目录c:\dos)
  dos7.0 (win95,win98附带的dos,默认目录c:\windows\command)
  另外winxp,winnt和win2000都有自己的Dos command prompt,但是不能作为启动系统,如果你的机器只有这几个系统,那很遗憾,你玩不了dos游戏。
  
  启动和加载
  
  旧版dos(dos6.22以前的版本)启动后会加载msdos.sys、io.sys和command.com系统文件,缺一不可。然后加载config.sys和autoexec.bat中的管理程序,这2个文件如果缺省,那你几乎寸步难行,只能操作最基本的dos命令。
  
  新版dos(win95/win98附带的dos7.0)启动以后加载io.sys和command.com系统文件,msdos.sys只是作为一个开机配置文件。config.sys和autoexec.bat基本是个空文件,因为系统默认加载了emm386,himem,dos,files等重要配置。
  
  内存常识
  
  内存有基本内存(base memory,640K),高端内存(upper memory,384K),扩充内存(expand memory,用户的物理内存总数)等类型。
  
  一般dos游戏启动都是放在基本内存(base memory),因为只有640K,而其他常驻程序都是放在这里,所以通常提示不够内存都是因为使用者没有加载高端内存,调离其他程序的存放位置,它们占用了游戏程序空间,导致游戏出现"not enough memory"的提示。
  
  高端内存(upper memory)一般游戏程序用不上,那么把一些常驻的程序,例如mouse,mscdex,doskey,gb等放到里面,就可以腾出很多空间给基本内存。
  
  扩展内存(expand memory)不用于游戏的启动,而是处理交换游戏中的大量数据,和游戏启动无关,有时候游戏半途退出,可能就是扩充内存不够。
  
  dos游戏最致命的瓶颈就是内存。它不同windows系统那样智能管理内存,所有设置都要自己慢慢调试,而且早期的游戏设计只能用高端内存和基本内存,就算你的扩充内存有128M也是没用的--程序设计本身就不用它们。
  
  config.sys文件的编写
  
  这开机系统文件可以编辑,最常用就是用dos自带的edit命令。如果你的path(该命令后面再解释)没有指错地方,那个你在c:\下面运行 “edit config.sys”就可以编辑这个文件,同理可以编辑autoexec.bat。
  
  config.sys文件管理dos系统的内存,常用的加载内存管理语句:
  
  DEVICE(加载管理程序)
  DEVICEhigh(加载到高端内存)
  dos(系统文件的位置)
  files(打开文件数量)
  buffers(缓冲区数量)
  lastdrive(最后盘符)
  shell(解释命令的位置)
  rem (注释)
  
  例子解释:
  
  1, DEVICE=C:\dos\HIMEM.SYS /testmemff
  
  这个语句非常重要,加载高端内存管理,使dos能使用高端内存,如果你的机器慢,可以加/testmemff跳过内存检测
  
  2,DEVICEhigh=C:\dos\EMM386.EXE ram
  
  在高端内存中加载emm386,emm386.exe是用来管理扩充内存的,这个语句也很重要。常用的参数为 ram 和 noems,解释为使用扩充内存和使用扩展内存。noems 比 ram 能释放更多的基本内存 ,但是这个noems语句很多程序不使用,所以使用面很窄。
  
  3,dos=high,umb
  
  这个语句很重要,把msdos.sys、io.sys和command.com系统文件放到高端内存中。
  
  4,files=30
  
  同时打开的最大文件数量,一些游戏需要同时打开很多个数据流,如果这个语句没有设定,其默认值是10,游戏可能会出错。
  
  5,buffers=20,8
  
  设定缓冲区数量以及高速缓冲区数量,用于加速文件读取速度。
  
  6,lastdrive=z
  
  指定最后一个硬盘盘符为z,就是说,你可以使用到z:这些盘符,即使你没有这么多的分区,你可以通过subst,fcd,ramdrive,img等手段虚拟一些硬盘分区出来。如果不加载这个语句,上述命令就不会起效。
  
  7,shell=c:\dos\command.com
  
  这个命令默认存在,一般不用加载。作用为指定dos的解释命令,一般默认就是c:\dos\command.com,如果你需要日文dos或者使用其他的解释命令,例如4dos、ndos,就需要指定一个shell。
  
  8,rem this is a sample
  
  rem为注释语句,后面无论你写什么东西dos都不理睬,常用于屏蔽一些暂时不用的语句,例如你暂时不需要加载shell=c:\dos\command.com, 只需 rem shell=c:\dos\command.com ,dos就会跳过该行不予执行。同理运用于autoexec.bat
  
  总结dos游戏通常需要的config配置:
  
  DEVICE=C:\dos\HIMEM.SYS
  DEVICE=C:\dos\EMM386.EXE ram (或者DEVICE=C:\dos\EMM386.EXE noems)
  dos=high,umb
  files=30
  
  如果还需要光驱来玩,可能还需要加载光驱启动程序,例如 DEVICE=c:\cdrom\VIDE-CDD.SYS /D:MSCD001 ,这个通常由安装程序完成。如果还需要声卡来玩,可能还需要加载声卡启动程序,例如 DEVICE=c:\sound\usbcd.SYS,这个通常由安装程序完成。
  
  注意:本文提到的c:\dos是默认的dos目录,如果你的是win98的dos7.0,放在d盘,那么himem.sys和emm386.exe在d:\windows里面。而其他的dos文件在d:\windows\command里面。如果找不到dos放在哪里,在根目录下,例如c:\,运行“dir himem.sys/s”命令来找。
  
  autoexec.bat的编写
  
  autoexec.bat管理dos系统的常驻程序,里面的语句其实可以一步一步手动运行,只不过每次开机都要一定运行的程序,可以通过这个文件来实现自动运行。常用的语句:
  
  PATH (指定路径)
  SET (设定变量)
  prompt (命令提示)
  lh (加载程序到高端内存)
  MSCDEX (cd驱动程序)
  smartdrv (硬盘加速程序)
  rem (注释)
  
  例子解释:
  
  1,PATH=c:\WINDOWS;C:\WINDOWS\COMMAND;d:\DOS;d:\tools
  
  指定command的运行范围,方便调用程序,假设你处于e:\game目录,那么你也可以直接运行处于c:\dos里面的format语句。如果你不指定path,你必须在c:\dos目录里面才可以运行这个命令。
  
  2,prompt $p$g
  
  命令行提示你处在的位置,例如c:\dos,e:\fpe,f:\game\san2等,如果不加载这个命令,那么无论你在什么目录,都是盘符,如c:\,e:\,f:\。这个prompt还有很多提示,详细自己研究。
  
  3,lh C:\dos\mouse.com
  
  在高端内存加载鼠标驱动程序mouse.com,很多dos游戏需要鼠标支持,如果你不加载鼠标驱动语句,那么无法使用鼠标。
  
  4,doskey
  
  加载后可以记录你的键盘历史命令,可以不必重复输入使用过的繁琐命令,用上下箭头来选择历史记录。
  
  5,set命令,设定环境变量,有很多种语句,例如
  
  set temp=f:\temp
  指定DOS的临时目录在f:\temp,前提是你有f盘,而且有temp这个目录存在,dos默认的temp目录在c:\dos,但是我建议使用一个空的目录。因为dos使用时间一长,就会有很多垃圾,和windows系统一样,都会放在temp目录里面,只要里面有文件,都是垃圾,可以删除。而默认的dos目录里面有很多系统文件,不熟悉的人可能分辨不出哪个是垃圾,哪个是系统文件。
  
  set tmp=f:\temp
  指定windows临时目录在f:\temp,其他说明同上。
  
  SET BLASTER=A240 I10 D3 H7 P330 T6
  设定声卡的变量,例如音量、通道、端口等,由安装程序设定。
  
  set path=c:\dos
  简化为 path= ,参考上面
  
  set dircmd=$1/og/p
  设定dir的变量
  
  6, lh C:\WINDOWS\COMMAND\MSCDEX.EXE /s /D:MSCD001 /V /m:20
  
  在高端内存加载cd驱动程序,这个通常由安装程序完成。
  
  7, c:\dos\smartdrv c+ d+ e+
  
  启动硬盘/光盘加速程序,使读盘存盘加速,c+ d+ e+等为指定c: d: e:盘提供高速缓存。
  
  总结dos游戏通常需要的autoexec配置:
  
  PATH C:\WINDOWS;C:\WINDOWS\COMMAND;c:\DOS;
  prompt $p$g
  lh C:\WINDOWS\COMMAND\doskey
  lh c:\windows\command\mouse.com
  set变量看具体情况而定
  
  如果还需要声卡来玩,可能还需要加载声卡启动程序,例如 C:\PROGRA~1\CREATIVE\usbLIVE\DOSDRV\usbEINIT.COM,这个通常由安装程序完成。
  
  注意:本文提到的c:\windows\command是dos7.0默认的dos目录,如果你的是dos6.0,放在d盘,那么dos文件在d:\dos里面。mouse.com文件不是dos默认配置的文件,你需要通过其他渠道获得。
  
  通过这2个文件的配置,每次启动完毕你可以通过mem命令来检查你的基本内存是否够大,用法 mem/c/p,查看base memory一栏,一般来说,有550K就足够运行大多数的dos游戏,如果不够,就释放一些次要的常驻程序,例如doskey等,重新启动,慢慢调试...(dos就是这么烦)
  
  其他游戏问题
  
  有些程序需要特殊的是显示卡程序支持,例如dos4gw,ega,svga等等,有些需要大量的显存才能玩起来。现在的显卡基本上不存在显存不够问题了,但是有可能先进的显卡淘汰了旧的显示模式,而这些模式刚刚好被某个游戏用上了,除非你换一个旧的显卡,要么就不玩这个游戏。例如三国志5,很多先进的pc都玩不了这个游戏,原因就是显卡模式和声卡模式都太旧了,新显卡实现不了。所以包括本人在内也无法重温。还有三国演义1代,有些显卡玩起来会周期性的黑屏,那也是冲突问题。
  
  如果该程序需要声卡支持,那么你需要安装dos的声卡驱动程序;一些游戏附带通用声卡安装程序,一般来说你选择sound blaster系列的就可以了。某些主板合成的声卡它只提供win的驱动,而没有dos驱动,你可能玩游戏的时候无法有音乐。
  
  如果游戏需要用到光驱,那么你要安装光驱驱动程序,如果找不到适合的光驱驱动程序,你可以用win98附带的万能光驱驱动程序,在制作安装盘的时候就有。 如果是光盘版的游戏,你可以用fakecd(cdx)来虚拟一个光盘,例如:先把游戏解压到一个目录中,如d:\sanguo,之后运行 cdx d:\sanguo /L:z(指定z盘虚拟为sanguo的光盘)即可。 详细说明请看cdx/?里面的说明
  
  如果游戏需要鼠标支持,你需要安装mouse驱动,一般常用的有mouse.com,qmouse.com,gmouse,mmouse等。
  
  如果游戏速度过快,可以用fpe等游戏变速软件来调节。旧游戏设计时候的电脑时钟频率远远慢于现在的P4,很多旧dos游戏都是快得惊人,如果不减速,那很多东西都玩不了,你根本不是电脑的对手。
  
  相关的dos游戏软件
  
  gb5 ,gamebuster 5.0 ,游戏克星,早期的游戏修改软件,有模糊查询功能,可以存游戏进度,可以调整游戏速度。缺点就是不支持例如koei的图形dos4gw界面系统。按2次TAB键激活界面,操作起来不方便,输入需要转换成16进制。
  
  fpe,整人专家,比gb优秀,支持dos4gw界面,支持模糊查询(这个功能在win版就取消了,可惜),不可以存进度,按*激活界面,支持10进制输入。速度比gb快很多,推荐使用。
  
  getcap, 游戏抓图,按shift抓图,存盘成gif格式,比较好用。缺点就是不太通用,一些特殊界面系统的游戏无法抓图。
  
  diskedit, Norton Utilities的文件修改工具,可以修改游戏存档,具体用法不详述。
  
  补充
  
  一,关于游戏克星GB,我觉得它也有比FPE好的地方,主要有两个功能是FPE没有的:
  
  1,它可以保存当前内存的映像,这个功能主要可以用于在一些没有储存进度功能的游戏中储存进度,另外这个功能还可以用来保存一些开始 时要输入密码表等的游戏,这样不用每次去翻密码表。这个功能甚至不局限于游戏,以前一些DOS下的一些要读加密盘的应用软件,可以用 GB在读完加密盘后把内存映像保存,这样以后就不用读盘了,但它的局限是DOS启动的配置要一样,不一样的话就不成功。
  
  2,GB有跟踪功能,在找到了血或生命值在内存的位置之后,GB可以跟踪监视这个地址,一旦程序修改这个地址,GB会自动弹出菜单并把当 前修改被监视内存地址的那几条指令的机器码用红色显示。然后可以自动取消这几条指令,这样你的游戏就是无敌版的了。另外如果你把红 色显示的几条机器码指令(最好是连旁边的几个机器码也记下来)记录下来,然后在DOS下用PCTOOLS之类的工具找到并修改游戏程序中该指 令,还可以制作出可以脱离GB自己运行的无敌版游戏,这个功能也很实用。
  
  二,关于游戏工具,还有一个很好的工具不应该错过,就是GAMETOOL,其实说它是游戏工具真的是有点大材小用了,它在DOS时代几乎可 以和SOFTICE相媲美,它有功能强大的内置DEBUGER,用来跟踪和破解应用软件都绰绰有余,游戏就更不在话下了。就算这样, GAMETOOL的修改游戏功能也很强大和方便,它既可以当成FPE来使用而且方便性不比FPE差,也可以当成SOFTICE之类的高级调试工具来使 用,是一个既适合又适合入门者的工具。
  
  本文使用的说明参考dos6.22系统,如果你需要进一步了解dos命令,请看dos目录里面的help.com

返回列表