日日夜夜精品,午夜在线精品无码视频,99国产精品白浆无码流出,亚洲国产第一视频不卡

<b id="9229t"><tbody id="9229t"><ol id="9229t"></ol></tbody></b>
    1. <table id="9229t"></table>

        <source id="9229t"></source>

        湖北企業(yè)新聞網(wǎng),歡迎您!

        幫助中心 廣告聯(lián)系

        網(wǎng)站關(guān)鍵詞: 湖北企業(yè)新聞網(wǎng)

        FC游戲常見(jiàn)【BUG】背后的原理和真相!

        來(lái)源:時(shí)間:2021-02-01 07:46:09 閱讀:-


        FC游戲常見(jiàn)【BUG】背后的原理和真相


        如果你的童年有過(guò)FC的陪伴,那你對(duì)以下的兩個(gè)情況肯定不會(huì)陌生:

        1:閃爍 2:花屏


        FC游戲常見(jiàn)【BUG】背后的原理和真相

        典型的花屏場(chǎng)景


        在信息的交流和獲取都非常落后的年代,大部分小伙伴都不清楚導(dǎo)致這種情況的原因。很多時(shí)候會(huì)以為自己的主機(jī)或者卡帶出了問(wèn)題,進(jìn)而研究出了“吹氣修復(fù)法”等秘技。甚至,這些常見(jiàn)的現(xiàn)象,和某些信息混雜在一起,組合成了新的“傳說(shuō)”,最典型的莫過(guò)于魂斗羅的“水下八關(guān)”——傳說(shuō)在魂斗羅1代第六關(guān)的關(guān)底,刷新一個(gè)向右跑動(dòng)的雜兵,然后跟著他跑,在進(jìn)入BOSS戰(zhàn)后小兵會(huì)花屏,這時(shí)候跳到他身上就能開(kāi)啟水下八關(guān)。這條傳聞已經(jīng)被多次證實(shí)是子虛烏有的流言,在這里我就不展開(kāi)了。回到花屏的問(wèn)題,為什么這個(gè)雜兵跑到這個(gè)位置就會(huì)花屏呢?

        是主機(jī)的問(wèn)題?還是卡帶的問(wèn)題?或者是程序的問(wèn)題?

        其實(shí),這并不是什么BUG,也不是什么問(wèn)題,只是FC的顯示方式導(dǎo)致的正?,F(xiàn)象。要想弄清楚這個(gè)問(wèn)題,我們先來(lái)簡(jiǎn)單了解一下FC的顯示原理。相信大部分玩家都知道,我們?cè)陲@示屏上看到的畫面都是由一個(gè)一個(gè)的像素點(diǎn)組成的。比如今天主流的1080P顯示器,就包含1920x1080總共約207萬(wàn)個(gè)像素點(diǎn)。在這207萬(wàn)像素的范圍內(nèi),每個(gè)像素點(diǎn)按需要顯示不同的顏色,最終組合呈現(xiàn)出一幅具體的畫面。

        但是早期的游戲機(jī),比如今天要講的紅白機(jī)FC他其實(shí)并不具備按像素來(lái)控制和顯示畫面的能力。FC能顯示的基本單位是一個(gè)8*8像素的貼圖(字符塊),這些貼圖都是事先繪制好存儲(chǔ)在卡帶里面。使用的時(shí)候 根據(jù)程序的控制 就像拼積木一樣,用這些貼圖來(lái)拼合成最終的圖像。但是這個(gè)合成的過(guò)程并不是直接從卡帶里提取素材然后顯示到電視上。FC的程序會(huì)先把當(dāng)前畫面需要使用的貼圖提取到類似FC顯存的一個(gè)存儲(chǔ)空間中。這個(gè)空間非常的小,總共只有8K,而且其中一半只能用于角色、敵人等會(huì)運(yùn)動(dòng)的元素的貼圖存儲(chǔ)。另一半則只能運(yùn)用于背景貼圖的存儲(chǔ),所以一個(gè)關(guān)卡用到的全部貼圖是沒(méi)辦法全部都放進(jìn)來(lái)的,只能隨著關(guān)卡的進(jìn)行不停的更換其中的內(nèi)容。這些貼圖放到FC的顯存后,程序會(huì)去開(kāi)發(fā)者指定的地址調(diào)取圖片來(lái)組合想要的畫面


        FC游戲常見(jiàn)【BUG】背后的原理和真相

        右上方的就是FC當(dāng)前畫面的圖形素材(貼圖)


        為了大家直觀的理解上面說(shuō)的這段內(nèi)容,我在下面的EXCEL里面簡(jiǎn)單的畫了一副像素畫,最右邊的兩列代表FC卡帶中存儲(chǔ)的貼圖內(nèi)容,中間一列代表FC顯存中當(dāng)前存儲(chǔ)的內(nèi)容,最左邊表示顯示的結(jié)果。首先FC接收到程序的指令,需要調(diào)用顯存里的這幾個(gè)區(qū)域的圖片,然后根據(jù)程序指令,在FC顯存的對(duì)應(yīng)位置找到圖片,最后根據(jù)程序的指令拼合輸出最終的畫面,這就是一個(gè)完整FC畫面輸出流程。但是根據(jù)之前所說(shuō),由于FC的顯存里的內(nèi)容會(huì)根據(jù)游戲的需要進(jìn)行更換。如果因?yàn)槟承┨厥庠颍霈F(xiàn)了本來(lái)不應(yīng)該存在當(dāng)前場(chǎng)景的物體,那么由于該物體原本需要的貼圖已經(jīng)被更換了,所以該物體便無(wú)法正常顯示。以實(shí)例來(lái)看的話,比如魂斗羅第六關(guān)關(guān)底,當(dāng)我們和小兵一起移動(dòng)到BOSS區(qū)域后,程序切換了顯存里的貼圖素材,所以小兵之前正確的貼圖就被替換掉了,導(dǎo)致本不應(yīng)該出現(xiàn)在這里的小兵無(wú)法正確的顯示出來(lái),也就是會(huì)出現(xiàn)所謂的花屏或者貼圖錯(cuò)誤了。包括很多FC邪道速通的錄像中,都能發(fā)現(xiàn)這種花屏的現(xiàn)象,其實(shí)都是因?yàn)樽寛?chǎng)景里出現(xiàn)了原本不應(yīng)該存在的物體導(dǎo)致的。請(qǐng)注意,這種情況在程序執(zhí)行的層面,其實(shí)并沒(méi)有什么問(wèn)題,所以并不是什么BUG。只要在切換區(qū)域時(shí),加入一串消滅當(dāng)前所有雜兵的指令就可以規(guī)避這一情況,所以這頂多只算是一個(gè)程序優(yōu)化的問(wèn)題。

        至于另外一個(gè)經(jīng)常遇到的【問(wèn)題】:閃爍 就更不是什么BUG了,F(xiàn)C在內(nèi)的早期游戲機(jī),顯示的圖像都分為精靈(可動(dòng)塊)和背景兩類。雖然他們?cè)诳◣У膬?nèi)部,都是一塊塊由8x8像素點(diǎn)繪制成的貼圖,但是每一種圖形的顯示規(guī)則是不一樣的。背景類的圖形可以鋪滿整個(gè)屏幕。而精靈類的圖形,在FC游戲里只能顯示同屏最多64個(gè) 同一行最多8個(gè)。如果超出了這一限制,F(xiàn)C就會(huì)輪流來(lái)顯示這些貼圖但是因?yàn)槿搜鄣囊曈X(jué)暫留現(xiàn)象,所以在我們看來(lái),就變成了圖像的閃爍,超過(guò)這一限制的數(shù)量越多,閃爍得也就越厲害。在發(fā)生閃爍的場(chǎng)景中按下暫停鍵 可以明顯的看到部分圖形是沒(méi)有被顯示的。FC幾乎所有的游戲都存在閃爍現(xiàn)象。


        FC游戲常見(jiàn)【BUG】背后的原理和真相

        FC游戲畫面閃爍的真相


        而且除此之外,F(xiàn)C的畫面顯示還有其他很多很多的限制規(guī)則,但是早期的開(kāi)發(fā)者們巧妙的利用各種方式打破了機(jī)能的限制。為我們呈現(xiàn)了一幕幕精彩難忘的畫面。如果你對(duì)這些內(nèi)容感興趣,可以去看看我的《FC擴(kuò)展芯片介紹》視頻,希望有更多的玩家,能夠體會(huì)到早期游戲設(shè)計(jì)的精妙之處。

        推薦閱讀:銀川信息港