日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]如何將一個開源游戲移植給一款32位微控制器

隨著微控制器性能增強,已經有可能用它們執(zhí)行一些在90年代還需要PC處理能力的程序,而游戲領域的應用受這一進展影響很大?,F在可以在某種移動應用(包含圖形LCD和一個32位 ARM微控制器)中實現第一個PC上的3D游戲。本文將闡述如何將一個開源PC游戲的代碼移植到一款有適當源文件結構的微控制器上。
在上世紀90年代,游戲開始在計算機世界中蔓延。我還記得第一次玩Wolfenstein 3D,那是第一款3D的PC射擊游戲。它由IdSoftware于1992年開發(fā),是Doom的前身。Wolfenstein 3D證明PC的圖形能力已足以滿足這種類型3D動畫的開發(fā)。90年代很多十幾歲的年青人都會記得Wolfenstein 3D,因為這是第一款把3D世界帶到他們PC上的游戲。90年代中期它的源碼在互聯網上公開,現在還能找到?,F在我想再玩這款游戲,但不是在我的PC上。我將利用一只微控制器的功率和集成度。
這里需要補充一句:本文并不打算分析Wolfenstein 3D的源碼。很多文章已經做過這件事了。本文的目標是說明將復雜代碼移植到新平臺上的方法。不過,這款游戲的結構做得很好,解釋一下還是很有意思的。事實上在1992年,Wolfenstein 3D在3D游戲領域是一場革命。它是第一款玩家能在3D場景中自由移動的游戲。
在此游戲中,圖像與源碼同等重要,因為它采用了大量貼圖和子畫面。這些都采用光線投射(Ray Casting)方法定位在屏幕上,從而給游戲以一種3D效果。光線投射包含了從一個POV(視點)的投射半徑。并采用了一系列技巧以實現加速。例如,為了在像素點屏幕上投射一個半徑,要做一個空間搜索,以找到該半徑與最近墻上的交匯點。在Wolfenstein 3D中,墻面和貼圖的尺寸都是64 x 64像素(見圖3)。
雖然該游戲在當時取得了無比的成功,但它也有一些局限。其中之一是墻的高度全都一樣,它們全是90°,沒有斜角。這些限制減輕了移植的難度,因為它們代表著源碼不太復雜。另一個限制是地面和天花板沒有貼圖。
我會嘗試在一只較新的32位微控制器上給這款游戲以新的生命。一個必需的部件是建立一個控制游戲的應用電路板。從用戶角度只有兩個東西是可見的,一個240 x 320 TFT彩色屏幕,以及一組讓玩家在Wolfenstein 3D迷宮中穿越的按鍵。另外,微控制器用于屏幕和按鍵管理。由于這種類型屏幕采用一種并行接口(16位寬),需要選擇一種能夠驅動這種屏幕的微控制器。
如何更順利地移植源碼?
Wolfenstein 3D的源碼相當復雜。源碼越復雜,控制它就越難。因此,將這個應用移植到一個新的目標上非常困難。在開始以前,重要的是了解用于編寫原應用的語言是否為可移植的,而且該語言的的編譯器是否能用于新的目標。Wolfenstein 3D采用C語言編寫。C語言有利于移植,因為它在微控制器領域廣泛可用,市場上現有很多編譯器與調試器。
C語言允許一個源碼對多個目標,前提是它采用一種邏輯和清楚的方式編寫。項目源文件的組織是一個考慮因素。圖4提出了一種方法。
圖示的軟件方法將原始源碼與應用板使用的物理層分隔開來。移植過程中,原始游戲的源碼必須作少許修改,用到硬件的函數必須轉移(并修改)到“可移植”段。
當你準備將一個程序移植到一個新的目標時,主要問題是“哪種新目標機能夠執(zhí)行這個程序?”要理解這個需求,就需要知道源碼的主要功能,如外設的類型和數量,以及內存的大小(Wolfenstein 3D需要至少500KB程序空間和96KB RAM空間)。
應用的核心必須是一只32位微控制器,因為Wolfenstein 3D的執(zhí)行要求高性能的算術計算,用于光線投射方法和刷新屏幕的執(zhí)行速度,8位或16位微控制器無法達到這種性能水平。另外,為了簡化電路板布局,需要選擇一款嵌入了程序內存(閃存)的微控制器?,F在,市場上存在著大量這類32位微控制器,但ARM處理器是嵌入式應用的標準處理器。
我選擇的是意法半導體公司的STM32,因為它采用了一個ARM Cortex-M3核心,專為嵌入式應用而開發(fā)。請允許我介紹這個STM32 32bit閃存微控制器系列,尤其是STM32F103ZE產品。
STM32F103ZE運行頻率最高可達72MHz,應用電源為2.0V至3.6V。它提供512KB閃存和64KB RAM。外存控制(靈活的靜態(tài)內存控制,FSMC)可使STM32F10xxx微控制器與各種存儲器接口(SRAM、NOR閃存...)。FSMC有16根數據線和26根地址線,可用五根獨立的片選腳,最多連接64MB內存。在Wolfenstein 3D應用板上,這個接口用于驅動TFT顯示器和外接的4MB SRAM高速異步內存。鍵盤由通用IO直接驅動。應用板為3V工作,采用3只1.2V電池與一只LM317可調穩(wěn)壓器的組合。
意法半導體提供一個非常有用的軟件庫,它包含很多STM32功能管理實例。在這次移植中,軟件庫用于編寫TFT顯示器硬件的驅動。圖5表示架構需要的項目,Wolfenstein 3D文件夾包含兩個子文件夾。
Appli文件夾包含IDE項目以及硬件驅動源碼,如TFT屏幕。該文件夾包含硬件應用板的說明(在我們這里是STM3210E-EVAL),它還包含了STM32庫,用于管理電路板硬件和IDE項目。Wolfenstein 3D的源碼用庫函數作硬件驅動。
“source”文件夾包含了Wolfenstein 3D的原始源碼,源碼中所有指令或函數都不與應用板硬件直接交互,子文件夾“portable”包括用于在游戲原始代碼與代碼執(zhí)行目標硬件之間建立連接的函數。在我們這種情況下,我們還有一個子文件夾STM3210E-EVAL,這個文件夾包含調用應用板硬件的函數。
讓我們看一下顯示管理的例子。Wolfenstein 3D源碼包含一個VW_UpdateScreen函數,這個函數根據內部視頻緩沖的內容刷新TFT屏幕,于是需要驅動TFT屏幕。因此,它必須在文件夾“portable/STM3210E-EVAL”中定義。VW_UpdateScreen函數會調用在文件夾“appli/ STM3210E-EVAL”中定義的基本函數(驅動)。
文件夾“source/portable/STM3210E-EVAL/”包含與編譯器兼容的類型說明與定義。通過這種方法處理,就能夠將一個目標的源碼移植到另一個目標,而無需修改復雜的源文件。舉個有用的例子,源碼要轉換到一個不同映射的STM32應用,它有不同的接口硬件,或編譯器有改變。這時只需要為新的目標更新“appli/STM3210E-EVAL/”和“source/portable/STM3210E-EVAL/”文件夾中的約束文件。結果在圖6中。它看似90年代的一款口袋機游戲。[!--empirenews.page--]
采用C編寫的老式PC游戲的源碼現在仍能從互聯網上獲得。多虧有微控制器的強大性能和LCD顯示器的集成,我們現在還能體驗到這些游戲。
Captions:


圖1. 應用板上的Wolfentien 3D。


圖2. 光線投射模型。


圖3. 紋理與sprite(Texture and sprite)。


圖4. 軟件架構。


圖5. 文件夾的項目結構。


圖6. 最終應用。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

(全球TMT2022年10月17日訊)上海安勢信息技術有限公司的清源SCA工具在騰訊成功部署。清源?SCA可進行代碼片段識別、文件識別、組件識別、依賴識別和容器鏡像掃描。清源SCA擁有海量數據儲備,其中包含24萬漏洞數...

關鍵字: 騰訊 組件 開源 互聯網

亙喜生物科技集團宣布正在中國開展的、旨在全面評估GC007g治療復發(fā)/難治性急性B淋巴細胞白血病效果的1/2期注冊性臨床試驗順利進入2期研究階段,首例入組患者已給藥。GC007g是亙喜生物旗下的一款靶向CD19的供者來源...

關鍵字: 移植 CD

上海2022年10月14日 /美通社/ -- 近日,上海安勢信息技術有限公司的清源SCA工具在騰訊成功部署。 開源軟件在促進全球的技術創(chuàng)新方面發(fā)揮著越來越重要的作用,企業(yè)越來越依賴開源軟件來加速開發(fā)與創(chuàng)新,根據 Gar...

關鍵字: 開源 開源軟件 組件 數據庫

10月12日消息,據開放原子開源基金會,日前,北京萬里紅科技有限公司(簡稱“萬里紅”)發(fā)布了針對行業(yè)定制、搭載T618芯片和OpenAtom OpenHarmony(以下簡稱“Open...

關鍵字: 平板 開源 芯片 鴻蒙

北京2022年10月8日 /美通社/ -- 日前,全球領先的IT基礎設施提供商浪潮信息加入龍蜥社區(qū)并成為理事單位,致力于攜手社區(qū)生態(tài)伙伴,共同推動開源操作系統(tǒng)的全產業(yè)鏈協同創(chuàng)新和產業(yè)化應用。 龍蜥社區(qū)成立于2020...

關鍵字: 開源 操作系統(tǒng) 通信 大數據

(全球TMT2022年10月8日訊)IT基礎設施提供商浪潮信息加入龍蜥社區(qū)并成為理事單位,致力于攜手社區(qū)生態(tài)伙伴,共同推動開源操作系統(tǒng)的全產業(yè)鏈協同創(chuàng)新和產業(yè)化應用。 龍蜥社區(qū)成立于2020年9月,是國內...

關鍵字: 操作系統(tǒng) 開源 通信 裝機量

(全球TMT2022年9月15日訊)Altair宣布Altair? Radioss? (一種經過行業(yè)驗證的有限元分析(FEA)動態(tài)仿真代碼)現已以OpenRadioss的名義提供開源技術。...

關鍵字: iOS RADIO 開源 AIR

上海2022年9月15日 /美通社/ -- 近日, Altair(納斯達克股票代碼:ALTR)宣布Altair® Radioss® (一種經過行業(yè)驗證的有限元分析(FEA)動態(tài)仿真代碼)現已以OpenRa...

關鍵字: iOS RADIO 開源 AIR

北京2022年9月9日 /美通社/ -- 諾誠健華(香港聯交所代碼:09969)今天宣布,tafasitamab (Minjuvi®)聯合來那度胺治療不適合自體干細胞移植 (ASCT) 條件的復發(fā)/難治彌漫性大B...

關鍵字: VI NJU BSP 移植

重慶2022年8月26日 /美通社/ -- 儲能電池是電化學儲能的關鍵器件,是決定電化學儲能進步的"中樞"。 面向未來十年乃至更長的周期,一條"長坡厚雪"的超級賽道正在全面開啟,...

關鍵字: 電池 離子 BSP 開源

嵌入式教程

6897 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