免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
當(dāng)年的精彩:DOS游戲懷舊全攻略 - 電腦游戲綜合 - 電腦游戲區(qū) - 游戲人的家 - P...
1、運(yùn)行exe時(shí)出現(xiàn)Runtime error xxx at xxxx-xxxx,比如仙劍的install.exe。

  出現(xiàn)這種問題可能的原因比較多,如果確定游戲本身沒有問題,或者曾經(jīng)有過正常運(yùn)行的歷史,則基本可以判斷是CPU和內(nèi)存的問題了。Runtime error后面的錯(cuò)誤編號(hào)可以幫助判斷錯(cuò)誤原因,最常見的是Runtime error 200,這是因?yàn)镃PU速度太快引起的,具體問題分析和解決請(qǐng)參見第五章“搗亂的嘍羅”。

  2、運(yùn)行游戲時(shí)顯示:
  Error: Free memory is not enough 570k,或Base memory not enough,這是常規(guī)內(nèi)存不足,可能是加載了太多的常駐程序所至。

  3、運(yùn)行游戲時(shí)顯示:
  XMS not found! 這是因?yàn)闆]有加載擴(kuò)展內(nèi)存管理程序himem.sys所致。

  4、運(yùn)行游戲時(shí)顯示:
  XMS = -xxxxx,Error: XMS is not enough xxxk,這是因?yàn)閤ms太大,而很多老游戲采用了一個(gè)signed integer來存儲(chǔ)xms的數(shù)量,導(dǎo)致32767以上的數(shù)值變成負(fù)數(shù)。

  5、運(yùn)行游戲時(shí)顯示:
  Error: No EMS found!!! 這是因?yàn)樵趦?nèi)存配置時(shí)加載了關(guān)閉EMS的選項(xiàng),可以通過修改config.sys來解決。

  6、運(yùn)行游戲時(shí)顯示:
  EMM386 has detected error #xx in an application at memory address xxxx:xxxx. To minimize the chance of data loss, EMM386 has halted your computer. For more information, see the readme.txt file. To restart your computer, press enter. 然后死機(jī)。這是EMM386的設(shè)置有問題,可以根據(jù)游戲的要求,對(duì)config.sys進(jìn)行修改。

  以上問題,請(qǐng)參見第三章“內(nèi)存的結(jié)界”。

  7、游戲的音樂和音效問題。音樂的設(shè)置相對(duì)簡(jiǎn)單,但多數(shù)人玩仙劍沒有音效,采用AC“97集成聲卡的更可憐,很多玩友連音樂都沒有……這是因?yàn)樾碌牟僮?span id="fu8ihs5fyo3" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CF%B5%CD%B3">系統(tǒng)對(duì)中斷、DMA的管理方式做了改動(dòng),以前的DOS游戲出現(xiàn)了很多兼容性問題。另外大多數(shù)AC”97集成聲卡都不支持DOS,或者根本不提供DOS驅(qū)動(dòng)程序。目前只有CMI8738等少數(shù)硬聲卡可以支持DOS,如果你的聲卡是ALC650等軟聲卡的話,建議你買一塊PCI聲卡,老狼現(xiàn)在對(duì)這個(gè)問題沒有什么辦法。關(guān)于聲卡的問題,請(qǐng)參見第四章“聲音的女巫”。

  8、在純DOS系統(tǒng)下,游戲花屏直至死機(jī),這種問題雖然不常見,但卻直接影響我們游戲的進(jìn)行。這多半是因?yàn)槟愕娘@卡太新了,或者顯存太大了。另外,還可能與顯卡支持的VBE版本和BIOS中顯卡的相關(guān)設(shè)置有關(guān)。具體問題分析和解決請(qǐng)參見第五章“搗亂的嘍羅”。



