如何在新系统下重玩老游戏
“新”與“老”當(dāng)然是相對(duì)的,不過(guò)在開(kāi)篇之前有必要確定我們的討論范疇,這里的“老”是指為Win98之前的操作系統(tǒng),包括DOS和Win32/95,而新系統(tǒng)則是指Win98/2000/XP。毫無(wú)疑問(wèn),有很多老游戲都很值得我們來(lái)重溫,但重溫的方法也各異,有的人會(huì)去買(mǎi)例如奔騰133的“老爺級(jí)”機(jī)器,專(zhuān)門(mén)用于玩老游戲;不過(guò)老PC也不是誰(shuí)都能買(mǎi)到的,而且為了玩老游戲真愿意如此大動(dòng)干戈,也算是骨灰級(jí)玩家了。于是典型的解決方法是采用多系統(tǒng),其中有一個(gè)系統(tǒng)裝上MSDOS6.22+Win32或Win95,不過(guò)這種方法也會(huì)碰上新顯卡、聲卡與老游戲不兼容的難題。
實(shí)際上,大部分用戶(hù)都會(huì)在現(xiàn)有系統(tǒng)上嘗試?yán)嫌螒?#xff0c;在這方面,使用Win98的用戶(hù)似乎比WinXP的用戶(hù)擁有更多的笑容(越“老”越好?這是否準(zhǔn)確,還請(qǐng)參見(jiàn)后文)。除了一些兼容性非常好的游戲,大部分已不可能運(yùn)行,而所謂兼容性好的游戲也基本上不可能聽(tīng)到游戲原聲。那么,要實(shí)現(xiàn)完美的重溫效果,是否注定要調(diào)整硬件、注定要安裝多系統(tǒng)呢?經(jīng)過(guò)筆者的一番艱苦探索,發(fā)現(xiàn)并不是這樣,大部分的老游戲在新系統(tǒng)下仍舊可以找到合適的解決方案。
一、DOS游戲的重玩
在大家所碰到的經(jīng)典老游戲中,DOS游戲無(wú)疑占有絕對(duì)多的比例。然而辛辛苦苦找出來(lái)的游戲,當(dāng)在視窗下雙擊主運(yùn)行程序時(shí),卻會(huì)出現(xiàn)各種莫名的情況。在Win98下還好一些,好歹能讓你看到出錯(cuò)信息(當(dāng)然一般情況下這個(gè)出錯(cuò)信息我們都弄不明白),至于Win2000/XP,往往是黑色屏幕一閃而過(guò),一些情況下還會(huì)出現(xiàn)訪(fǎng)問(wèn)地址非法的提示,總之會(huì)讓人不明所以。
然而這種種不能正常運(yùn)行的情況并不完全是因?yàn)樾孪到y(tǒng)與老游戲不兼容的緣故,熟悉DOS的用戶(hù)都知道,DOS是一個(gè)開(kāi)放的系統(tǒng),其軟件操作并不像Windows下那樣多數(shù)是“傻瓜式”,特別是DOS下的多媒體軟件(例如游戲)要正常運(yùn)行,往往需要對(duì)運(yùn)行環(huán)境作特殊的設(shè)置,如果只是“雙擊”,當(dāng)然不符DOS“風(fēng)格”了。因此一款DOS游戲在新系統(tǒng)下不能重玩,實(shí)質(zhì)是兼容與設(shè)置兩方面的問(wèn)題均可能有,這也提示了我們解決問(wèn)題的一些思路。
由于在不同系統(tǒng)下,DOS游戲運(yùn)行的環(huán)境大不一樣,因此在下文中,將主要講述WinXP下的解決方案,之后回到Win2000和Win98環(huán)境下,探討重玩的方法。這樣行文還有一個(gè)原因:事實(shí)上從Win98到2000再到XP,操作系統(tǒng)對(duì)DOS的兼容性是不斷提高的,這恰與我們想像的相反——這一點(diǎn)很快就能從下文中看出。
(一)WinXP下DOS游戲重玩的方案
WinXP在DOS支持上和Win2000有許多共性,因此本段涉及的許多內(nèi)容都適用于Win2000,不過(guò)畢竟二者還是存在著一些區(qū)別,因此將在本段之后講述Win2000所不同的地方。而Win98雖與WinXP相差過(guò)遠(yuǎn),但一些原理性的東西亦是相通。
首先需要簡(jiǎn)單了解一下WinXP下DOS命令運(yùn)行的環(huán)境,大部分熟悉這個(gè)系統(tǒng)的用戶(hù)都會(huì)認(rèn)為,所謂有DOS環(huán)境當(dāng)然是Cmd.exe的命令行運(yùn)行窗口,實(shí)則不然,Cmd.exe提供的是對(duì)系統(tǒng)中所有類(lèi)型程序的支持,包括32位和16位;而真正的16位DOS命令運(yùn)行窗口需要由Command.exe提供,在WinXP中這個(gè)文件位于系統(tǒng)盤(pán)/Windows/system32目錄下,圖1是Cmd和Command運(yùn)行窗口的比較。
不過(guò)無(wú)論是在Cmd窗口下執(zhí)行16位DOS命令,還是直接打開(kāi)Command窗口,實(shí)際上都是由一個(gè)名為NTVDM.exe的進(jìn)程提供NT下的DOS虛擬機(jī)支持(NTVirtualDOSMachine,簡(jiǎn)稱(chēng)NTVDM)。因此可以說(shuō)WinXP已完全擺脫了對(duì)16位DOS的依賴(lài),此系統(tǒng)上所謂的DOS程序運(yùn)行環(huán)境不過(guò)是一個(gè)完全虛擬的PC機(jī)!理解這一點(diǎn)很重要,因?yàn)檫@預(yù)示著這個(gè)虛擬的“PC機(jī)”與你真實(shí)的硬件毫不相關(guān),所有的硬件環(huán)境都是虛擬出來(lái)的,因此能夠?qū)崿F(xiàn)更好的兼容性。
虛擬機(jī)是怎樣模仿真實(shí)DOS系統(tǒng)的啟動(dòng)過(guò)程呢?熟悉DOS的用戶(hù)都會(huì)對(duì)Config.sys和Autoexec.bat這兩個(gè)文件有難言的欣喜與痛苦——它們對(duì)系統(tǒng)的配置實(shí)在太為重要,在DOS啟動(dòng)時(shí),首先會(huì)按Config.sys配置驅(qū)動(dòng),然后再執(zhí)行Autoexec.bat中的命令。在NTVDM中還能不能找到它們的身影?既然說(shuō)是“真實(shí)虛擬”當(dāng)然應(yīng)當(dāng)是有的:它們默認(rèn)位于Windows/system32下,只不過(guò)名字已稍作改動(dòng),分別為Config.nt和Autoexec.nt。你可以用記事本打開(kāi)這兩個(gè)文件進(jìn)行編輯,不過(guò)在編輯之前最好進(jìn)行備份,以防不測(cè)。
理解了這些之后,我們就可以開(kāi)始嘗試解決實(shí)際問(wèn)題了。
1.內(nèi)存問(wèn)題的解決
大部分老游戲不能正常運(yùn)行的原因都是由于內(nèi)存“不夠”所導(dǎo)致,沒(méi)有從DOS時(shí)代走過(guò)來(lái)的用戶(hù)肯定會(huì)對(duì)“不夠”二字極盡懷疑,事實(shí)上正是不夠。DOS有一套獨(dú)有的內(nèi)存使用方案,這個(gè)方案實(shí)際上較復(fù)雜,但對(duì)問(wèn)題的解決至關(guān)重要,不過(guò)我們這里不必了解得一清二楚,因此用簡(jiǎn)單的圖文說(shuō)明如下(如果覺(jué)得生澀,可以先跳過(guò)這一部分,看到后面的例子不明白時(shí)再回過(guò)頭來(lái)看):
如圖2所示,如果不加載特殊的內(nèi)存管理工具,DOS最多只能識(shí)別1MB的內(nèi)存,而這1MB,有384kB將被保留給諸如系統(tǒng)、硬盤(pán)控制器、顯存等使用,稱(chēng)為上位內(nèi)存(UpperMemoryBlock,簡(jiǎn)稱(chēng)UMB),剩下的640kB稱(chēng)作常規(guī)內(nèi)存(ConventionalMemory),這640kB可不是全部空余的,系統(tǒng)啟動(dòng)后就會(huì)被占用一部分,這樣一般程序只能利用常規(guī)內(nèi)存的剩余(Free)部分了,理解這一點(diǎn)非常重要。
然而虛擬機(jī)所提供的的內(nèi)存容量絕對(duì)超過(guò)1MB,這部分被稱(chēng)作擴(kuò)展內(nèi)存,由于在使用上必須服從擴(kuò)展內(nèi)存標(biāo)準(zhǔn)(eXtendMemoryStandard),而被簡(jiǎn)稱(chēng)為XMS,要使用XMS就必須在Config.sys(現(xiàn)在是Config.nt)中加載Himem.sys驅(qū)動(dòng)程序。當(dāng)然擴(kuò)展內(nèi)存最底層,靠近剛才所說(shuō)的那1MB的地方,有近64kB的容量,DOS不使用XMS標(biāo)準(zhǔn)即可訪(fǎng)問(wèn),這一內(nèi)存區(qū)域被稱(chēng)為高端內(nèi)存區(qū)(HighMemoryArea),DOS經(jīng)常會(huì)將自己的一部分駐留在此區(qū)域(MS-DOSresidentinHighMemoryArea),以將常規(guī)內(nèi)存盡量空出一些給應(yīng)用程序使用。
最后一個(gè)擴(kuò)充內(nèi)存EMS(為ExpandedMemoryStandard的縮寫(xiě))的概念非常重要但又比較難理解,簡(jiǎn)單來(lái)講它是CPU的欺騙者:CPU“看起來(lái)”它是在UMB中(在1MB內(nèi),可自由使用),而實(shí)際上它在XMS中,是XMS的一部分或全部,這樣程序就能夠有效地使用1MB以外的擴(kuò)展內(nèi)存了。不過(guò)要使CPU能識(shí)別擴(kuò)充內(nèi)存,需要在Autoexec.bat(現(xiàn)在是Autoexec.nt)中裝載擴(kuò)充內(nèi)存管理器EMM(ExpandedMemoryManager),在DOS下一般是用EMM386.exe。這里需要說(shuō)明,由于EMS占用了XMS的空間,所以XMS的可用(Available)部分會(huì)減少。舊DOS是一個(gè)非常自由的系統(tǒng),在上面運(yùn)行的游戲可自由決定是否使用EMS,甚至還會(huì)決定要多少EMS,否則就……嘿嘿,罷工。
從以上看來(lái),與我們的話(huà)題密切相關(guān)的有兩塊內(nèi)存:常規(guī)內(nèi)存和擴(kuò)充內(nèi)存,這兩個(gè)也恰巧是無(wú)數(shù)DOS在新系統(tǒng)下運(yùn)行的“殺手”,好在我們現(xiàn)在已知已知彼,可以開(kāi)戰(zhàn)了。以下實(shí)例均在WinXPProSP1版本下進(jìn)行。
(1)擴(kuò)充內(nèi)存EMS的正確配置
實(shí)例1:《中關(guān)村啟示錄》
在游戲的安裝目錄h:/dosgame/ZGC下有一個(gè)Play.bat的批處理文件,雙擊即可執(zhí)行,然而如此執(zhí)行的結(jié)果卻是黑色窗口一閃而過(guò)——不過(guò)這么出名的游戲怎能輕易放過(guò),一定得探個(gè)究竟才是。于是在Play.bat對(duì)應(yīng)圖標(biāo)上點(diǎn)擊右鍵,選擇“編輯”,系統(tǒng)會(huì)調(diào)用記事本打開(kāi)文件,看到其中有兩條命令:runqbj和go,分別對(duì)應(yīng)同一目錄下的Ruqbj.com和Go.bat,顯然Go.bat還是一個(gè)批處理文件,用記事本打開(kāi)后發(fā)現(xiàn)其中又有3條命令:univbe、game和univbe/u,這3條對(duì)應(yīng)兩個(gè)可執(zhí)行文件:Univbe.exe和Game.exe。為了找到原因所在,筆者將逐條執(zhí)行runqbj、univbe和game命令。
在“開(kāi)始”→“運(yùn)行”對(duì)話(huà)框中輸入“command”并回車(chē),在打開(kāi)的Command窗口中改變目錄到游戲安裝目錄,逐條輸入3行命令,當(dāng)執(zhí)行完Univbe后,提示找不到所支持的顯卡,暫時(shí)不去理會(huì),執(zhí)行完最后一條命令Game,在屏幕上看到一行字:EMSmemorymanagernotfound(找不到EMS內(nèi)存管理器)。難道是因?yàn)閃inXP的NTVDM默認(rèn)就不加載EMM嗎?
事實(shí)正是如此。在前面提到的Config.nt文件里關(guān)于EMS的說(shuō)明中,筆者發(fā)現(xiàn)這么一段話(huà):EMS的大小將由Pif文件決定,這個(gè)Pif文件要么是DOS程序的快捷方式,要么默認(rèn)為系統(tǒng)盤(pán)Windows目錄下的_default.pif,如果在Pif文件的設(shè)置中EMS被設(shè)定為“0”,則EMM將不會(huì)加載。
大家對(duì)Pif文件及其圖標(biāo)一定都不會(huì)陌生,從Win3X時(shí)代起,為了能在視窗界面中給DOS程序提供自定義的內(nèi)存配置,微軟設(shè)計(jì)了一個(gè)“Pif”的概念,看起來(lái)這個(gè)Pif只是原來(lái)程序的一個(gè)快捷方式,實(shí)際上可以在其中進(jìn)行大量的自定義設(shè)置。由于游戲安裝目錄下找不到任何Pif文件,所以根據(jù)以上一段說(shuō)明,雙擊時(shí)將會(huì)調(diào)用_default.pif中的設(shè)置。于是我們找到_default.pif,并在其上點(diǎn)擊右鍵選擇彈出菜單中的“屬性”,在打開(kāi)的對(duì)話(huà)框中點(diǎn)“內(nèi)存”標(biāo)簽卡,發(fā)現(xiàn)里面的EMS赫然設(shè)為“無(wú)”!《中關(guān)村啟示錄》運(yùn)行需要EMS支持,這樣設(shè)置當(dāng)然會(huì)出錯(cuò)。而剛才運(yùn)行的Command.com也符合這一原則,其屬性對(duì)話(huà)框的內(nèi)存頁(yè)與圖6完全相同。
那么解決方法你一定已經(jīng)想到了,由于WinXP無(wú)法對(duì).bat文件配置內(nèi)存,所以你可以:1.修改_default.pif屬性中的內(nèi)存配置;2.修改Command.com的內(nèi)存配置,并在其窗口中運(yùn)行Play.bat。但修改_default.pif文件顯然不可取,因?yàn)檫@個(gè)文件將會(huì)是所有DOS程序的默認(rèn)Pif配置文件,有一些程序并不需要EMS,有的甚至只要有EMS就不能運(yùn)行。那我們?cè)囍袰ommand.com內(nèi)存配置中的EMS和XMS兩項(xiàng)均調(diào)為“自動(dòng)”,再次運(yùn)行Command窗口,同上找到安裝目錄并輸入“play”命令,回車(chē)之后驚喜的看到了游戲的開(kāi)始畫(huà)面。
那么到底“自動(dòng)”是什么概念呢?再次進(jìn)入Command窗口并執(zhí)行命令行“mem”,這個(gè)命令可查看當(dāng)前的內(nèi)存分配及使用情況,原來(lái)“自動(dòng)”默認(rèn)為分配4MB的EMS和19MB的XMS(其中只有15MB是可用的)。這里順便說(shuō)一下,顯示的第1行就是前面所說(shuō)的640kB常規(guī)內(nèi)存,第3行非常重要,表示NTVDM啟動(dòng)后常規(guī)內(nèi)存剩下的空間,當(dāng)然也就是最大可執(zhí)行程序的大小了(Largestexecutableprogaramsize)。
不過(guò)每次從Command運(yùn)行再找到Play.bat仍顯麻煩,其實(shí)有更簡(jiǎn)便的方法,由于Play.bat文件中第一行runqbj(qbj?求伯君?呵呵)對(duì)應(yīng)于Runqbj.exe(記住不是.bat文件),于是在Runqbj.exe的文件圖標(biāo)上點(diǎn)右鍵并進(jìn)入“屬性”設(shè)置,將其中的內(nèi)存頁(yè)同圖7設(shè)置(當(dāng)然也可將EMS設(shè)置為4MB以上的數(shù)值),確定后會(huì)在當(dāng)前目錄下生成Runqbj.pif文件,之后雙擊Play.bat即可順利進(jìn)入游戲。
鞏固:《三國(guó)志Ⅳ》
在游戲安裝目錄San4下有兩個(gè)運(yùn)行文件:san4.com和san486.com,顯然后一個(gè)是針對(duì)486機(jī)器設(shè)置的,運(yùn)行它將擁有更高的游戲性能。然而點(diǎn)擊后能順利進(jìn)入KOEI開(kāi)始畫(huà)面,但之后就屏幕一閃,并顯示出一行字:NotEnoughMemory(缺乏足夠的內(nèi)存),此時(shí)你應(yīng)當(dāng)對(duì)“不夠”二字有所領(lǐng)會(huì)了,由于是直接雙擊,故猜想仍是EMS的問(wèn)題。依上法設(shè)置san486.com的EMS為自動(dòng),即可順利進(jìn)行游戲。
反思及總結(jié):這類(lèi)問(wèn)題的出現(xiàn)比較集中,因?yàn)橹苯与p擊可執(zhí)行文件,所啟動(dòng)的NTVDM默認(rèn)不支持EMS。對(duì)于.exe和.com文件,直接在屬性中設(shè)置好EMS即可,若是.bat文件,則需參考上述間接修改方法。
(2)常規(guī)內(nèi)存的正確配置
實(shí)例2:《龍騎士4》(Dra4)
這款游戲由ELF出品,以情節(jié)設(shè)計(jì)的巧妙贏得了不少玩家的欣賞,我們看能不能在WinXP系統(tǒng)下正常運(yùn)行。首先必須根據(jù)游戲說(shuō)明其安裝在C盤(pán)根目錄下,進(jìn)入安裝目錄c:/dra4,雙擊執(zhí)行其中的Play.bat,出現(xiàn)的情況仍然是黑屏的一晃而過(guò)。于是按照實(shí)例1中的方法用記事本打開(kāi)Play.bat,發(fā)現(xiàn)其中只有一行:dra4start.mesHxC,這是一個(gè)帶參數(shù)運(yùn)行的命令,主程序是dra4,不過(guò)卻在安裝目錄下發(fā)現(xiàn)了兩個(gè)可執(zhí)行dra4文件:dra4.com和dra4.exe,這里你需要知道.com文件執(zhí)行的優(yōu)先度高于.exe。于是對(duì)dra4.com的屬性進(jìn)行修改,將EMS設(shè)為8192kB。可是和我們的意愿相反,雙擊Play.bat后還是黑色窗口一閃而過(guò)……
于是回到剛才討論的內(nèi)存知識(shí)中來(lái),除了EMS,還有一個(gè)內(nèi)存殺手就是常規(guī)內(nèi)存。還記得上面圖9中的“最大可執(zhí)行程序大小(Largestexecutableprogramsize)”嗎?有沒(méi)有可能581120字節(jié)的內(nèi)存仍不夠dra4.com使用呢?不妨試著從常規(guī)內(nèi)存中清理出一些空間來(lái)。
這里我們需要先查看NTVDM默認(rèn)啟動(dòng)時(shí)都加載了哪些程序,仍然在“運(yùn)行”對(duì)話(huà)框中輸入“command”打開(kāi)DOS命令行窗口,在其中鍵入“mem/c|more”命令分頁(yè)查看當(dāng)前內(nèi)存的詳細(xì)利用情況(熟悉DOS的用戶(hù)會(huì)問(wèn)為什么不用“/p”參數(shù),因?yàn)檫@個(gè)參數(shù)在NTVDM中已不被支持,只好用“|more”代替)。從圖中可以看到常規(guī)內(nèi)存(ConventionalMemory)中有幾個(gè)大頭:MSDOS、MOUSE、DOSX,尤其是DOSX,居然占盡了33.9kB的空間,要知道常規(guī)內(nèi)存中可是寸土必爭(zhēng)啊。
實(shí)際上DOSX是NTVDM為支持DPMI(DosProtectedModeInterface,DOS內(nèi)存保護(hù)模式接口)類(lèi)型程序而執(zhí)行的命令。保護(hù)模式可以讓程序獲得更多的內(nèi)存資源,但使用DPMI的游戲都必須附帶一個(gè)DOS擴(kuò)展程序,這個(gè)程序一般為DOS/4GWv1.96,文件名為DOS4GW.exe,所以游戲是否需要DOSX支持,只需查看其安裝目錄下是否有DOS4GW.exe文件即可。
顯然在Dra4目錄下并沒(méi)有發(fā)現(xiàn)DOS4GW.exe,故判定這33.9kB的DOSX運(yùn)行空間完全可以釋放出來(lái),那么通過(guò)什么方法呢?還記得剛才提到的Autoexec.nt和Config.nt吧,筆者剛才說(shuō)這是兩個(gè)讓人悲喜交加的初始化文件,那么看一下在這里它們能給我們帶來(lái)什么樣的喜悅。
由于這兩個(gè)文件對(duì)整個(gè)NTVDM系統(tǒng)非常重要,所以修改時(shí)要小心,當(dāng)然可以備份,不過(guò)最好的方法還是使用Win2000/XP提供的自定義初始化文件功能。首先把Autoexec.nt和config.nt從System32下拷貝到c:/dra4目錄下,之后找到dra4.com文件,依上法進(jìn)入屬性對(duì)話(huà)框,在程序標(biāo)簽頁(yè)中點(diǎn)擊“高級(jí)”按鈕,在彈出的WindowsPIF窗口中重新指定專(zhuān)用初始化文件,將二者的位置分別修改為“c:/dra4/autoexec.nt”和“c:/dra4/config.nt”并兩次“確定”。
接下來(lái)我們要對(duì)這兩個(gè)自定義的初始化文件進(jìn)行修改。使用記事本打開(kāi)Autoexec.bat,可以發(fā)現(xiàn)里面有一大堆以“REM”開(kāi)頭的文字行(表示這一行是注釋,不會(huì)被執(zhí)行),值得注意的是有3行l(wèi)h命令,這是將其后程序盡量(不一定成功喔)加載到上位內(nèi)存的命令,這里的mscdexnt.exe、redir和dosv分別提供了NTVDM對(duì)光驅(qū)、網(wǎng)絡(luò)(還可以玩經(jīng)典游戲的網(wǎng)絡(luò)版!)以及DPMI的支持。這個(gè)例子中由于三者都無(wú)需使用,因此在這3行前面分別加上“REM”以表示取消(實(shí)際上去掉DOSV就足夠了,這里干脆一不做,二不休)。編輯完成之后記得保存,然后回Dra4目錄,雙擊Dra4.com,你會(huì)發(fā)現(xiàn)果然是一擊奏效,需要提醒的是,在修改Autoexec.nt的同時(shí)仍需配置好Dra4.com的內(nèi)存參數(shù),特別是EMS。
反思及總結(jié):這個(gè)例子中并不需要DPMI的支持,但若是碰上了既需要DPMI,同時(shí)又得不到常規(guī)內(nèi)存的游戲怎么辦?我們還是有辦法的,只需修改Config.nt文件,在其中加入一行“EMM=RAM”。這樣配置后MOUSE和DOSX等程序會(huì)部分或全部從常規(guī)內(nèi)存中移到上位內(nèi)存中,從而獲得大量的常規(guī)內(nèi)存(這是修改后用“mem/c|more”命令進(jìn)行查看的結(jié)果,可見(jiàn)DOSX已進(jìn)入上位內(nèi)存,而可用常規(guī)內(nèi)存也達(dá)到了615.3kB之多)。最后需要說(shuō)明,EMS和可用常規(guī)內(nèi)存顯然存在潛在性的資源爭(zhēng)奪,系統(tǒng)之所以不將EMS默認(rèn)設(shè)為“自動(dòng)”,原因在于設(shè)置EMS后,一些原來(lái)駐留在上位內(nèi)存的一些程序就會(huì)被趕到常規(guī)內(nèi)存中去,從而導(dǎo)致可用常規(guī)內(nèi)存減小,所以應(yīng)根據(jù)DOS程序需要選擇是否使用EMS。
2.聲音及其他兼容問(wèn)題的解決
從上述說(shuō)明來(lái)看,內(nèi)存問(wèn)題在WinXP下只能算作配置方面的難題,而本段涉及的才真正是兼容問(wèn)題。首先要說(shuō)明這里的聲卡并不是指你真實(shí)機(jī)器上的聲卡,而是NTVDM所模擬出的聲卡。
從WinNT到Win2000,所虛擬的DOS版本都是5.0,而NTVDM提供的硬件為與DOS版本配套,實(shí)質(zhì)上“配置”相當(dāng)?shù)?#xff0c;這樣對(duì)DOS游戲的支持也很差,最關(guān)鍵的是,它不支持DOS6時(shí)代以來(lái)聲卡的標(biāo)準(zhǔn)兼容模式——SoundBlaster。但WinXP在這方面則有所突破,其提供的NTVDM中直接內(nèi)建有對(duì)SoundBlaster2.0的支持,對(duì)DOS程序的兼容性將會(huì)好很多,此外WinXP繼承了Win2000中對(duì)鼠標(biāo)、光驅(qū)、網(wǎng)卡和DOS/4GW的默認(rèn)驅(qū)動(dòng)。
不過(guò)WinXP提供了聲卡支持,是福亦是禍:雖然安裝有聲卡,但卻只能提供2.0支持,大部分DOS程序都支持SoundBlaster16,這樣就可能存在潛在沖突。好的情況下程序盡管檢測(cè)不到聲卡,仍會(huì)正常運(yùn)行,但有的游戲則可能會(huì)直接崩潰。
此外,在WinXP中還有可能存在其他一些兼容問(wèn)題,例如程序不能對(duì)軟驅(qū)進(jìn)行任意設(shè)置等,在下面這個(gè)例子中會(huì)有全面的反映。
實(shí)例3:《大富翁3》
這可是DOS時(shí)代最受MM喜愛(ài)的游戲,即使是今天玩起來(lái)還是興味盎然。然而到該游戲的目錄c:/rich3下雙擊執(zhí)行Play.bat,系統(tǒng)經(jīng)過(guò)一番折騰甚至看到了開(kāi)頭的SoftStar動(dòng)畫(huà),最后仍給了一個(gè)靜止的黑屏——沒(méi)關(guān)系,我們已經(jīng)習(xí)慣了。于是用記事本打開(kāi)Play.bat看個(gè)究竟,發(fā)現(xiàn)里面有一行命令是“substa:.”,熟悉DOS的用戶(hù)知道這條命令用于把當(dāng)前目錄映射成A盤(pán),游戲?qū)袮盤(pán)當(dāng)作CD-ROM。這當(dāng)然會(huì)導(dǎo)致兼容問(wèn)題,因?yàn)樘摂M機(jī)是不可以直接訪(fǎng)問(wèn)硬件的,WinXP控制下的軟驅(qū)當(dāng)然也不能輕易映射。
于是想到可以將軟驅(qū)先行屏蔽,好在WinXP可以不重啟即停用軟驅(qū)。在“我的電腦”上右鍵選擇“屬性”打開(kāi)系統(tǒng)屬性對(duì)話(huà)框,依次選擇“硬件”→“設(shè)備管理器”,在打開(kāi)的設(shè)備管理器中展開(kāi)“軟盤(pán)驅(qū)動(dòng)器”,右鍵單擊菜單下的“軟盤(pán)驅(qū)動(dòng)器”并選擇“停用”(游戲結(jié)束后別忘了重復(fù)此過(guò)程并在這里選擇“啟用”)。確定之后回到rich3目錄,再次雙擊Play.bat,結(jié)果發(fā)現(xiàn)已經(jīng)能進(jìn)入開(kāi)始畫(huà)面,但只要選定人物并開(kāi)始游戲,整個(gè)NTDVM系統(tǒng)就會(huì)崩潰——是全線(xiàn)崩潰,結(jié)束任務(wù)后連Command.com也無(wú)法運(yùn)行,只有重啟才能解決問(wèn)題。
這讓筆者迷惑了一陣,不過(guò)由于能夠輸出視頻,則問(wèn)題很有可能出在NTDVM虛擬出的聲卡上。于是用記事本打開(kāi)System32下的Autoexec.nt,文件的最后一部分是對(duì)內(nèi)建聲卡的描述,正如前面所言,這里說(shuō)明WinXP的NTDVM只提供對(duì)SoundBlaster2.0的支持。在文件的最后,說(shuō)明可將此聲卡屏蔽,于是按照說(shuō)明,在“SETBLASTER=A220I5D1P330T3”一行前加“REM”注釋,同時(shí)去掉“SETBLASTER=A0”一行前的“REM”。再次雙擊Play.bat,果然順利進(jìn)入游戲畫(huà)面。
屏蔽聲卡能夠解決不少游戲無(wú)法正常運(yùn)行的問(wèn)題,不過(guò)到此為止,我們發(fā)現(xiàn):還沒(méi)有一款游戲能夠正常發(fā)聲,如此的重溫,怎能不讓記憶失色?雖然筆者也曾經(jīng)通過(guò)一定的設(shè)置,使幾款經(jīng)典的游戲如《阿貓阿狗》能夠正常發(fā)聲(很好的感覺(jué)),但絕大部分游戲并不完全支持SoundBlaster2.0,例如在《天使帝國(guó)2》中,即使人聲是正常的,背景音樂(lè)卻完全聽(tīng)不到。因此這里不再講如何通過(guò)系統(tǒng)配置重現(xiàn)聲音的方法,不過(guò)更為關(guān)鍵的原因是,我們可以利用一個(gè)軟件,它不僅可完全解決聲卡的兼容性問(wèn)題,最重要的是它解決了NTDVM系統(tǒng)的最大限制——幾乎能使DOS程序的原音完全重現(xiàn),這個(gè)軟件就是VDMSound。
VDMSound是一款符合GNU標(biāo)準(zhǔn)的免費(fèi)軟件,作者的自由開(kāi)發(fā)精神令人敬佩,最新版本為2.0.4。軟件為NTDVM所提供的聲音平臺(tái)包括MPU-401接口(可提供高質(zhì)量的MIDI音效)、SoundBlaster兼容接口(兼容SBPro1/2、SB1.5/2.0/16/AWE32/32/64,可提供電子及FM/AdLib音效),甚至還包括游戲控制接口(這樣就能用手柄和搖桿了)!VDMSound與你機(jī)器上的真實(shí)聲卡沒(méi)有關(guān)系,它甚至可將DOS程序發(fā)出的聲音信息輸入到磁盤(pán)文件中。
具體使用方法就更簡(jiǎn)單了,仍以《大富翁3》為例,你只需在Play.bat上點(diǎn)擊右鍵,選擇菜單中的“RunWithVDMS”即可,初次使用時(shí),軟件會(huì)彈出一個(gè)小Tips窗口,筆者建議如果條件允許,可仔細(xì)閱讀其中的每條提示(軟件有一個(gè)小Bug,就是不會(huì)自動(dòng)更換Tips,因此逐條閱讀比較好),能讓你學(xué)到不少知識(shí)。接下來(lái)軟件快速做了一下初始化工作,黑色DOS屏幕一過(guò),你就能聽(tīng)到熟悉的音樂(lè)了!
實(shí)例4:《天使帝國(guó)Ⅱ》
有了VDMSound,我們當(dāng)然要用它來(lái)導(dǎo)入執(zhí)行游戲安裝目錄下的Play.bat了,不過(guò)沒(méi)想到卻在熱鬧的聲音中看到了一幅美麗的提示圖,原來(lái)這款游戲至少需要575kB的常規(guī)內(nèi)存。按照上文對(duì)內(nèi)存配置的說(shuō)明,首先查看游戲安裝目錄下是否有DOS4GW.exe——沒(méi)有找到,于是可判定其不會(huì)使用DOSX,但用了VDMSound。還一樣在Autoexec文件修改嗎?
答案是肯定的,不過(guò)現(xiàn)在它和Config的位置已經(jīng)都轉(zhuǎn)移到d:/vdmsound目錄下了,文件的擴(kuò)展名也變成了“vdms”,不過(guò)作者想得很是周到,已經(jīng)將這個(gè)擴(kuò)展名注冊(cè)為用記事本默認(rèn)打開(kāi),這樣,上面我們講的修改DOSV等功能仍可順利實(shí)現(xiàn),你可以打開(kāi)Autoexec.vdms,在“l(fā)h%SystemRoot%/system32/dosx.exe”一行前加上“REM”即可。不過(guò),下面將提供一種方法,可以讓這個(gè)過(guò)程更簡(jiǎn)單。
軟件的作者為VDMSound提供了一個(gè)圖形化設(shè)置插件:VDMSoundLanchPad。下載完以后將此壓縮包的所有文件解壓到d:/vdmsound目錄下,之后運(yùn)行其中的install.bat,在注冊(cè)提示時(shí)點(diǎn)“確定”即可完成安裝。下面就以《天使帝國(guó)Ⅱ》為例,說(shuō)明如何使用圖形化界面進(jìn)行配置。
1右鍵點(diǎn)擊游戲目錄下的Play.bat,選擇右鍵菜單中帶音樂(lè)標(biāo)記的“RunWithVDMS”。
2在彈出的設(shè)置窗口中,由于要做特殊設(shè)置,所以選擇“Setupacustomconfiguration(選擇自定義設(shè)置)”,并點(diǎn)擊“下一步”。
3在這一步中選擇“Createanewconfigurationfromscratch(生成一份新的配置文件)”,當(dāng)然如果不是初次使用,以前有游戲的設(shè)置和當(dāng)前要設(shè)置的相同,也可選擇“Reuseanexistingconfiguration”。
4這一步中點(diǎn)擊“Advanced”進(jìn)入高級(jí)設(shè)置。
5這個(gè)很熟悉吧,其實(shí)作者就是把Windows設(shè)計(jì)的屬性項(xiàng)目整合了。
6進(jìn)入“Compatibility”標(biāo)簽頁(yè)進(jìn)行兼容性設(shè)置,在這里可設(shè)置EMS和XMS,我們接受默認(rèn)的4MB及16MB設(shè)置,同時(shí)下面還有基本的VESA支持(EnableBasicVESASupport)選項(xiàng)(這在Win2000下特別有用,因?yàn)槠洳恢С諺ESA窗口模式),此外還包括對(duì)光驅(qū)和網(wǎng)絡(luò)的支持,當(dāng)然也包括DPMI(DOSV),你如果還有印象,就發(fā)現(xiàn)后3項(xiàng)正好對(duì)應(yīng)本文前面所說(shuō)的Autoexec.nt中的3條LH命令。因?yàn)椤短焓沟蹏?guó)Ⅱ》無(wú)需使用DOSX,可將DPMI項(xiàng)的勾選去除。
7“SoundBlaster”用于配置SoundBlaster聲卡,如這里的IRQ是7,有一些游戲默認(rèn)會(huì)使用5——總之如果使用了VDMSound還是不能出聲,可以在這兒作一些變更。
8還有更多的配置這里就不一一講了,大家可自行摸索,點(diǎn)擊“確定”即可返回圖29的界面,選擇“下一步”,最后一個(gè)對(duì)話(huà)框中可選定“Remembermysettings”,以便下次將此次配置當(dāng)作默認(rèn)配置。點(diǎn)擊“完成”,軟件將引導(dǎo)進(jìn)入游戲界面,同時(shí)在游戲目錄下生成一個(gè)Play.vlp圖標(biāo),以后點(diǎn)擊此圖標(biāo)即可采用剛才的配置進(jìn)入游戲。若想修改還可在其上點(diǎn)右鍵,進(jìn)入屬性對(duì)話(huà)框中的“VDMSound”標(biāo)簽,點(diǎn)擊“Advanced”按鈕即可。
實(shí)例5:《大航海時(shí)代2》
這個(gè)例子主要是想說(shuō)明,如何配合VDMSound解決游戲運(yùn)行過(guò)速的問(wèn)題。這里選取的《大航海時(shí)代2》實(shí)在是令人懷念的經(jīng)典,而且這款游戲的兼容性非常好,在WinXP的默認(rèn)設(shè)置下即能順利運(yùn)行。不過(guò)美中不足的是,在筆者CPU為賽揚(yáng)1.8GHZ的機(jī)器上,只要一出海,速度就快得驚人,根本無(wú)法控制船的運(yùn)行方向——而且一晃之間數(shù)日已過(guò)。最后沒(méi)有辦法,只能采取“目標(biāo)式”一步一步的航行,而大航海時(shí)代系列的樂(lè)趣有很大一部分就是在海上“逛蕩”,如此步進(jìn)實(shí)在是損失了不少趣味。
要解決這個(gè)問(wèn)題,需要使用專(zhuān)門(mén)用于降速的軟件,這里筆者選擇了同樣由VDMSound作者寫(xiě)出的Speedset,首先可將壓縮包中的兩個(gè)文件Speedset.dll和Speedset.exe解壓到d:/vdmsound目錄下。接下來(lái)將配合VDMSoundLanchPad實(shí)現(xiàn)降速功能。
在《大航海時(shí)代2》安裝目錄下的Play.bat上點(diǎn)擊右鍵,按上例方法進(jìn)入到VDMSound配置高級(jí)(Advanced)界面。進(jìn)入“DosEnviroment”標(biāo)簽頁(yè),發(fā)現(xiàn)可在Config和Autoexec中增添附加命令行,這里需要在Autoexec一欄中添加剛才的Speedset.exe命令,Speedset后面應(yīng)當(dāng)添加參數(shù)以改變速度,經(jīng)多次測(cè)試,應(yīng)將其后的參數(shù)設(shè)為“+1”,具體添加的命令行為“l(fā)hd:/VDMSound/speedset.exe+1”(你可按自己的情況設(shè)定)。接下來(lái)選擇“Performance”標(biāo)簽頁(yè),選定“TrytoreduceCPUusage(嘗試降低CPU利用率)”,并將其上的游標(biāo)拖至最左邊的“Lowusage”,這個(gè)選項(xiàng)可使游戲運(yùn)行更加平滑;同時(shí)一般的WinXP用戶(hù)最好將下面的“DMAServicing”從5/15調(diào)節(jié)到更慢的頻率,如5/10。
經(jīng)過(guò)如此調(diào)節(jié)并“確定”后,順利進(jìn)入游戲,發(fā)覺(jué)航海速度果然降了下來(lái),而控制起來(lái)也更加平滑。最后要說(shuō)明的是,在上述兩個(gè)例子中,盡管使用LanchPad以后,配置會(huì)變得很簡(jiǎn)單,但并不意味著只能通過(guò)圖形界面使用VDMSound及Speedset,其實(shí)這兩個(gè)命令都可在Command命令行窗口中直接調(diào)用。以筆者機(jī)器安裝路徑為例,你只需在運(yùn)行程序之前轉(zhuǎn)到d:/vdmsound目錄,分別鍵入“VDMSRun”和“Speedset”命令并回車(chē),之后再運(yùn)行Play.bat,一樣可達(dá)到出聲和降速的目的。
(二)Win2000相對(duì)于WinXP的附加說(shuō)明
在內(nèi)存配置方面,Win2000和WinXP遵循完全相同的體系,所以無(wú)需再多講。在NTVDM方面,Win2000與WinXP之間最大的不同在于對(duì)聲卡與顯卡標(biāo)準(zhǔn)的支持。前面已經(jīng)講到,Win2000根本不提供任何聲卡方面的支持,所以沒(méi)有可能發(fā)聲,當(dāng)然也沒(méi)有可能存在聲卡方面的沖突,還是剛才那句話(huà):是福亦是禍。好在有VDMSound,基本上這方面已經(jīng)與WinXP不存在差別。
相對(duì)而言,對(duì)顯卡標(biāo)準(zhǔn)的支持則是Win2000的致命傷。DOS時(shí)代的顯卡編程接口標(biāo)準(zhǔn)是VESA1.2/2.0,許多DOS游戲都在編程中使用了些標(biāo)準(zhǔn),WinXP對(duì)二者的支持都相當(dāng)好,無(wú)需顧慮。在Win2000中也提供一些對(duì)VESA標(biāo)準(zhǔn)的支持,但必須是在全屏幕下!例如本文中所提到的《三國(guó)志Ⅳ》的486版本以及《中關(guān)村啟示錄》在Win2000下即使配置好了內(nèi)存,也無(wú)法雙擊執(zhí)行(出錯(cuò)提示找不到VESABIOS),原因就在于雙擊后程序是先從窗口模式開(kāi)始運(yùn)行的。當(dāng)然你可以運(yùn)行Command.com(記得修改Command.com的屬性使其支持EMS),之后按組合鍵Alt+Enter進(jìn)行到全屏模式,再轉(zhuǎn)到游戲安裝目錄執(zhí)行相應(yīng)命令,這樣就能順利進(jìn)入游戲(也可在這之前運(yùn)行VDMSound安裝目錄下的VDMSRun以獲取音效)。不過(guò)惱火的是,畫(huà)面出來(lái)了,鼠標(biāo)卻出了問(wèn)題:只能在不到1/2的上半屏活動(dòng),這樣當(dāng)然無(wú)法正常游戲。
VDMSound的作者曾透露出開(kāi)發(fā)VESA兼容接口的想法,但一直沒(méi)有下文,筆者也一直沒(méi)能找到合適的解決方法,好在WinXP遲早會(huì)是家庭Win2000用戶(hù)的升級(jí)選擇,不過(guò)暫時(shí)還在Win2000下工作的用戶(hù)只好忍受這種兼容性問(wèn)題的痛苦了。
編者注:本文上實(shí)際上探討了NT系統(tǒng)下DOS游戲的玩法,下一部分則有新的焦點(diǎn):Win98下DOS游戲解決方案,Win32/Win95游戲在WinXP/2000/98下的重現(xiàn),以及終極解決方案VirtualPC的縱深介紹——內(nèi)容精彩,可不要讓它與你擦肩而過(guò)。
(三)Win98下DOS游戲重玩的解決方案
總結(jié)上文可知,DOS游戲最致命的瓶頸就是內(nèi)存管理,其次是其對(duì)新硬件的兼容支持。不過(guò)對(duì)于Win98,解決問(wèn)題的方案與上述NT系統(tǒng)不大相同,總的來(lái)說(shuō)需要你對(duì)DOS基礎(chǔ)知識(shí)有相當(dāng)?shù)牧私狻?/p>
1.內(nèi)存管理的解決方案
前面提到,由于DOS系統(tǒng)不同于Windows系統(tǒng)那樣能夠智能管理內(nèi)存,所以其內(nèi)存管理設(shè)置都需手動(dòng)調(diào)試,在上面提到的內(nèi)存問(wèn)題解決實(shí)例中,你會(huì)發(fā)現(xiàn),我們一般在游戲提示內(nèi)存不夠時(shí),通過(guò)修改Autoexec和Config的具體配置解決此問(wèn)題。這個(gè)方法對(duì)于Win98系統(tǒng)同樣適用,但卻有一些實(shí)踐上的不同。
大家都知道Win98問(wèn)世時(shí)宣稱(chēng)是帶有一個(gè)DOS的,微軟把它叫作DOS7.0。在Win98開(kāi)始菜單中的“程序”組中,你會(huì)看到一個(gè)名為“MS-DOS方式”的快捷方式,指向“c:/windows/command”,其實(shí)這只是個(gè)偽DOS罷了,不過(guò)它與WinXP/2000/NT中NTVDM系統(tǒng)下的DosCommandPrompt又有很大的不同。
舊版DOS(6.22及其以前版本)啟動(dòng)后都會(huì)加載Config.sys和Autoexec.bat中的管理程序,用于管理內(nèi)存和配置系統(tǒng)。但從Win1.0到Win98,視窗系統(tǒng)的啟動(dòng)總是在DOS的基礎(chǔ)上進(jìn)行,即先啟動(dòng)DOS,再啟動(dòng)Windows。Win32的用戶(hù)都知道,Windows的啟動(dòng)是通過(guò)在DOS命令行下鍵入“Win”命令實(shí)現(xiàn),要能執(zhí)行這個(gè)Win.com,Config和Autoexec中必須要加載內(nèi)存管理器EMM386.exe和高端內(nèi)存驅(qū)動(dòng)Himem.sys等。然而發(fā)展到Win98之后,Win.com仍存在(但它默認(rèn)會(huì)在啟動(dòng)時(shí)自動(dòng)執(zhí)行),但已相當(dāng)智能,無(wú)需在兩個(gè)初始化文件中進(jìn)行設(shè)置即可正常運(yùn)行。因此你可以看到,C盤(pán)根目錄下這兩個(gè)文件是空的(Config.sys是系統(tǒng)文件,默認(rèn)情況下為隱藏,需要在“文件夾選項(xiàng)”進(jìn)行設(shè)置:圖1)。
但Win98系統(tǒng)的Config和Autoexec仍然重要,因?yàn)樗鼈兛刂浦癕S-DOS方式”的內(nèi)存及系統(tǒng)配置,也就是說(shuō),當(dāng)你在Windows中開(kāi)啟“MS-DOS方式”窗口或運(yùn)行Command.com命令,甚至雙擊DOS程序的圖標(biāo),系統(tǒng)都會(huì)為這個(gè)運(yùn)行于兼容模式下的DOS選擇Config及Autoexec——而它們就位于C盤(pán)根目錄之下。不過(guò)需要說(shuō)明的是,你若修改了這兩個(gè)文件,必須重啟系統(tǒng)后才能生效。以下將舉例進(jìn)行具體說(shuō)明,舉例時(shí)我們盡量采取與前文相同的游戲,以便大家對(duì)照分析。
(1)擴(kuò)充內(nèi)存EMS的正確配置
實(shí)例6:《三國(guó)志Ⅳ》
與前文所說(shuō)不同的是,如果沒(méi)有作過(guò)調(diào)整,進(jìn)入San486.com的屬性你會(huì)發(fā)現(xiàn),Win98下居然無(wú)法設(shè)置EMS內(nèi)存,因?yàn)橄到y(tǒng)并沒(méi)有自動(dòng)加載內(nèi)存管理工具,如果執(zhí)行當(dāng)然游戲會(huì)報(bào)“notenoughmemory”的。所以我們先要將擴(kuò)充內(nèi)存EMS的設(shè)置項(xiàng)加上。用記事本打開(kāi)系統(tǒng)盤(pán)下Config.sys文件,在其中加上如下兩行命令:
DEVICE=C:/WINDOWS/HIMEM.SYS
(這個(gè)語(yǔ)句非常重要,意思是加載高端內(nèi)存管理,使DOS能使用高端內(nèi)存。)
DEVICE=C:/WINDOWS/EMM386.EXEram
(EMM386.exe用于管理擴(kuò)充內(nèi)存,常用參數(shù)為“ram”和“noems”,使用后者能比前者釋放更多的常規(guī)內(nèi)存,但很多DOS程序不支持“noems”參數(shù),故使用面較窄。)
之后保存好文件,重新啟動(dòng)機(jī)器后再打開(kāi)San486.com的屬性,擴(kuò)充內(nèi)存EMS的設(shè)置項(xiàng)回來(lái)了,根據(jù)上文,將它設(shè)置為“自動(dòng)”即可。這樣擴(kuò)充內(nèi)存EMS的問(wèn)題就解決了,雙擊執(zhí)行San486.com即可順利進(jìn)行游戲。
(2)常規(guī)內(nèi)存的正確配置
實(shí)例7:《龍騎士4》(Dra4)
如前文所說(shuō),這款游戲?qū)ΤR?guī)內(nèi)存的要求非常高,差不多接近590kB了,同時(shí)這款游戲也需要有EMS支持。而通常裝載了EMM386.exe,DOS啟動(dòng)后,剩余的常規(guī)內(nèi)存無(wú)法滿(mǎn)足需要。還是嘗試編輯Config.sys文件來(lái)釋放更多的常規(guī)內(nèi)存。
在編輯前,我們還是先在Win98的DOS兼容模式下鍵入命令“mem/c/p”查看內(nèi)存的具體分配情況。在圖中可以看到,常規(guī)內(nèi)存剩余有577kB,系統(tǒng)其他常駐程序都是加載在常規(guī)內(nèi)存里的,而上位內(nèi)存是空的,所以我們要將一些常駐程序盡量加載到上位內(nèi)存中,從而使常規(guī)內(nèi)存空出,于是將Config.sys文件作如下修改:
DOS=HIGH,UMB
DEVICE=C:/WINDOWS/HIMEM.SYS
DEVICEHIGH=C:/WINDOWS/EMM386.EXEram
(“DEVICEHIGH”表示在上位內(nèi)存中加載EMM386文件)
DEVICEHIGH=C:/WINDOWS/IFSHLP.SYS
其實(shí)這里要做的事情,就是將圖6中看到的常規(guī)內(nèi)存出現(xiàn)的程序都盡量加載到高端內(nèi)存和上位內(nèi)存中。保存文件后重啟,然后再鍵入命令“mem/c/q”查看,果然這時(shí)候常規(guī)內(nèi)存已經(jīng)有592kB了。這時(shí)候運(yùn)行龍騎士4的Dra4.com,一樣沒(méi)有問(wèn)題。
(3)超大常規(guī)內(nèi)存的配置
不過(guò)不管如何配置Config.sys文件,由于上位內(nèi)存有限,在Windows環(huán)境下又要加載EMM386.exe,你幾乎沒(méi)有辦法使常規(guī)內(nèi)存高于590kB,雖然這時(shí)候絕大部分老DOS游戲都可以玩了,但也有部分“變態(tài)”游戲要求590甚至600kB以上內(nèi)存,很多專(zhuān)業(yè)級(jí)游戲網(wǎng)站都建議放棄。其實(shí)問(wèn)題依然可以解決。
一種方法就是從純DOS模式啟動(dòng),即在Win98運(yùn)行前按F8并選擇從命令行啟動(dòng),由于這時(shí)已經(jīng)不是視窗環(huán)境,所以系統(tǒng)默認(rèn)加載的常駐程序要少一些,只要合理配置Config和Autoexec文件,常規(guī)內(nèi)存就可達(dá)到600kB以上。
另外一種方法就是使用第三方內(nèi)存管理驅(qū)動(dòng)軟件。這里介紹UMBPCI3.41版,整個(gè)文件只有30kB,是很有用的上位內(nèi)存(UMB)擴(kuò)充驅(qū)動(dòng)程序(注:可能有某些主板暫不被支持),在Config.sys中用Device命令可以直接加載,最多可提供高達(dá)160多kB的UMB。假設(shè)將壓縮文件解開(kāi)為文件夾UMBPCI在C盤(pán),然后在Config.sys文件中加入此行語(yǔ)句“DEVICE=C:/UMBPCI/UMBPCI.SYS”,注意需要把它放在Himem.sys文件之后。這樣系統(tǒng)啟動(dòng)時(shí),就會(huì)調(diào)用Umbpci.sys,如果文件被正確調(diào)用,你應(yīng)該可在啟動(dòng)時(shí)看到相關(guān)信息。這時(shí)機(jī)器啟動(dòng)后其常規(guī)內(nèi)存已經(jīng)通常能輕易達(dá)到或超過(guò)600kB。
不過(guò)這種情況適用于不需EMS擴(kuò)充內(nèi)存的DOS游戲,因?yàn)檫@時(shí)候EMM386是被默認(rèn)屏蔽的。如果萬(wàn)一游戲既需要600kB以上的常規(guī)內(nèi)存又需要EMS擴(kuò)充內(nèi)存,那么我們就必須進(jìn)行特殊設(shè)置同時(shí)加載UMBPCI和EMM386。
首先我們必須知道機(jī)器所使用上位內(nèi)存的具體情況。這個(gè)可以利用UMBPCI所帶的Umbchk.exe工具查看。方法是在機(jī)器啟動(dòng)時(shí),按F8選取最后一項(xiàng)跳過(guò)Config和Autoexec文件,進(jìn)入DOS7.0后,執(zhí)行Umbchk.exe即可查看到機(jī)器上位內(nèi)存的空閑情況,將其記錄下來(lái)。然后在Config.sys文件中,將加載UMBPCI的語(yǔ)句修改為“DEVICE=C:/UMBPCI/UMBPCI.SYS/I=XXXX-YYYY”,這表示我們將“XXXX-YYYY”這一段上位內(nèi)存地址交給UMBPCI來(lái)處理,但并不是重點(diǎn),我們要解決的是UMBPCI和EMS同時(shí)加載的問(wèn)題。UMBPCI的作者建議將EMS加載在特定的某個(gè)64kB的內(nèi)存段內(nèi),只要這一段是可用的,就最好強(qiáng)制指定它為EMS的加載區(qū)。通常情況下這段地址是C800-D7FF,那么就需要如下編寫(xiě)Config.sys文件:
DOS=HIGH,UMB
DEVICE=C:/WINDOWS/HIMEM.SYS
DEVICE=C:/UMBPCI/UMBPCI.SYS/I=D800-EFFF
DEVICE=C:/WINDOWS/EMM386.EXEX=D800-EFFFX=B800-C7FFI=C800-D7FFI=B000-B7FFRAMM3D=256AUTO(注:無(wú)換行)
這樣,我們就可以同時(shí)加載UMBPCI和EMS了。另外一種情況是,如果你的顯卡有一個(gè)48kB的BIOS而無(wú)法使用C800-D7FF(例如NVIDIAGeForce),那么嘗試將參數(shù)作如下修改:
DEVICE=C:/UMBPCI/UMBPCI.SYS/I=DC00-EFFF
DEVICE=C:/WINDOWS/EMM386.EXEX=DC00-EFFFX=B800-C7FFI=CC00-DBFFI=B000-B7FFRAMM3D=256AUTO
當(dāng)然,此時(shí)系統(tǒng)仍有可能無(wú)法正確啟動(dòng),一般來(lái)說(shuō)是因?yàn)闊o(wú)法加載EMM386的頁(yè)面框架,那么我們可以在加載語(yǔ)句中加上“FRAME=NONE”參數(shù):DEVICE=C:/WINDOWS/EMM386.EXEFRAME=NONEX=D800-EFFFX=B800-C7FFI=C800-D7FFI=B000-B7FFRAMD=256AUTO。
通過(guò)這樣的調(diào)整,Win98下的MS-DOS就可同時(shí)支持EMS和擁有超高的空閑常規(guī)內(nèi)存。需要說(shuō)明的是,也有一些DOS游戲程序不能在沒(méi)有加載頁(yè)面框的情況下運(yùn)行,此時(shí)就只好使用第一種方法。
2.軟硬件兼容問(wèn)題的解決
解決了內(nèi)存問(wèn)題后,并不意味著任何一款DOS游戲就可在Win98下運(yùn)行無(wú)阻了,因?yàn)镈OS游戲在新系統(tǒng)下運(yùn)行不可避免地會(huì)出現(xiàn)兼容問(wèn)題。簡(jiǎn)單總結(jié),會(huì)發(fā)現(xiàn)兼容問(wèn)題仍可簡(jiǎn)單地分為硬件和軟件兩類(lèi),不過(guò)這里要弄清楚一點(diǎn),在Win98下DOS程序都是直接面對(duì)各種真實(shí)的硬件,而決不是WinXP中統(tǒng)一的虛擬硬件,所以就軟件環(huán)境的兼容性來(lái)說(shuō),Win98要強(qiáng)于WinXP,但就硬件兼容性來(lái)說(shuō),結(jié)論則恰好相反。
(1)軟件環(huán)境兼容問(wèn)題的解決
大多數(shù)DOS游戲在解決內(nèi)存問(wèn)題之后,是可以直接運(yùn)行在Win98的視窗環(huán)境下,然而有一部分DOS游戲會(huì)在運(yùn)行時(shí)跳出提示,說(shuō)游戲只能運(yùn)行在純MS-DOS方式下,拒絕在視窗中運(yùn)行。這時(shí)可我們打開(kāi)游戲的運(yùn)行文件或PIF文件的屬性,在程序頁(yè)點(diǎn)擊“高級(jí)”按鈕,在彈出的頁(yè)面中將“禁止MS-DOS程序檢測(cè)Windows”勾選,確定返回后再運(yùn)行游戲,一般就可以使游戲跳過(guò)DOS環(huán)境的檢測(cè),從而能運(yùn)行在視窗環(huán)境下。
當(dāng)然,還是有少部分DOS游戲無(wú)論如何也不能在Win98下運(yùn)行,例如《美少女夢(mèng)工廠(chǎng)2》,這時(shí)就只有點(diǎn)擊DOS主程序?qū)傩缘某绦蝽?yè)中“高級(jí)”按鈕,在彈出的頁(yè)面中將“以MS-DOS方式運(yùn)行”選上),同時(shí)在這里為它配置合理的內(nèi)存分配及必要的硬件驅(qū)動(dòng),確定退出后再點(diǎn)擊游戲的主程序運(yùn)行,系統(tǒng)就會(huì)自動(dòng)重啟進(jìn)入純DOS,同時(shí)加載先前設(shè)置好的配置,之后自動(dòng)運(yùn)行游戲。然而筆者并不推薦使用這種方法。因?yàn)樵谟螒騿?dòng)中,一旦發(fā)生異常中斷就很容易造成系統(tǒng)的啟動(dòng)死循環(huán)。所以,對(duì)于這些必須在純DOS下才能執(zhí)行的DOS游戲,還是自己手動(dòng)啟動(dòng)到純DOS再運(yùn)行為好。
(2)聲音兼容問(wèn)題的解決
一般來(lái)說(shuō),最常見(jiàn)的硬件兼容性問(wèn)題是DOS游戲無(wú)法正常發(fā)聲或需要屏蔽聲音才能正常運(yùn)行,其實(shí)如果DOS游戲能夠在Win98下正確運(yùn)行,通常是可以正常發(fā)聲的,因?yàn)樗话憧梢哉_使用視窗環(huán)境下已加載的聲卡。而游戲能順利進(jìn)行卻不能正常發(fā)聲的情況基本上是在純DOS環(huán)境下才會(huì)發(fā)生,這是因?yàn)樵S多人在啟動(dòng)純DOS環(huán)境時(shí)并沒(méi)有在他們的Autoexec文件里加載DOS下的聲卡驅(qū)動(dòng)以致游戲無(wú)法發(fā)聲,又或者由于聲卡規(guī)格太新,即使加載了驅(qū)動(dòng)仍無(wú)法被游戲正確調(diào)用,最后就是有某些聲卡,如主板上整合的軟聲卡根本就沒(méi)有提供DOS下的驅(qū)動(dòng)。
因此要解決純DOS下的聲音兼容問(wèn)題就必須要安裝好聲卡的DOS驅(qū)動(dòng)。你可以查看自己的聲卡驅(qū)動(dòng)盤(pán)或上網(wǎng)尋找驅(qū)動(dòng)程序,只要芯片相近即可使用。
其實(shí)你也可仔細(xì)查看一下游戲安裝目錄下的文件,許多DOS游戲本身都帶有最簡(jiǎn)單最兼容的DOS聲卡驅(qū)動(dòng),可以嘗試安裝使用游戲自帶的驅(qū)動(dòng),通常選擇最兼容的SB驅(qū)動(dòng)來(lái)解決問(wèn)題,如果問(wèn)題能得到解決,你完全可以把游戲自帶驅(qū)動(dòng)保留下來(lái)用作為自己聲卡的DOS驅(qū)動(dòng)。如果無(wú)論如何你都沒(méi)有辦法使你的聲卡在DOS下發(fā)聲,而你要玩的DOS游戲又無(wú)法運(yùn)行在Win98視窗環(huán)境下,“SORRY”,如果不更換硬件或操作平臺(tái),你就只有忍受無(wú)聲了。
(3)顯示兼容問(wèn)題的解決
可能不少人沒(méi)有注意到,其實(shí)DOS游戲的顯示兼容問(wèn)題比聲音兼容問(wèn)題更難處理。道理很簡(jiǎn)單,聲卡的規(guī)范其實(shí)一直都比較穩(wěn)定統(tǒng)一,而顯卡的發(fā)展卻日新月異。有些DOS程序需要特殊的顯卡模式支持,如EGA、SVGA等,而先進(jìn)的顯卡已淘汰此顯示模式。例如游戲《英雄傳說(shuō)4——朱紅血》,對(duì)已經(jīng)是非常老的S3Trio32/64(732/764)顯卡都無(wú)法兼容,勉強(qiáng)去運(yùn)行,你只能看到被拉長(zhǎng)的游戲畫(huà)面的一半。通常這個(gè)問(wèn)題是絕癥,遇上了基本上只有放棄。相對(duì)來(lái)講,WinXP由于虛擬了較低端的顯卡,這方面的問(wèn)題反而不大。
不過(guò)你仍可嘗試用一款名為“SciTechDisplayDoctor”(以下簡(jiǎn)稱(chēng)SDD)的軟件來(lái)解決,對(duì)于稍微老一些的顯卡來(lái)說(shuō)它能夠解決大部分問(wèn)題。早些年的時(shí)候,此軟件是一個(gè)應(yīng)用廣泛的顯卡工具,它可提高DOS、Windows系統(tǒng)的顯示兼容能力。對(duì)于我們來(lái)說(shuō),最有用的功能就是用于模擬過(guò)時(shí)的VBE顯示模式(不少游戲如《中關(guān)村啟示錄》都需要使用這種模式)。
軟件最新為7.X版,分DOS和Windows版本,請(qǐng)對(duì)應(yīng)你使用的環(huán)境分別安裝,安裝后會(huì)要求重新啟動(dòng)。軟件的使用非常簡(jiǎn)單,以視窗環(huán)境為例。啟動(dòng)主程序,將顯示控制開(kāi)關(guān)“ON”打開(kāi),這時(shí)界面下部分原來(lái)不能用的按鈕已經(jīng)可以使用。點(diǎn)擊按鈕“GraphicsImprovements”,在跳出的頁(yè)面里能夠看到你的顯卡所能支持的VBE版本,通常較早的VBE模式都沒(méi)有被支持,所以我們就需要利用SDD的軟件模擬方式。回到主界面,點(diǎn)“Compatibilitytest”按扭,在跳出的界面中的“DriverType”中選擇“ScitechDisplayDoctor”,這時(shí)右邊的“interfacertype”也都可選用了,選中你想模擬的VBE模式,然后點(diǎn)擊“TestGraphics”按鈕測(cè)試,如果能通過(guò)測(cè)試,說(shuō)明你的顯卡可使用該軟件來(lái)模擬老的VBE模式,而對(duì)于采用VBE顯示模式的游戲來(lái)說(shuō)就可以解決問(wèn)題了。在選定了VBE模式后,再回到主界面點(diǎn)擊“PerformanceProfile”按鈕,設(shè)定需要的特殊顯示模式。設(shè)定完成再試著運(yùn)行游戲,如果順利就要恭喜你了。
(4)其它兼容問(wèn)題的解決
除去主要的兼容問(wèn)題外,由于Win98不像Win2000/XP一樣,在NTVDM系統(tǒng)中默認(rèn)加載了光驅(qū)和鼠標(biāo)驅(qū)動(dòng),因此需要手動(dòng)加載。若游戲需要使用光驅(qū),你就得安裝光驅(qū)附帶的DOS驅(qū)動(dòng)程序,當(dāng)然也可用Win98啟動(dòng)盤(pán)中附帶的萬(wàn)能光驅(qū)驅(qū)動(dòng)程序。如果是光盤(pán)版的游戲,你還可用fakecd(cdx)來(lái)虛擬一個(gè)光盤(pán),例如:先把游戲解壓到一個(gè)目錄中,如“d:/sanguo”,之后運(yùn)行命令行“cdxd:/sanguo/L:z”,即可將d:/sanguo目錄指定虛擬為Z盤(pán)。如果游戲需要鼠標(biāo)支持,可到網(wǎng)上搜索下載,一般網(wǎng)上可找到的有mouse.com、qmouse.com、gm.com等,選擇能驅(qū)動(dòng)你的鼠標(biāo)又占用內(nèi)存少的就行。
(四)DOS/V游戲重玩的解決方案
最后有一個(gè)特殊的兼容性問(wèn)題,一些早期的DOS游戲是日文游戲,比如說(shuō)經(jīng)典的游戲《××生》,如果直接在中英文操作系統(tǒng)中執(zhí)行,就會(huì)無(wú)法顯示文字或顯示亂碼。這時(shí)的解決辦法是使用DOS/V操作系統(tǒng)。其實(shí)如果解開(kāi)下載到的DOS/V壓縮包,你會(huì)發(fā)現(xiàn)這其實(shí)就是個(gè)DOS啟動(dòng)盤(pán)而已,與普通啟動(dòng)盤(pán)不一樣的是,這個(gè)所謂的“啟動(dòng)盤(pán)”在DOS啟動(dòng)后會(huì)加載日文字庫(kù),所以用其啟動(dòng)系統(tǒng)后能正確顯示游戲文字。但由于總是要用DOS/V啟動(dòng)機(jī)器很麻煩,所以后來(lái)又出現(xiàn)了兩個(gè)程序DOSV/SV和DOS/J,實(shí)際上這兩個(gè)程序都是簡(jiǎn)單的日文字庫(kù)加載程序,并帶有相應(yīng)字庫(kù)。它們的好處是可在操作系統(tǒng)啟動(dòng)后根據(jù)需要隨時(shí)加載,兼容性非常好。使用方法也很簡(jiǎn)單,以DOSV/SV為例,其壓縮包中除了兩個(gè)FONT字庫(kù)文件和主程序Dosvfont.exe外,還有一個(gè)Dosv.bat文件,所以我們可將DOSV/SV解壓縮到游戲的安裝目錄下,然后編輯游戲的批處理執(zhí)行文件Play.bat,將Dosv.bat放到游戲主程序執(zhí)行之前,這樣游戲執(zhí)行前就會(huì)先加載日文字庫(kù),便能正確顯示日文。
二、Win95/32游戲重玩
Windows游戲和DOS游戲比起來(lái),安裝、運(yùn)行起來(lái)往往比后者方便,但另一方面,它對(duì)用戶(hù)的透明度下降了,用戶(hù)很難了解游戲的運(yùn)行環(huán)境,更不可能通過(guò)Config及Autoexec來(lái)“改善”這種環(huán)境。所以,重玩Windows上的老游戲更困難。
如果說(shuō)Win32更像一個(gè)基于DOS的準(zhǔn)圖形化操作系統(tǒng),那么Win95的圖形化操作已經(jīng)相當(dāng)完善,不過(guò)它對(duì)于DOS仍有著很大的依賴(lài)性,而且它本身和DOS一樣,也是一個(gè)16位的操作系統(tǒng),這就決定了運(yùn)行在上面的程序,包括游戲在內(nèi)都是16位的,而Win2000/XP/98都是32位操作系統(tǒng),運(yùn)行16位的程序必然存在一些兼容性問(wèn)題。Win98和Win95/32的兼容性相對(duì)較好,一般來(lái)說(shuō)老游戲不會(huì)遇到什么問(wèn)題。而從Win2000開(kāi)始,微軟正式終止了Win9X系列的開(kāi)發(fā),把操作系統(tǒng)全面轉(zhuǎn)向“NT”架構(gòu),此計(jì)劃貫徹實(shí)施的結(jié)果是宣揚(yáng)全面兼容的WinXP。如此我們還是先從WinXP開(kāi)始分析,并在其后對(duì)Win2000/98作補(bǔ)充說(shuō)明。
(一)WinXP下Win95游戲重玩的方案
實(shí)例1:《大航海外傳中文版》
運(yùn)行程序看到一個(gè)堆滿(mǎn)亂碼的對(duì)話(huà)框,啟動(dòng)失敗。要搞清楚失敗原因,先要看懂對(duì)話(huà)框上的字,顯然,這些字是Big5編碼的。對(duì)基于NT的操作系統(tǒng),不要想著去用那些內(nèi)碼轉(zhuǎn)換工具,因?yàn)閃in2000和WinXP都有完整的內(nèi)碼系統(tǒng),對(duì)于這款游戲,不如先來(lái)試試系統(tǒng)自己的功能。
打開(kāi)“控制面板”→“區(qū)域和語(yǔ)言選項(xiàng)”,進(jìn)入“區(qū)域選項(xiàng)”標(biāo)簽頁(yè),在“標(biāo)準(zhǔn)和格式”及“位置”的下拉菜單中選擇“臺(tái)灣”,再進(jìn)入“高級(jí)”標(biāo)簽頁(yè)面,將“非Unicode程序的語(yǔ)言”設(shè)置為“臺(tái)灣”(這一項(xiàng)是必須的),并確認(rèn)“代碼頁(yè)轉(zhuǎn)換表”中選中了“繁體中文Big5”)。設(shè)置后重新啟動(dòng)機(jī)器,系統(tǒng)就可以顯示Big5內(nèi)碼的漢字了,而且系統(tǒng)及多數(shù)其他內(nèi)碼的程序都可以正常使用,只是字體會(huì)難看一點(diǎn)。這種方法的缺點(diǎn)就是每次更改都需重啟系統(tǒng)。
改好了嗎?現(xiàn)在可看明白了,原來(lái)這個(gè)彈出窗口是提示我們要使用256色,還要在顯示屬性里改顏色嗎?不用這么麻煩了,現(xiàn)在輪到WinXP的兼容性設(shè)置登場(chǎng)了:在游戲的主運(yùn)行程序或其快捷方式上點(diǎn)右鍵,選擇“屬性”,在彈出窗口中選擇兼容性標(biāo)簽,再選中“用256色運(yùn)行”即可(有些游戲還必須選擇用“何種兼容模式運(yùn)行該程序”等其他選項(xiàng))。這樣游戲就能順利運(yùn)行了,在游戲運(yùn)行時(shí),桌面會(huì)自動(dòng)切換至256色,等游戲退出后又恢復(fù)原有狀態(tài),很是方便。
兼容性設(shè)置即使對(duì)光盤(pán)上的只讀文件也同樣可進(jìn)行設(shè)置,因?yàn)檫@項(xiàng)設(shè)置并不是更改文件本身的屬性,而是記錄下它運(yùn)行時(shí)所需的環(huán)境,而此記錄則是儲(chǔ)存在系統(tǒng)中。實(shí)際上,WinXP對(duì)多內(nèi)碼有著良好的支持,所以,該游戲以及后面的《太閣立志傳2》,都無(wú)需修改區(qū)域和語(yǔ)言選項(xiàng)即可重玩,窗體上雖有亂碼卻基本不影響理解。
反思及總結(jié):通過(guò)這個(gè)例子可以知道,很多老游戲在新系統(tǒng)上運(yùn)行時(shí)都存在色深及分辨率的問(wèn)題,所以,出現(xiàn)問(wèn)題時(shí)不妨先在兼容性標(biāo)簽里試試再說(shuō)。另外,如果桌面分辨率和游戲分辨率一樣時(shí)(640×480),游戲還要求自身窗口必須在最前端,那么還需在“任務(wù)欄和‘開(kāi)始’菜單屬性”中,把“將任務(wù)欄保持在其他窗口的前端”的勾選去掉,這一特性也具有普遍性。
實(shí)例2:《三國(guó)志孔明傳》和《文明Ⅱ》
這兩個(gè)經(jīng)典游戲,在運(yùn)行時(shí)會(huì)出現(xiàn)同樣的報(bào)錯(cuò):找不到Wing.dll,從擴(kuò)展名我們可以知道Wing.dll是一個(gè)動(dòng)態(tài)鏈接庫(kù)文件,但它到底是何方神圣?在Windows游戲發(fā)展的初期,游戲畫(huà)面對(duì)硬件的要求還很低,更談不上什么3D,那時(shí)簡(jiǎn)單的圖形加速功能都通過(guò)一個(gè)動(dòng)態(tài)鏈接庫(kù)文件實(shí)現(xiàn),就是上面提到的Wing.dll了。
下載解壓后安裝即可。簡(jiǎn)單安裝之后《文明Ⅱ》的運(yùn)行就完全正常了。而《三國(guó)志孔明傳》則較郁悶,由于WinXP的視頻輸出接口不能很好地兼容這款游戲,導(dǎo)致輸出的畫(huà)面時(shí)常無(wú)法自動(dòng)刷新,具體表現(xiàn)就是變換場(chǎng)景時(shí)可能會(huì)黑屏,就算等待也無(wú)效,這種情況下,我們只能強(qiáng)制刷新,比較有效的方法就是將窗口最小化,再最大化,畫(huà)面就出來(lái)了——這當(dāng)然算不上解決方案,只是想說(shuō)明出現(xiàn)這種問(wèn)題就是絕癥了。
實(shí)例3:《太閣立志傳2》
我們舉這個(gè)例子是想說(shuō)明Win95游戲在新系統(tǒng)下所面臨情況的復(fù)雜性,若讀者能從中有所獲益,也算對(duì)得起這種種的折騰了。運(yùn)行此游戲會(huì)產(chǎn)生一個(gè)典型的XP非法操作窗口,選擇“不發(fā)送”之后程序終止,之后嘗試兼容性設(shè)置卻毫無(wú)用處。我們甚至從微軟網(wǎng)站下載了WindowsApplicationCompatibilityToolkit3.0,這是一套專(zhuān)門(mén)用于解決程序兼容問(wèn)題的工具包,里面有很多復(fù)雜的兼容性設(shè)置,但由于很多設(shè)置專(zhuān)業(yè)性極強(qiáng),普通用戶(hù)較難上手,它更多是為程序員調(diào)試?yán)铣绦蛑谩:迷谄鋽?shù)據(jù)庫(kù)中包括了很多常見(jiàn)的老程序的兼容性信息,我們?cè)诶锩骟@訝地發(fā)現(xiàn)了《太閣立志傳2》,不過(guò)短暫欣喜過(guò)后是殘酷的現(xiàn)實(shí):在它虛擬的兼容環(huán)境中游戲仍然無(wú)法正常運(yùn)行。事實(shí)上,我們通過(guò)這個(gè)工具包的所有努力都沒(méi)有成功,希望它不是真的這么“一無(wú)是處”,如果讀者朋友以后遇到什么兼容性問(wèn)題,倒不妨試試。
還是“自己動(dòng)手,豐衣足食”吧。從報(bào)錯(cuò)信息著手,在報(bào)錯(cuò)窗口右下角有一個(gè)叫“請(qǐng)單擊此處”的鏈接,照辦后會(huì)彈出較詳細(xì)的錯(cuò)誤報(bào)告,從這里可以看出,都是一個(gè)叫“MCIAVI32.dll”的動(dòng)態(tài)鏈接庫(kù)惹的禍,這又是何許“庫(kù)”也?MCI是MediaControlInterface(媒體控制接口)的縮寫(xiě),凡是和這個(gè)詞沾邊的文件大多是和視頻及音頻控制有關(guān)的。事實(shí)上也是如此,它是一個(gè)32位的AVI媒體驅(qū)動(dòng),因此判斷出錯(cuò)原因是老版本W(wǎng)indows程序調(diào)用了新系統(tǒng)的接口,而通過(guò)該接口指向的驅(qū)動(dòng)卻不同,從而造成了錯(cuò)誤。
既然是和AVI有關(guān)的驅(qū)動(dòng),我們認(rèn)為極有可能是用于播放開(kāi)場(chǎng)動(dòng)畫(huà)的,開(kāi)場(chǎng)動(dòng)畫(huà)與游戲沒(méi)有直接關(guān)系,但過(guò)不了這一關(guān)游戲就無(wú)法繼續(xù)。那么,我們能不能索性跳過(guò)這個(gè)環(huán)節(jié)呢?開(kāi)場(chǎng)動(dòng)畫(huà)看不看是小事情,于是我們決定刪掉MCIAVI32.dll,這個(gè)文件就在System32目錄下,直接刪文件是不行的,WinXP具有文件保護(hù)功能,重啟后文件就會(huì)自動(dòng)恢復(fù)。
當(dāng)然你還可以在另一個(gè)地方找到“它”,雙擊控制面板中的“系統(tǒng)”圖標(biāo),依次選擇“硬件”→“設(shè)備管理器”,展開(kāi)“聲音、視頻和游戲控制器”→“媒體控制設(shè)備”,雙擊后在“屬性”標(biāo)簽中就列出了這個(gè)文件,選中文件再點(diǎn)右下角的“屬性”,可將其設(shè)置為兼容16位,但這樣做了以后,仍然不能解決問(wèn)題(難道說(shuō)了半天全是廢話(huà)?)。別急,我說(shuō)這些是為了讓大家更清楚地了解這個(gè)文件在系統(tǒng)中的作用及位置。真正刪除它需要使用注冊(cè)表編輯器:通過(guò)開(kāi)始菜單運(yùn)行“regedit”,找到如下兩項(xiàng),編輯前別忘了先備份(右鍵單擊項(xiàng)圖標(biāo)后選擇“導(dǎo)出”):
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/drivers.desc
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/MCI32
分別在這兩個(gè)項(xiàng)下刪除“MCIAVI32.dll”和“AVIVideo”字符串。這樣做并不會(huì)真正刪除該文件,但系統(tǒng)已經(jīng)認(rèn)為它不存在了,再次運(yùn)行游戲,成功!不過(guò)玩完游戲可別忘了恢復(fù)注冊(cè)表哦。
反思和總結(jié):由此可以看出在WinXP解決老版Windows游戲不能運(yùn)行問(wèn)題的復(fù)雜性。實(shí)際上這也是因?yàn)閃indows系統(tǒng)的復(fù)雜性遠(yuǎn)高于DOS的緣故。對(duì)于普通玩家而言,一些游戲在安裝好Wing.dll、設(shè)置好語(yǔ)言及兼容性之后仍不能玩,基本上可以放棄通過(guò)系統(tǒng)設(shè)置解決問(wèn)題的想法。此時(shí)更好的兼容性解決方案,應(yīng)該還是虛擬機(jī)軟件,想必微軟也認(rèn)識(shí)到了這一點(diǎn)才會(huì)收購(gòu)VirtualPC,在本刊2003年第7期中,我們已經(jīng)初步介紹了虛擬機(jī)軟件的使用方法,本段結(jié)束后將對(duì)此軟件進(jìn)行更深層次的探討。
(二)Win98/2000相對(duì)于WinXP的附加說(shuō)明
Win2000下游戲的情況與WinXP大抵相同,盡管Win2000沒(méi)有兼容性設(shè)置,但只要按要求調(diào)整好桌面解析度及色深即可,只是每次都要手動(dòng)切換,麻煩一點(diǎn)而已,但是Win2000區(qū)域和語(yǔ)言選項(xiàng)的設(shè)置略有不同。而在Win98下玩Win95游戲幾乎沒(méi)有遇到任何阻力,只要安裝好Wing.dll,在需要轉(zhuǎn)碼時(shí)安裝南極星等工具即可,可見(jiàn)Win98實(shí)實(shí)在在屬于Win95的近親。
(三)Win32游戲相對(duì)于Win95游戲的附加說(shuō)明
由于Win32是一個(gè)事實(shí)上的過(guò)渡產(chǎn)品,盡管它很成功,但專(zhuān)為其設(shè)計(jì)的游戲卻不多,不過(guò)我們所能找到的游戲的兼容性卻出乎意料的好,甚至不需安裝Wing.dll(因?yàn)檫BWing.dll都用不上),只需將桌面分辨度簡(jiǎn)單改為640×480,8位色深(即256色)后,在WinXP/2000/98下都可順利運(yùn)行。
三、虛擬機(jī)軟件的局限性及應(yīng)用技巧
通過(guò)上述復(fù)雜的介紹,加上自己的努力嘗試,相信大部分的老游戲已經(jīng)能夠在你的新系統(tǒng)上重?zé)ㄇ啻骸H欢阋部梢钥吹?#xff0c;盡管微軟和周邊軟件作者們作出了各種各樣的努力,兼容性問(wèn)題始終存在:在Win98下,老游戲要直面真實(shí)PC的顯卡和聲卡;在Win2000下,顯示模式的問(wèn)題很讓人苦惱;而WinXP盡管在虛擬硬件方面對(duì)更多的顯示和聲卡模式進(jìn)行了支持,但對(duì)于跨越數(shù)年的DOS~Win95時(shí)代,這些支持遠(yuǎn)遠(yuǎn)不夠。
不過(guò)或許懷舊只是一種情緒,花時(shí)間來(lái)研究兼容性并不是一件被商業(yè)利益驅(qū)動(dòng)的事情。對(duì)于VDMSound的作者或微軟NTVDM的設(shè)計(jì)者來(lái)講,只要再前進(jìn)幾步,就能解決更多的問(wèn)題,而實(shí)際上腳步或許就停留在此。然而幸虧還有以VMWare和VirtualPC為代表的虛擬機(jī)軟件,幸虧它們?cè)诮鉀Q一臺(tái)機(jī)器上運(yùn)行多操作系統(tǒng)等問(wèn)題的時(shí)候順帶觸及了新老系統(tǒng)間兼容性問(wèn)題的解決。
(一)虛擬機(jī)軟件的局限性
應(yīng)當(dāng)來(lái)講使用虛擬機(jī)軟件完全虛擬出對(duì)應(yīng)的舊操作系統(tǒng),老游戲的重玩問(wèn)題就能完美解決,然而這個(gè)結(jié)論只能說(shuō)太過(guò)絕對(duì)。絕大部分游戲應(yīng)當(dāng)可以在虛擬機(jī)下順利運(yùn)行,特別是Win32/95下的游戲,使用虛擬機(jī)軟件后,很多在新系統(tǒng)下難以解決的問(wèn)題幾乎都能迎刃而解。但也會(huì)有意外的情況——當(dāng)然這種意外實(shí)際上卻是在意料之中的。
看過(guò)本刊今年第7期《重返DOS仙劍時(shí)代——VirtualPC應(yīng)用一則》的朋友肯定都會(huì)明白,虛擬機(jī)軟件虛擬的是一臺(tái)PC,而不是一個(gè)操作系統(tǒng),既然是一臺(tái)PC,就肯定會(huì)設(shè)定自己的硬件(相當(dāng)于你攢一臺(tái)機(jī)器),這里面對(duì)老游戲而言,顯卡和聲卡最為關(guān)鍵。
以VirtualPC5.1為例,其虛擬的顯卡是S3Trio32/64PCI。盡管這款顯卡的兼容性很不錯(cuò),但在實(shí)際操作過(guò)程中,仍發(fā)現(xiàn)一些游戲如《英雄傳說(shuō)4——朱紅血》、《大富翁3》等,在運(yùn)行時(shí)游戲畫(huà)面被拉長(zhǎng)只剩1/2。此情況如果參照前文Win98下顯卡兼容問(wèn)題,使用SDD,就會(huì)暴露虛擬軟件的另一個(gè)問(wèn)題:虛擬硬件的缺陷。簡(jiǎn)單來(lái)說(shuō),就是無(wú)法達(dá)到真實(shí)虛擬的地步,SDD在虛擬機(jī)下無(wú)法對(duì)本身就是虛擬出的硬件進(jìn)行再次虛擬處理。這樣,此問(wèn)題在VirtualPC上根本無(wú)法解決。在另一款很出名的虛擬軟件VMWare(以3.2版本為例)的幫助說(shuō)明中也提到,使用DirectDraw和Direct3D圖形技術(shù)的軟件不能在其上運(yùn)行,但與我們這里討論的話(huà)題關(guān)系就不大了。
相對(duì)顯卡,聲卡方面的兼容性問(wèn)題可能少一些,在我們使用VirtualPC進(jìn)行測(cè)試的整個(gè)過(guò)程中,并沒(méi)有發(fā)現(xiàn)有聲卡兼容方面的問(wèn)題。不過(guò)不少游戲在初次運(yùn)行時(shí)會(huì)要求設(shè)定聲卡的參數(shù)(或者你也可手動(dòng)進(jìn)行設(shè)置),所以這里將VirtualPC和VMWare所虛擬聲卡的參數(shù)陳列如后。VirtualPC5.1:CreativeLabsSoundBlaster16,Port220,IRQ5,8-bitDMA1,16-bitDMA5;VMWare3.2除16-bitDMA參數(shù)為7以外,余者皆與VirtualPC5.1相同。
(二)虛擬機(jī)的應(yīng)用技巧
很多初次使用虛擬機(jī)的朋友都會(huì)覺(jué)得在主機(jī)和虛擬機(jī)之間傳輸數(shù)據(jù)是很麻煩的事情,這種麻煩的感覺(jué)就像面對(duì)兩臺(tái)沒(méi)有聯(lián)系的電腦一樣,當(dāng)然虛擬機(jī)除利用軟驅(qū)和光驅(qū),還可通過(guò)制作.iso和.vfd鏡像文件傳遞數(shù)據(jù)——但仍舊很麻煩。那么同樣類(lèi)比,我們就會(huì)發(fā)現(xiàn),利用網(wǎng)絡(luò)是非常自然的解決方案!
下面以VirtualPC為例進(jìn)行說(shuō)明。實(shí)際上軟件安裝設(shè)置完之后,就會(huì)在主機(jī)上安裝一個(gè)虛擬網(wǎng)卡用于和虛擬機(jī)建立網(wǎng)絡(luò)連接,當(dāng)然我們不用在新舊系統(tǒng)間手動(dòng)建立局域網(wǎng),畢竟那需要太多的專(zhuān)業(yè)知識(shí)。VirtualPC安裝包中已經(jīng)為DOS和Windows分別提供了附加的工具以實(shí)現(xiàn)此功能(VMWare中類(lèi)似的工具需另外下載)。
我們先來(lái)看安裝了DOS后的虛擬機(jī)如何使用這個(gè)工具。以MSDOS6.22為例,啟動(dòng)虛擬機(jī)后,點(diǎn)擊菜單“Floppy”→“CaptureImage”,在彈出窗口中找到軟件第一次解壓縮后的文件夾,并順次找到“Additions”→“DosAdditions”→“DosAddition.vfd”,這是專(zhuān)門(mén)為DOS設(shè)計(jì)的附加功能軟盤(pán)鏡像文件。回到DOS虛擬機(jī)界面,進(jìn)入A盤(pán),輸入“dosadd”即可開(kāi)始安裝,之后在“Floopy”菜單中釋放“DosAddition.vfd”并重啟,這樣,這個(gè)DOS虛擬機(jī)啟動(dòng)后會(huì)自動(dòng)加載名為“FolderSharing”(文件夾共享)的驅(qū)動(dòng),同時(shí)還會(huì)加載通用光驅(qū)驅(qū)動(dòng),實(shí)質(zhì)上這個(gè)共享功能是間接利用了系統(tǒng)的網(wǎng)絡(luò)功能,將主機(jī)上的某個(gè)文件夾映射為虛擬機(jī)上的某個(gè)盤(pán)。
接下來(lái)點(diǎn)擊菜單“Edit”→“Settings”,打開(kāi)此虛擬機(jī)的設(shè)置對(duì)話(huà)框,找到“SharedFolders”,初始情況下這里面是空的。點(diǎn)擊右面的“ShareFolder”按鈕,在彈出的對(duì)話(huà)框中選擇你需要在DOS下直接訪(fǎng)問(wèn)的文件,如本例中的“E:/dosgame”,在下面的“Driveletter”中選擇映射后的盤(pán)符,本例接受默認(rèn)設(shè)置“Z”,如果需要每次啟動(dòng)虛擬機(jī)都共享此目錄,可將“Shareeverytime”勾選上。確定之后,在虛擬機(jī)中輸入“Z:”,即可對(duì)主機(jī)上的E:/dosgame目錄進(jìn)行訪(fǎng)問(wèn)。
這里有兩個(gè)說(shuō)明:(1)如果在DOS下使用共享文件夾功能,其驅(qū)動(dòng)會(huì)占用常規(guī)內(nèi)存空間,致使游戲可使用內(nèi)存減少,因此建議你最好拷貝完所需要的文件,然后打開(kāi)根目錄下Autoexec.bat中的“c:/cntx/fshare.exe”和“c:/cntx/idle.com”,在其前加上“rem”禁止其運(yùn)行。當(dāng)然DOS下的修改要靠Edit命令完成,需要你對(duì)DOS有一定了解。(2)在Win95或其后版本中安裝附加功能更為簡(jiǎn)單,通過(guò)菜單“CD”→“CaptureImage”選擇同上“Additions”目錄下的VPCAdditions010021.iso文件,在虛擬機(jī)中安裝光盤(pán)上的Setup.exe,安裝完后重啟,類(lèi)似上述操作選擇共享文件夾即可完成映射,當(dāng)然Windows安裝完附加工具后,有更實(shí)用的功能:你可以在主機(jī)和虛擬機(jī)之間隨意拖拽文件!
此外還有一些應(yīng)用技巧,如不熟悉DOS編輯的朋友可將DOS安裝磁盤(pán)當(dāng)作第二硬盤(pán)掛接在另一個(gè)裝有Win98的虛擬機(jī)下,利用圖形界面編輯文件;又例如在虛擬機(jī)暫時(shí)不用的情況下可以按右Alt+P組合鍵暫停虛擬機(jī)運(yùn)行,以釋放一部分內(nèi)存。你甚至還可以通過(guò)VirtualPC和游戲修改軟件如GameMaster的合作,修改常規(guī)情況下無(wú)法修改的游戲。這些具體的操作就留待大家細(xì)細(xì)研究了。
?
總結(jié)
以上是生活随笔為你收集整理的如何在新系统下重玩老游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: joystick手柄驱动安卓_万能手柄驱
- 下一篇: 谷歌电子市场[Google Play]发