(三)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碟根目錄之下。不過需要說明的是,你若修改了這兩個文件,必須重啟系統後才能生效。以下將舉例進行具體說明,舉例時我們儘量採取與前文相同的遊戲,以便大家對照分析。
  
  (1)擴充記憶體EMS的正確配置

  實例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)。
  
  (2)一般記憶體的正確配置

  實例7:《龍騎士4》(Dra4)

  如前文所說,這款遊戲對一般記憶體的要求非常高,差不多接近590kB了,同時這款遊戲也需要有EMS支持。而通常裝載了EMM386.exe,DOS啟動後,剩餘的一般記憶體無法滿足需要。還是嘗試編輯Config.sys文件來釋放更多的一般記憶體。

  在編輯前,我們還是先在Win98的DOS相容模式下鍵入指令「mem /c /p」檢視記憶體的具體分配情況(圖6)。在圖中可以看到,一般記憶體剩餘有577kB,系統其他常駐程序都是載入在一般記憶體裡的,而上位記憶體是空的,所以我們要將一些常駐程序儘量載入到上位記憶體中,從而使一般記憶體空出,於是將Config.sys文件作如下修改(圖7):

  DOS=HIGH,UMB
  DEVICE=C:\WINDOWS\HIMEM.SYS
  DEVICEHIGH=C:\WINDOWS\EMM386.EXE ram
  (「DEVICEHIGH」表示在上位記憶體中載入EMM386文件)
  DEVICEHIGH=C:\WINDOWS\IFSHLP.SYS

  其實這裡要做的事情,就是將圖6中看到的一般記憶體出現的程序都儘量載入到高端記憶體和上位記憶體中。儲存文件後重啟,然後再鍵入指令「mem /c /q」檢視(圖8),果然這時候一般記憶體已經有592kB了。這時候執行龍騎士4的Dra4.com,一樣沒有問題。
  
  (3)超大一般記憶體的配置

  不過不管如何配置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
  DEVICE=C:\WINDOWS\HIMEM.SYS
  DEVICE=C:\UMBPCI\UMBPCI.SYS /I=D800-EFFF
  DEVICE=C:\WINDOWS\EMM386.EXE X=D800-EFFF X=B800-C7FF I=C800-D7FF I=B000-B7FF RAM M3 D=256 AUTO (註:無換行)

  這樣,我們就可以同時載入UMBPCI和EMS了。另外一種情況是,如果你的顯示卡有一個48kB的BIOS而無法使用C800-D7FF(例如NVIDIA GeForce),那麼嘗試將參數作如下修改:

  DEVICE=C:\UMBPCI\UMBPCI.SYS /I=DC00-EFFF
  DEVICE=C:\WINDOWS\EMM386.EXE X=DC00-EFFF X=B800-C7FF I=CC00-DBFF I=B000-B7FF RAM M3 D=256 AUTO

  當然,此時系統仍有可能無法正確啟動,一般來說是因為無法載入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遊戲程序不能在沒有載入頁面框的情況下執行,此時就只好使用第一種方法。
  
  2.軟硬體相容問題的解決

  解決了記憶體問題後,並不意味著任何一款DOS遊戲就可在Win98下執行無阻了,因為DOS遊戲在新系統下執行不可避免地會出現相容問題。簡單總結,會發現相容問題仍可簡單地分為硬體和軟體兩類,不過這裡要弄清楚一點,在Win98下DOS程序都是直接面對各種真實的硬體,而決不是WinXP中統一的虛擬硬體,所以就軟體環境的相容性來說,Win98要強於WinXP,但就硬體相容性來說,結論則恰好相反。
  
  (1)軟體環境相容問題的解決

  大多數DOS遊戲在解決記憶體問題之後,是可以直接執行在Win98的視窗環境下,然而有一部分DOS遊戲會在執行時跳出提示,說遊戲只能執行在純MS-DOS方式下,拒絕在視窗中執行(圖15)。這時可我們開啟遊戲的執行文件或PIF文件的內容,在程序頁點擊「進階」按鈕(圖16),在彈出的頁面中將「禁止MS-DOS程序檢測Windows」勾選(圖17),確定返回後再執行遊戲,一般就可以使遊戲跳過DOS環境的檢測,從而能執行在視窗環境下。

  當然,還是有少部分DOS遊戲無論如何也不能在Win98下執行,例如《美少女夢工廠2》,這時就只有點擊DOS主程序內容的程序頁中「進階」按鈕,在彈出的頁面中將「以MS-DOS方式執行」選上(圖18),同時在這裡為它配置合理的記憶體分配及必要的硬體驅動,確定退出後再點擊遊戲的主程序執行,系統就會自動重啟進入純DOS,同時載入先前設定好的配置,之後自動執行遊戲。然而筆者並不推薦使用這種方法。因為在遊戲啟動中,一旦發生異常中斷就很容易造成系統的啟動死循環。所以,對於這些必須在純DOS下才能執行的DOS遊戲,還是自己手動啟動到純DOS再執行為好。
  
  (2)聲音相容問題的解決

  一般來說,最一般的硬體相容性問題是DOS遊戲無法正常發聲或需要遮閉聲音才能正常執行,其實如果DOS遊戲能夠在Win98下正確執行,通常是可以正常發聲的,因為它一般可以正確使用視窗環境下已載入的音效卡。而遊戲能順利進行卻不能正常發聲的情況基本上是在純DOS環境下才會發生,這是因為許多人在啟動純DOS環境時並沒有在他們的Autoexec文件裡載入DOS下的音效卡驅動以致遊戲無法發聲,又或者由於音效卡規格太新,即使載入了驅動仍無法被遊戲正確使用,最後就是有某些音效卡,如主機板上整合的軟音效卡根本就沒有提供DOS下的驅動。

  因此要解決純DOS下的聲音相容問題就必須要安裝好音效卡的DOS驅動。你可以檢視自己的音效卡驅動盤或上網尋找驅動程式。這裡向大家推薦http://firststep.ahwww.com/newdos/d.... 有不少?/a>`用音效卡的DOS通用驅動,只要晶片相近即可使用。

  其實你也可仔細檢視一下遊戲安裝目錄下的文件,許多DOS遊戲本身都帶有最簡單最相容的DOS音效卡驅動,可以嘗試安裝使用遊戲內已含有驅動,通常選項最相容的SB驅動來解決問題(圖19),如果問題能得到解決,你完全可以把遊戲自帶驅動保留下來用作為自己音效卡的DOS驅動。如果無論如何你都沒有辦法使你的音效卡在DOS下發聲,而你要玩的DOS遊戲又無法執行在Win98視窗環境下,「SORRY」,如果不更換硬體或操作平台,你就只有忍受無聲了。
  
  (3)顯示相容問題的解決

  可能不少人沒有注意到,其實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)。設定完成再試著執行遊戲,如果順利就要恭喜你了。
  
  (4)其它相容問題的解決

  除去主要的相容問題外,由於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/V遊戲重玩的解決方案

  最後有一個特殊的相容性問題,一些早期的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)。
  