內(nèi)存的問題是我們能否運(yùn)行游戲的關(guān)鍵,沒有聲音還好辦,好歹游戲還能玩;內(nèi)存出錯(cuò)可就慘了,給面子的來個(gè)xxx Error,不給面子的干脆死機(jī)!為了能把問題講的更清楚些,這里老狼先介紹一下混蛋微軟的內(nèi)存管理,有相關(guān)基礎(chǔ)的兄弟和不想浪費(fèi)時(shí)間的玩友不妨跳過這一段。以下內(nèi)容老狼參考了不少資料,涉及到微機(jī)原理相關(guān)內(nèi)容,如有不妥之處還請(qǐng)各位指正。

  1、結(jié)界的歷史

  1979年,Intel推出了具有20根數(shù)據(jù)總線的8088芯片,尋址能力為1MB,并且受到了IBM的扶植。另一方面,Microsoft在為基于8088的電腦設(shè)計(jì)的操作系統(tǒng)DOS中,采用了“段內(nèi)尋址”的方式,每個(gè)段的長(zhǎng)度為64K字節(jié),共有65535個(gè)段,但是因?yàn)槎闻c段之間可以互相重疊,段的起始地址間距為16字節(jié),所以DOS的尋址能力只有65535*16Byte,也就是1MB。然而,IBM認(rèn)為1MB實(shí)在太大了,沒有人會(huì)用到那么多的內(nèi)存,于是又把384K內(nèi)存(UMB,Upper Memory Block)分配給ROM BIOS和視頻內(nèi)存等等,于是,邪惡的640K結(jié)界形成了,出于兼容性的考慮,此后的DOS一直保留著原有的內(nèi)存管理機(jī)制。這個(gè)640K的Base memory,又叫Conventional memory,是系統(tǒng)最基本內(nèi)存,它是DOS和所有程序都可以用的內(nèi)存區(qū),被稱為常規(guī)內(nèi)存。它是系統(tǒng)內(nèi)存中最寶貴、最緊張的資源,如果一個(gè)程序因?yàn)閮?nèi)存不夠而無法運(yùn)行,大多是因?yàn)檫@部分空間不夠使用造成的。

  隨著硬件的發(fā)展,80386DX已經(jīng)是32位微處理器,實(shí)際尋址能力達(dá)4GB,反觀舊的內(nèi)存管理規(guī)范卻處處礙手礙腳,于是擴(kuò)頁內(nèi)存Expanded memory規(guī)范橫空出世,取代了INT 15H,使程序能夠訪問32MB的內(nèi)存空間。EMS通過一種頁面映射分配技術(shù)的反復(fù)映射訪問所有的EMS內(nèi)存,這樣的效率并不高,所以只有少數(shù)老游戲使用了EMS,比如《魔神戰(zhàn)記2》。由于EMS并沒有解決根本的問題,Microsoft又制定了擴(kuò)展內(nèi)存Extended memory管理規(guī)范XMS,通過在實(shí)模式與保護(hù)模式之間的快速切換,使程序在保護(hù)模式中能夠直接使用系統(tǒng)所有內(nèi)存,從而快速訪問XMS。XMS簡(jiǎn)單而實(shí)際,被眾多DOS游戲采用。我們打破了結(jié)界嗎?還沒有!很多游戲采用了一個(gè)signed integer來存儲(chǔ)XMS的數(shù)量,導(dǎo)致32767以上的數(shù)值變成負(fù)數(shù),這就要求我們降低內(nèi)存數(shù)量了。唉,如果說640K的結(jié)界是天災(zāi),這個(gè)signed integer的結(jié)界就是人禍了。

  再后來,人們終于找到了理想的突破640K結(jié)界的方法:使用DOS保護(hù)模式(DOS Protected Mode)。80386及以后的CPU在電腦啟動(dòng)后都會(huì)進(jìn)入實(shí)模式(Real Mode),以兼容早期的8088。當(dāng)運(yùn)行在保護(hù)模式中時(shí),CPU的直接尋址能力高達(dá)4GB,并且提供了很多高級(jí)功能,使程序可以直接使用系統(tǒng)所有的內(nèi)存資源,常規(guī)內(nèi)存、擴(kuò)頁內(nèi)存和擴(kuò)展內(nèi)存統(tǒng)統(tǒng)失去了意義;并且,保護(hù)模式能夠充分發(fā)揮32位CPU的威力,極大的提高了效率。常玩游戲的各位一定對(duì)DOS4GW非常熟悉,它是Watcom C/C++專用的內(nèi)存管理工具,可以使程序運(yùn)行在32位保護(hù)模式下。著名的《金庸群俠傳》就是用了這個(gè)DOS擴(kuò)展器。運(yùn)行在32位保護(hù)模式下的游戲很少遇到內(nèi)存問題,只可惜這樣的游戲真是不多啊。

  2、賢者的符咒

  這里我們將結(jié)合config.sys中內(nèi)存的有關(guān)設(shè)置,結(jié)合具體游戲來介紹突破內(nèi)存結(jié)界的方法。config.sys是DOS的主要配置文件,放在系統(tǒng)盤的根目錄下。

  一個(gè)典型的config.sys,可以適應(yīng)多數(shù)游戲:

 ?、賒evice=c:\dos\himem.sys /testmem:off
 ?、赿evice=c:\dos\emm386.exe ram
 ?、踕evicehigh=c:\dos\ide.sys /d:MSCD000
 ?、躣os=high,umb
 ?、輋iles=30
 ?、辀uffers=30
 ?、遱tacks=9,256

  為了方便解釋,老狼在行首加了行號(hào)。

 ?、賖imem是XMS存儲(chǔ)器的管理驅(qū)動(dòng)程序,它的主要功能是把擴(kuò)展存儲(chǔ)器按XMS規(guī)范來管理,也就說,它把傳統(tǒng)的擴(kuò)展存儲(chǔ)器改造成了XMS存儲(chǔ)器。此外,HIMEM.SYS可以建立HMA(High Memory Area)存儲(chǔ)器供DOS使用。如果運(yùn)行游戲時(shí)顯示:XMS not found! 這就是因?yàn)闆]有加載himem.sys所致。為了加快啟動(dòng)的速度,可以在后面加上 /testmem:off 參數(shù),跳過內(nèi)存檢測(cè)。另外,加上 /cpuclock:on 可以修正系統(tǒng)時(shí)鐘速度變化的錯(cuò)誤。

 ?、趀mm386是EMS的管理驅(qū)動(dòng)程序。它的功能是把XMS存儲(chǔ)器模擬成EMS存儲(chǔ)器來使用,并且建立UMB存儲(chǔ)器。后面的ram參數(shù)表示同時(shí)建立UMB和EMS存儲(chǔ)器,如果你確定游戲不需要EMS內(nèi)存,可以考慮把ram換成noems參數(shù),這樣可以獲得更多的UMB空間。但如果運(yùn)行游戲時(shí)顯示:Error: No EMS found!!! 也就是說游戲要求使用ems,你就不能用noems參數(shù)了。如果運(yùn)行游戲時(shí)顯示:Error: Free memory is not enough 570k,或Base memory not enough,這是常規(guī)內(nèi)存不足,應(yīng)該考慮減少常駐內(nèi)存的程序或?qū)⒊绦蚣虞d到UMB中。

  ③devicehigh=c:\dos\ide.sys /d:MSCD000,這是光驅(qū)的驅(qū)動(dòng)程序,devicehigh表示把程序加載到UMB中,這樣可以為常規(guī)內(nèi)存騰出更多的空間。如果你不需要在DOS下使用光驅(qū),這行可以省略。

  ④dos=high,umb,設(shè)置DOS占用的內(nèi)存,high表示把DOS核心部分裝入HMA以節(jié)省常規(guī)內(nèi)存,umb表示允許DOS與UMB建立聯(lián)系,以便裝載TSR程序或設(shè)備驅(qū)動(dòng)程序到UMB中,若改成noumb則表示不允許使用UMB。

 ?、輋iles=30,設(shè)定程序可以同時(shí)打開的最大文件數(shù),若不寫這一行,相當(dāng)于默認(rèn)值files=10,可能導(dǎo)致大型程序運(yùn)行失敗。

 ?、辀uffers=30,設(shè)定緩沖區(qū)數(shù)量。DOS默認(rèn)緩沖區(qū)數(shù)Buffers的值為15,每個(gè)Buffer占523字節(jié)。如果設(shè)定了DOS=HIGH,Buffers會(huì)移到HMA中,這當(dāng)然是好事,但是如果用戶自己設(shè)定的Buffers太大,超過47個(gè),則HMA裝入DOS核心后的剩余空間無法容納,就把全部Buffers移至常規(guī)內(nèi)存中,這將得不償失,30的數(shù)量比較合理。buffers還可以在后面加上一個(gè)數(shù)字,表示高速緩沖區(qū)數(shù)量,如buffers=20,8。老狼沒感覺到這個(gè)選項(xiàng)對(duì)游戲有什么影響,也就沒有使用過這種設(shè)置,所以就不管它了。

 ?、遱tacks=9,256,設(shè)定使用的堆棧的數(shù)量。第一個(gè)數(shù)字是堆棧數(shù)量,第二個(gè)是每個(gè)堆棧的大小。通常指定的值是9,256,這個(gè)值可以滿足大多數(shù)的需求。

  只有這些顯然是不夠的,讓我們?cè)賮砜纯雌渌赡苡龅降膬?nèi)存問題。如果運(yùn)行游戲時(shí)顯示:EMM386 has detected error #xx in an application at memory address xxxx:xxxx. To minimize the chance of data loss, EMM386 has halted your computer. For more information, see the readme.txt file. To restart your computer, press enter. 這多半已經(jīng)死機(jī)了,不過根據(jù)老狼的經(jīng)驗(yàn),出現(xiàn)這種錯(cuò)誤偶然成分居多,就好像windows的非法操作一樣,重新啟動(dòng)后多半就能恢復(fù)正常。如果還是不行,可能是EMM386的設(shè)置有問題,可以根據(jù)游戲的要求,對(duì)其進(jìn)行修改,遇到具體問題時(shí)我們?cè)?span id="fu8ihs5fyo3" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CC%D6%C2%DB">討論。

  下面是本章的重點(diǎn),很多玩友在玩游戲時(shí)收到的錯(cuò)誤信息是 XMS = -xxxxx,Error: XMS is not enough xxxk,冤枉啊,內(nèi)存怎么成了負(fù)數(shù)呢?其實(shí)這是因?yàn)閤ms太大,而很多老游戲偏偏采用了一個(gè)signed integer來存儲(chǔ)xms的數(shù)量,導(dǎo)致32767以上的數(shù)值變成負(fù)數(shù)。解決的辦法有很多,如果你的內(nèi)存是64M,你可以在運(yùn)行游戲之前運(yùn)行l(wèi)h smartdrv 32768 16384,加載高速磁盤緩沖程序。lh表示將smartdrv讀入U(xiǎn)MB,32768表示使用的內(nèi)存數(shù)量(KB),16384表示提供給windows的緩存數(shù)量。這樣一來,既減少了內(nèi)存,又增加了系統(tǒng)效率,一舉兩得。為什么高于64M內(nèi)存的電腦不能使用這種辦法呢?因?yàn)閟martdrv的緩存越大,它本身占用的空間也就越大,如果UMB容不下它,他會(huì)毫不客氣的搶占常規(guī)內(nèi)存,直接導(dǎo)致游戲無法運(yùn)行。實(shí)際上,加載帶/x參數(shù)的smartdrv可以極大的提高游戲性能,所以它是我們必備的法寶。

  還有一種辦法是使用虛擬硬盤程序,將內(nèi)存虛擬成硬盤,用很小的常規(guī)內(nèi)存或UMB就可以輕松占用掉大量XMS,很適合大內(nèi)存的玩友使用。DOS中自帶的ramdrive.sys必須在config.sys中加載,一旦加載就不可調(diào)整內(nèi)存盤的大小或刪除。而且虛擬硬盤有容量限制,不能超過32M,它們自己還占用較多的常規(guī)內(nèi)存。幸好有人開發(fā)了完美的虛擬硬盤軟件XMSDSK,這個(gè)小東西的好處太多了,它可以在命令行方式下無限次動(dòng)態(tài)調(diào)節(jié)虛擬硬盤的大小,并可以隨時(shí)卸載;它占用內(nèi)存相當(dāng)才幾百字節(jié),而且能夠自動(dòng)調(diào)入到UMB,而不需用LH命令,最重要的是,它支持極大的內(nèi)存,目前高達(dá)2G!XMSDSK的使用非常簡(jiǎn)單,只需執(zhí)行xmsdsk xxxxx就行了,單位是KB。卸載的命令是xmsdsk /u,非常輕松。下載地址是http://firststep.ahwww.com/dosware/xmsdsk.exe。

  如果你打算在windows下玩老游戲,以上問題的解決就更簡(jiǎn)單了,直接編輯游戲可執(zhí)行文件的屬性,點(diǎn)“內(nèi)存”,然后按照需要選擇合適的內(nèi)存數(shù)量即可。但你可能要忍受無聲甚至噪音的痛苦,而且多數(shù)游戲的時(shí)鐘會(huì)有所變化。

  另外,通過himem.sys調(diào)用int 15h也可以限制內(nèi)存,但15h中斷很不安全,微軟早已放棄使用了,而且從未公布himem的int 15h用法,所以這種辦法不推薦使用,有興趣的朋友可以自己查閱相關(guān)資料。

  到這里,我們不妨編一個(gè)批處理文件來簡(jiǎn)化我們玩游戲的過程,建立一個(gè)擴(kuò)展名是bat的文件,在里面輸入如下內(nèi)容(假定你的內(nèi)存是256M):

  lh c:\dos\smartdrv.exe /x
  lh c:\dos\xmsdsk.exe 240000 /y
  lh c:\dos\mouse.com

  以上的路徑和程序請(qǐng)根據(jù)個(gè)人的需要修改。

  到這里,相信大家在內(nèi)存方面不會(huì)遇到什么障礙了,多數(shù)游戲已經(jīng)能夠運(yùn)行起來,至于怎么讓游戲運(yùn)行得有聲有色、原汁原味,敬請(qǐng)期待后幾章的內(nèi)容。








