DOSBox使用实例
本文以某游戏为例,简述DOSBox的基本使用方法。采用版本为官方版DOSBox v0.72,可于DOSBox官方网站
http://www.dosbox.com/download.php?main=1下载。不同版本的DOSBox兼容性存在差异,如Falcom的ED4暂时就只能在v0.65(含)之前的版本上通过某种方法运行;某CVS版本的DOSBox提供了简易的GUI界面,操作起来似乎也比官方版本方便,所以采用官方的v0.72版,完全不是出于兼容性和易用性的考虑。虽然本文没有使用前端程序来配置DOSBox,但如果有较多的游戏需要管理的话,还是建议使用诸如D.O.G、DOSBox Game Launcher、D-Fend Reloaded 等还可能在更新的DOSBox前端。
运行DOSBox安装程序,将其安装在H:\GAME\DOSBox目录下。为管理方便,在此目录下建立Games文件夹,将包含游戏的文件夹K放置在Games文件夹下,顺便把所有游戏文件的只读属性取消,以防万一。
DOSBox支持拖拽,把游戏的执行文件直接拖到DOSBox的图标上即可以自动加载运行。打开游戏所在文件夹K,发现下图所示的几个EXE文件。
把PLAY.EXE拖到DOSBox的图标上,DOSBox自动运行,出现下图的画面,显示“本产品经过测试 — 保证绝对可玩”。
当真的话就上当了,下图是真相。黑屏,再按一下回车键,DOSBox崩溃。
DOSBox对加了某些壳的程序兼容性不好,“经测试绝对不可玩”是比较常见例子,皇帝,ED4等游戏都可能由于该原因无法运行。以下转述“经测试绝对可玩版”的手动脱壳方法。
既然DOSBox的标题栏显示Program:K,脱它吧。
用16进制编辑器打开K.EXE,逐个搜索字符串“4D5A”,直到找到一组“4D5A”,其前面有大段的用“FF”填充的空白。将这组“4D5A”前边的数据全部删除,保存K.EXE。
当然,由于是Xlink的壳,如果有UNXlink、FileInfo、File Scanner之类的工具的话,请直接脱。
拖拽的方式虽然方便,却有相当的局限性,DOSBox的正常使用还是要从编辑dosbox.conf开始。
用记事本打开dosbox.conf文件,DOSBox的所有参数都要在这里设置。有几组参数要注意。
[dosbox]下的“memsize=”项。这是DOS系统内存,并非越大越好。过大的内存可能导致一些游戏出现诸如乱码等问题,甚至根本无法运行。基本上默认的16M已够用,有些古董可能要更小。
[cpu]下的“core=”和“cycles=”项。“core=”是CPU的模拟方式,有normal,simple,dynamic,auto四种。一般选择默认的auto,让程序自行判断,出现问题再换其他的方式。dynamic方式效率最高,但是在一些游戏上会出问题。追求稳定的话,可设定为normal。另外,还有一个调试用的full模式,基本用不到,不过有兴趣的话可以用PM2测试一下。“cycles=”决定模拟速度,一般说来数值越高,运行速度越快。注意过高的cycles值可能会导致爆音等问题,甚至反而使速度降低。设为auto可由程序自动调节cycles值,设为max则会将cycles值设定为可以使用的最大值。通常使用默认的auto,速度慢的话可以设定为max或者自己手动调节。
[sblaster]是sb声卡的相关设置,很重要但是绝大多数时候不需要更改,只需在游戏的声卡设置中填入对应的参数值。声卡类型“sbtype=”的默认设定“sb16”足够应付绝大多数的游戏,但仍有少数游戏需要设为其他类型才会有音乐或者能够运行。sbbase=220,irq=7,dma=1,hdma=5这几个参数要记住,相当多游戏的问题就出在声卡的参数设置未与这组数值对应。
[dos]下的“xms=”,“ems=”项。xms,ems设定,默认值为true,开启。少数游戏需关闭。
以上参数对于本例游戏无需更改,直接找到[autoexec]项,配置DOSBox的启动命令。
如下编辑:
[autoexec]
# Lines in this section will be run at startup.
mount C H:\GAME\DOSBox\Games
C:
将Games文件夹设为模拟DOS系统的C盘,并将盘符切换为C。注意,一些游戏只有位于C盘下才能正常运行,所以最好不要把游戏目录所在处设为C以外的盘符。
启动DOSBox,以上命令自动加载。输入命令“cd k”,进入游戏所在目录K。
运行游戏前,一定要查看有没有声卡配置程序。没有配置声卡,很可能导致游戏没有声音,甚至无法运行。声卡配置程序一般名为SETUP、SETSOUND、INSTALL。一般来说只需配置一次,不过也存在ED4这样每次运行游戏前都必须重新配置声卡的情况。
对于本例游戏,首先运行“SETUP.EXE”,出现以下窗口。
按照dosbox.conf中的设定,即sbtype=sb16,sbbase=220,irq=7,dma=1,hdma=5进行设设置。本例游戏的设置较简单,天堂鸟游戏的声卡设置应该更具有代表性。
声卡配置完成后,运行“PLAY.EXE”。“经测试绝对可玩”的画面没有了,但是仍然没有进入游戏,窗口中显示如下信息。
出现“Wrong CD”的提示,显然是没找到游戏光盘。找不到光驱导致游戏无法运行是一个很常见的问题。对于光盘版的游戏,可以把虚拟光驱或者实体光驱设置为DOS系统的光驱,加载镜像或者光盘运行游戏;硬盘版的游戏则一般需要把游戏所在目录设置为光驱。
某些硬盘版游戏,虽然根本不需要从光盘读取任何数据,也仍然要检测到光驱才能运行。故使用DOSBox时,最好预先配置一个光驱,有备无患。
重新编辑[autoexec]项:
[autoexec]
# Lines in this section will be run at startup.
mount C H:\GAME\DOSBox\Games
mount D H:\GAME\DOSBox\Games\K -t cdrom
C:
将游戏所在文件夹K设置为光驱。参数-t cdrom即表示将路径设置为光驱。至于-ioctl,-label等参数,本例游戏还用不到,欲了解请查阅README。
再次运行PLAY.EXE,仍然是上图所示的画面,仍然是“Wrong CD”。注意第一张图,游戏文件夹中的EXE文件有一个是FAKECD.EXE,这是DOS下的虚拟光驱程序。可是打开游戏文件夹下PLAY.BAT文件,并没有看到加载这个程序。注意到PLAY.EXE文件很小,只有2KB,不妨用记事本打开它看看。
注意这两行,虽然有乱码,我们仍可以脑内补完。
FAKECD . /L:A
MSD_DOS
TIMER
CMD -O2 -D1
K
CMD -r
TIMER
MSD_DOS /U
FAKECD /U
此EXE文件其实是从BAT文件转换过来的,这次运气好,直接就看到了内容。注意FAKECD . /L:A,这是将游戏所在目录虚拟成光驱,盘符为A。刚才在DOSBox中将游戏所在目录设为光驱,盘符为D;将Games文件夹设置为硬盘,盘符为C,这个虚拟的DOS系统里并不存在A盘,所以游戏启动时仍然找不到盘符为A的光驱。
再次编辑[autoexec]项:
[autoexec]
# Lines in this section will be run at startup.
mount A H:\GAME\DOSBox\Games\K
mount C H:\GAME\DOSBox\Games
C:
将游戏所在目录设定为A盘,A盘设为硬盘或者光驱都可以。运行PLAY.EXE,终于看到了游戏的标题画面。
某些游戏对于盘符是有要求的,例如龙骑士3也要求存在A盘,如果在游戏目录存在FAKECD,CDX之类的虚拟光驱程序,不妨注意一下。(似乎有的游戏要求的盘符也不是A盘,好像碰到过需要虚拟出S盘后运行的某硬盘版银英4EX,不过一时找不到这个版本,没法进一步确认。好吧,反正银英4EX有不需多余的盘符,直接可在DOSBox中运行的较正常的硬盘版,上面的话请无视。)
在标题画面会发现鼠标没有反应,虽然还有键盘可用,但也只能到“玩家姓名输入”画面为止。
鼠标无法使用,很可能是因为没有加载鼠标驱动。注意PLAY.EXE中的几行命令,在启动游戏前,还运行了“MSD_DOS”、“TIMER”、“CMD”三个COM文件。在DOSBox中用/?参数运行一下这几个文件,会发现“MSD_DOS”就是鼠标驱动。既已加载鼠标驱动,为什么鼠标仍然无法使用?其实正常情况下,DOSBox会自动加载鼠标驱动,并不需要另外的驱动程序。而这个通过PLAY.EXE加载的“MSD_DOS”和DOSBox自动加载的鼠标驱动产生了冲突,反而导致鼠标不能使用。故不加载“MSD_DOS”即可解决问题。由于无法编辑PLAY.EXE,所以新建一个BAT文件,如下编辑:
FAKECD . /L:A
TIMER
CMD -O2 -D1
K
CMD -r
TIMER
FAKECD /U
此BAT文件中,去掉了游戏自带的“MSD_DOS”鼠标驱动。由此文件启动游戏,即可正常运行。
顺便说一下,由于DOSBox本身即可将任意目录设置为光驱,故实际上并不需要FAKECD程序,因而也就没必要非得将游戏目录设为A盘。有兴趣的话不妨配置一下试试。
现在的DOSBox的兼容性已经相当不错,但是想让它运行更多游戏的话,还是有些技巧的。本例中提及到如下方面。
版本。DOSBox不同版本间的兼容性差异还是比较明显的,不妨多备几个版本。除官方版本外,一些CVS版提供了更多的功能,也是不错的选择。
只读属性。运行游戏前,请先取消所有文件的只读属性,否则可能会引起无法存档等问题。另外,如果没有取消只读的话,运行游戏时“DOSBox Status Window”窗口会有提示。
内存大小。基本原则是够用就行,不要设定过大,默认的16M已经很好了。对于需要减少内存的情况,除了在dosbox.conf中直接更改外,还可以借助LOADFIX命令运行游戏,具体参看REAME。
CPU核心。通常设为AUTO让程序自动选择,但是也有程序自动选择为 dynamic模式导致崩溃的情况,这时可以改成normal或者其他模式试试。dynamic的兼容性其实也不错,追求效率的话推荐优先选择,出了问题再换。另外,由“DOSBox Status Window”窗口的信息可以大致推断是否是CPU核心出的问题。
声卡配置。很重要,如果游戏有声卡配置程序的话,运行游戏前,一定要首先按照dosbox.conf中对应的参数设置好。当然,也存在高报酬战将这种找不到声卡设置,却要在运行游戏前加上一句“set sound=sb16”才能听到音乐和音效的情况。除了配置好声卡外,由于有些游戏有光盘音轨和MIDI等不同的音源,请根据具体情况选择好对应的可用音源,这不只关系到有没有声音,声音正不正常,有时还会决定游戏能不能正常运行,如银英4EX的FM音源。一般说来,声卡设置中或者进入游戏后的配置选项中可以找到相关选项,不过像超时空英雄传说这种通过运行“CD_TRACK.BAT”和“SNDCARD.BAT”更改游戏配置文件以切换光盘音轨和MIDI的情况也是存在的。
光驱配置。同样很重要。最好预先设置一个光驱,比如先将虚拟光驱或者实体光驱设为虚拟系统的光驱,然后根据实际情况判断是否需要把游戏所在目录设置为光驱。为了避免本例中遇到的问题,不妨把光驱的盘符设为A。另外,对于一些光盘游戏,在设置光驱时可能要加上-usecd、-ioctl、-label之类的参数,具体参考REAME。
修改游戏执行文件。一些游戏要对执行文件做一些修改才能在DOSBox中运行,如PM2。本例这种需要脱壳的情况算是最简单的,毕竟现象明了,且有现成的方法或者工具可以用。但有些可能需要一定汇编知识才能确认和处理。
鼠标。DOSBox一般不需要另外的鼠标驱动,如果真的必须使用其他驱动的话,注意别与DOSBox本身的驱动冲突。
重写Play.bat。一些游戏原来的Play.bat文件可能并不适合在DOSBox的环境下使用,要根据情况重新编辑。通过改写Play.bat文件,重新配置驱动及程序的加载,跳过一些在DOSBox中运行有问题的程序或文件,可以使原本不能运行的游戏变得能够运行,比如阿曼尼斯开国启示录。
此外,有时会遇诸如VESA模式兼容性等显示问题,似乎一些可以通过加载或者配置显示驱动程序的方法解决,不过也有无解的情况。
如果游戏仍不能用DOSBox运行,请求助于万能的Google;DOSBox官方网站和论坛、DOSBoxWiKi、骨灰集散地、狼窝等网站也常能找到一些游戏的配置方法和补丁。当然,最坏的情况是DOSBox根本不支持这款游戏,请尝试使用VDMSound或虚拟机软件。
好吧,其实这个游戏仍不完美,只有音效没有音乐。PC98版是有音乐的,这个DOS版中的音乐文件似乎也在,不知是否为设置的问题,有兴趣的人不妨研究一下。
最后,本例与实际情况存在些许偏差,请勿按图索骥。