本世纪最经典好文---新系统下经典老游戏[中文HGAME]重玩全攻略(感谢作者)
| 送給所有愛玩游戲的老鳥們 ? 老游戲中有大量經典作品,其中中文的HGAME更是經典中的經典! ? ◆ 告別的年代 失色的回憶?——新系統下經典老游戲重玩全攻略 ◆ ? “新”與“老”當然是相對的,不過在開篇之前有必要確定我們的討論范疇,這里的“老”是指為Win98之前的操作系統,包括DOS和Win32/95,而新系統則是指Win98/2000/XP。毫無疑問,有很多老游戲都很值得我們來重溫,但重溫的方法也各異,有的人會去買例如奔騰133的“老爺級”機器,專門用于玩老游戲;不過老PC也不是誰都能買到的,而且為了玩老游戲真愿意如此大動干戈,也算是骨灰級玩家了。于是典型的解決方法是采用多系統,其中有一個系統裝上MSDOS 6.22+Win32或Win95,不過這種方法也會碰上新顯卡、聲卡與老游戲不兼容的難題。 實際上,大部分用戶都會在現有系統上嘗試老游戲,在這方面,使用Win98的用戶似乎比WinXP的用戶擁有更多的笑容(越“老”越好?這是否準確,還請參見后文)。除了一些兼容性非常好的游戲,大部分已不可能運行,而所謂兼容性好的游戲也基本上不可能聽到游戲原聲。那么,要實現完美的重溫效果,是否注定要調整硬件、注定要安裝多系統呢?經過筆者的一番艱苦探索,發現并不是這樣,大部分的老游戲在新系統下仍舊可以找到合適的解決方案。 在大家所碰到的經典老游戲中,DOS游戲無疑占有絕對多的比例。然而辛辛苦苦找出來的游戲,當在視窗下雙擊主運行程序時,卻會出現各種莫名的情況。在Win98下還好一些,好歹能讓你看到出錯信息(當然一般情況下這個出錯信息我們都弄不明白),至于Win2000/XP,往往是黑色屏幕一閃而過,一些情況下還會出現訪問地址非法的提示,總之會讓人不明所以。 然而這種種不能正常運行的情況并不完全是因為新系統與老游戲不兼容的緣故,熟悉DOS的用戶都知道,DOS是一個開放的系統,其軟件操作并不像Windows下那樣多數是“傻瓜式”,特別是DOS下的多媒體軟件(例如游戲)要正常運行,往往需要對運行環境作特殊的設置,如果只是“雙擊”,當然不符DOS“風格”了。因此一款DOS游戲在新系統下不能重玩,實質是兼容與設置兩方面的問題均可能有,這也提示了我們解決問題的一些思路。 由于在不同系統下,DOS游戲運行的環境大不一樣,因此在下文中,將主要講述WinXP下的解決方案,之后回到Win2000和Win98環境下,探討重玩的方法。這樣行文還有一個原因:事實上從Win98到2000再到XP,操作系統對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虛擬機支持(NT Virtual DOS Machine,簡稱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將被保留給諸如系統、硬盤控制器、顯存等使用,稱為上位內存(Upper Memory Block,簡稱UMB),剩下的640kB稱作常規內存(Conventional Memory),這640kB可不是全部空余的,系統啟動后就會被占用一部分,這樣一般程序只能利用常規內存的剩余(Free)部分了,理解這一點非常重要。 然而虛擬機所提供的的內存容量絕對超過1MB,這部分被稱作擴展內存,由于在使用上必須服從擴展內存標準(eXtend Memory Standard),而被簡稱為XMS,要使用XMS就必須在Config.sys(現在是Config.nt)中加載Himem.sys驅動程序。當然擴展內存最底層,靠近剛才所說的那1MB的地方,有近64kB的容量,DOS不使用XMS標準即可訪問,這一內存區域被稱為高端內存區(High Memory Area),DOS經常會將自己的一部分駐留在此區域(MS-DOS resident in High Memory Area),以將常規內存盡量空出一些給應用程序使用。 最后一個擴充內存EMS(為Expanded Memory Standard的縮寫)的概念非常重要但又比較難理解,簡單來講它是CPU的欺騙者:CPU“看起來”它是在UMB中(在1MB內,可自由使用),而實際上它在XMS中,是XMS的一部分或全部,這樣程序就能夠有效地使用1MB以外的擴展內存了。不過要使CPU能識別擴充內存,需要在Autoexec.bat(現在是Autoexec.nt)中裝載擴充內存管理器EMM(Expanded Memory Manager),在DOS下一般是用EMM386.exe。這里需要說明,由于EMS占用了XMS的空間,所以XMS的可用(Available)部分會減少。舊DOS是一個非常自由的系統,在上面運行的游戲可自由決定是否使用EMS,甚至還會決定要多少EMS,否則就……嘿嘿,罷工。 從以上看來,與我們的話題密切相關的有兩塊內存:常規內存和擴充內存,這兩個也恰巧是無數DOS在新系統下運行的“殺手”,好在我們現在已知已知彼,可以開戰了。以下實例均在WinXP Pro SP1版本下進行。 實例1:《中關村啟示錄》 在游戲的安裝目錄h:/dosgame/ZGC下有一個Play.bat的批處理文件,雙擊即可執行,然而如此執行的結果卻是黑色窗口一閃而過——不過這么出名的游戲怎能輕易放過,一定得探個究竟才是。于是在Play.bat對應圖標上點擊右鍵,選擇“編輯”,系統會調用記事本打開文件,看到其中有兩條命令:runqbj和go,分別對應同一目錄下的Ruqbj.com和Go.bat,顯然Go.bat還是一個批處理文件,用記事本打開后發現其中又有3條命令:univbe、game和univbe/u,這3條對應兩個可執行文件:Univbe.exe和Game.exe。為了找到原因所在,筆者將逐條執行runqbj、univbe和game命令。 在“開始”→“運行”對話框中輸入“command”并回車,在打開的Command窗口中改變目錄到游戲安裝目錄,逐條輸入3行命令,當執行完Univbe后,提示找不到所支持的顯卡,暫時不去理會,執行完最后一條命令Game,在屏幕上看到一行字:EMS memory manager not found(找不到EMS內存管理器)。難道是因為WinXP的NTVDM默認就不加載EMM嗎? 事實正是如此。在前面提到的Config.nt文件里關于EMS的說明中,筆者發現這么一段話:EMS的大小將由Pif文件決定,這個Pif文件要么是DOS程序的快捷方式,要么默認為系統盤Windows目錄下的_default.pif,如果在Pif文件的設置中EMS被設定為“0”,則EMM將不會加載。 大家對Pif文件及其圖標一定都不會陌生,從Win3X時代起,為了能在視窗界面中給DOS程序提供自定義的內存配置,微軟設計了一個“Pif”的概念,看起來這個Pif只是原來程序的一個快捷方式,實際上可以在其中進行大量的自定義設置。由于游戲安裝目錄下找不到任何Pif文件,所以根據以上一段說明,雙擊時將會調用_default.pif中的設置。于是我們找到_default.pif,并在其上點擊右鍵選擇彈出菜單中的“屬性”,在打開的對話框中點“內存”標簽卡,發現里面的EMS赫然設為“無”!《中關村啟示錄》運行需要EMS支持,這樣設置當然會出錯。而剛才運行的Command.com也符合這一原則,其屬性對話框的內存頁與圖6完全相同。 那么解決方法你一定已經想到了,由于WinXP無法對.bat文件配置內存,所以你可以:1.修改_default.pif屬性中的內存配置;2.修改Command.com的內存配置,并在其窗口中運行Play.bat。但修改_default.pif文件顯然不可取,因為這個文件將會是所有DOS程序的默認Pif配置文件,有一些程序并不需要EMS,有的甚至只要有EMS就不能運行。那我們試著把Command.com內存配置中的EMS和XMS兩項均調為“自動”(圖7),再次運行Command窗口,同上找到安裝目錄并輸入“play”命令,回車之后驚喜的看到了游戲的開始畫面(圖8)。 那么到底“自動”是什么概念呢?再次進入Command窗口并執行命令行“mem”,這個命令可查看當前的內存分配及使用情況(圖9),原來“自動”默認為分配4MB的EMS和19MB的XMS(其中只有15MB是可用的)。這里順便說一下,顯示的第1行就是前面所說的640kB常規內存,第3行非常重要,表示NTVDM啟動后常規內存剩下的空間,當然也就是最大可執行程序的大小了(Largest executable progaram size)。 不過每次從Command運行再找到Play.bat仍顯麻煩,其實有更簡便的方法,由于Play.bat文件中第一行runqbj(qbj?求伯君?呵呵)對應于Runqbj.exe(記住不是.bat文件),于是在Runqbj.exe的文件圖標上點右鍵并進入“屬性”設置,將其中的內存頁同圖7設置(當然也可將EMS設置為4MB以上的數值),確定后會在當前目錄下生成Runqbj.pif文件,之后雙擊Play.bat即可順利進入游戲。 在游戲安裝目錄San4下有兩個運行文件:san4.com和san486.com,顯然后一個是針對486機器設置的,運行它將擁有更高的游戲性能。然而點擊后能順利進入KOEI開始畫面,但之后就屏幕一閃,并顯示出一行字:Not Enough Memory(缺乏足夠的內存),此時你應當對“不夠”二字有所領會了,由于是直接雙擊,故猜想仍是EMS的問題。依上法設置san486.com的EMS為自動,即可順利進行游戲(圖10)。 實例2:《龍騎士4》(Dra4) 這款游戲由ELF出品,以情節設計的巧妙贏得了不少玩家的欣賞,我們看能不能在WinXP系統下正常運行。首先必須根據游戲說明其安裝在C盤根目錄下,進入安裝目錄c:/dra4,雙擊執行其中的Play.bat,出現的情況仍然是黑屏的一晃而過。于是按照實例1中的方法用記事本打開Play.bat,發現其中只有一行:dra4 start.mes H x C,這是一個帶參數運行的命令,主程序是dra4,不過卻在安裝目錄下發現了兩個可執行dra4文件:dra4.com和dra4.exe,這里你需要知道.com文件執行的優先度高于.exe。于是對dra4.com的屬性進行修改,將EMS設為8192kB。可是和我們的意愿相反,雙擊Play.bat后還是黑色窗口一閃而過…… 于是回到剛才討論的內存知識中來,除了EMS,還有一個內存殺手就是常規內存。還記得上面圖9中的“最大可執行程序大小(Largest executable program size)”嗎?有沒有可能581 120字節的內存仍不夠dra4.com使用呢?不妨試著從常規內存中清理出一些空間來。 這里我們需要先查看NTVDM默認啟動時都加載了哪些程序,仍然在“運行”對話框中輸入“command”打開DOS命令行窗口,在其中鍵入“mem /c |more”命令分頁查看當前內存的詳細利用情況(圖11,熟悉DOS的用戶會問為什么不用“/p”參數,因為這個參數在NTVDM中已不被支持,只好用“|more”代替)。從圖中可以看到常規內存(Conventional Memory)中有幾個大頭:MSDOS、MOUSE、DOSX,尤其是DOSX,居然占盡了33.9kB的空間,要知道常規內存中可是寸土必爭啊。 實際上DOSX是NTVDM為支持DPMI(Dos Protected Mode Interface,DOS內存保護模式接口)類型程序而執行的命令。保護模式可以讓程序獲得更多的內存資源,但使用DPMI的游戲都必須附帶一個DOS擴展程序,這個程序一般為DOS/4GW v1.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目錄下,之后找到dra4.com文件,依上法進入屬性對話框,在程序標簽頁中點擊“高級”按鈕(圖12),在彈出的Windows PIF窗口中重新指定專用初始化文件(圖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目錄,雙擊Dra4.com,你會發現果然是一擊奏效(圖15),需要提醒的是,在修改Autoexec.nt的同時仍需配置好Dra4.com的內存參數,特別是EMS。 從上述說明來看,內存問題在WinXP下只能算作配置方面的難題,而本段涉及的才真正是兼容問題。首先要說明這里的聲卡并不是指你真實機器上的聲卡,而是NTVDM所模擬出的聲卡。 從WinNT到Win2000,所虛擬的DOS版本都是5.0,而NTVDM提供的硬件為與DOS版本配套,實質上“配置”相當低,這樣對DOS游戲的支持也很差,最關鍵的是,它不支持DOS 6時代以來聲卡的標準兼容模式——Sound Blaster。但WinXP在這方面則有所突破,其提供的NTVDM中直接內建有對Sound Blaster 2.0的支持,對DOS程序的兼容性將會好很多,此外WinXP繼承了Win2000中對鼠標、光驅、網卡和DOS/4GW的默認驅動。 不過WinXP提供了聲卡支持,是福亦是禍:雖然安裝有聲卡,但卻只能提供2.0支持,大部分DOS程序都支持Sound Blaster 16,這樣就可能存在潛在沖突。好的情況下程序盡管檢測不到聲卡,仍會正常運行,但有的游戲則可能會直接崩潰。 此外,在WinXP中還有可能存在其他一些兼容問題,例如程序不能對軟驅進行任意設置等,在下面這個例子中會有全面的反映。 這可是DOS時代最受MM喜愛的游戲,即使是今天玩起來還是興味盎然。然而到該游戲的目錄c:/rich3下雙擊執行Play.bat,系統經過一番折騰甚至看到了開頭的SoftStar動畫,最后仍給了一個靜止的黑屏——沒關系,我們已經習慣了。于是用記事本打開Play.bat看個究竟,發現里面有一行命令是“subst a: .” ,熟悉DOS的用戶知道這條命令用于把當前目錄映射成A盤,游戲將把A盤當作CD-ROM。這當然會導致兼容問題,因為虛擬機是不可以直接訪問硬件的,WinXP控制下的軟驅當然也不能輕易映射。 于是想到可以將軟驅先行屏蔽,好在WinXP可以不重啟即停用軟驅。在“我的電腦”上右鍵選擇“屬性”打開系統屬性對話框,依次選擇“硬件”→“設備管理器”(圖17),在打開的設備管理器中展開“軟盤驅動器”,右鍵單擊菜單下的“軟盤驅動器”并選擇“停用”(圖18,游戲結束后別忘了重復此過程并在這里選擇“啟用”)。確定之后回到rich3目錄,再次雙擊Play.bat,結果發現已經能進入開始畫面(圖19),但只要選定人物并開始游戲,整個NTDVM系統就會崩潰——是全線崩潰,結束任務后連Command.com也無法運行,只有重啟才能解決問題。 這讓筆者迷惑了一陣,不過由于能夠輸出視頻,則問題很有可能出在NTDVM虛擬出的聲卡上。于是用記事本打開System32下的Autoexec.nt,文件的最后一部分是對內建聲卡的描述(圖20),正如前面所言,這里說明WinXP的NTDVM只提供對Sound Blaster 2.0的支持。在文件的最后,說明可將此聲卡屏蔽,于是按照說明,在“SET BLASTER=A220 I5 D1 P330 T3”一行前加“REM”注釋,同時去掉“SET BLASTER=A0”一行前的“REM”。再次雙擊Play.bat,果然順利進入游戲畫面(圖21)。 屏蔽聲卡能夠解決不少游戲無法正常運行的問題,不過到此為止,我們發現:還沒有一款游戲能夠正常發聲,如此的重溫,怎能不讓記憶失色?雖然筆者也曾經通過一定的設置,使幾款經典的游戲如《阿貓阿狗》能夠正常發聲(很好的感覺),但絕大部分游戲并不完全支持Sound Blaster 2.0,例如在《天使帝國2》中,即使人聲是正常的,背景音樂卻完全聽不到。因此這里不再講如何通過系統配置重現聲音的方法,不過更為關鍵的原因是,我們可以利用一個軟件,它不僅可完全解決聲卡的兼容性問題,最重要的是它解決了NTDVM系統的最大限制——幾乎能使DOS程序的原音完全重現,這個軟件就是VDMSound。 VDMSound是一款符合GNU標準的免費軟件,作者的自由開發精神令人敬佩,最新版本為2.0.4。軟件為NTDVM所提供的聲音平臺包括MPU-401接口(可提供高質量的MIDI音效)、Sound Blaster兼容接口(兼容SBPro 1/2、SB 1.5/2.0/16/AWE 32/32/64,可提供電子及FM/AdLib音效),甚至還包括游戲控制接口(這樣就能用手柄和搖桿了)!VDMSound與你機器上的真實聲卡沒有關系,它甚至可將DOS程序發出的聲音信息輸入到磁盤文件中。下面具體來講一下使用方法。 軟件下載可參考:http://www.onlinedown.net/vdmsound.htm。同時建議你下載作者提供的補丁包:http://vdmsound.sourceforge.net/files/VDMSound.2.0.4.update1.zip。軟件的安裝過程比較簡單,一路“Next”即可,以下為方便說明,假設將此軟件安裝到d:/vdmsound目錄下,安裝完成后,將補丁包里的文件全部解壓并拷貝到d:/vdmsound目錄下,覆蓋原文件即可。 具體使用方法就更簡單了,仍以《大富翁3》為例,你只需在Play.bat上點擊右鍵,選擇菜單中的“Run With VDMS”即可(圖22),初次使用時,軟件會彈出一個小Tips窗口(圖23),筆者建議如果條件允許,可仔細閱讀其中的每條提示(軟件有一個小Bug,就是不會自動更換Tips,因此逐條閱讀比較好),能讓你學到不少知識。接下來軟件快速做了一下初始化工作,黑色DOS屏幕一過,你就能聽到熟悉的音樂了! 有了VDMSound,我們當然要用它來導入執行游戲安裝目錄下的Play.bat了,不過沒想到卻在熱鬧的聲音中看到了一幅美麗的提示圖(圖24),原來這款游戲至少需要575kB的常規內存。按照上文對內存配置的說明,首先查看游戲安裝目錄下是否有DOS4GW.exe——沒有找到,于是可判定其不會使用DOSX,但用了VDMSound。還一樣在Autoexec文件修改嗎? 答案是肯定的,不過現在它和Config的位置已經都轉移到d:/vdmsound目錄下了,文件的擴展名也變成了“vdms”,不過作者想得很是周到,已經將這個擴展名注冊為用記事本默認打開,這樣,上面我們講的修改DOSV等功能仍可順利實現,你可以打開Autoexec.vdms,在“lh %SystemRoot%/system32/dosx.exe”一行前加上“REM”即可。不過,下面將提供一種方法,可以讓這個過程更簡單。 軟件的作者為VDMSound提供了一個圖形化設置插件:VDMSoundLanchPad,下載地址可參考:http://vdmsound.sourceforge.net/files/VDMSLaunchPad.v1.0.0.7.zip。下載完以后將此壓縮包的所有文件解壓到d:/vdmsound目錄下,之后運行其中的install.bat,在注冊提示時點“確定”即可完成安裝(圖25)。下面就以《天使帝國Ⅱ》為例,說明如何使用圖形化界面進行配置。 1 右鍵點擊游戲目錄下的Play.bat,選擇右鍵菜單中帶音樂標記的“Run With VDMS”(圖26)。 2 在彈出的設置窗口中,由于要做特殊設置,所以選擇“Setup a custom configuration(選擇自定義設置)”,并點擊“下一步”(圖27)。 3 在這一步中選擇“Create a new configuration from scratch(生成一份新的配置文件)”,當然如果不是初次使用,以前有游戲的設置和當前要設置的相同,也可選擇“Reuse an existing configuration”(圖28)。 4這一步中點擊“Advanced”進入高級設置(圖29)。 5 這個很熟悉吧,其實作者就是把Windows設計的屬性項目整合了(圖30)。 6 進入“Compatibility” 標簽頁進行兼容性設置(圖31),在這里可設置EMS和XMS,我們接受默認的4MB及16MB設置,同時下面還有基本的VESA支持(Enable Basic VESA Support)選項(這在Win2000下特別有用,因為其不支持VESA窗口模式),此外還包括對光驅和網絡的支持,當然也包括DPMI(DOSV),你如果還有印象,就發現后3項正好對應本文前面所說的Autoexec.nt中的3條LH命令。因為《天使帝國Ⅱ》無需使用DOSX,可將DPMI項的勾選去除。 7 “Sound Blaster”用于配置Sound Blaster聲卡,如這里的IRQ是7,有一些游戲默認會使用5——總之如果使用了VDMSound還是不能出聲,可以在這兒作一些變更(圖32)。 8 還有更多的配置這里就不一一講了,大家可自行摸索,點擊“確定”即可返回圖29的界面,選擇“下一步”,最后一個對話框中可選定“Remember my settings”,以便下次將此次配置當作默認配置(圖33)。點擊“完成”,軟件將引導進入游戲界面(圖34),同時在游戲目錄下生成一個Play.vlp圖標,以后點擊此圖標即可采用剛才的配置進入游戲。若想修改還可在其上點右鍵,進入屬性對話框中的“VDMSound”標簽,點擊“Advanced”按鈕即可。 實例5:《大航海時代2》 這個例子主要是想說明,如何配合VDMSound解決游戲運行過速的問題。這里選取的《大航海時代2》實在是令人懷念的經典,而且這款游戲的兼容性非常好,在WinXP的默認設置下即能順利運行。不過美中不足的是,在筆者CPU為賽揚1.8GHZ的機器上,只要一出海,速度就快得驚人,根本無法控制船的運行方向——而且一晃之間數日已過。最后沒有辦法,只能采取“目標式”一步一步的航行,而大航海時代系列的樂趣有很大一部分就是在海上“逛蕩”,如此步進實在是損失了不少趣味。 要解決這個問題,需要使用專門用于降速的軟件,這里筆者選擇了同樣由VDMSound作者寫出的Speedset,參考下載網址為:http://vogons.zetafleet.com/attachment.php?s=&postid=4739。下載完成后,首先可將壓縮包中的兩個文件Speedset.dll和Speedset.exe解壓到d:/vdmsound目錄下。接下來將配合VDMSoundLanchPad實現降速功能。 在《大航海時代2》安裝目錄下的Play.bat上點擊右鍵,按上例方法進入到VDMSound配置高級(Advanced)界面。進入“Dos Enviroment”標簽頁,發現可在Config和Autoexec中增添附加命令行,這里需要在Autoexec一欄中添加剛才的Speedset.exe命令,Speedset后面應當添加參數以改變速度,經多次測試,應將其后的參數設為“+1”,具體添加的命令行為“lh d:/VDMSound/speedset.exe +1”(圖35,你可按自己的情況設定)。接下來選擇“Performance”標簽頁,選定“Try to reduce CPU usage(嘗試降低CPU利用率)”,并將其上的游標拖至最左邊的“Low usage”,這個選項可使游戲運行更加平滑;同時一般的WinXP用戶最好將下面的“DMA Servicing”從5/15調節到更慢的頻率,如5/10(圖36)。 經過如此調節并“確定”后,順利進入游戲(圖37),發覺航海速度果然降了下來,而控制起來也更加平滑。最后要說明的是,在上述兩個例子中,盡管使用LanchPad以后,配置會變得很簡單,但并不意味著只能通過圖形界面使用VDMSound及Speedset,其實這兩個命令都可在Command命令行窗口中直接調用。以筆者機器安裝路徑為例,你只需在運行程序之前轉到d:/vdmsound目錄,分別鍵入“VDMSRun”和“Speedset”命令并回車,之后再運行Play.bat,一樣可達到出聲和降速的目的。 在內存配置方面,Win2000和WinXP遵循完全相同的體系,所以無需再多講。在NTVDM方面,Win2000與WinXP之間最大的不同在于對聲卡與顯卡標準的支持。前面已經講到,Win2000根本不提供任何聲卡方面的支持,所以沒有可能發聲,當然也沒有可能存在聲卡方面的沖突,還是剛才那句話:是福亦是禍。好在有VDMSound,基本上這方面已經與WinXP不存在差別。 相對而言,對顯卡標準的支持則是Win2000的致命傷。DOS時代的顯卡編程接口標準是VESA 1.2/2.0,許多DOS游戲都在編程中使用了些標準,WinXP對二者的支持都相當好,無需顧慮。在Win2000中也提供一些對VESA標準的支持,但必須是在全屏幕下!例如本文中所提到的《三國志Ⅳ》的486版本以及《中關村啟示錄》在Win2000下即使配置好了內存,也無法雙擊執行(圖38,出錯提示找不到VESA BIOS),原因就在于雙擊后程序是先從窗口模式開始運行的。當然你可以運行Command.com(記得修改Command.com的屬性使其支持EMS),之后按組合鍵Alt+Enter進行到全屏模式,再轉到游戲安裝目錄執行相應命令,這樣就能順利進入游戲(也可在這之前運行VDMSound安裝目錄下的VDMSRun以獲取音效)。不過惱火的是,畫面出來了,鼠標卻出了問題:只能在不到1/2的上半屏活動,這樣當然無法正常游戲。 VDMSound的作者曾透露出開發VESA兼容接口的想法,但一直沒有下文,筆者也一直沒能找到合適的解決方法,好在WinXP遲早會是家庭Win2000用戶的升級選擇,不過暫時還在Win2000下工作的用戶只好忍受這種兼容性問題的痛苦了。 (三)Win98下DOS游戲重玩的解決方案 總結上文可知,DOS游戲最致命的瓶頸就是內存管理,其次是其對新硬件的兼容支持。不過對于Win98,解決問題的方案與上述NT系統不大相同,總的來說需要你對DOS基礎知識有相當的了解。 1.內存管理的解決方案 前面提到,由于DOS系統不同于Windows系統那樣能夠智能管理內存,所以其內存管理設置都需手動調試,在上面提到的內存問題解決實例中,你會發現,我們一般在游戲提示內存不夠時,通過修改Autoexec和Config的具體配置解決此問題。這個方法對于Win98系統同樣適用,但卻有一些實踐上的不同。 大家都知道Win98問世時宣稱是帶有一個DOS的,微軟把它叫作DOS 7.0。在Win98開始菜單中的“程序”組中,你會看到一個名為“MS-DOS方式”的快捷方式,指向“c:/windows/command”,其實這只是個偽DOS罷了,不過它與WinXP/2000/NT中NTVDM系統下的Dos Command Prompt又有很大的不同。 舊版DOS(6.22及其以前版本)啟動后都會加載Config.sys和Autoexec.bat中的管理程序,用于管理內存和配置系統。但從Win1.0到Win98,視窗系統的啟動總是在DOS的基礎上進行,即先啟動DOS,再啟動Windows。Win32的用戶都知道,Windows的啟動是通過在DOS命令行下鍵入“Win”命令實現,要能執行這個Win.com,Config和Autoexec中必須要加載內存管理器EMM386.exe和高端內存驅動Himem.sys等。然而發展到Win98之后,Win.com仍存在(但它默認會在啟動時自動執行),但已相當智能,無需在兩個初始化文件中進行設置即可正常運行。因此你可以看到,C盤根目錄下這兩個文件是空的(Config.sys是系統文件,默認情況下為隱藏,需要在“文件夾選項”進行設置:圖1)。 但Win98系統的Config和Autoexec仍然重要,因為它們控制著“MS-DOS方式”的內存及系統配置,也就是說,當你在Windows中開啟“MS-DOS方式”窗口或運行Command.com命令,甚至雙擊DOS程序的圖標,系統都會為這個運行于兼容模式下的DOS選擇Config及Autoexec——而它們就位于C盤根目錄之下。不過需要說明的是,你若修改了這兩個文件,必須重啟系統后才能生效。以下將舉例進行具體說明,舉例時我們盡量采取與前文相同的游戲,以便大家對照分析。 實例6:《三國志Ⅳ》 與前文所說不同的是,如果沒有作過調整,進入San486.com的屬性你會發現,Win98下居然無法設置EMS內存,因為系統并沒有自動加載內存管理工具(圖2),如果執行當然游戲會報“not enough memory”的。所以我們先要將擴充內存EMS的設置項加上。用記事本打開系統盤下Config.sys文件,在其中加上如下兩行命令(圖3): DEVICE=C:/WINDOWS/HIMEM.SYS (這個語句非常重要,意思是加載高端內存管理,使DOS能使用高端內存。) DEVICE=C:/WINDOWS/EMM386.EXE ram (EMM386.exe用于管理擴充內存,常用參數為“ram”和“noems”,使用后者能比前者釋放更多的常規內存,但很多DOS程序不支持“noems”參數,故使用面較窄。) 之后保存好文件,重新啟動機器后再打開San486.com的屬性,擴充內存EMS的設置項回來了(圖4),根據上文,將它設置為“自動”即可。這樣擴充內存EMS的問題就解決了,雙擊執行San486.com即可順利進行游戲(圖5)。 實例7:《龍騎士4》(Dra4) 如前文所說,這款游戲對常規內存的要求非常高,差不多接近590kB了,同時這款游戲也需要有EMS支持。而通常裝載了EMM386.exe,DOS啟動后,剩余的常規內存無法滿足需要。還是嘗試編輯Config.sys文件來釋放更多的常規內存。 在編輯前,我們還是先在Win98的DOS兼容模式下鍵入命令“mem /c /p”查看內存的具體分配情況(圖6)。在圖中可以看到,常規內存剩余有577kB,系統其他常駐程序都是加載在常規內存里的,而上位內存是空的,所以我們要將一些常駐程序盡量加載到上位內存中,從而使常規內存空出,于是將Config.sys文件作如下修改(圖7): DOS=HIGH,UMB 其實這里要做的事情,就是將圖6中看到的常規內存出現的程序都盡量加載到高端內存和上位內存中。保存文件后重啟,然后再鍵入命令“mem /c /q”查看(圖8),果然這時候常規內存已經有592kB了。這時候運行龍騎士4的Dra4.com,一樣沒有問題。 不過不管如何配置Config.sys文件,由于上位內存有限,在Windows環境下又要加載EMM386.exe,你幾乎沒有辦法使常規內存高于590kB,雖然這時候絕大部分老DOS游戲都可以玩了,但也有部分“變態”游戲要求590甚至600kB以上內存,很多專業級游戲網站都建議放棄。其實問題依然可以解決。 一種方法就是從純DOS模式啟動,即在Win98運行前按F8并選擇從命令行啟動(圖9),由于這時已經不是視窗環境,所以系統默認加載的常駐程序要少一些,只要合理配置Config和Autoexec文件,常規內存就可達到600kB以上。 另外一種方法就是使用第三方內存管理驅動軟件。這里介紹UMBPCI 3.41版(下載地址:http://www.uwe-sieber.de/files/umbpci_e.zip),整個文件只有30kB,是很有用的上位內存(UMB)擴充驅動程序(注:可能有某些主板暫不被支持),在Config.sys中用Device命令可以直接加載,最多可提供高達160多kB的UMB。假設將壓縮文件解開為文件夾UMBPCI在C盤,然后在Config.sys文件中加入此行語句“DEVICE=C:/UMBPCI/UMBPCI.SYS”,注意需要把它放在Himem.sys文件之后(圖10)。這樣系統啟動時,就會調用Umbpci.sys,如果文件被正確調用,你應該可在啟動時看到相關信息(圖11)。這時機器啟動后其常規內存已經通常能輕易達到或超過600kB(圖12)。 不過這種情況適用于不需EMS擴充內存的DOS游戲,因為這時候EMM386是被默認屏蔽的。如果萬一游戲既需要600kB以上的常規內存又需要EMS擴充內存,那么我們就必須進行特殊設置同時加載UMBPCI和EMM386。 首先我們必須知道機器所使用上位內存的具體情況。這個可以利用UMBPCI所帶的Umbchk.exe工具查看。方法是在機器啟動時,按F8選取最后一項跳過Config和Autoexec文件,進入DOS 7.0后,執行Umbchk.exe即可查看到機器上位內存的空閑情況(圖13),將其記錄下來。然后在Config.sys文件中,將加載UMBPCI的語句修改為“DEVICE=C:/UMBPCI/UMBPCI.SYS /I=XXXX-YYYY”,這表示我們將“XXXX-YYYY”這一段上位內存地址交給UMBPCI來處理,但并不是重點,我們要解決的是UMBPCI和EMS同時加載的問題。UMBPCI的作者建議將EMS加載在特定的某個64kB的內存段內,只要這一段是可用的,就最好強制指定它為EMS的加載區。通常情況下這段地址是C800-D7FF,那么就需要如下編寫Config.sys文件: DOS=HIGH,UMB 這樣,我們就可以同時加載UMBPCI和EMS了。另外一種情況是,如果你的顯卡有一個48kB的BIOS而無法使用C800-D7FF(例如NVIDIA GeForce),那么嘗試將參數作如下修改: DEVICE=C:/UMBPCI/UMBPCI.SYS /I=DC00-EFFF 當然,此時系統仍有可能無法正確啟動,一般來說是因為無法加載EMM386的頁面框架,那么我們可以在加載語句中加上“FRAME=NONE”參數:DEVICE=C:/WINDOWS/EMM386.EXE FRAME=NONE X=D800-EFFF X=B800-C7FF I=C800-D7FF I=B000-B7FF RAM D=256 AUTO。 通過這樣的調整,Win98下的MS-DOS就可同時支持EMS和擁有超高的空閑常規內存(圖14)。需要說明的是,也有一些DOS游戲程序不能在沒有加載頁面框的情況下運行,此時就只好使用第一種方法。 解決了內存問題后,并不意味著任何一款DOS游戲就可在Win98下運行無阻了,因為DOS游戲在新系統下運行不可避免地會出現兼容問題。簡單總結,會發現兼容問題仍可簡單地分為硬件和軟件兩類,不過這里要弄清楚一點,在Win98下DOS程序都是直接面對各種真實的硬件,而決不是WinXP中統一的虛擬硬件,所以就軟件環境的兼容性來說,Win98要強于WinXP,但就硬件兼容性來說,結論則恰好相反。 大多數DOS游戲在解決內存問題之后,是可以直接運行在Win98的視窗環境下,然而有一部分DOS游戲會在運行時跳出提示,說游戲只能運行在純MS-DOS方式下,拒絕在視窗中運行(圖15)。這時可我們打開游戲的運行文件或PIF文件的屬性,在程序頁點擊“高級”按鈕(圖16),在彈出的頁面中將“禁止MS-DOS程序檢測Windows”勾選(圖17),確定返回后再運行游戲,一般就可以使游戲跳過DOS環境的檢測,從而能運行在視窗環境下。 當然,還是有少部分DOS游戲無論如何也不能在Win98下運行,例如《美少女夢工廠2》,這時就只有點擊DOS主程序屬性的程序頁中“高級”按鈕,在彈出的頁面中將“以MS-DOS方式運行”選上(圖18),同時在這里為它配置合理的內存分配及必要的硬件驅動,確定退出后再點擊游戲的主程序運行,系統就會自動重啟進入純DOS,同時加載先前設置好的配置,之后自動運行游戲。然而筆者并不推薦使用這種方法。因為在游戲啟動中,一旦發生異常中斷就很容易造成系統的啟動死循環。所以,對于這些必須在純DOS下才能執行的DOS游戲,還是自己手動啟動到純DOS再運行為好。 一般來說,最常見的硬件兼容性問題是DOS游戲無法正常發聲或需要屏蔽聲音才能正常運行,其實如果DOS游戲能夠在Win98下正確運行,通常是可以正常發聲的,因為它一般可以正確使用視窗環境下已加載的聲卡。而游戲能順利進行卻不能正常發聲的情況基本上是在純DOS環境下才會發生,這是因為許多人在啟動純DOS環境時并沒有在他們的Autoexec文件里加載DOS下的聲卡驅動以致游戲無法發聲,又或者由于聲卡規格太新,即使加載了驅動仍無法被游戲正確調用,最后就是有某些聲卡,如主板上整合的軟聲卡根本就沒有提供DOS下的驅動。 因此要解決純DOS下的聲音兼容問題就必須要安裝好聲卡的DOS驅動。你可以查看自己的聲卡驅動盤或上網尋找驅動程序。這里向大家推薦http://firststep.ahwww.com/newdos/doswarec.html,這里有不少常用聲卡的DOS通用驅動,只要芯片相近即可使用。 其實你也可仔細查看一下游戲安裝目錄下的文件,許多DOS游戲本身都帶有最簡單最兼容的DOS聲卡驅動,可以嘗試安裝使用游戲自帶的驅動,通常選擇最兼容的SB驅動來解決問題(圖19),如果問題能得到解決,你完全可以把游戲自帶驅動保留下來用作為自己聲卡的DOS驅動。如果無論如何你都沒有辦法使你的聲卡在DOS下發聲,而你要玩的DOS游戲又無法運行在Win98視窗環境下,“SORRY”,如果不更換硬件或操作平臺,你就只有忍受無聲了。 可能不少人沒有注意到,其實DOS游戲的顯示兼容問題比聲音兼容問題更難處理。道理很簡單,聲卡的規范其實一直都比較穩定統一,而顯卡的發展卻日新月異。有些DOS程序需要特殊的顯卡模式支持,如EGA、SVGA等,而先進的顯卡已淘汰此顯示模式。例如游戲《英雄傳說4——朱紅血》,對已經是非常老的S3 Trio32/64(732/764)顯卡都無法兼容,勉強去運行,你只能看到被拉長的游戲畫面的一半(圖20)。通常這個問題是絕癥,遇上了基本上只有放棄。相對來講,WinXP由于虛擬了較低端的顯卡,這方面的問題反而不大。 不過你仍可嘗試用一款名為“SciTech Display Doctor”(以下簡稱SDD,下載地址:http://www.mydrivers.com/tools/dir2/d878.htm)的軟件來解決,對于稍微老一些的顯卡來說它能夠解決大部分問題。早些年的時候,此軟件是一個應用廣泛的顯卡工具,它可提高DOS、Windows系統的顯示兼容能力。對于我們來說,最有用的功能就是用于模擬過時的VBE顯示模式(不少游戲如《中關村啟示錄》都需要使用這種模式)。 軟件最新為7.X版,分DOS和Windows版本,請對應你使用的環境分別安裝,安裝后會要求重新啟動。軟件的使用非常簡單,以視窗環境為例。啟動主程序,將顯示控制開關“ON”打開(圖21),這時界面下部分原來不能用的按鈕已經可以使用。點擊按鈕“Graphics Improvements”,在跳出的頁面里能夠看到你的顯卡所能支持的VBE版本(圖22),通常較早的VBE模式都沒有被支持,所以我們就需要利用SDD的軟件模擬方式。回到主界面,點“Compatibility test”按扭,在跳出的界面中的“Driver Type”中選擇“Scitech Display Doctor”(圖23),這時右邊的“interfacer type”也都可選用了,選中你想模擬的VBE模式,然后點擊“Test Graphics”按鈕測試(圖24),如果能通過測試,說明你的顯卡可使用該軟件來模擬老的VBE模式,而對于采用VBE顯示模式的游戲來說就可以解決問題了。在選定了VBE模式后,再回到主界面點擊“Performance Profile”按鈕,設定需要的特殊顯示模式(圖25)。設定完成再試著運行游戲,如果順利就要恭喜你了。 除去主要的兼容問題外,由于Win98不像Win2000/XP一樣,在NTVDM系統中默認加載了光驅和鼠標驅動,因此需要手動加載。若游戲需要使用光驅,你就得安裝光驅附帶的DOS驅動程序,當然也可用Win98啟動盤中附帶的萬能光驅驅動程序。如果是光盤版的游戲,你還可用fakecd(cdx)來虛擬一個光盤,例如:先把游戲解壓到一個目錄中,如“d:/sanguo”,之后運行命令行“cdx d:/sanguo /L:z”,即可將d:/sanguo目錄指定虛擬為Z盤。如果游戲需要鼠標支持,可到網上搜索下載,一般網上可找到的有mouse.com、qmouse.com、gm.com等,選擇能驅動你的鼠標又占用內存少的就行。 最后有一個特殊的兼容性問題,一些早期的DOS游戲是日文游戲,比如說經典的游戲《××生》,如果直接在中英文操作系統中執行,就會無法顯示文字或顯示亂碼(圖26)。這時的解決辦法是使用DOS/V操作系統。其實如果解開下載到的DOS/V壓縮包,你會發現這其實就是個DOS啟動盤而已(圖27),與普通啟動盤不一樣的是,這個所謂的“啟動盤”在DOS啟動后會加載日文字庫,所以用其啟動系統后能正確顯示游戲文字。但由于總是要用DOS/V啟動機器很麻煩,所以后來又出現了兩個程序DOSV/SV和DOS/J(下載地址:ftp://download.gameking.com.cn/download/tools_pac/dosv-98.zip),實際上這兩個程序都是簡單的日文字庫加載程序,并帶有相應字庫。它們的好處是可在操作系統啟動后根據需要隨時加載,兼容性非常好。使用方法也很簡單,以DOSV/SV為例,其壓縮包中除了兩個FONT字庫文件和主程序Dosvfont.exe外,還有一個Dosv.bat文件,所以我們可將DOSV/SV解壓縮到游戲的安裝目錄下,然后編輯游戲的批處理執行文件Play.bat,將Dosv.bat放到游戲主程序執行之前(圖28),這樣游戲執行前就會先加載日文字庫,便能正確顯示日文(圖29)。 Windows游戲和DOS游戲比起來,安裝、運行起來往往比后者方便,但另一方面,它對用戶的透明度下降了,用戶很難了解游戲的運行環境,更不可能通過Config及Autoexec來“改善”這種環境。所以,重玩Windows上的老游戲更困難。 如果說Win32更像一個基于DOS的準圖形化操作系統,那么Win95的圖形化操作已經相當完善,不過它對于DOS仍有著很大的依賴性,而且它本身和DOS一樣,也是一個16位的操作系統,這就決定了運行在上面的程序,包括游戲在內都是16位的,而Win2000/XP/98都是32位操作系統,運行16位的程序必然存在一些兼容性問題。Win98和Win95/32的兼容性相對較好,一般來說老游戲不會遇到什么問題。而從Win2000開始,微軟正式終止了Win9X系列的開發,把操作系統全面轉向“NT”架構,此計劃貫徹實施的結果是宣揚全面兼容的WinXP。如此我們還是先從WinXP開始分析,并在其后對Win2000/98作補充說明。 實例1:《大航海外傳中文版》 運行程序看到一個堆滿亂碼的對話框(圖30),啟動失敗。要搞清楚失敗原因,先要看懂對話框上的字,顯然,這些字是Big5編碼的。對基于NT的操作系統,不要想著去用那些內碼轉換工具,因為Win2000和WinXP都有完整的內碼系統,對于這款游戲,不如先來試試系統自己的功能。 打開“控制面板”→“區域和語言選項”,進入“區域選項”標簽頁,在“標準和格式”及“位置”的下拉菜單中選擇“臺灣”,再進入“高級”標簽頁面,將“非Unicode程序的語言”設置為“臺灣”(這一項是必須的),并確認“代碼頁轉換表”中選中了“繁體中文Big5”(圖32)。設置后重新啟動機器,系統就可以顯示Big5內碼的漢字了,而且系統及多數其他內碼的程序都可以正常使用,只是字體會難看一點。這種方法的缺點就是每次更改都需重啟系統。 改好了嗎?現在可看明白了,原來這個彈出窗口是提示我們要使用256色(圖33),還要在顯示屬性里改顏色嗎?不用這么麻煩了,現在輪到WinXP的兼容性設置登場了:在游戲的主運行程序或其快捷方式上點右鍵,選擇“屬性”,在彈出窗口中選擇兼容性標簽,再選中“用256色運行”即可(圖34,有些游戲還必須選擇用“何種兼容模式運行該程序”等其他選項)。這樣游戲就能順利運行了(圖35),在游戲運行時,桌面會自動切換至256色,等游戲退出后又恢復原有狀態,很是方便。 兼容性設置即使對光盤上的只讀文件也同樣可進行設置,因為這項設置并不是更改文件本身的屬性,而是記錄下它運行時所需的環境,而此記錄則是儲存在系統中。實際上,WinXP對多內碼有著良好的支持,所以,該游戲以及后面的《太閣立志傳2》,都無需修改區域和語言選項即可重玩,窗體上雖有亂碼卻基本不影響理解。 反思及總結:通過這個例子可以知道,很多老游戲在新系統上運行時都存在色深及分辨率的問題,所以,出現問題時不妨先在兼容性標簽里試試再說。另外,如果桌面分辨率和游戲分辨率一樣時(640×480),游戲還要求自身窗口必須在最前端,那么還需在“任務欄和‘開始’菜單屬性”中,把“將任務欄保持在其他窗口的前端”的勾選去掉(圖36),這一特性也具有普遍性。 這兩個經典游戲,在運行時會出現同樣的報錯:找不到Wing.dll(圖37),從擴展名我們可以知道Wing.dll是一個動態鏈接庫文件,但它到底是何方神圣?在Windows游戲發展的初期,游戲畫面對硬件的要求還很低,更談不上什么3D,那時簡單的圖形加速功能都通過一個動態鏈接庫文件實現,就是上面提到的Wing.dll了。 其下載可參考:http://xf-trans.hb.cninfo.net/sanguogame/download/tools/wing.rar,解壓后安裝即可(圖38)。簡單安裝之后《文明Ⅱ》的運行就完全正常了(圖39)。而《三國志孔明傳》(圖40)則較郁悶,由于WinXP的視頻輸出接口不能很好地兼容這款游戲,導致輸出的畫面時常無法自動刷新,具體表現就是變換場景時可能會黑屏,就算等待也無效,這種情況下,我們只能強制刷新,比較有效的方法就是將窗口最小化,再最大化,畫面就出來了——這當然算不上解決方案,只是想說明出現這種問題就是絕癥了。 我們舉這個例子是想說明Win95游戲在新系統下所面臨情況的復雜性,若讀者能從中有所獲益,也算對得起這種種的折騰了。運行此游戲會產生一個典型的XP非法操作窗口(圖41),選擇“不發送”之后程序終止,之后嘗試兼容性設置卻毫無用處。我們甚至從微軟網站下載了Windows Application Compatibility Toolkit 3.0,這是一套專門用于解決程序兼容問題的工具包,里面有很多復雜的兼容性設置,但由于很多設置專業性極強,普通用戶較難上手,它更多是為程序員調試老程序之用。好在其數據庫中包括了很多常見的老程序的兼容性信息,我們在里面驚訝地發現了《太閣立志傳2》(圖42),不過短暫欣喜過后是殘酷的現實:在它虛擬的兼容環境中游戲仍然無法正常運行。事實上,我們通過這個工具包的所有努力都沒有成功,希望它不是真的這么“一無是處”,如果讀者朋友以后遇到什么兼容性問題,倒不妨試試。下載地址:http://download.microsoft.com/download/a/6/f/a6f42077-eae3-4d4c-8df6-7ac402594127/act30pkg.exe。 還是“自己動手,豐衣足食”吧。從報錯信息著手,在報錯窗口右下角有一個叫“請單擊此處”的鏈接,照辦后會彈出較詳細的錯誤報告,從這里可以看出,都是一個叫“MCIAVI32.dll”的動態鏈接庫惹的禍(圖43),這又是何許“庫”也?MCI是Media Control Interface(媒體控制接口)的縮寫,凡是和這個詞沾邊的文件大多是和視頻及音頻控制有關的。事實上也是如此,它是一個32位的AVI媒體驅動,因此判斷出錯原因是老版本Windows程序調用了新系統的接口,而通過該接口指向的驅動卻不同,從而造成了錯誤。 既然是和AVI有關的驅動,我們認為極有可能是用于播放開場動畫的,開場動畫與游戲沒有直接關系,但過不了這一關游戲就無法繼續。那么,我們能不能索性跳過這個環節呢?開場動畫看不看是小事情,于是我們決定刪掉MCIAVI32.dll,這個文件就在System32目錄下,直接刪文件是不行的,WinXP具有文件保護功能,重啟后文件就會自動恢復。 當然你還可以在另一個地方找到“它”,雙擊控制面板中的“系統”圖標,依次選擇“硬件”→“設備管理器”,展開“聲音、視頻和游戲控制器”→“媒體控制設備”,雙擊后在“屬性”標簽中就列出了這個文件,選中文件再點右下角的“屬性”,可將其設置為兼容16位(圖44),但這樣做了以后,仍然不能解決問題(難道說了半天全是廢話?)。別急,我說這些是為了讓大家更清楚地了解這個文件在系統中的作用及位置。真正刪除它需要使用注冊表編輯器:通過開始菜單運行“regedit”,找到如下兩項,編輯前別忘了先備份(右鍵單擊項圖標后選擇“導出”): HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/drivers.desc 分別在這兩個項下刪除“MCIAVI32.dll”和“AVIVideo”字符串(圖45)。這樣做并不會真正刪除該文件,但系統已經認為它不存在了,再次運行游戲,成功(圖46)!不過玩完游戲可別忘了恢復注冊表哦。 反思和總結:由此可以看出在WinXP解決老版Windows游戲不能運行問題的復雜性。實際上這也是因為Windows系統的復雜性遠高于DOS的緣故。對于普通玩家而言,一些游戲在安裝好Wing.dll、設置好語言及兼容性之后仍不能玩,基本上可以放棄通過系統設置解決問題的想法。此時更好的兼容性解決方案,應該還是虛擬機軟件,想必微軟也認識到了這一點才會收購Virtual PC,在本刊2003年第7期中,我們已經初步介紹了虛擬機軟件的使用方法,本段結束后將對此軟件進行更深層次的探討。 Win2000下游戲的情況與WinXP大抵相同,盡管Win2000沒有兼容性設置,但只要按要求調整好桌面解析度及色深即可,只是每次都要手動切換,麻煩一點而已,但是Win2000區域和語言選項的設置略有不同(圖47)。而在Win98下玩Win95游戲幾乎沒有遇到任何阻力,只要安裝好Wing.dll,在需要轉碼時安裝南極星等工具即可,可見Win98實實在在屬于Win95的近親。 由于Win32是一個事實上的過渡產品,盡管它很成功,但專為其設計的游戲卻不多,不過我們所能找到的游戲的兼容性卻出乎意料的好,甚至不需安裝Wing.dll(因為連Wing.dll都用不上),只需將桌面分辨度簡單改為640×480,8位色深(即256色)后,在WinXP/2000/98下都可順利運行。 通過上述復雜的介紹,加上自己的努力嘗試,相信大部分的老游戲已經能夠在你的新系統上重煥青春。然而你也可以看到,盡管微軟和周邊軟件作者們作出了各種各樣的努力,兼容性問題始終存在:在Win98下,老游戲要直面真實PC的顯卡和聲卡;在Win2000下,顯示模式的問題很讓人苦惱;而WinXP盡管在虛擬硬件方面對更多的顯示和聲卡模式進行了支持,但對于跨越數年的DOS~Win95時代,這些支持遠遠不夠。 不過或許懷舊只是一種情緒,花時間來研究兼容性并不是一件被商業利益驅動的事情。對于VDMSound的作者或微軟NTVDM的設計者來講,只要再前進幾步,就能解決更多的問題,而實際上腳步或許就停留在此。然而幸虧還有以VMWare和Virtual PC為代表的虛擬機軟件,幸虧它們在解決一臺機器上運行多操作系統等問題的時候順帶觸及了新老系統間兼容性問題的解決。 應當來講使用虛擬機軟件完全虛擬出對應的舊操作系統,老游戲的重玩問題就能完美解決,然而這個結論只能說太過絕對。絕大部分游戲應當可以在虛擬機下順利運行,特別是Win32/95下的游戲,使用虛擬機軟件后,很多在新系統下難以解決的問題幾乎都能迎刃而解。但也會有意外的情況——當然這種意外實際上卻是在意料之中的。 看過本刊今年第7期《重返DOS仙劍時代——Virtual PC應用一則》的朋友肯定都會明白,虛擬機軟件虛擬的是一臺PC,而不是一個操作系統,既然是一臺PC,就肯定會設定自己的硬件(相當于你攢一臺機器),這里面對老游戲而言,顯卡和聲卡最為關鍵。 以Virtual PC 5.1為例,其虛擬的顯卡是S3 Trio 32/64 PCI。盡管這款顯卡的兼容性很不錯,但在實際操作過程中,仍發現一些游戲如《英雄傳說4——朱紅血》、《大富翁3》等,在運行時游戲畫面被拉長只剩1/2(圖48)。此情況如果參照前文Win98下顯卡兼容問題,使用SDD,就會暴露虛擬軟件的另一個問題:虛擬硬件的缺陷。簡單來說,就是無法達到真實虛擬的地步,SDD在虛擬機下無法對本身就是虛擬出的硬件進行再次虛擬處理。這樣,此問題在Virtual PC上根本無法解決。在另一款很出名的虛擬軟件VMWare(以3.2版本為例,圖49)的幫助說明中也提到,使用DirectDraw和Direct3D圖形技術的軟件不能在其上運行,但與我們這里討論的話題關系就不大了。 相對顯卡,聲卡方面的兼容性問題可能少一些,在我們使用Virtual PC進行測試的整個過程中,并沒有發現有聲卡兼容方面的問題。不過不少游戲在初次運行時會要求設定聲卡的參數(或者你也可手動進行設置),所以這里將Virtual PC和VMWare所虛擬聲卡的參數陳列如后。Virtual PC 5.1:Creative Labs Sound Blaster 16,Port 220,IRQ 5,8-bit DMA 1,16-bit DMA 5;VMWare 3.2除16-bit DMA參數為7以外,余者皆與Virtual PC 5.1相同。 很多初次使用虛擬機的朋友都會覺得在主機和虛擬機之間傳輸數據是很麻煩的事情,這種麻煩的感覺就像面對兩臺沒有聯系的電腦一樣,當然虛擬機除利用軟驅和光驅,還可通過制作.iso和.vfd鏡像文件傳遞數據——但仍舊很麻煩。那么同樣類比,我們就會發現,利用網絡是非常自然的解決方案! 下面以Virtual PC為例進行說明。實際上軟件安裝設置完之后,就會在主機上安裝一個虛擬網卡用于和虛擬機建立網絡連接(圖50),當然我們不用在新舊系統間手動建立局域網,畢竟那需要太多的專業知識。Virtual PC安裝包中已經為DOS和Windows分別提供了附加的工具以實現此功能(VMWare中類似的工具需另外下載)。 我們先來看安裝了DOS后的虛擬機如何使用這個工具。以MSDOS 6.22為例,啟動虛擬機后,點擊菜單“Floppy”→“Capture Image”,在彈出窗口中找到軟件第一次解壓縮后的文件夾,并順次找到“Additions”→“Dos Additions”→“Dos Addition.vfd”(圖51),這是專門為DOS設計的附加功能軟盤鏡像文件。回到DOS虛擬機界面,進入A盤,輸入“dosadd”即可開始安裝(圖52),之后在“Floopy”菜單中釋放“Dos Addition.vfd”并重啟,這樣,這個DOS虛擬機啟動后會自動加載名為“Folder Sharing”(文件夾共享)的驅動,同時還會加載通用光驅驅動,實質上這個共享功能是間接利用了系統的網絡功能,將主機上的某個文件夾映射為虛擬機上的某個盤。 接下來點擊菜單“Edit”→“Settings”,打開此虛擬機的設置對話框,找到“Shared Folders”(圖53),初始情況下這里面是空的。點擊右面的“Share Folder”按鈕,在彈出的對話框中選擇你需要在DOS下直接訪問的文件,如本例中的“E:/dosgame”(圖54),在下面的“Drive letter”中選擇映射后的盤符,本例接受默認設置“Z”,如果需要每次啟動虛擬機都共享此目錄,可將“Share every time”勾選上。確定之后,在虛擬機中輸入“Z:”,即可對主機上的E:/dosgame目錄進行訪問。 這里有兩個說明:(1)如果在DOS下使用共享文件夾功能,其驅動會占用常規內存空間,致使游戲可使用內存減少,因此建議你最好拷貝完所需要的文件,然后打開根目錄下Autoexec.bat中的“c:/cntx/fshare.exe”和“c:/cntx/idle.com”,在其前加上“rem”禁止其運行(圖55)。當然DOS下的修改要靠Edit命令完成,需要你對DOS有一定了解。(2)在Win95或其后版本中安裝附加功能更為簡單,通過菜單“CD”→“Capture Image”選擇同上“Additions”目錄下的VPCAdditions010021.iso文件,在虛擬機中安裝光盤上的Setup.exe,安裝完后重啟,類似上述操作選擇共享文件夾即可完成映射(圖56),當然Windows安裝完附加工具后,有更實用的功能:你可以在主機和虛擬機之間隨意拖拽文件! 此外還有一些應用技巧,如不熟悉DOS編輯的朋友可將DOS安裝磁盤當作第二硬盤掛接在另一個裝有Win98的虛擬機下,利用圖形界面編輯文件;又例如在虛擬機暫時不用的情況下可以按右Alt+P組合鍵暫停虛擬機運行,以釋放一部分內存。你甚至還可以通過Virtual PC和游戲修改軟件如GameMaster的合作,修改常規情況下無法修改的游戲(圖57)。這些具體的操作就留待大家細細研究了。
| ||||||||
|
總結
以上是生活随笔為你收集整理的本世纪最经典好文---新系统下经典老游戏[中文HGAME]重玩全攻略(感谢作者)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leg引擎适合什么系统的服务器,第一讲
- 下一篇: fckeditor for php 下载