DOS游戲最難搞的是什么?聲卡!隨著微軟帝國(guó)的擴(kuò)張,聲音的女巫無情的剝奪了我們游戲的樂趣。沒有了聲音,游戲的色彩大打折扣,直接影響著我們懷舊的心情。本章將從聲卡工作原理與游戲聲卡編程入手,向大家介紹相關(guān)的知識(shí)和設(shè)置。與前幾章一樣,你可以跳過原理部分的內(nèi)容,直接根據(jù)自己的情況選擇合適的設(shè)置。OK,先來一聲狼叫試試嗓子,嗷嗷嗷~~~

  1、聲卡的基本概念。熟悉聲卡設(shè)置的朋友肯定對(duì)以下的名詞有著深厚的感情:IRQ、I/O Address、DMA……我們不妨回顧一下這些概念。

  IRQ(Interrupt Request中斷請(qǐng)求)是由某個(gè)設(shè)備發(fā)出的請(qǐng)求CPU產(chǎn)生中斷的一個(gè)請(qǐng)求響應(yīng)信號(hào)。當(dāng)某個(gè)設(shè)備發(fā)出中斷請(qǐng)求時(shí),CPU會(huì)暫停當(dāng)前的工作,根據(jù)中斷請(qǐng)求的優(yōu)先級(jí)來決定首先響應(yīng)哪一個(gè)設(shè)備的中斷請(qǐng)求。中斷請(qǐng)求IRQ0到1RQ15中,IRQ0的優(yōu)先級(jí)別最高,IRQ15最低。原則上,計(jì)算機(jī)中每個(gè)設(shè)備自身只有惟一的一個(gè)中斷請(qǐng)求通道,即IRQ值(又叫IRQ號(hào))。當(dāng)兩個(gè)硬件設(shè)備同時(shí)使用同一個(gè)IRQ時(shí),就會(huì)發(fā)生沖突,因?yàn)檫@時(shí)CPU已經(jīng)無法判斷收到的中斷請(qǐng)求究竟來自于哪個(gè)設(shè)備了。一個(gè)好好的DOS游戲到了win32環(huán)境下,由于中斷管理發(fā)生了很大的變化,聲卡在dos7.0下就會(huì)出現(xiàn)兼容性不好的問題,GUI中的問題則更多了。

  I/O Address(Input/Output Address輸入輸出地址),可以理解為CPU和外部設(shè)備之間的接口,在調(diào)用外部設(shè)備時(shí),程序通過I/O地址告訴CPU數(shù)據(jù)將要被傳送到什么地方。好比母老虎(程序)說:把啤酒(數(shù)據(jù))送到老狼的宿舍4036(設(shè)備I/O地址),老熊(CPU)就扛著酒上樓,如果送錯(cuò)了,只怕會(huì)被人當(dāng)成胡亂灌水的家伙拒之門外。聲卡常用的I/O是220h,有一些老聲卡甚至只能使用這個(gè)地址。多數(shù)的游戲會(huì)提供一個(gè)設(shè)置程序,允許玩家選擇自己的IRQ和I/O Address。

  DMA(Direct Memory Access直接內(nèi)存訪問),是一種完全由硬件執(zhí)行I/O交換的工作方式。在這種方式中,DMA控制器從CPU中完全接管對(duì)總線的控制,數(shù)據(jù)交換不經(jīng)過CPU,直接在內(nèi)存和I/O設(shè)備之間進(jìn)行。聲卡與內(nèi)存之間采用DMA方式傳送數(shù)據(jù),以便讓CPU有更多的時(shí)間去處理其它事情。在輸出聲音信號(hào)時(shí),用DMA方式將聲音數(shù)據(jù)直接從主內(nèi)存?zhèn)飨蚵暱ǖ木彌_區(qū),進(jìn)行數(shù)/模轉(zhuǎn)換后再送至音頻放大器,最后到揚(yáng)聲器發(fā)聲。DOS下的聲卡默認(rèn)的DMA通道是1,絕大多數(shù)游戲根本沒有給我們選擇的機(jī)會(huì),我們只能使用這個(gè)設(shè)置。遺憾的是,多數(shù)AC“97集成聲卡已經(jīng)不再占用DMA通道了,所以這些聲卡可能需要軟件模擬等方式來兼容老游戲。老狼的機(jī)器太破,跑不了虛擬機(jī)軟件,有興趣的朋友不妨試試。

  FM合成是運(yùn)用特定的算法,用正弦波來模擬樂器的聲音。其主要特點(diǎn)是電路簡(jiǎn)單、成本低,不需要存儲(chǔ)器支持。由于FM是靠算法來合成某個(gè)聲音,因此實(shí)現(xiàn)方法過于生硬、效果單一,所生成的聲音與真實(shí)樂器產(chǎn)生的聲音距離很大,電子味很濃。多數(shù)DOS游戲的音樂就是針對(duì)FM制作的,用FM聽雖然音色不逼真,確是實(shí)實(shí)在在的原汁原味。相對(duì)而言,Wavetable波表合成把真實(shí)的樂器采樣儲(chǔ)存起來,音色很逼真,卻并不適合用來玩老游戲,這一點(diǎn)很多朋友會(huì)有體會(huì)。比較好的PCI聲卡會(huì)提供兩種合成方式,比如老狼的Sonic Impact S70,在仙劍的設(shè)置中如果選擇“聲霸卡”,聽到的就是220h端口送出的FM音樂;如果選擇“聲霸卡+MIDI”,就能聽到330h端口送出的波表MIDI。330h本來是外部MPU-401的端口,在這里卻被模擬成了內(nèi)部MIDI,看來Diamond在兼容性方面確是下了不少苦功啊。

  2、為了解釋聲卡不正常的問題,我們先看看游戲中聲卡編程的原理。我們先來看一個(gè)函數(shù):

  void writefm(char reg,char data)
  {
  int ioport=0x220;
  outportb(ioport,reg);
  delay(1);
  outportb(ioport+1,data);
  delay(2);
  }

  聰明的你看了這些,一定會(huì)對(duì)I/O有一個(gè)更好的理解。通過對(duì)端口220h的操作,游戲就可以調(diào)用聲卡了。但在DOS這個(gè)單任務(wù)環(huán)境下,聲音和圖像、文字卻是同時(shí)出現(xiàn)的,這是怎么回事?讓我們先來了解一些程序中斷的相關(guān)知識(shí)。由外設(shè)控制器或協(xié)處理器引起的中斷稱為外中斷,由程序中安排的中斷指令I(lǐng)NT產(chǎn)生的中斷,或由CPU的某些錯(cuò)誤產(chǎn)生的中斷稱為內(nèi)中斷。下面是一些中斷的例子:INT 8h,每1/18.2秒定時(shí)器發(fā)出的中斷;INT 1ch,指向每1/18.2秒時(shí)可執(zhí)行的服務(wù)程序的入口;INT 71h,硬件中斷9。

  在IBM PC系統(tǒng)中,定時(shí)器中斷INT 1ch是獨(dú)立于CPU工作的,但因?yàn)樗侵赶騃NT 8h的入口,我們又叫它偽中斷。這一中斷在系統(tǒng)初始化后,中斷程序僅僅有一條IRET指令,但它是每秒發(fā)生18.2次的硬件中斷,如果改變這一中斷服務(wù)程序,使其指向其他進(jìn)程,這個(gè)進(jìn)程就能以每秒18.2次的速度工作。這樣,就可以通過不斷比較時(shí)鐘計(jì)數(shù)值和聲音計(jì)數(shù)值來實(shí)現(xiàn)背景音樂的播放了。當(dāng)然,具體的過程比這要復(fù)雜很多,感興趣的朋友可以查閱相關(guān)資料。

  3、我們可能遇到的問題。

 ?、貴M音樂時(shí)鐘不準(zhǔn),音樂忽快忽慢,尤其是在按鍵盤時(shí)。在Windows下運(yùn)行老游戲多有這樣的問題。究其原因,是因?yàn)槎鄶?shù)dos游戲只能通過調(diào)用偽中斷INT 1ch來實(shí)現(xiàn)諸如背景音樂的功能。而在Windows下中斷管理有了較大改動(dòng),所以會(huì)導(dǎo)致使用這個(gè)中斷的程序不正常。解決這個(gè)問題的辦法很簡(jiǎn)單,就是進(jìn)入純DOS環(huán)境。

 ?、赑CI聲卡的兼容性問題。PCI聲卡的DOS兼容性確實(shí)存在一些麻煩,這也許正是一些已經(jīng)購買了PCI聲卡的朋友常感到困惑的問題。盡管很多PCI聲卡廠商都宣布其產(chǎn)品在玩DOS游戲時(shí)沒有問題,可事實(shí)并非如此。究其原因是因?yàn)楝F(xiàn)在的一些PCI聲卡在聲音合成方式上同ISA聲卡有很大不同,它在DOS下不兼容原來的IRQ、DMA等設(shè)置,因此導(dǎo)致DOS的很多游戲不認(rèn)PCI聲卡,當(dāng)然也就沒有聲音了。這是PCI聲卡的一個(gè)共同弱點(diǎn),很多PCI聲卡廠家都推出了各自的解決方法,比如Diamond就開發(fā)出一個(gè)名叫SB-Emu的小程序可以解決兼容性問題。為了檢查你的PCI聲卡是否已經(jīng)具有DOS支持,可以在命令行模式下打入set,察看輸出結(jié)果是否包含Blaster=A220 I5 D1 T4這樣的一行,如果有,說明你的聲卡已經(jīng)安裝了DOS支持;如果沒有,你可能需要下載相關(guān)的驅(qū)動(dòng)程序了。

  另外,部分PCI聲卡(似乎非常少)使用了SB-Link來增強(qiáng)兼容性。這是一條連接主板與聲卡之間的5pin排線,不是每一款主板都設(shè)有這個(gè)接頭。SB-Link的作用就是將ISA總線的DMA和IRQ從主板傳送到PCI聲卡上,讓DOS游戲在ISA總線中找到聲卡的DMA和IRQ,從而提高PCI聲卡在DOS模式下工作的兼容性。創(chuàng)新和Diamond的部分聲卡采用了這種連線,如果你試過本章所有方法仍然解決不了兼容性問題,不妨考慮找一根SB-Link試試。

 ?、跘C”97集成聲卡的兼容性問題。這真是一個(gè)大難題,老狼現(xiàn)在還沒聽說過哪款A(yù)C“97軟聲卡能支持DOS,偏偏新出的主板還都一窩蜂的去趕軟聲卡的潮流。如果你的集成聲卡是硬件的,比如8738和CTxxxx,那老狼可要恭喜你了,他們都提供了DOS支持,請(qǐng)把他們當(dāng)成一般的PCI聲卡好了。對(duì)于軟聲卡,老狼聽說用虛擬機(jī)可以模擬成Sound Blaster Pro來用,只可惜我沒有機(jī)會(huì)測(cè)試。

 ?、茉鯓釉O(shè)置聲卡?建議你看看聲卡驅(qū)動(dòng)程序中是否包含有For DOS的驅(qū)動(dòng),如果有,裝之,并在Autoexec.bat中加入Set Blaster=A220 I5 D1 T4這種語句來設(shè)置聲卡的I/O地址、IRQ和DMA(多數(shù)聲卡會(huì)由驅(qū)動(dòng)程序自動(dòng)安裝完成),這樣PCI聲卡就可以被DOS游戲識(shí)別了。下面說說set blaster的用法:A后面的數(shù)字表示I/O Address,I后面的數(shù)字是IRQ,D后面的數(shù)字是DMA通道,T的參數(shù)最容易被忽略,卻是游戲是否能識(shí)別聲卡的關(guān)鍵:它表示聲卡的類型。因?yàn)镃reative公司是聲卡的老大,所以其他聲卡必須以之為標(biāo)準(zhǔn),將自己模擬成Creative公司的某種產(chǎn)品。T后面的數(shù)字1表示Sound Blaster 1.0,2表示Sound Blaster 1.5,3表示Sound Blaster 2.0,4表示低版本Sound Blaster Pro,5表示高版本的Sound Blaster Pro,6表示Sound Blaster 16及其兼容,如Sound Blaster AWE及Sound Blaster PCI等。按照老狼的經(jīng)驗(yàn),A220 I5 D1是兼容性最好的設(shè)置,T的類型就要參考你聲卡的相關(guān)資料了,如果它說“兼容Sound Blaster Pro”,你就毫不猶豫的寫上4吧。其實(shí),4和6是最常見的也是兼容性最好的。

 ?、萋暱ㄊ褂玫牟皇茿220 I5 D1的設(shè)置,游戲不認(rèn),但在autoexec.bat里改了set blaster卻無效?這可能是你的聲卡使用了特殊的設(shè)置方式,使Dos和Windows的設(shè)置掛了鉤。進(jìn)入Windows,選系統(tǒng)屬性,設(shè)備管理,找到你的聲卡最上層設(shè)備或SB Emu一類根DOS兼容有關(guān)的設(shè)備,選屬性,重新配置資源,改成A220 I5 D1的設(shè)置。如果出現(xiàn)資源沖突,不要理它,按照自己的意愿改好,然后按照它的要求重啟就行了。如果出現(xiàn)資源沖突,強(qiáng)烈建議你先禁用掉與之沖突的設(shè)備,先設(shè)置好聲卡再說。如果你沒有打印機(jī)等使用LPT的設(shè)備,可以在BIOS中把Parallel Port改成Disabled,可以節(jié)省一個(gè)IRQ。

 ?、薅荚O(shè)置好了仍然無聲或死機(jī)?進(jìn)入BIOS設(shè)置,在PCI/PNP Configuration中設(shè)置PNP OS Installed為Yes,Resouce Controlled By為Manual,然后在下面的列表中找到你聲卡的IRQ,如果你用的是PCI聲卡,選PCI/ISA PNP Device,如果是ISA聲卡,選Legacy ISA;對(duì)DMA也如此設(shè)置。好了,多數(shù)游戲已經(jīng)能正常發(fā)聲了,除了——

 ?、咭恍┯螒蛴幸魳罚瑳]有音效?一提到這個(gè)問題,老狼腦子里馬上出現(xiàn)兩個(gè)名字:仙劍!楓之舞!經(jīng)過不懈的努力,老狼終于把這老哥倆折騰出聲了!在完成了上面的聲卡設(shè)置后,運(yùn)行游戲的設(shè)置程序,可能是install.exe,按照你聲卡的設(shè)置情況調(diào)整設(shè)置,完成后選“中止”即可。運(yùn)行不了?請(qǐng)參見第五章?lián)v亂的嘍羅~。建議大家在游戲里存一個(gè)可以馬上遇到簡(jiǎn)單敵人的檔,比如仙靈島的入口,因?yàn)檫@一步可能需要很多次嘗試。請(qǐng)先檢驗(yàn)一下:進(jìn)入游戲,有音樂;開始游戲,戰(zhàn)斗,沒有音效?察看系統(tǒng)選單,音效是關(guān)還是開?如果是關(guān),不用徒勞去打開它了,你前面的設(shè)置肯定有問題,再折騰折騰吧。如果是開,請(qǐng)重啟,進(jìn)入BIOS設(shè)置,在Advanced Chipset Settings里找到Memory Hole At 15~16M,選Enable!這個(gè),老狼也很奇怪,和聲卡有啥關(guān)系???瘋狂查資料,等找到了再告訴大家吧。保存設(shè)置——音效有了嗎?如果還沒有,回到剛才的設(shè)置頁,有兩項(xiàng)8 bit IO Recovery Time和16 bit IO Recovery Time,兩項(xiàng)都改成2,呵呵,這下總行了吧?不行就再改大點(diǎn),不過超過3可能會(huì)死機(jī)哦,做好放電的準(zhǔn)備吧~~~

 ?、嗫紤]裝兩塊聲卡——PCI/ISA或PCI/AC”97。這也是很好的選擇,如果你按照上面的方法還是解決不了問題,只能考慮換聲卡了。老一點(diǎn)的機(jī)器還有ISA插槽,太好了,隨便買一塊ISA聲卡,找驅(qū)動(dòng),兩塊聲卡可以共存。而且既然是為了玩DOS游戲,Windows的驅(qū)動(dòng)完全可以不裝了,省得沖突。將ISA聲卡的Line Out用音頻線接入PCI聲卡的Line In,再把音箱接到PCI聲卡的輸出上,大功告成。老狼就在使用ALS200和Diamond S70的組合,任何一個(gè)都可以完全正常的玩DOS游戲,但ALS的FM音色更“古”些,所以在仙劍里我還是偏愛它的。

  如果你的主板沒有ISA槽,那就買一塊兼容性好的PCI聲卡吧,二手就行,一定要支持DOS。因?yàn)槌霈F(xiàn)沖突的可能性比較大,所以老狼勸你還是屏蔽掉集成聲卡。

  至于兩塊PCI聲卡共存,老狼除了死機(jī)啥結(jié)果也沒得到,難道是因?yàn)槲疫€不夠執(zhí)著?呵呵,算了,我放棄了。

  4、我的測(cè)試結(jié)果。

  我手頭的聲卡在大多數(shù)游戲都能正常發(fā)聲,共測(cè)試了4塊聲卡:ESS688(ISA),Diamond S70(ESS1968芯片,又稱Maestro2,PCI),S3 Sonic Vibes(PCI),ALS200(ISA)。

  ESS688完全沒有音樂,但音效正常,可能是卡的問題?

  S70一切正常!究極感動(dòng),真不枉老狼當(dāng)年400大洋請(qǐng)她回家~~~

  S3 Sonic Vibes原裝聲卡,可能是驅(qū)動(dòng)程序的原因,噪聲非常大,老狼沒有多試。不過老馬說他的啟亨小辣椒(同一芯片)完全正常,看來這塊卡還是有價(jià)值的。而且這是自帶DLS的聲卡,太少見了,是老狼的收藏品。

  ALS200完全正常,沒啥說的,老東西了。

  這幾天如果有機(jī)會(huì),我會(huì)在找一些卡來測(cè)試。以上關(guān)于BIOS設(shè)置的具體選項(xiàng)根據(jù)個(gè)人的主板不同可能略有區(qū)別,意思一樣即可。

  