二、Win95/32遊戲重玩

  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作補充說明。
(一)WinXP下Win95遊戲重玩的方案

  實例1:《大航海外傳中文版》

  執行程序看到一個堆滿亂碼的對話視窗(圖30),啟動失敗。要搞清楚失敗原因,先要看懂對話視窗上的字,顯然,這些字是Big5編碼的。對關於NT的操作系統,不要想著去用那些內碼轉換工具,因為Win2000和WinXP都有完整的內碼系統,對於這款遊戲,不如先來試試系統自己的功能。

  開啟「控制台」→「地區和語言選項」,進入「區域選項」標籤頁,在「標準和格式」及「位置」的下拉功能表中選項「台灣」,再進去入「進階」標籤頁面,將「非Unicode程序的語言」設定為「台灣」(這一項是必須的),並驗證「程式碼頁轉換表」中選了「繁體中文Big5」(圖32)。設定後重新啟動機器,系統就可以顯示Big5內碼的漢字了,而且系統及多數其他內碼的程序都可以正常使用,只是字體會難看一點。這種方法的缺點就是每次更改都需重啟系統。

  改好了嗎?現在可看明白了,原來這個彈出視窗是提示我們要使用256色(圖33),還要在內容裡改顏色嗎?不用這麼麻煩了,現在輪到WinXP的相容性設定登場了:在遊戲的主執行程序或其建立捷逕上點右鍵,選項「內容」,在彈出視窗中選項相容性標籤,再選「用256色執行」即可(圖34,有些遊戲還必須選項用「何種相容模式執行該程序」等其他選項)。這樣遊戲就能順利執行了(圖35),在遊戲執行時,桌面會自動切換至256色,等遊戲退出後又恢復原有狀態,很是方便。

  相容性設定即使對光碟上的唯讀檔也同樣可進行設定,因為這項設定並不是更改文件本身的內容,而是記錄下它執行時所需的環境,而此記錄則是儲存在系統中。實際上,WinXP對多內碼有著良好的支持,所以,該遊戲以及後面的《太閣立志傳2》,都無需修改地區和語言選項即可重玩,表單上雖有亂碼卻基本不影響理解。

  反思及總結:通過這個例子可以知道,很多老遊戲在新系統上執行時都存在色深及解析度的問題,所以,出現問題時不妨先在相容性標籤裡試試再說。另外,如果桌面解析度和遊戲解析度一樣時(640×480),遊戲還要求自身視窗必須在最前端,那麼還需在「工作管理欄和『開始』功能表內容」中,把「將工作管理欄保持在其他視窗的前端」的勾選去掉(圖36),這一特性也具有普遍性。
  
  實例2:《三國誌孔明傳》和《文明Ⅱ》

  這兩個傳統遊戲,在執行時會出現同樣的報錯:找不到Wing.dll(圖37),從副檔名我們可以知道Wing.dll是一個動態連接庫文件,但它到底是何方神聖?在Windows遊戲發展的初期,遊戲畫面對硬體的要求還很低,更談不上什麼3D,那時簡單的圖形加速功能都通過一個動態連接庫文件實現,就是上面提到的Wing.dll了。

  其下載可參考:http://xf-trans.hb.cninfo.net/sanguogame/download/tools/wing.rar,解壓縮後安裝即可(圖38)。簡單安裝之後《文明Ⅱ》的執行就完全正常了(圖39)。而《三國誌孔明傳》(圖40)則較鬱悶,由於WinXP的視瀕輸出接頭不能很好地相容這款遊戲,導致輸出的畫面時常無法自動重新整理,具體表現就是變換場景時可能會無顯示,就算等待也無效,這種情況下,我們只能強制重新整理,比較有效的方法就是將視窗最小化,再最大化,畫面就出來了——這當然算不上解決方案,只是想說明出現這種問題就是絕症了。
  
  實例3:《太閣立志傳2》

  我們舉這個例子是想說明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
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MCI32

  分別在這兩個項下刪除「MCIAVI32.dll」和「AVIVideo」字串串(圖45)。這樣做並不會真正刪除該檔案,但系統已經認為它不存在了,再次執行遊戲,成功(圖46)!不過玩完遊戲可別忘了恢復註冊表哦。

  反思和總結:由此可以看出在WinXP解決老版Windows遊戲不能執行問題的複雜性。實際上這也是因為Windows系統的複雜性遠高於DOS的緣故。對於普通玩家而言,一些遊戲在安裝好Wing.dll、設定好語言及相容性之後仍不能玩,基本上可以放棄通過系統設定解決問題的想法。此時更好的相容性解決方案,應該還是虛擬機軟體,想必微軟也認識到了這一點才會收購Virtual PC,在本刊2003年第7期中,我們已經初步介紹了虛擬機軟體的使用方法,本段結束後將對此軟體進行更深層次的探討。


