zoukankan      html  css  js  c++  java
  • 完美编译街机模拟器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. 适配完屏幕后又发现这个ABXY 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工程链接

  • 相关阅读:
    Vue 组件化开发之插槽
    Vue 组件化开发
    Vue 双向绑定
    Vue 数组响应
    Vue 分支循环
    万字长文,详解推荐系统领域经典模型FM因子分解机
    操作失误不要慌,这个命令给你的Git一次反悔的机会
    codeforces 1425E,一万种情况的简单题
    计算机专业的学生要怎样做才能避免成为低级的码农?
    推荐系统,深度论文剖析GBDT+LR
  • 原文地址:https://www.cnblogs.com/ciml/p/12381170.html
Copyright © 2011-2022 走看看