完美編譯街機模擬器MAME iOS版


本篇為大家帶來MAME4iOS版編譯打包操作詳解

上一篇講了筆者編譯Andriod版MAME模擬器並打包運行的過程,這次分享一下iOS上的編譯打包過程。(廢話:文章上個月就寫好了,我居然一直沒點發布 ~_~ )

環境:

  1. Mac OS X 10.14.4
  2. Xcode 10.2.1

iOS分了越獄版和非越獄版,這里我們處理非越獄版,最終編譯出了armv7和arm64版本,x84_64的模擬器版本未編譯成功。(有一些ASM的錯誤未深究,反正在模擬器不方便玩耍,感興趣的同學可以試着修復一下,也歡迎找我一起探討)

文件已上git,見文末鏈接

首先

還是先編輯makefile,由於代碼比較老,需要做一些修正。原文件依然還是使用gcc編譯,整體下來沒有太大問題。就是警告比較多,代碼比較老,無法適應新編譯器嚴格的檢查可以理解。

問題:

1. 找不到<tr1/type_traits>,這個貌似xcode4.5以后目錄就變了(參考https://stackoverflow.com/questions/13219007/xcode-4-5-tr1-type-traits-file-not-found/44594624#44594624),改為#include <type_traits>后續還會報錯,找不到命名空間tr1。遂修改了state.h中的代碼,加入條件編譯宏,在iOS下直接std::is_arithmetic,省略tr1的名字空間。

2. 由於代碼編寫時間比較早,可能是11、12年甚至更所以需要使用MRC,如果你的xcode默認使用了ARC需要改回來,這點注意一下。

3. 這里我改用了clang來編譯,原代碼可能是基於gnu的特性寫的,編譯起來警告那是相當的多啊(不過基本都是相同的“'this' pointer cannot be null in well-defined C++ code”警告)。

3. xcode鏈接時報一堆錯,Undefined symbol: _myosd_res_width ...... 。經對比Android發現osd-ios中未聲名缺失的變量,但實際引擎是引用了的(可能是我clone的代碼版本不對吧)。對照錯誤一一補回去,你會編譯成功,編譯成功,但警告可謂是鋪天蓋地,這可能是由於新版本的編譯器檢查更加嚴格吧。

4. 運行起來后,會發現UI一團亂。主要工作也在這兒,周末斷斷續續弄了2天,開始是修改配置文件config_iPhone_5,后來發現太麻煩了,要去理解每一個配置的含義,雖然這確實有助於讀代碼理解其中邏輯。但太費事,要改的太多了。最終想到其實iPhone之后的設備屏幕比例幾乎圍繞着16:9,所以直接修改配置讀取處換算為當前設備的坐標。

5. 適配完屏幕后又發現這個A\B\X\Y Stick位置發生偏移,需要編輯controller_portrait_iPhone_5調整位置。最終在iPhone6及iPhone6Plus上完美適配(原諒我沒有糞叉Max,運行效果暫不清楚)。

 --圖1

--圖2

使用方法:

將你的游戲rom以zip格式,放入iTunes的設備文件共享中

 

*rom需要是zip格式

itunes

 

 

最后

  說一下makefile的編譯配置吧,一次只能編譯一個平台的一種架構

  Android: 放開ANDROID=1和AARMV7/V8

  iOS: 如圖放開iOS, iOSOSX, iOSNOJAILBREAK, iOSARM64/V7

    iOSOSX:表示是在MACOSX電腦上編譯,如果沒有那需要配置*Linux的相關參數

    iOSNOJAILBREAK::編譯非越獄版,如果不定義則編譯越獄版

  


至此,We完成了讓舊代碼重新奔跑起來並煥發活力的任務 ~(0_0).

 


 附:Github工程鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM