|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-05-13, 10:36 PM | #1 |
|
請問如何在xp完dos game
請問各位高手
我有一個鋤大d的game應該算dos的吧... 我之前在98玩都正常 在xp下都停在開始的畫面 還有一些在dos下的小遊戲都一樣 有人能解答嗎 謝謝 |
送花文章: 0,
|
2004-05-16, 11:31 AM | #3 (permalink) |
註冊會員
|
你可參考以下的方式,這也是在史板看到的,內容有點長,
有興趣的話就把它看完吧! 新系統下傳統老遊戲重玩全攻略【轉帖】 -------------------------------------------------------------------------------- 編者按:無需再為過去那些傳統的遊戲立碑作傳,對於老玩家,它們的意義已不僅是開啟電腦之門的鑰匙,而更是一種關於時間的回憶——如果你是跟隨著《大眾軟體》一同走過這段年代,這種記憶也許會更深刻。當然現在也有不少玩家只是在某個特殊的情況下接觸了一些老遊戲,儘管它們可能已無法發聲、更缺乏華麗的動畫,然而精彩的情節與對白、嚴謹的設計與畫風,仍有可能給你一種特殊的吸引力。不過遊戲畢竟還是屬於應用軟體,凡屬應用軟體就必須嚴格遵守其所在操作系統制訂的規則。因此,當微軟年復一年推出新操作系統的同時,無數的軟體在新規則下結束了曾經輝煌的時光,這裡面當然也包括了大量的傳統老遊戲——是的,無需為它們歎息,因為永遠有更好的軟體、更精彩的遊戲不斷出現。只是,過去的這些真的已經成為——告別的年代,失色的回憶?你不妨帶著這樣的疑問來看這篇文章。 「新」與「老」當然是相對的,不過在開篇之前有必要確定我們的討論範疇,這裡的「老」是指為Win98之前的操作系統,包括DOS和Win32/95,而新系統則是指Win98/2000/XP。毫無疑問,有很多老遊戲都很值得我們來重溫,但重溫的方法也各異,有的人會去買例如奔騰133的「老爺級」機器,專門用於玩老遊戲;不過老PC也不是誰都能買到的,而且為了玩老遊戲真願意如此大動干戈,也算是骨灰級玩家了。於是典型的解決方法是採用多系統,其中有一個系統裝上MSDOS 6.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虛擬機支持(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)擴充記憶體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」並Enter鍵,在開啟的Command視窗中改變目錄到遊戲安裝目錄,逐條輸入3行指令,當執行完Univbe後,提示找不到所支持的顯示卡(圖3),暫時不去理會,執行完最後一條指令Game,在螢幕上看到一行字:EMS memory manager not found(找不到EMS記憶體管理器)。難道是因為WinXP的NTVDM預設就不載入EMM嗎? 事實正是如此。在前面提到的Config.nt文件裡關於EMS的說明中,筆者發現這麼一段話(圖4):EMS的大小將由Pif文件決定,這個Pif文件要麼是DOS程序的建立捷逕,要麼預設為系統碟Windows目錄下的_default.pif,如果在Pif文件的設定中EMS被設定為「0」,則EMM將不會載入。 大家對Pif文件及其圖示一定都不會陌生,從Win3X時代起,為了能在視窗界面中給DOS程序提供自訂的記憶體配置,微軟設計了一個「Pif」的概念,看起來這個Pif只是原來程序的一個建立捷逕,實際上可以在其中進行大量的自訂設定。由於遊戲安裝目錄下找不到任何Pif文件,所以根據以上一段說明,雙按時將會使用_default.pif中的設定。於是我們找到_default.pif,並在其上點擊右鍵選項彈出功能表中的「內容」(圖5),在開啟的對話視窗中點「記憶體」標籤卡,發現裡面的EMS赫然設為「無」(圖6)!《中關村啟示錄》執行需要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」指令,Enter鍵之後驚喜的看到了遊戲的開始畫面(圖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)。 反思及總結:這類問題的出現比較集中,因為直接雙按可執行文件,所啟動的NTVDM預設不支持EMS。對於.exe和.com文件,直接在內容中設定好EMS即可,若是.bat文件,則需參考上述間接修改方法。 (2)一般記憶體的正確配置 實例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。 反思及總結:這個例子中並不需要DPMI的支持,但若是碰上了既需要DPMI,同時又得不到一般記憶體的遊戲怎麼辦?我們還是有辦法的,只需修改Config.nt文件,在其中加入一行「EMM = RAM」。這樣配置後MOUSE和DOSX等程序會部分或全部從一般記憶體中移到上位記憶體中,從而獲得大量的一般記憶體(圖16,這是修改後用「mem /c |more」指令進行檢視的結果,可見DOSX已進入上位記憶體,而可用一般記憶體也達到了615.3kB之多)。最後需要說明,EMS和可用一般記憶體顯然存在潛在性的資源爭奪,系統之所以不將EMS預設設為「自動」,原因在於設定EMS後,一些原來駐留在上位記憶體的一些程序就會被趕到一般記憶體中去,從而導致可用一般記憶體減小,所以應根據DOS程序需要選項是否使用EMS。 2.聲音及其他相容問題的解決 從上述說明來看,記憶體問題在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中還有可能存在其他一些相容問題,例如程序不能對軟式磁碟機進行任意設定等,在下面這個例子中會有全面的反映。 實例3:《大富翁3》 這可是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螢幕一過,你就能聽到熟悉的音樂了! 實例4:《天使帝國Ⅱ》 有了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」指令並Enter鍵,之後再執行Play.bat,一樣可達到出聲和降速的目的。 (二)Win2000相對於WinXP的附加說明 在記憶體配置方面,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下工作的用戶只好忍受這種相容性問題的痛苦了。 編者註:本文上實際上探討了NT系統下DOS遊戲的玩法,下一部分則有新的焦點:Win98下DOS遊戲解決方案,Win32/Win95遊戲在WinXP/2000/98下的重現,以及終極解決方案Virtual PC的縱深介紹——內容精彩,可不要讓它與你擦肩而過 (三)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...ml,這裡有不少?/a>`用音效卡的DOS通用驅動,只要晶片相近即可使用。 其實你也可仔細檢視一下遊戲安裝目錄下的文件,許多DOS遊戲本身都帶有最簡單最相e的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)。 (三)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...ml,這裡有不少?/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)。這些具體的操作就留待大家細細研究了。 結語:歷時一個月的專題終於完成,評測室的兩位同事也幾乎累得不成樣(有興趣的朋友可參考本期「大眾閒話」中炎楓以「春秋筆法」寫的工作手記)。讀者朋友大概很難去想像這篇文章背後的艱辛,我們面臨的是跨越了一個年代的海量老遊戲,每一款遊戲從不能執行到成功重玩,都可以讓評測人員由恨生愛。不過這一切終於有了成品——它靜靜地待在這兒等待著你的評價。老遊戲對新系統,實際上牽涉的是少有提及的系統設計深層次的原理。由遊戲到電腦套用高手,是不少業界精英走過的道路,我們也想通過這篇文章展示我們對這條道路的理解。事實上,沒有人可以使每一款遊戲都「死」而復「生」,但如果這篇文章能夠引起大家動手解決問題的慾望,就是我們最大的心願了。對了,如果你發現了什麼新的解決方法,別忘了通過我們和大家——一起分享 |
送花文章: 0,
|