除去前幾章提到的問題,還有很多雜七雜八的嘍羅影響游戲的正常運(yùn)行,下面是老狼曾經(jīng)遇到過的麻煩,希望對(duì)大家有所幫助。問題盡量從原理上加以解釋,以適合各種需要的玩家。

  1、CPU

  運(yùn)行exe時(shí)出現(xiàn)Runtime error 200 at xxxx-xxxx,比如仙劍的install.exe,新蜀山劍俠的mark.exe。

  多數(shù)情況下,這是因?yàn)檫@個(gè)exe是采用Borland Pascal 7.0編譯的,要解釋這個(gè)問題,就不得不說說Borland Pascal的歷史。使用Borland Pascal 6.0編譯的程序并沒有這樣的問題,但是這些程序的延遲(delay)在快速計(jì)算機(jī)上卻是完全錯(cuò)誤的。BP7修正了這個(gè)問題,卻帶來了更大的隱患:BP7編譯出來的所有使用系統(tǒng)CRT單元的程序在比較快的計(jì)算機(jī)上都會(huì)出現(xiàn)Runtime Error 200錯(cuò)誤。很可憐,幾乎所有的程序都會(huì)用到CRT單元。
  下面是這個(gè)錯(cuò)誤的一些解釋:CRT單元在初始化時(shí),會(huì)初始化delay procedure,delay初始化時(shí),會(huì)使用內(nèi)存地址為40:6C的每秒鐘跳動(dòng)18.2次的BIOS定時(shí)器,來計(jì)算55毫秒(1/18.2)需要多少條IRET空指令。這個(gè)數(shù)字會(huì)被除以55來得到能延遲1毫秒的數(shù)字,計(jì)算的結(jié)果被寫到一個(gè)2字節(jié)的變量里。這個(gè)變量的溢出就導(dǎo)致了Runtime Error 200。Runtime Error 200的含義是Division by zero,但在這里它是由溢出引起的。由此可見,比較快的計(jì)算機(jī)很可能導(dǎo)致這個(gè)錯(cuò)誤。

  既然知道了問題的起因,解決辦法也就有了——或者修正錯(cuò)誤,或者給CPU降速。直接修正錯(cuò)誤的軟件并不好找,而且對(duì)壓縮過的或加密過的exe無能為力,有時(shí)間的朋友可以找一個(gè)叫PROT 200的TSR程序,它可以自動(dòng)使后面有CRT單元問題的程序正常運(yùn)行,而不需修改文件本身。我們主要考慮第二種方法。http://www.thaisoftware.co.th/ftp/slowdown.com是一個(gè)很好的DOS下的降速軟件(還可以降Windows的速度)。選項(xiàng)很多,有熱鍵和命令行兩種方式。我們可以在游戲開始前運(yùn)行它,隨時(shí)按Ctrl+Alt+5鍵就可將速度降低50%,Ctrl+Alt+0就是恢復(fù)原來的速度。另外,每按一次Ctrl+Alt+加號(hào)鍵可以增加10%的速度,每按一次Ctrl+Alt+減號(hào)鍵可以減少10%的速度。如果熱鍵無效,用SLOWDOWN /P:55 install命令就可以以55%的速度來運(yùn)行install程序。有些游戲速度太快,沒辦法正常玩,用它也可以解決了。如果你覺得麻煩,可以在BIOS中把CPU的一級(jí)緩存CPU Internal Cache設(shè)成Disabled,這樣也可以極大的降低速度。

  2、顯卡

  在DOS下運(yùn)行仙劍花屏?這是由于老的DOS游戲不能夠支持AGP接口的大顯存顯卡。解決的辦法就是把顯卡偽裝成一個(gè)比較破的東西。經(jīng)常玩DOS游戲的朋友對(duì)于UNIVBE一定不會(huì)陌生:UNIVBE是Scitech出品的一種通用的顯示驅(qū)動(dòng)軟件,可以為各種不同的顯卡配備統(tǒng)一的標(biāo)準(zhǔn)VESA顯示驅(qū)動(dòng)程序,從而為各種游戲提供一致的圖形顯示接口。到了Windows時(shí)代,Scitech在UNIVBE的基礎(chǔ)上,出品了新的Scitech Display Doctor(簡(jiǎn)稱SDD),提供從DOS到Windows 3.x以至于Windows 98的全系列操作環(huán)境,并且包含對(duì)非常多的顯示卡的支持,用來解決在顯示卡使用過程中可能碰到的絕大多數(shù)與顯示相關(guān)的問題。遺憾的是,SDD已經(jīng)停止更新了,在Scitech的網(wǎng)站http://www.scitechsoft.com可以看到,最新版的SDD6.53提供了免費(fèi)下載和自由注冊(cè)碼,需要的朋友可以下載,老狼也不知道它能支持多少新顯卡。我們的偽裝主要是針對(duì)DOS的,所以在安裝以后最好把SDD的目錄Copy一份,以避免偽裝對(duì)Windows的影響。具體的方法是運(yùn)行下面兩條語句:

  C:\SDD2\UNIVBE32.EXE -w
  C:\SDD2\CONFIG.EXE -m1024

  第一行的意思是加載UNIVBE,并防止Windows的Logo扭曲;第二行中 -m1024的意思是把顯存限制為1MB,以解決花屏等問題。使用UNIVBE的好處還有一個(gè),就是為游戲提供更多種非標(biāo)準(zhǔn)分辨率的支持,這對(duì)一些模擬器非常有用。

  3、硬盤

  硬盤也有問題嗎?如果你想用DOS6.x玩游戲的話,你需要注意,這個(gè)系統(tǒng)是不支持FAT32分區(qū)的,而且,如果你的擴(kuò)展DOS分區(qū)大于8.4G,即使里面的邏輯盤采用了FAT16,DOS6.x還是不能識(shí)別。最好的辦法是使用DOS7.0,老狼還沒見過非要DOS6.x不可的游戲呢。如果你真的需要DOS6,可以考慮做一張DOS6的啟動(dòng)盤,然后在里面放上FAT32支持一類的軟件,Volkov Commander似乎不錯(cuò),老狼沒有用過,各位不妨試試看。

  另外,如果你的游戲還是遇到一些莫名其妙的問題,可以嘗試在BIOS中將硬盤的PIO調(diào)低一些,并關(guān)閉UDMA的選項(xiàng),以避免IDE計(jì)時(shí)器的相關(guān)問題。

  4、DOS7.x的設(shè)置

  Windows 9x所附帶的DOS7.x對(duì)老DOS游戲的兼容性不錯(cuò),我們可以通過修改MSDOS.SYS來讓我們的DOS7用得更舒服,順便獲得較多的常規(guī)內(nèi)存。下面向大家簡(jiǎn)要介紹一下:在DOS方式下,進(jìn)入系統(tǒng)盤根目錄,去掉MSDOS.SYS的屬性并修改之。對(duì)于系統(tǒng)盤是C盤的玩友,命令如下:

  c:
  cd attrib msdos.sys -h -s -r
  edit msdos.sys

  在彈出的頁面中找到[Options]這一段,改成以下內(nèi)容(;后面的內(nèi)容為注釋):

  BootMulti=1 ;允許多重引導(dǎo)
  BootMenu=1 ;出現(xiàn)多重引導(dǎo)菜單
  BootMenuDelay=30 ;菜單默認(rèn)項(xiàng)等待時(shí)間
  BootGUI=1 ;以normal啟動(dòng)是否直接進(jìn)入圖形界面
  DoubleBuffer=1 ;磁盤緩沖,并不占多少內(nèi)存,留著算了
  Logo=0 ;是否顯示LOGO
  Dblspace=1 ;設(shè)置成1可以獲得對(duì)壓縮盤的支持
  drvspace=1 ;同上,這兩項(xiàng)對(duì)內(nèi)存也沒有什么影響
  AutoScan=1 ;非法關(guān)機(jī)后是否自動(dòng)檢查硬盤

  值得一提的是,MSDOS.SYS中大片的XXX是為了兼容性而設(shè)置的,不要?jiǎng)h掉。編輯完成后,保存退出,打

  attrib msdos.sys +s +r +h

  以策萬全。這樣的設(shè)置配合我在第三章給出的CONFIG.SYS,可以獲得600k以上常規(guī)內(nèi)存,如果不加載光驅(qū)等,可達(dá)621k,足以滿足游戲的需要。

  5、日文游戲的解決辦法。DOS/V似乎是一個(gè)很難纏的家伙,這里有一個(gè)據(jù)說是DOS/V的完美替代品http://firststep.ahwww.com/dosware/dosj.zip,老狼沒有試過,想玩日文游戲的玩友不妨下載一個(gè)。

  6、呼,暫時(shí)想不到了~~~嘍羅難免有漏網(wǎng)的,膽敢現(xiàn)身者格殺勿論!

  洋洋灑灑一大堆字寫下來,也不知道對(duì)大家有幫助沒有,反正老狼現(xiàn)在正在痛痛快快的懷舊呢,祝大家都能有一個(gè)好的懷舊心情!最后奉上我的一些游戲的運(yùn)行情況:

  仙劍奇?zhèn)b傳,Windows下音效不正常,F(xiàn)M音樂時(shí)鐘不正常。DOS各版本下均調(diào)試通過,install.exe需降速使用,若無音效,需打開Memory Hole。

  軒轅劍2,Windows和DOS下完全正常。

  軒轅劍外傳——楓之舞,Windows和DOS下完全正常。

  新蜀山劍俠,Windows下FM音樂時(shí)鐘不正常,有音效時(shí)出現(xiàn)噪音,速度奇慢,但不影響游戲。DOS下一切正常。如果屏幕閃爍,請(qǐng)運(yùn)行play1.bat進(jìn)入游戲;mark.exe只是一個(gè)商標(biāo),需降速使用。

  金庸群俠傳,Windows和DOS下完全正常。

  魔神戰(zhàn)記2,Windows下不能運(yùn)行,DOS下emm386的參數(shù)不能是noems,退出時(shí)偶爾死機(jī),其余一切正常。

  皇帝,Windows下和DOS下完全正常,DOS下需加載鼠標(biāo)驅(qū)動(dòng)程序。

  歡樂幸福人,Windows下不能運(yùn)行,DOS下完全正常,需加載鼠標(biāo)驅(qū)動(dòng)程序。

  大富翁3,Windows下FM音樂時(shí)鐘不正常,DOS下完全正常,DOS下可選鼠標(biāo)驅(qū)動(dòng)程序。

  明星志愿,Windows下FM音樂時(shí)鐘不正常,音調(diào)不準(zhǔn),DOS下完全正常,DOS下可選鼠標(biāo)驅(qū)動(dòng)程序。

  超級(jí)醫(yī)生2,Windows下和DOS下完全正常,DOS下可選鼠標(biāo)驅(qū)動(dòng)程序。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
電腦硬件知識(shí)大全(看完了你就成硬件高手了)
硬件知識(shí)大全
DOS常用命令集錦
【推薦】XP下老游戲重玩總攻略! 霏凡論壇
電腦硬件知識(shí)大全(硬件故障)
電腦常見故障分析和對(duì)策(二)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服