精華區beta Old-Games 關於我們 聯絡資訊
請大家善用"/"來尋找資料 完完全全在 Windows 2000或XP下怀念老DoS游戏 作者:未知 来源:未知 加入时间:2004-8-26 摩宇下载 無需再為過去那些經典的遊戲立碑作傳,對於老玩家,它們的意義已不僅是打開電腦之門的鑰匙,而更是一種關於時間的回憶——如果你是跟隨著《大眾軟體》一同走過這段年代,這種記憶也許會更深刻。當然現在也有不少玩家只是在某個特殊的情況下接觸了一些老遊戲,儘管它們可能已無法發聲、更缺乏華麗的動畫,然而精彩的情節與對白、嚴謹的設計與畫風,仍有可能給你一種特殊的吸引力。不過遊戲畢竟還是屬於應用軟體,凡屬應用軟體就必須嚴格遵守其所在作業系統制訂的規則。因此,當微軟年復一年推出新作業系統的同時,無數的軟體在新規則下結束了曾經輝煌 的時光,這裏面當然也包括了大量的經典老遊戲——是的,無需為它們歎息,因為永遠有更好的軟體、更精彩的遊戲不斷出現。只是,過去的這些真的已經成為——告別的年代,失色的回憶?你不妨帶著這樣的疑問來看這篇文章。 “新”與“老”當然是相對的,不過在開篇之前有必要確定我們的討論範疇,這裏的“老”是指為Win98之前的作業系統,包括DOS和Win32/95,而新系統則是指Win98/2000/XP。毫無疑問,有很多老遊戲都很值得我們來重溫,但重溫的方法也各異,有的人會去買例如奔騰133的“老爺級”機器,專門用於玩老遊戲;不過老PC也不是誰都能買到的,而且為了玩老遊戲真願意如此大動干戈,也算是骨灰級玩家了。於是典型的解決方法是採用多系統,其中有一個系統裝上MSDOS6.22+Win32或Win95,不過這種方法也會碰上新顯卡、音效卡與老遊戲不相容的難題。 實際上,大部分用戶都會在現有系統上嘗試老遊戲,在這方面,使用Win98的用戶似乎比WinXP的用戶擁有更多的笑容(越“老”越好?這是否準確,還請參見後文)。除了一些相容性非常好的遊戲,大部分已不可能運行,而所謂相容性好的遊戲也基本上不可能聽到遊戲原聲。那麼,要實現完美的重溫效果,是否註定要調整硬體、註定要安裝多系統呢?經過筆者的一番艱苦探索,發現並不是這樣,大部分的老遊戲在新系統下仍舊可以找到合適的解決方案。 一、DOS遊戲的重玩 在大家所碰到的經典老遊戲中,DOS遊戲無疑佔有絕對多的比例。然而辛辛苦苦找出來的遊戲,當在視窗下雙擊主運行程式時,卻會出現各種莫名的情況。在Win98下還好一些,好歹能讓你看到出錯資訊(當然一般情況下這個出錯資訊我們都弄不明白),至於Win2000/XP,往往是黑色螢幕一閃而過,一些情況下還會出現訪問位址非法的提示,總之會讓人不明所以。 然而這種種不能正常運行的情況並不完全是因為新系統與老遊戲不相容的緣故,熟悉DOS的用戶都知道,DOS是一個開放的系統,其軟體操作並不像Windows下那樣多數是“傻瓜式”,特別是DOS下的多媒體軟體(例如遊戲)要正常運行,往往需要對運行環境作特殊的設置,如果只是“雙擊”,當然不符DOS“風格”了。因此一款DOS遊戲在新系統下不能重玩,實質是相容與設置兩方面的問題均可能有,這也提示了我們解決問題的一些思路。 由於在不同系統下,DOS遊戲運行的環境大不一樣,因此在下文中,將主要講述WinXP下的解決方案,之後回到Win2000和Win98環境下,探討重玩的方法。這樣行文還有一個原因:事實上從Win98到2000再到XP,作業系統對DOS的相容性是不斷提高的,這恰與我們想像的相反——這一點很快就能從下文中看出。 (一)WinXP下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虛擬機支援(NTVirtualDOSMachine,簡稱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將被保留給諸如系統、硬碟控制器、顯存等使用,稱為上位記憶體(UpperMemoryBlock,簡稱UMB),剩下的640kB稱作常規記憶體(ConventionalMemory),這640kB可不是全部空餘的,系統啟動後就會被佔用一部分,這樣一般程式只能利用常規記憶體的剩餘(Free)部分了,理解這一點非常重要。 然而虛擬機所提供的的記憶體容量絕對超過1MB,這部分被稱作擴展記憶體,由於在使用上必須服從擴展記憶體標準(eXtendMemoryStandard),而被簡稱為XMS,要使用XMS就必須在Config.sys(現在是Config.nt)中載入Himem.sys驅動程式。當然擴展記憶體最底層,靠近剛才所說的那1MB的地方,有近64kB的容量,DOS不使用XMS標準即可訪問,這一記憶體區域被稱為高端記憶體區(HighMemoryArea),DOS經常會將自己的一部分駐留在此區域(MS-DOSresidentinHighMemoryArea),以將常規記憶體儘量空出一些給應用程式使用。 最後一個延伸記憶體EMS(為ExpandedMemoryStandard的縮寫)的概念非常重要但又比較難理解,簡單來講它是CPU的欺騙者:CPU“看起來”它是在UMB中(在1MB內,可自由使用),而實際上它在XMS中,是XMS的一部分或全部,這樣程式就能夠有效地使用1MB以外的擴展記憶體了。不過要使CPU能識別延伸記憶體,需要在Autoexec.bat(現在是Autoexec.nt)中裝載延伸記憶體管理器EMM(ExpandedMemoryManager),在DOS下一般是用EMM386.exe。這裏需要說明,由於EMS佔用了XMS的空間,所以XMS的可用(Available)部分會減少。舊DOS是一個非常自由的系統,在上面運行的遊 戲可自由決定是否使用EMS,甚至還會決定要多少EMS,否則就……嘿嘿,罷工。 從以上看來,與我們的話題密切相關的有兩塊記憶體:常規記憶體和延伸記憶體,這兩個也恰巧是無數DOS在新系統下運行的“殺手”,好在我們現在已知已知彼,可以開戰了。以下實例均在WinXPProSP1版本下進行。 (1)延伸記憶體EMS的正確配置 實例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,在螢幕上看到一行字:EMSmemorymanagernotfound(找不到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支援,這樣設置當然會出錯。而剛才運行的Comman d.com也符合這一原則,其屬性對話方塊的記憶體頁與圖6完全相同。 那麼解決方法你一定已經想到了,由於WinXP無法對.bat檔配置記憶體,所以你可以:1.修改_default.pif屬性中的記憶體配置;2.修改Command.com的記憶體配置,並在其視窗中運行Play.bat。但修改_default.pif檔顯然不可取,因為這個檔將會是所有DOS程式的默認Pif配置檔,有一些程式並不需要EMS,有的甚至只要有EMS就不能運行。那我們試著把Command.com記憶體配置中的EMS和XMS兩項均調為“自動”,再次運行Command視窗,同上找到安裝目錄並輸入“play”命令,回車之後驚喜的看到了遊戲的開始畫面。 那麼到底“自動”是什麼概念呢?再次進入Command視窗並執行命令行“mem”,這個命令可查看當前的記憶體分配及使用情況,原來“自動”默認為分配4MB的EMS和19MB的XMS(其中只有15MB是可用的)。這裏順便說一下,顯示的第1行就是前面所說的640kB常規記憶體,第3行非常重要,表示NTVDM啟動後常規記憶體剩下的空間,當然也就是最大可執行程式的大小了(Largestexecutableprogaramsize)。 不過每次從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開始畫面,但之後就螢幕一閃,並顯示出一行字:NotEnoughMemory(缺乏足夠的記憶體),此時你應當對“不夠”二字有所領會了,由於是直接雙擊,故猜想仍是EMS的問題。依上法設置san486.com的EMS為自動,即可順利進行遊戲。 反思及總結:這類問題的出現比較集中,因為直接雙擊可執行檔,所啟動的NTVDM默認不支持EMS。對於.exe和.com檔,直接在屬性中設置好EMS即可,若是.bat檔,則需參考上述間接修改方法。 (2)常規記憶體的正確配置 實例2:《龍騎士4》(Dra4) 這款遊戲由ELF出品,以情節設計的巧妙贏得了不少玩家的欣賞,我們看能不能在WinXP系統下正常運行。首先必須根據遊戲說明其安裝在C盤根目錄下,進入安裝目錄c:\dra4,雙擊執行其中的Play.bat,出現的情況仍然是黑屏的一晃而過。於是按照實例1中的方法用記事本打開Play.bat,發現其中只有一行:dra4start.mesHxC,這是一個帶參數運行的命令,主程序是dra4,不過卻在安裝目錄下發現了兩個可執行dra4檔:dra4.com和dra4.exe,這裏你需要知道.com檔執行的優先度高於.exe。於是對dra4.com的屬性進行修改,將EMS設為8192kB。可是和我們的意願相反,雙擊Play .bat後還是黑色視窗一閃而過…… 於是回到剛才討論的記憶體知識中來,除了EMS,還有一個記憶體殺手就是常規記憶體。還記得上面圖9中的“最大可執行程式大小(Largestexecutableprogramsize)”嗎?有沒有可能581120位元組的記憶體仍不夠dra4.com使用呢?不妨試著從常規記憶體中清理出一些空間來。 這裏我們需要先查看NTVDM默認啟動時都載入了哪些程式,仍然在“運行”對話方塊中輸入“command”打開DOS命令行視窗,在其中鍵入“mem/c|more”命令分頁查看當前記憶體的詳細利用情況(熟悉DOS的用戶會問為什麼不用“/p”參數,因為這個參數在NTVDM中已不被支持,只好用“|more”代替)。從圖中可以看到常規記憶體(ConventionalMemory)中有幾個大頭:MSDOS、MOUSE、DOSX,尤其是DOSX,居然占盡了33.9kB的空間,要知道常規記憶體中可是寸土必爭啊。 實際上DOSX是NTVDM為支援DPMI(DosProtectedModeInterface,DOS記憶體保護模式介面)類型程式而執行的命令。保護模式可以讓程式獲得更多的記憶體資源,但使用DPMI的遊戲都必須附帶一個DOS擴展程式,這個程式一般為DOS/4GWv1.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檔,依上法進入屬性對話方塊,在程式標籤頁中點擊“高級”按鈕,在彈出的WindowsPIF視窗中重新指定專用初始化檔,將二者的位置分別修改為“c:\dra4\autoexec.nt”和“c:\dra4\config.nt”並兩次“確定”。 接下來我們要對這兩個自定義的初始化檔進行修改。使用記事本打開Autoexec.bat,可以發現裏面有一大堆以“REM”開頭的文字行(表示這一行是注釋,不會被執行),值得注意的是有3行lh命令,這是將其後程式儘量(不一定成功喔)載入到上位記憶體的命令,這裏的mscdexnt.exe、redir和dosv分別提供了NTVDM對光碟機、網路(還可以玩經典遊戲的網路版!)以及DPMI的支持。這個例子中由於三者都無需使用,因此在這3行前面分別加上“REM”以表示取消(實際上去掉DOSV就足夠了,這裏乾脆一不做,二不休)。編輯完成之後記得保存,然後回Dra4目錄,雙擊Dra4.com ,你會發現果然是一擊奏效,需要提醒的是,在修改Autoexec.nt的同時仍需配置好Dra4.com的記憶體參數,特別是EMS。 反思及總結:這個例子中並不需要DPMI的支援,但若是碰上了既需要DPMI,同時又得不到常規記憶體的遊戲怎麼辦?我們還是有辦法的,只需修改Config.nt檔,在其中加入一行“EMM=RAM”。這樣配置後MOUSE和DOSX等程式會部分或全部從常規記憶體中移到上位記憶體中,從而獲得大量的常規記憶體(這是修改後用“mem/c|more”命令進行查看的結果,可見DOSX已進入上位記憶體,而可用常規記憶體也達到了615.3kB之多)。最後需要說明,EMS和可用常規記憶體顯然存在潛在性的資源爭奪,系統之所以不將EMS默認設為“自動”,原因在於設置EMS後,一些原來駐留在上位記븊陓撉漱@些程式就會被趕到常規記憶體中去,從而導致可用常規記憶體減小,所以應根據DOS程式需要選擇是否使用EMS。 2.聲音及其他相容問題的解決 從上述說明來看,記憶體問題在WinXP下只能算作配置方面的難題,而本段涉及的才真正是相容問題。首先要說明這裏的音效卡並不是指你真實機器上的音效卡,而是NTVDM所類比出的音效卡。 從WinNT到Win2000,所虛擬的DOS版本都是5.0,而NTVDM提供的硬體為與DOS版本配套,實質上“配置”相當低,這樣對DOS遊戲的支持也很差,最關鍵的是,它不支援DOS6時代以來音效卡的標準相容模式——SoundBlaster。但WinXP在這方面則有所突破,其提供的NTVDM中直接內建有對SoundBlaster2.0的支援,對DOS程式的相容性將會好很多,此外WinXP繼承了Win2000中對滑鼠、光碟機、網卡和DOS/4GW的默認驅動。 不過WinXP提供了音效卡支援,是福亦是禍:雖然安裝有音效卡,但卻只能提供2.0支援,大部分DOS程式都支援SoundBlaster16,這樣就可能存在潛在衝突。好的情況下程式儘管檢測不到音效卡,仍會正常運行,但有的遊戲則可能會直接崩潰。 此外,在WinXP中還有可能存在其他一些相容問題,例如程式不能對軟盤機進行任意設置等,在下面這個例子中會有全面的反映。 實例3:《大富翁3》 這可是DOS時代最受MM喜愛的遊戲,即使是今天玩起來還是興味盎然。然而到該遊戲的目錄c:\rich3下雙擊執行Play.bat,系統經過一番折騰甚至看到了開頭的SoftStar動畫,最後仍給了一個靜止的黑屏——沒關係,我們已經習慣了。於是用記事本打開Play.bat看個究竟,發現裏面有一行命令是“substa:.”,熟悉DOS的用戶知道這條命令用於把當前目錄映射成A盤,遊戲將把A盤當作CD-ROM。這當然會導致相容問題,因為虛擬機是不可以直接訪問硬體的,WinXP控制下的軟盤機當然也不能輕易映射。 於是想到可以將軟盤機先行遮罩,好在WinXP可以不重啟即停用軟盤機。在“我的電腦”上右鍵選擇“屬性”打開系統屬性對話方塊,依次選擇“硬體”→“設備管理器”,在打開的設備管理器中展開“軟碟驅動器”,右鍵單擊功能表下的“軟碟驅動器”並選擇“停用”(遊戲結束後別忘了重複此過程並在這裏選擇“啟用”)。確定之後回到rich3目錄,再次雙擊Play.bat,結果發現已經能進入開始畫面,但只要選定人物並開始遊戲,整個NTDVM系統就會崩潰——是全線崩潰,結束任務後連Command.com也無法運行,只有重啟才能解決問題。 這讓筆者迷惑了一陣,不過由於能夠輸出視頻,則問題很有可能出在NTDVM虛擬出的音效卡上。於是用記事本打開System32下的Autoexec.nt,檔的最後一部分是對內建音效卡的描述,正如前面所言,這裏說明WinXP的NTDVM只提供對SoundBlaster2.0的支援。在檔的最後,說明可將此音效卡遮罩,於是按照說明,在“SETBLASTER=A220I5D1P330T3”一行前加“REM”注釋,同時去掉“SETBLASTER=A0”一行前的“REM”。再次雙擊Play.bat,果然順利進入遊戲畫面。 遮罩音效卡能夠解決不少遊戲無法正常運行的問題,不過到此為止,我們發現:還沒有一款遊戲能夠正常發聲,如此的重溫,怎能不讓記憶失色?雖然筆者也曾經通過一定的設置,使幾款經典的遊戲如《阿貓阿狗》能夠正常發聲(很好的感覺),但絕大部分遊戲並不完全支援SoundBlaster2.0,例如在《天使帝國2》中,即使人聲是正常的,背景音樂卻完全聽不到。因此這裏不再講如何通過系統配置重現聲音的方法,不過更為關鍵的原因是,我們可以利用一個軟體,它不僅可完全解決音效卡的相容性問題,最重要的是它解決了NTDVM系統的最大限制——幾乎能使DOS程式的原音 完全重現,這個軟體就是VDMSound。 VDMSound是一款符合GNU標準的免費軟體,作者的自由開發精神令人敬佩,最新版本為2.0.4。軟體為NTDVM所提供的聲音平臺包括MPU-401介面(可提供高品質的MIDI音效)、SoundBlaster相容介面(相容SBPro1/2、SB1.5/2.0/16/AWE32/32/64,可提供電子及FM/AdLib音效),甚至還包括遊戲控制介面(這樣就能用手柄和搖杆了)!VDMSound與你機器上的真實音效卡沒有關係,它甚至可將DOS程式發出的聲音資訊輸入到磁片檔中。 具體使用方法就更簡單了,仍以《大富翁3》為例,你只需在Play.bat上點擊右鍵,選擇功能表中的“RunWithVDMS”即可,初次使用時,軟體會彈出一個小Tips視窗,筆者建議如果條件允許,可仔細閱讀其中的每條提示(軟體有一個小Bug,就是不會自動更換Tips,因此逐條閱讀比較好),能讓你學到不少知識。接下來軟體快速做了一下初始化工作,黑色DOS螢幕一過,你就能聽到熟悉的音樂了! 實例4:《天使帝國Ⅱ》 有了VDMSound,我們當然要用它來導入執行遊戲安裝目錄下的Play.bat了,不過沒想到卻在熱鬧的聲音中看到了一幅美麗的提示圖,原來這款遊戲至少需要575kB的常規記憶體。按照上文對記憶體配置的說明,首先查看遊戲安裝目錄下是否有DOS4GW.exe——沒有找到,於是可判定其不會使用DOSX,但用了VDMSound。還一樣在Autoexec檔修改嗎? 答案是肯定的,不過現在它和Config的位置已經都轉移到d:\vdmsound目錄下了,檔的副檔名也變成了“vdms”,不過作者想得很是周到,已經將這個副檔名註冊為用記事本默認打開,這樣,上面我們講的修改DOSV等功能仍可順利實現,你可以打開Autoexec.vdms,在“lh%SystemRoot%\system32\dosx.exe”一行前加上“REM”即可。不過,下面將提供一種方法,可以讓這個過程更簡單。 軟體的作者為VDMSound提供了一個圖形化設置插件:VDMSoundLanchPad。下載完以後將此壓縮包的所有檔解壓到d:\vdmsound目錄下,之後運行其中的install.bat,在註冊提示時點“確定”即可完成安裝。下面就以《天使帝國Ⅱ》為例,說明如何使用圖形化介面進行配置。 1右鍵點擊遊戲目錄下的Play.bat,選擇右鍵功能表中帶音樂標記的“RunWithVDMS”。 2在彈出的設置視窗中,由於要做特殊設置,所以選擇“Setupacustomconfiguration(選擇自定義設置)”,並點擊“下一步”。 3在這一步中選擇“Createanewconfigurationfromscratch(生成一份新的配置檔)”,當然如果不是初次使用,以前有遊戲的設置和當前要設置的相同,也可選擇“Reuseanexistingconfiguration”。 4這一步中點擊“Advanced”進入高級設置。 5這個很熟悉吧,其實作者就是把Windows設計的屬性專案整合了。 6進入“Compatibility”標籤頁進行相容性設置,在這裏可設置EMS和XMS,我們接受默認的4MB及16MB設置,同時下面還有基本的VESA支援(EnableBasicVESASupport)選項(這在Win2000下特別有用,因為其不支援VESA視窗模式),此外還包括對光碟機和網路的支援,當然也包括DPMI(DOSV),你如果還有印象,就發現後3項正好對應本文前面所說的Autoexec.nt中的3條LH命令。因為《天使帝國Ⅱ》無需使用DOSX,可將DPMI項的勾選去除。 7“SoundBlaster”用於配置SoundBlaster音效卡,如這裏的IRQ是7,有一些遊戲默認會使用5——總之如果使用了VDMSound還是不能出聲,可以在這兒作一些變更。 8還有更多的配置這裏就不一一講了,大家可自行摸索,點擊“確定”即可返回圖29的介面,選擇“下一步”,最後一個對話方塊中可選定“Remembermysettings”,以便下次將此次配置當作默認配置。點擊“完成”,軟體將引導進入遊戲介面,同時在遊戲目錄下生成一個Play.vlp圖示,以後點擊此圖示即可採用剛才的配置進入遊戲。若想修改還可在其上點右鍵,進入屬性對話方塊中的“VDMSound”標籤,點擊“Advanced”按鈕即可。 實例5:《大航海時代2》 這個例子主要是想說明,如何配合VDMSound解決遊戲運行過速的問題。這裏選取的《大航海時代2》實在是令人懷念的經典,而且這款遊戲的相容性非常好,在WinXP的默認設置下即能順利運行。不過美中不足的是,在筆者CPU為賽揚1.8GHZ的機器上,只要一出海,速度就快得驚人,根本無法控制船的運行方向——而且一晃之間數日已過。最後沒有辦法,只能採取“目標式”一步一步的航行,而大航海時代系列的樂趣有很大一部分就是在海上“逛蕩”,如此步進實在是損失了不少趣味。 要解決這個問題,需要使用專門用於降速的軟體,這裏筆者選擇了同樣由VDMSound作者寫出的Speedset,首先可將壓縮包中的兩個檔Speedset.dll和Speedset.exe解壓到d:\vdmsound目錄下。接下來將配合VDMSoundLanchPad實現降速功能。 在《大航海時代2》安裝目錄下的Play.bat上點擊右鍵,按上例方法進入到VDMSound配置高級(Advanced)介面。進入“DosEnviroment”標籤頁,發現可在Config和Autoexec中增添附加命令行,這裏需要在Autoexec一欄中添加剛才的Speedset.exe命令,Speedset後面應當添加參數以改變速度,經多次測試,應將其後的參數設為“+1”,具體添加的命令行為“lhd:\VDMSound\speedset.exe+1”(你可按自己的情況設定)。接下來選擇“Performance”標籤頁,選定“TrytoreduceCPUusage(嘗試降低CPU利用率)”,並將其上的游標拖至最左邊的“Lowusage”,這個選項可使遊쀊號B行更加平滑;同時一般的WinXP用戶最好將下面的“DMAServicing”從5/15調節到更慢的頻率,如5/10。 經過如此調節並“確定”後,順利進入遊戲,發覺航海速度果然降了下來,而控制起來也更加平滑。最後要說明的是,在上述兩個例子中,儘管使用LanchPad以後,配置會變得很簡單,但並不意味著只能通過圖形介面使用VDMSound及Speedset,其實這兩個命令都可在Command命令行視窗中直接調用。以筆者機器安裝路徑為例,你只需在運行程式之前轉到d:\vdmsound目錄,分別鍵入“VDMSRun”和“Speedset”命令並回車,之後再運行Play.bat,一樣可達到出聲和降速的目的。 (二)Win2000相對於WinXP的附加說明 在記憶體配置方面,Win2000和WinXP遵循完全相同的體系,所以無需再多講。在NTVDM方面,Win2000與WinXP之間最大的不同在於對音效卡與顯卡標準的支援。前面已經講到,Win2000根本不提供任何音效卡方面的支援,所以沒有可能發聲,當然也沒有可能存在音效卡方面的衝突,還是剛才那句話:是福亦是禍。好在有VDMSound,基本上這方面已經與WinXP不存在差別。 相對而言,對顯卡標準的支援則是Win2000的致命傷。DOS時代的顯卡編程介面標準是VESA1.2/2.0,許多DOS遊戲都在編程中使用了些標準,WinXP對二者的支援都相當好,無需顧慮。在Win2000中也提供一些對VESA標準的支援,但必須是在全螢幕下!例如本文中所提到的《三國志Ⅳ》的486版本以及《中關村啟示錄》在Win2000下即使配置好了記憶體,也無法雙擊執行(出錯提示找不到VESABIOS),原因就在於雙擊後程式是先從視窗模式開始運行的。當然你可以運行Command.com(記得修改Command.com的屬性使其支援EMS),之後按組合鍵Alt+Enter進行到全屏模式,再轉到遊戲 安裝目錄執行相應命令,這樣就能順利進入遊戲(也可在這之前運行VDMSound安裝目錄下的VDMSRun以獲取音效)。不過惱火的是,畫面出來了,滑鼠卻出了問題:只能在不到1/2的上半屏活動,這樣當然無法正常遊戲。 VDMSound的作者曾透露出開發VESA相容介面的想法,但一直沒有下文,筆者也一直沒能找到合適的解決方法,好在WinXP遲早會是家庭Win2000用戶的升級選擇,不過暫時還在Win2000下工作的用戶只好忍受這種相容性問題的痛苦了。 編者注:本文上實際上探討了NT系統下DOS遊戲的玩法,下一部分則有新的焦點:Win98下DOS遊戲解決方案,Win32/Win95遊戲在WinXP/2000/98下的重現,以及終極解決方案VirtualPC的縱深介紹——內容精彩,可不要讓它與你擦肩而過。 (三)Win98下DOS遊戲重玩的解決方案 總結上文可知,DOS遊戲最致命的瓶頸就是記憶體管理,其次是其對新硬體的相容支援。不過對於Win98,解決問題的方案與上述NT系統不大相同,總的來說需要你對DOS基礎知識有相當的瞭解。 1.記憶體管理的解決方案 前面提到,由於DOS系統不同於Windows系統那樣能夠智慧管理記憶體,所以其記憶體管理設置都需手動調試,在上面提到的記憶體問題解決實例中,你會發現,我們一般在遊戲提示記憶體不夠時,通過修改Autoexec和Config的具體配置解決此問題。這個方法對於Win98系統同樣適用,但卻有一些實踐上的不同。 大家都知道Win98問世時宣稱是帶有一個DOS的,微軟把它叫作DOS7.0。在Win98開始功能表中的“程式”組中,你會看到一個名為“MS-DOS方式”的快捷方式,指向“c:\windows\command”,其實這只是個偽DOS罷了,不過它與WinXP/2000/NT中NTVDM系統下的DosCommandPrompt又有很大的不同。 舊版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記憶體,因為系統並沒有自動載入記憶體管理工具,如果執行當然遊戲會報“notenoughmemory”的。所以我們先要將延伸記憶體EMS的設置項加上。用記事本打開系統盤下Config.sys檔,在其中加上如下兩行命令: DEVICE=C:\WINDOWS\HIMEM.SYS (這個語句非常重要,意思是載入高端記憶體管理,使DOS能使用高端記憶體。) DEVICE=C:\WINDOWS\EMM386.EXEram (EMM386.exe用於管理延伸記憶體,常用參數為“ram”和“noems”,使用後者能比前者釋放更多的常規記憶體,但很多DOS程式不支援“noems”參數,故使用面較窄。) 之後保存好檔,重新啟動機器後再打開San486.com的屬性,延伸記憶體EMS的設置項回來了,根據上文,將它設置為“自動”即可。這樣延伸記憶體EMS的問題就解決了,雙擊執行San486.com即可順利進行遊戲。 (2)常規記憶體的正確配置 實例7:《龍騎士4》(Dra4) 如前文所說,這款遊戲對常規記憶體的要求非常高,差不多接近590kB了,同時這款遊戲也需要有EMS支援。而通常裝載了EMM386.exe,DOS啟動後,剩餘的常規記憶體無法滿足需要。還是嘗試編輯Config.sys檔來釋放更多的常規記憶體。 在編輯前,我們還是先在Win98的DOS相容模式下鍵入命令“mem/c/p”查看記憶體的具體分配情況。在圖中可以看到,常規記憶體剩餘有577kB,系統其他常駐程式都是載入在常規記憶體裏的,而上位記憶體是空的,所以我們要將一些常駐程式儘量載入到上位記憶體中,從而使常規記憶體空出,於是將Config.sys檔作如下修改: DOS=HIGH,UMB DEVICE=C:\WINDOWS\HIMEM.SYS DEVICEHIGH=C:\WINDOWS\EMM386.EXEram (“DEVICEHIGH”表示在上位記憶體中載入EMM386檔) DEVICEHIGH=C:\WINDOWS\IFSHLP.SYS 其實這裏要做的事情,就是將圖6中看到的常規記憶體出現的程式都儘量載入到高端記憶體和上位記憶體中。保存檔後重啟,然後再鍵入命令“mem/c/q”查看,果然這時候常規記憶體已經有592kB了。這時候運行龍騎士4的Dra4.com,一樣沒有問題。 (3)超大常規記憶體的配置 不過不管如何配置Config.sys檔,由於上位記憶體有限,在Windows環境下又要載入EMM386.exe,你幾乎沒有辦法使常規記憶體高於590kB,雖然這時候絕大部分老DOS遊戲都可以玩了,但也有部分“變態”遊戲要求590甚至600kB以上記憶體,很多專業級遊戲網站都建議放棄。其實問題依然可以解決。 一種方法就是從純DOS模式啟動,即在Win98運行前按F8並選擇從命令行啟動,由於這時已經不是視窗環境,所以系統默認載入的常駐程式要少一些,只要合理配置Config和Autoexec檔,常規記憶體就可達到600kB以上。 另外一種方法就是使用第三方記憶體管理驅動軟體。這裏介紹UMBPCI3.41版,整個檔只有30kB,是很有用的上位記憶體(UMB)擴充驅動程式(注:可能有某些主板暫不被支持),在Config.sys中用Device命令可以直接載入,最多可提供高達160多kB的UMB。假設將壓縮檔解開為檔夾UMBPCI在C盤,然後在Config.sys文件中加入此行語句“DEVICE=C:\UMBPCI\UMBPCI.SYS”,注意需要把它放在Himem.sys檔之後。這樣系統啟動時,就會調用Umbpci.sys,如果檔被正確調用,你應該可在啟動時看到相關資訊。這時機器啟動後其常規記憶體已經通常能輕易達到或超過600kB。 不過這種情況適用於不需EMS延伸記憶體的DOS遊戲,因為這時候EMM386是被默認遮罩的。如果萬一遊戲既需要600kB以上的常規記憶體又需要EMS延伸記憶體,那麼我們就必須進行特殊設置同時載入UMBPCI和EMM386。 首先我們必須知道機器所使用上位記憶體的具體情況。這個可以利用UMBPCI所帶的Umbchk.exe工具查看。方法是在機器啟動時,按F8選取最後一項跳過Config和Autoexec檔,進入DOS7.0後,執行Umbchk.exe即可查看到機器上位記憶體的空閒情況,將其記錄下來。然後在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.EXEX=D800-EFFFX=B800-C7FFI=C800-D7FFI=B000-B7FFRAMM3D=256AUTO(注:無換行) 這樣,我們就可以同時載入UMBPCI和EMS了。另外一種情況是,如果你的顯卡有一個48kB的BIOS而無法使用C800-D7FF(例如NVIDIAGeForce),那麼嘗試將參數作如下修改: DEVICE=C:\UMBPCI\UMBPCI.SYS/I=DC00-EFFF DEVICE=C:\WINDOWS\EMM386.EXEX=DC00-EFFFX=B800-C7FFI=CC00-DBFFI=B000-B7FFRAMM3D=256AUTO 當然,此時系統仍有可能無法正確啟動,一般來說是因為無法載入EMM386的頁面框架,那麼我們可以在載入語句中加上“FRAME=NONE”參數:DEVICE=C:\WINDOWS\EMM386.EXEFRAME=NONEX=D800-EFFFX=B800-C7FFI=C800-D7FFI=B000-B7FFRAMD=256AUTO。 通過這樣的調整,Win98下的MS-DOS就可同時支援EMS和擁有超高的空閒常規記憶體。需要說明的是,也有一些DOS遊戲程式不能在沒有載入頁面框的情況下運行,此時就只好使用第一種方法。 2.軟硬體相容問題的解決 解決了記憶體問題後,並不意味著任何一款DOS遊戲就可在Win98下運行無阻了,因為DOS遊戲在新系統下運行不可避免地會出現相容問題。簡單總結,會發現相容問題仍可簡單地分為硬體和軟體兩類,不過這裏要弄清楚一點,在Win98下DOS程式都是直接面對各種真實的硬體,而決不是WinXP中統一的虛擬硬體,所以就軟體環境的相容性來說,Win98要強於WinXP,但就硬體相容性來說,結論則恰好相反。 (1)軟體環境相容問題的解決 大多數DOS遊戲在解決記憶體問題之後,是可以直接運行在Win98的視窗環境下,然而有一部分DOS遊戲會在運行時跳出提示,說遊戲只能運行在純MS-DOS方式下,拒絕在視窗中運行。這時可我們打開遊戲的運行檔或PIF檔的屬性,在程式頁點擊“高級”按鈕,在彈出的頁面中將“禁止MS-DOS程式檢測Windows”勾選,確定返回後再運行遊戲,一般就可以使遊戲跳過DOS環境的檢測,從而能運行在視窗環境下。 當然,還是有少部分DOS遊戲無論如何也不能在Win98下運行,例如《美少女夢工廠2》,這時就只有點擊DOS主程序屬性的程式頁中“高級”按鈕,在彈出的頁面中將“以MS-DOS方式運行”選上),同時在這裏為它配置合理的記憶體分配及必要的硬體驅動,確定退出後再點擊遊戲的主程序運行,系統就會自動重啟進入純DOS,同時載入先前設置好的配置,之後自動運行遊戲。然而筆者並不推薦使用這種方法。因為在遊戲啟動中,一旦發生異常中斷就很容易造成系統的啟動閉環。所以,對於這些必須在純DOS下才能執行的DOS遊戲,還是自己手動啟動到純DOS再運行為好。 (2)聲音相容問題的解決 一般來說,最常見的硬體相容性問題是DOS遊戲無法正常發聲或需要遮罩聲音才能正常運行,其實如果DOS遊戲能夠在Win98下正確運行,通常是可以正常發聲的,因為它一般可以正確使用視窗環境下已載入的音效卡。而遊戲能順利進行卻不能正常發聲的情況基本上是在純DOS環境下才會發生,這是因為許多人在啟動純DOS環境時並沒有在他們的Autoexec檔裏載入DOS下的音效卡驅動以致遊戲無法發聲,又或者由於音效卡規格太新,即使載入了驅動仍無法被遊戲正確調用,最後就是有某些音效卡,如主板上整合的軟音效卡根本就沒有提供DOS下的驅動。 因此要解決純DOS下的聲音相容問題就必須要安裝好音效卡的DOS驅動。你可以查看自己的音效卡驅動盤或上網尋找驅動程式,只要晶片相近即可使用。 其實你也可仔細查看一下遊戲安裝目錄下的檔,許多DOS遊戲本身都帶有最簡單最相容的DOS音效卡驅動,可以嘗試安裝使用遊戲自帶的驅動,通常選擇最相容的SB驅動來解決問題,如果問題能得到解決,你完全可以把遊戲自帶驅動保留下來用作為自己音效卡的DOS驅動。如果無論如何你都沒有辦法使你的音效卡在DOS下發聲,而你要玩的DOS遊戲又無法運行在Win98視窗環境下,“SORRY”,如果不更換硬體或操作平臺,你就只有忍受無聲了。 (3)顯示相容問題的解決 可能不少人沒有注意到,其實DOS遊戲的顯示相容問題比聲音相容問題更難處理。道理很簡單,音效卡的規範其實一直都比較穩定統一,而顯卡的發展卻日新月異。有些DOS程式需要特殊的顯卡模式支援,如EGA、SVGA等,而先進的顯卡已淘汰此顯示模式。例如遊戲《英雄傳說4——朱紅血》,對已經是非常老的S3Trio32/64(732/764)顯卡都無法相容,勉強去運行,你只能看到被拉長的遊戲畫面的一半。通常這個問題是絕症,遇上了基本上只有放棄。相對來講,WinXP由於虛擬了較低端的顯卡,這方面的問題反而不大。 不過你仍可嘗試用一款名為“SciTechDisplayDoctor”(以下簡稱SDD)的軟體來解決,對於稍微老一些的顯卡來說它能夠解決大部分問題。早些年的時候,此軟體是一個應用廣泛的顯卡工具,它可提高DOS、Windows系統的顯示相容能力。對於我們來說,最有用的功能就是用於類比過時的VBE顯示模式(不少遊戲如《中關村啟示錄》都需要使用這種模式)。 軟體最新為7.X版,分DOS和Windows版本,請對應你使用的環境分別安裝,安裝後會要求重新啟動。軟體的使用非常簡單,以視窗環境為例。啟動主程序,將顯示控制開關“ON”打開,這時介面下部分原來不能用的按鈕已經可以使用。點擊按鈕“GraphicsImprovements”,在跳出的頁面裏能夠看到你的顯卡所能支持的VBE版本,通常較早的VBE模式都沒有被支援,所以我們就需要利用SDD的軟體類比方式。回到主介面,點“Compatibilitytest”按扭,在跳出的介面中的“DriverType”中選擇“ScitechDisplayDoctor”,這時右邊的“interfacer無效”也都可選用了,選中你想쌊廍顒敲BE模式,然後點擊“TestGraphics”按鈕測試,如果能通過測試,說明你的顯卡可使用該軟體來類比老的VBE模式,而對於採用VBE顯示模式的遊戲來說就可以解決問題了。在選定了VBE模式後,再回到主介面點擊“PerformanceProfile”按鈕,設定需要的特殊顯示模式。設定完成再試著運行遊戲,如果順利就要恭喜你了。 (4)其他相容問題的解決 除去主要的相容問題外,由於Win98不像Win2000/XP一樣,在NTVDM系統中默認載入了光碟機和滑鼠驅動,因此需要手動載入。若遊戲需要使用光碟機,你就得安裝光碟機附帶的DOS驅動程式,當然也可用Win98啟動盤中附帶的萬能光碟機驅動程式。如果是光碟版的遊戲,你還可用fakecd(cdx)來虛擬一個光碟,例如:先把遊戲解壓到一個目錄中,如“d:\sanguo”,之後運行命令行“cdxd:\sanguo/L:z”,即可將d:\sanguo目錄指定虛擬為Z盤。如果遊戲需要滑鼠支援,可到網上搜索下載,一般網上可找到的有mouse.com、qmouse.com、gm.com等,選擇能驅動你的滑鼠又佔用記븊陓擗眭煽N行。 (四)DOS/V遊戲重玩的解決方案 最後有一個特殊的相容性問題,一些早期的DOS遊戲是日文遊戲,比如說經典的遊戲《××生》,如果直接在中英文作業系統中執行,就會無法顯示文字或顯示亂碼。這時的解決辦法是使用DOS/V作業系統。其實如果解開下載到的DOS/V壓縮包,你會發現這其實就是個DOS啟動盤而已,與普通啟動盤不一樣的是,這個所謂的“啟動盤”在DOS啟動後會載入日文字形檔,所以用其啟動系統後能正確顯示遊戲文字。但由於總是要用DOS/V啟動機器很麻煩,所以後來又出現了兩個程式DOSV/SV和DOS/J,實際上這兩個程式都是簡單的日文字形檔載入程式,並帶有相應字形檔。它們的好處是 可在作業系統啟動後根據需要隨時載入,相容性非常好。使用方法也很簡單,以DOSV/SV為例,其壓縮包中除了兩個FONT字形檔檔和主程序Dosvfont.exe外,還有一個Dosv.bat檔,所以我們可將DOSV/SV解壓縮到遊戲的安裝目錄下,然後編輯遊戲的批次處理執行檔Play.bat,將Dosv.bat放到遊戲主程序執行之前,這樣遊戲執行前就會先載入日文字形檔,便能正確顯示日文。 二、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開始分析,並在ꠊ銕廜馡in2000/98作補充說明。 (一)WinXP下Win95遊戲重玩的方案 實例1:《大航海外傳中文版》 運行程式看到一個堆滿亂碼的對話方塊,啟動失敗。要搞清楚失敗原因,先要看懂對話方塊上的字,顯然,這些字是Big5編碼的。對基於NT的作業系統,不要想著去用那些內碼轉換工具,因為Win2000和WinXP都有完整的內碼系統,對於這款遊戲,不如先來試試系統自己的功能。 打開“控制面板”→“區域和語言選項”,進入“區域選項”標籤頁,在“標準和格式”及“位置”的下拉功能表中選擇“臺灣”,再進入“高級”標籤頁面,將“非Unicode程式的語言”設置為“臺灣”(這一項是必須的),並確認“內碼表轉換表”中選中了“繁體中文Big5”)。設置後重新啟動機器,系統就可以顯示Big5內碼的漢字了,而且系統及多數其他內碼的程式都可以正常使用,只是字體會難看一點。這種方法的缺點就是每次更改都需重啟系統。 改好了嗎?現在可看明白了,原來這個彈出視窗是提示我們要使用256色,還要在顯示屬性裏改顏色嗎?不用這麼麻煩了,現在輪到WinXP的相容性設置登場了:在遊戲的主運行程式或其快捷方式上點右鍵,選擇“屬性”,在彈出視窗中選擇相容性標籤,再選中“用256色運行”即可(有些遊戲還必須選擇用“何種相容模式運行該程式”等其他選項)。這樣遊戲就能順利運行了,在遊戲運行時,桌面會自動切換至256色,等遊戲退出後又恢復原有狀態,很是方便。 相容性設置即使對光碟上的唯讀檔案也同樣可進行設置,因為這項設置並不是更改檔本身的屬性,而是記錄下它運行時所需的環境,而此記錄則是儲存在系統中。實際上,WinXP對多內碼有著良好的支持,所以,該遊戲以及後面的《太閣立志傳2》,都無需修改區域和語言選項即可重玩,表單上雖有亂碼卻基本不影響理解。 反思及總結:通過這個例子可以知道,很多老遊戲在新系統上運行時都存在色深及解析度的問題,所以,出現問題時不妨先在相容性標籤裏試試再說。另外,如果桌面解析度和遊戲解析度一樣時(640×480),遊戲還要求自身窗口必須在最前端,那麼還需在“任務欄和‘開始’功能表屬性”中,把“將任務欄保持在其他視窗的前端”的勾選去掉,這一特性也具有普遍性。 實例2:《三國志孔明傳》和《文明Ⅱ》 這兩個經典遊戲,在運行時會出現同樣的報錯:找不到Wing.dll,從副檔名我們可以知道Wing.dll是一個動態連結程式庫檔,但它到底是何方神聖?在Windows遊戲發展的初期,遊戲畫面對硬體的要求還很低,更談不上什麼3D,那時簡單的圖形加速功能都通過一個動態連結程式庫檔實現,就是上面提到的Wing.dll了。 下載解壓後安裝即可。簡單安裝之後《文明Ⅱ》的運行就完全正常了。而《三國志孔明傳》則較鬱悶,由於WinXP的視頻輸出介面不能很好地相容這款遊戲,導致輸出的畫面時常無法自動刷新,具體表現就是變換場景時可能會黑屏,就算等待也無效,這種情況下,我們只能強制刷新,比較有效的方法就是將視窗最小化,再最大化,畫面就出來了——這當然算不上解決方案,只是想說明出現這種問題就是絕症了。 實例3:《太閣立志傳2》 我們舉這個例子是想說明Win95遊戲在新系統下所面臨情況的複雜性,若讀者能從中有所獲益,也算對得起這種種的折騰了。運行此遊戲會產生一個典型的XP非法操作視窗,選擇“不發送”之後程式終止,之後嘗試相容性設置卻毫無用處。我們甚至從微軟網站下載了WindowsApplicationCompatibilityToolkit3.0,這是一套專門用於解決程式相容問題的工具包,裏面有很多複雜的相容性設置,但由於很多設置專業性極強,普通用戶較難上手,它更多是為程式師調試老程式之用。好在其資料庫中包括了很多常見的老程式的相容性資訊,我們在裏面驚訝地發現了《太閣立志傳2》ꄊA不過短暫欣喜過後是殘酷的現實:在它虛擬的相容環境中遊戲仍然無法正常運行。事實上,我們通過這個工具包的所有努力都沒有成功,希望它不是真的這麼“一無是處”,如果讀者朋友以後遇到什麼相容性問題,倒不妨試試。 還是“自己動手,豐衣足食”吧。從報錯資訊著手,在報錯視窗右下角有一個叫“請單擊此處”的鏈結,照辦後會彈出較詳細的錯誤報告,從這裏可以看出,都是一個叫“MCIAVI32.dll”的動態連結程式庫惹的禍,這又是何許“庫”也?MCI是MediaControlInterface(媒體控制介面)的縮寫,凡是和這個詞沾邊的檔大多是和視頻及音頻控制有關的。事實上也是如此,它是一個32位的AVI媒體驅動,因此判斷出錯原因是老版本Windows程式調用了新系統的介面,而通過該介面指向的驅動卻不同,從而造成了錯誤。 既然是和AVI有關的驅動,我們認為極有可能是用於播放開場動畫的,開場動畫與遊戲沒有直接關係,但過不了這一關遊戲就無法繼續。那麼,我們能不能索性跳過這個環節呢?開場動畫看不看是小事情,於是我們決定刪掉MCIAVI32.dll,這個檔就在System32目錄下,直接刪檔是不行的,WinXP具有檔保護功能,重啟後檔就會自動恢復。 當然你還可以在另一個地方找到“它”,雙擊控制面板中的“系統”圖示,依次選擇“硬體”→“設備管理器”,展開“聲音、視頻和遊戲控制器”→“媒體控制設備”,雙擊後在“屬性”標籤中就列出了這個檔,選中檔再點右下角的“屬性”,可將其設置為相容16位,但這樣做了以後,仍然不能解決問題(難道說了半天全是廢話?)。別急,我說這些是為了讓大家更清楚地瞭解這個檔在系統中的作用及位置。真正刪除它需要使用註冊表編輯器:通過開始功能表運行“regedit”,找到如下兩項,編輯前別忘了先備份(右鍵單擊項圖示後選擇“導出”): HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\drivers.desc HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\MCI32 分別在這兩個項下刪除“MCIAVI32.dll”和“AVIVideo”字串。這樣做並不會真正刪除該檔,但系統已經認為它不存在了,再次運行遊戲,成功!不過玩完遊戲可別忘了恢復註冊表哦。 反思和總結:由此可以看出在WinXP解決老版Windows遊戲不能運行問題的複雜性。實際上這也是因為Windows系統的複雜性遠高於DOS的緣故。對於普通玩家而言,一些遊戲在安裝好Wing.dll、設置好語言及相容性之後仍不能玩,基本上可以放棄通過系統設置解決問題的想法。此時更好的相容性解決方案,應該還是虛擬機軟體,想必微軟也認識到了這一點才會收購VirtualPC,在本刊2003年第7期中,我們已經初步介紹了虛擬機軟體的使用方法,本段結束後將對此軟體進行更深層次的探討。  (二)Win98/2000相對於WinXP的附加說明 Win2000下遊戲的情況與WinXP大抵相同,儘管Win2000沒有相容性設置,但只要按要求調整好桌面解析度及色深即可,只是每次都要手動切換,麻煩一點而已,但是Win2000區域和語言選項的設置略有不同。而在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和VirtualPC為代表的虛擬機軟體,幸虧它們在解決一台機器上運行多作業系統等問題的時候順帶觸及了新老系統間相容性問題的解決。 (一)虛擬機軟體的局限性 應當來講使用虛擬機軟體完全虛擬出對應的舊作業系統,老遊戲的重玩問題就能完美解決,然而這個結論只能說太過絕對。絕大部分遊戲應當可以在虛擬機下順利運行,特別是Win32/95下的遊戲,使用虛擬機軟體後,很多在新系統下難以解決的問題幾乎都能迎刃而解。但也會有意外的情況——當然這種意外實際上卻是在意料之中的。 看過本刊今年第7期《重返DOS仙劍時代——VirtualPC應用一則》的朋友肯定都會明白,虛擬機軟體虛擬的是一台PC,而不是一個作業系統,既然是一台PC,就肯定會設定自己的硬體(相當於你攢一台機器),這裏面對老遊戲而言,顯卡和音效卡最為關鍵。 以VirtualPC5.1為例,其虛擬的顯卡是S3Trio32/64PCI。儘管這款顯卡的相容性很不錯,但在實際操作過程中,仍發現一些遊戲如《英雄傳說4——朱紅血》、《大富翁3》等,在運行時遊戲畫面被拉長只剩1/2。此情況如果參照前文Win98下顯卡相容問題,使用SDD,就會暴露虛擬軟體的另一個問題:虛擬硬體的缺陷。簡單來說,就是無法達到真實虛擬的地步,SDD在虛擬機下無法對本身就是虛擬出的硬體進行再次虛擬處理。這樣,此問題在VirtualPC上根本無法解決。在另一款很出名的虛擬軟體VMWare(以3.2版本為例)的幫助說明中也提到,使用DirectDraw和Direct3D圖形技 術的軟體不能在其上運行,但與我們這裏討論的話題關係就不大了。 相對顯卡,音效卡方面的相容性問題可能少一些,在我們使用VirtualPC進行測試的整個過程中,並沒有發現有音效卡相容方面的問題。不過不少遊戲在初次運行時會要求設定音效卡的參數(或者你也可手動進行設置),所以這裏將VirtualPC和VMWare所虛擬音效卡的參數陳列如後。VirtualPC5.1:CreativeLabsSoundBlaster16,Port220,IRQ5,8-bitDMA1,16-bitDMA5;VMWare3.2除16-bitDMA參數為7以外,餘者皆與VirtualPC5.1相同。 (二)虛擬機的應用技巧 很多初次使用虛擬機的朋友都會覺得在主機和虛擬機之間傳輸資料是很麻煩的事情,這種麻煩的感覺就像面對兩台沒有聯繫的電腦一樣,當然虛擬機除利用軟盤機和光碟機,還可通過製作.iso和.vfd鏡像檔傳遞資料——但仍舊很麻煩。那麼同樣類比,我們就會發現,利用網路是非常自然的解決方案! 下面以VirtualPC為例進行說明。實際上軟體安裝設置完之後,就會在主機上安裝一個虛擬網卡用於和虛擬機建立網路連接,當然我們不用在新舊系統間手動建立局域網,畢竟那需要太多的專業知識。VirtualPC安裝包中已經為DOS和Windows分別提供了附加的工具以實現此功能(VMWare中類似的工具需另外下載)。 我們先來看安裝了DOS後的虛擬機如何使用這個工具。以MSDOS6.22為例,啟動虛擬機後,點擊功能表“Floppy”→“CaptureImage”,在彈出視窗中找到軟體第一次解壓縮後的檔夾,並順次找到“Additions”→“DosAdditions”→“DosAddition.vfd”,這是專門為DOS設計的附加功能軟碟鏡像檔。回到DOS虛擬機介面,進入A盤,輸入“dosadd”即可開始安裝,之後在“Floopy”功能表中釋放“DosAddition.vfd”並重啟,這樣,這個DOS虛擬機啟動後會自動載入名為“FolderSharing”(檔夾共用)的驅動,同時還會載入通用光碟機驅動,實質上這個共用功能是間接利用了系 統的網路功能,將主機上的某個檔夾映射為虛擬機上的某個盤。 接下來點擊菜單“Edit”→“Settings”,打開此虛擬機的設置對話方塊,找到“SharedFolders”,初始情況下這裏面是空的。點擊右面的“ShareFolder”按鈕,在彈出的對話方塊中選擇你需要在DOS下直接訪問的檔,如本例中的“E:\dosgame”,在下面的“Driveletter”中選擇映射後的盤符,本例接受默認設置“Z”,如果需要每次啟動虛擬機都共用此目錄,可將“Shareeverytime”勾選上。確定之後,在虛擬機中輸入“Z:”,即可對主機上的E:\dosgame目錄進行訪問。 這裏有兩個說明:(1)如果在DOS下使用共用檔夾功能,其驅動會佔用常規記憶體空間,致使遊戲可使用記憶體減少,因此建議你最好拷貝完所需要的檔,然後打開根目錄下Autoexec.bat中的“c:\cntx\fshare.exe”和“c:\cntx\idle.com”,在其前加上“rem”禁止其運行。當然DOS下的修改要靠Edit命令完成,需要你對DOS有一定瞭解。(2)在Win95或其後版本中安裝附加功能更為簡單,通過功能表“CD”→“CaptureImage”選擇同上“Additions”目錄下的VPCAdditions010021.iso檔,在虛擬機中安裝光碟上的Setup.exe,安裝完後重啟,類似上述操作選擇共用檔夾即可꜊髡足M射,當然Windows安裝完附加工具後,有更實用的功能:你可以在主機和虛擬機之間隨意拖拽檔! 此外還有一些應用技巧,如不熟悉DOS編輯的朋友可將DOS安裝磁片當作第二硬碟掛接在另一個裝有Win98的虛擬機下,利用圖形介面編輯檔;又例如在虛擬機暫時不用的情況下可以按右Alt+P組合鍵暫停虛擬機運行,以釋放一部分記憶體。你甚至還可以通過VirtualPC和遊戲修改軟體如GameMaster的合作,修改常規情況下無法修改的遊戲。這些具體的操作就留待大家細細研究了。 來源:http://www.moyu.cn/info/284.htm