小華的部落格: 2010/3/28 - 2010/4/4

搜尋此網誌

網頁

星期六, 4月 03, 2010

DirectX v.s VGA driver

最近重新安裝我的工作機的作業系統; 在安裝後,順便安裝了平常在玩的網路遊戲光碟,
結果在執行的時候,卻發現他跳出了一個錯誤訊息:

File=dxvideo.cpp,Line=649,Code=80004001

原本以為是VGA driver的問題,所以花了很多時間去找了最新版的Nvidia driver重新安裝,
然後再去抓了DirectX for XP SP3的更新檔來安裝! 但是結果還是沒辦法進入遊戲之中!

因此秉持著研究的精神,先去研究了一下這個網路遊戲需要的解析度,發現這個2D網路遊戲
神州Online 是預設 640 x 480 x 16 的解析度,而網路上相關的討論是說去修改遊戲目錄內的

Online.ini:
[SYSTEM]
Width = 800
Height = 600
Fullscreen = 0
Switchscreen = 1

把他強制設定成800 x 600這樣子就可以進入遊戲,然後不要全螢幕(Fullscreen = 0) ,
而Switchscreen =1是用來設定這款遊戲能不能用Alt+Enter 來切換視窗化!
雖然這樣子可以進入遊戲 ,但是畫面就是變成視窗化那樣子! 玩起來總是感覺怪怪的!

因此很不死心的繼續追問題~在google大神找了很久之後發現可以利用Dxdiag這個工具來檢
查一下你的系統的DirectX有沒有甚麼問題!

因此我就選了開始->執行->鍵入dxdiag,然後就看到測試的視窗出現了!
從畫面上可以看到我的顯示晶片是Quadro NVS 140M,然後你可以點選【測試DirectDraw】
或是【測試Direct3D】,我是先選了【測試DirectDraw】。

然後就看到了下面的地方出現了:
DirectDraw test results: Failure at step 17 (SetDisplayMode to 640x480x16): HRESULT = 0x80004001 (Not implemented)
Direct3D 7 test results: Failure at step 39 (SetDisplayMode to 640x480x16): HRESULT = 0x80004001 (Not implemented)


啥米? 我的螢幕解析度不支援640 x 480??! 所以我就看了一下我的螢幕解析度的支援!
還真的不能使用640 x 480,最小只到800 x 600 ,難怪我的遊戲一直會出現dxvideo.cpp 有問題!
因為根本就沒辦法切過去640 x 480!

而知道的問題的原因之後,就開始針對Quadro NVS 140M來找解決方案!
然後就找到了一個網站跟他所提到的工具可以解決這個顯示晶片不支援640x480的方法:

http://werdna1222coldcodes.blogspot.com/2010/02/directdraw-init-failed.html

於是在使用了這個RivaTuner的方式自己增加了一個640x480x16的解析度之後,再重新開機!
開機完重新執行dxdiag跟我的網路遊戲,結果問題真的就解決了耶!

所以結論就是: 太好的VGA,會讓你沒辦法玩舊款遊戲! 但是想玩遊戲,就只好多認真點學些
東西!
希望這篇文章能夠幫助一些人可以多玩一些遊戲啦~ 呵呵!