(二)Win98/2000相對於WinXP的附加說明

  Win2000下遊戲的情況與WinXP大抵相同,儘管Win2000沒有相容性設定,但只要按要求調整好桌面解析度及色深即可,只是每次都要手動切換,麻煩一點而已,但是Win2000地區和語言選項的設定略有不同(圖47)。而在Win98下玩Win95遊戲幾乎沒有遇到任何阻力,只要安裝好Wing.dll,在需要轉碼時安裝南極星等工具即可,可見Win98實實在在屬於Win95的近親。
  
 (三)Win32遊戲相對於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)。這些具體的操作就留待大家細細研究了。
  
結語:歷時一個月的專題終於完成,評測室的兩位同事也幾乎累得不成樣(有興趣的朋友可參考本期「大眾閒話」中炎楓以「春秋筆法」寫的工作手記)。讀者朋友大概很難去想像這篇文章背後的艱辛,我們面臨的是跨越了一個年代的海量老遊戲,每一款遊戲從不能執行到成功重玩,都可以讓評測人員由恨生愛。不過這一切終於有了成品——它靜靜地待在這兒等待著你的評價。老遊戲對新系統,實際上牽涉的是少有提及的系統設計深層次的原理。由遊戲到電腦套用高手,是不少業界精英走過的道路,我們也想通過這篇文章展示我們對這條道路的理解。事實上,沒有人可以使每一款遊戲都「死」而復「生」,但如果這篇文章能夠引起大家動手解決問題的慾望,就是我們最大的心願了。對了,如果你發現了什麼新的解決方法,別忘了通過我們和大家——一起分享