這個(gè)問題還是非常有難度的,F(xiàn)C游戲?qū)θ萘康目刂剖欠浅>_的,通常一款游戲也就幾十KB大小,游戲中的“圖形”自然不是以“圖片”的方式制作的。下面就來講解一下原理,希望大家不會(huì)被繞暈。
畫面分割
卡通塊與圖形字庫
調(diào)色板
音樂與音效畫面分割
組成FC游戲中畫面的最小單位是卡通塊,F(xiàn)C游戲的畫面是用一個(gè)個(gè)卡通塊(cell)拼出來的。每個(gè)網(wǎng)格就是一個(gè)cell,每個(gè)cell為8X8的點(diǎn)陣,與一個(gè)字符同樣大小。
《超級(jí)馬里奧兄弟》中,馬里奧在吃紅蘑菇之前為即由4個(gè)cell組成,當(dāng)吃了紅蘑菇之后身體長(zhǎng)大一倍,變?yōu)橛?6個(gè)cell組成。
一個(gè)問號(hào)圖形也是由4個(gè)cell組合拼成的(磚也是),通常將4個(gè)cell組成一個(gè)元素成為block。
卡通塊與圖形字庫
cell有一個(gè)圖形字庫稱為CHR,這個(gè)庫的大小是16X16的,一次最多可定義256個(gè)cell,序號(hào)依次為0-255。游戲中的所有cell都是從CHR庫中調(diào)用出來的,因此游戲中的所有畫面的cell其實(shí)都是重復(fù)使用的,圖片容量就被限定在這16X16=256的CHR之中。
調(diào)色板調(diào)色板是用來給卡通塊上色的,F(xiàn)C一共可以用53種顏色,調(diào)色盤從這53種顏色里選取3種顏色,“透明”也算一種顏色(此時(shí)顯示背景的底色),一共4種顏色。這4種顏色用來給方塊上色。這就意味著每個(gè)方塊只能有4種色彩。
用《惡魔城》的背景舉例,將其分割為32×30 = 960 個(gè)cell,2×2 = 4個(gè)cell組成一個(gè)block
CHR沒有顏色或位置,以圖塊的形式定義
cell的定義操作極其簡(jiǎn)單,系統(tǒng)規(guī)定一個(gè)cell由連續(xù)的四個(gè)內(nèi)存單元定義,第一個(gè)內(nèi)存單元指定cell顯示的Y坐標(biāo)、第二個(gè)為cell在CHR字庫中的序號(hào)、第三個(gè)為cell的顯示狀態(tài)(配色組合、左右翻轉(zhuǎn)、上下顛倒以及顯示于那個(gè)卡通頁面),第四個(gè)為cell顯示的X坐標(biāo)。編程中可任意指定定義卡通的內(nèi)存頁面。
調(diào)色板被分成幾部分,但是通過在不同區(qū)域之間共享顏色可以巧妙地隱藏這一事實(shí)。大門中間的紅色與周圍的墻壁融為一體,黑色背景模糊了城堡和大門之間的界限。
循環(huán)音樂為了節(jié)約容量,很多FC游戲都會(huì)使用循環(huán)音樂。有一些游戲?yàn)榱吮WC更好的音樂和音效,還會(huì)單獨(dú)使用音樂音效增強(qiáng)元器件,在卡帶的硬件層面做處理。
2個(gè)方波(主旋律),1個(gè)三角波(低音),1個(gè)噪音波(高音),1個(gè)PCM(語音)
運(yùn)動(dòng)中的角色FC紅白機(jī)會(huì)將運(yùn)動(dòng)中的角色儲(chǔ)存于顯卡的特定內(nèi)置儲(chǔ)存區(qū)域,這樣我們看到的角色會(huì)以一個(gè)整體的結(jié)構(gòu)進(jìn)行移動(dòng),就像上面提到的小馬里奧是4個(gè)cell拼成的一個(gè)整體。角色的顯示是覆蓋背景的,無論背景如何設(shè)置,在角色覆蓋到上層時(shí)會(huì)被設(shè)置成角色的顏色。
滾屏FC之前的游戲,在滾屏操作時(shí)幾乎要覆寫整個(gè)畫面,性價(jià)比非常低。FC內(nèi)部PPU可以預(yù)先儲(chǔ)存超過顯示部分的內(nèi)容,玩家在觸發(fā)滾屏操作后,可以移動(dòng)游戲鏡頭。
FC顯示畫面與聲音原理非常復(fù)雜,大家就簡(jiǎn)單了解一下吧,任天堂的黑科技太多了