中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 转贴:DOS游戏通用说明 (文:无翼在天)
作者:
标题: 转贴:DOS游戏通用说明 (文:无翼在天) 上一主题 | 下一主题
lydong
元老会员




积分 1468
发帖 407
注册 2002-10-21
来自 广州
状态 离线
『楼 主』:  转贴:DOS游戏通用说明 (文:无翼在天)

DOS游戏通用说明

--------------------------------------------------------------------------------


系统介绍
内存问题
config.sys 的编写
autoexec.bat 的编写
显示、声卡、光驱问题
实用工具
鉴于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 /testmem:off

这个语句非常重要,加载高端内存管理,使dos能使用高端内存,如果你的机器慢,可以加/testmem:off跳过内存检测

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\sbcd.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\SBLIVE\DOSDRV\SBEINIT.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



欢迎大家观临我的个人主页:

      http://dosdiy.bluepc.com.cn/
      http://dosdiy.ys168.com/


EMAIL: lydong@china.com.cn    lydong@yeah.net
----------------------------------------------
2003-6-6 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (89677127)  编辑帖子  回复  引用回复
kind-uo
初级用户




积分 199
发帖 22
注册 2003-6-10
状态 离线
『第 2 楼』:  

楼主
我请教:我在WIN98中玩DOS游戏发现系统没有DOS的扩展内存是不是该编写个DEVICEhigh=C:\dos\EMM386.EXE ram   ;还有在那个文件中编写。请给我发个邮件
我的邮箱:KIND-UO@163.Com
我是菜鸟请详细  谢谢!

2003-6-17 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
young1234
中级用户




积分 333
发帖 62
注册 2003-9-16
状态 离线
『第 3 楼』:  

UP

2003-9-18 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cn_archer
元老会员

农民


积分 2903
发帖 991
注册 2003-7-23
来自 福建省
状态 离线
『第 4 楼』:  

好文章,共享之!



艰难奋长戟,万古用一夫

中国DOS联盟  http://www.cn-dos.net   欢迎大家来共同学习
我的MSN&E-Mail cn_archer@hotmail.com  QQ 56049418
2003-9-18 00:00
查看资料  发送邮件  发短消息 网志  OICQ (56049418)  编辑帖子  回复  引用回复
young1234
中级用户




积分 333
发帖 62
注册 2003-9-16
状态 离线
『第 5 楼』:  

up

2003-9-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOCO
初级用户




积分 133
发帖 6
注册 2003-9-26
状态 离线
『第 6 楼』:  

好文章

2003-9-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ddvcc
初级用户




积分 114
发帖 7
注册 2004-9-12
状态 离线
『第 7 楼』:  

好文章 dos快遗忘光了

2004-9-12 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mantis
初级用户




积分 102
发帖 1
注册 2005-1-26
状态 离线
『第 8 楼』:  

写的不错。支持一下。

2005-1-27 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
studenting
新手上路




积分 9
发帖 4
注册 2005-1-30
状态 离线
『第 9 楼』:  

难啊,努力的学习

2005-2-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
merlin
初级用户

KMGT


积分 143
发帖 18
注册 2005-2-11
状态 离线
『第 10 楼』:  

顶!



坚持就是胜利!
2005-2-11 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ttimber
初级用户




积分 198
发帖 43
注册 2004-11-2
状态 离线
『第 11 楼』:  

好文章,共享之!




我爱电脑,更爱软件,最爱的是我的父母和老婆!
2005-3-29 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wangfangjian
中级用户





积分 274
发帖 192
注册 2009-1-7
状态 离线
『第 12 楼』:  



2009-4-8 12:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jzwspace
初级用户





积分 34
发帖 17
注册 2009-8-11
状态 离线
『第 13 楼』:  



2009-8-13 23:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kongdewei
新手上路





积分 6
发帖 3
注册 2021-9-17
状态 离线
『第 14 楼』:  

感谢楼主分享

2021-10-1 17:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jshan888
初级用户





积分 51
发帖 26
注册 2022-4-17
状态 离线
『第 15 楼』:  

学习了,好多经典老知识,

2022-5-22 21:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: