018. 顯卡的發展歷史回顧--之二
來自專欄 現代計算機
018. 顯卡的發展歷史回顧--之二
根據計劃,本來這一節是說講VESA的,但是覺得MDA/CGA還有很多有意思的地方,所以決定和大家一起了解一下MDA/CGA模式下一些好玩的玩法。
上一節講到顯卡發展的三個階段,分別是文本模式、彩色模式和3D模式。這個是我自己胡亂劃分的,可能劃分的不是很准。 其實我所說的文本模式基本可以對應MDA顯卡,彩色模式則指可以控制單個像素顏色顯卡,它包括CGA顯卡以及後續的VESA顯卡等。
好玩的文本模式
CGA顯卡的標準文本模式
這裡說的CGA顯卡是指IBM出來標準CGA顯卡。
它支持4個BIOS文本模式:
- BIOS Mode 0/1: 40列X25行文本,16種顏色。每個字元佔用8X8個像素。屏幕解析度是320X200。每個文本位可以顯示256個字元中的一個,具體對應關係由code page決定,支持8個code page。BIOS Mode 0不支持彩色,只顯示灰階,BIOS Mode 1支持彩色。
- BIOS Mode 2/3: 80列X25行文本,16種顏色。每個字元佔用8X8個像素。屏幕解析度640X200。支持4個Code page。BIOS Mode 2不支持彩色。
一提到文本模式,大家可能想到的只是一個黑黑的屏幕上,顯示一行一行的字元,看起來一點意思都沒有。但任何艱苦的條件都限制不了人們的想像力。在MDA上,或是在CGA上使用文本模式時,人們還是可以實現一些比較有意思的顯示的。比如說:
這個雖然看起來有些簡陋,但是已經看起來好看了很多,對於初學電腦的人友好了不少。
實際上文本模式能做的事情遠不止這些。文本模式下也可以玩出很多花樣的。
ASCII art
可能有人對linux比較熟,他們就會知道一些好玩的東西,比如說ascii art,比如說在command line播放視頻。ASCII art是通過顯示不同像素密度的文字來模擬大像素的。
用文本模擬像素
下面這個圖片展示的是一個遊戲,大家可以猜得到這個用文本模式顯示出來的,但這個遊戲只用到了一個字元,拿這個字元當作一個像素來繪製整個遊戲。
在文本模式下,這個顯卡只支持80列X25行的文本。為了畫圖形,軟體作者要對行列做更精細的控制,所以他通過把cell height寄存器的值從8設置為2,把文本的高度由8個像素改成了2個像素,這樣原來在橫向上能顯示25行的屏幕就可以顯示100行了,這時一個文本一個列只顯示了兩個頂部的像素。在文本模式下,每個字元可以單獨設置前景色和背景色,有一個字元的像素是畫滿字元左半部分的,右半部分是空的,即這個字元所在的方塊左半部分顯示的是前景色,右半部分顯示的是背景色,作者可以通過合理設置它的前景色和背景色,讓他來顯示相同或不同的顏色,從而可以用這個字元來模擬兩個大像素。這樣作者通過一個字元把一個80X25顯示文本顯示區域變成了一個160X100的圖形顯示區域。
下圖是一個大像素的顯示圖,它包含豎向兩個像素,和橫向4個向素。
彩色模式的一些黑科技
最初的彩色顯示遠沒有現在的顯示這麼方便,顯示器也沒有現在的顯示器好用,所以人家想出了很多方法來越過這個限制。
標準圖形模式
CGA顯卡提供3種標準BIOS圖形模式,也稱為all points addressable模式。
- BIOS Mode 4/5: 320 X 200像素,同一時間僅能顯示4種顏色,總共有16種顏色。BIOS Mode 4和5都是這種模式,4和5的區別在於BIOS Mode 4使能彩色顯示,BIOS Mode 5關閉彩色顯示,只顯示灰階。
- BIOS Mode 6: 640 X 200像素,只是單色模式,即背景色固定為黑色,前景色可以選為別的顏色,但只能有一種前景色。
突破圖形模式限制的技巧
- 運行時改變調色板
在4.77MHz的8088 CPU上,通過嚴格的時序控制,可以在每個掃描行上應用不同的調色板。從而打破同時只能使用4種顏色的限制。
- 通過dittering顯示調色板不提供的顏色
即利用不同顏色的混合出現,顯示一個混合後的顏色,比如說紅色和藍色混合出紫色。
- 通過模擬電視顯示器的缺陷顯示1024種顏色
模擬電視顯示器的信號只有一路,而且是模擬的,很容易出現一些時序問題,從而導致相臨的顏色互相干擾。
有經驗的程序員卻可以通過合理利用這個缺點,讓CGA顯示同時顯示16種顏色,甚至組合利用其他技巧突破調色板限制,製造出1024種顏色。
具體可以參考:
https://en.wikipedia.org/wiki/Composite_artifact_colors
推薦閱讀:
※說說幀率的那些事兒
※[轉載]Agisoft PhotoScan 1.4.1多卡效率測試(i7 8700K/i9 7960X/Threadripper 1950X對比測試)
※思考,新卡到來前怎麼高價賣老卡?
※[轉載]達芬奇 DaVinci Resolve 14多卡效率分析(i9/至強W/雙路至強 對比測試)
※AMD 7nm Vega20顯卡跑分曝光:和上一代Vega相差不大