<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何將一個(gè)開(kāi)源游戲移植給一款32位微控制器

          如何將一個(gè)開(kāi)源游戲移植給一款32位微控制器

          作者:Pierre Berquin,意法半導(dǎo)體公司工程師 時(shí)間:2009-05-26 來(lái)源:電子產(chǎn)品世界 收藏

            在此游戲中,圖像與源碼同等重要,因?yàn)樗捎昧舜罅抠N圖和子畫(huà)面。這些都采用光線(xiàn)投射(Ray Casting)方法定位在屏幕上,從而給游戲以一種3D效果。光線(xiàn)投射包含了從一個(gè)POV(視點(diǎn))的投射半徑。并采用了一系列技巧以實(shí)現(xiàn)加速。例如,為了在像素點(diǎn)屏幕上投射一個(gè)半徑,要做一個(gè)空間搜索,以找到該半徑與最近墻上的交匯點(diǎn)。在Wolfenstein 3D中,墻面和貼圖的尺寸都是64 x 64像素(見(jiàn)圖3)。

          本文引用地址:http://www.ex-cimer.com/article/94728.htm

            雖然該游戲在當(dāng)時(shí)取得了無(wú)比的成功,但它也有一些局限。其中之一是墻的高度全都一樣,它們?nèi)?0°,沒(méi)有斜角。這些限制減輕了移植的難度,因?yàn)樗鼈兇碇创a不太復(fù)雜。另一個(gè)限制是地面和天花板沒(méi)有貼圖。

            我會(huì)嘗試在一只較新的32位上給這款游戲以新的生命。一個(gè)必需的部件是建立一個(gè)控制游戲的應(yīng)用電路板。從用戶(hù)角度只有兩個(gè)東西是可見(jiàn)的,一個(gè)240 x 320 TFT彩色屏幕,以及一組讓玩家在Wolfenstein 3D迷宮中穿越的按鍵。另外,用于屏幕和按鍵管理。由于這種類(lèi)型屏幕采用一種并行接口(16位寬),需要選擇一種能夠驅(qū)動(dòng)這種屏幕的。

            如何更順利地移植源碼?

            Wolfenstein 3D的源碼相當(dāng)復(fù)雜。源碼越復(fù)雜,控制它就越難。因此,將這個(gè)應(yīng)用移植到一個(gè)新的目標(biāo)上非常困難。在開(kāi)始以前,重要的是了解用于編寫(xiě)原應(yīng)用的語(yǔ)言是否為可移植的,而且該語(yǔ)言的的編譯器是否能用于新的目標(biāo)。Wolfenstein 3D采用C語(yǔ)言編寫(xiě)。C語(yǔ)言有利于移植,因?yàn)樗谖⒖刂破黝I(lǐng)域廣泛可用,市場(chǎng)上現(xiàn)有很多編譯器與調(diào)試器。

            C語(yǔ)言允許一個(gè)源碼對(duì)多個(gè)目標(biāo),前提是它采用一種邏輯和清楚的方式編寫(xiě)。項(xiàng)目源文件的組織是一個(gè)考慮因素。圖4提出了一種方法。

          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理




          關(guān)鍵詞: ST 微控制器 開(kāi)源游戲

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();