美文网首页
触摸屏如何玩街机:将xmame移植到arm 触摸屏很详细的移植过

触摸屏如何玩街机:将xmame移植到arm 触摸屏很详细的移植过

作者: 一路向东_lxd | 来源:发表于2019-02-16 21:27 被阅读0次

    话不多说,直接开始,下面是将xmame基于sdl移植到arm触摸屏上的过程。

    一  先安装虚拟机。

    ubuntu 12.04

    经过几个步骤,我们就把虚拟机安装好了。这是一个新的虚拟机。

    按住

    安装好虚拟机之后。就可以开始我们的xmame移植过程了。

    需要的文件

    1) 源码:

    SDL-1.2.13.tar.gz

    xmame-0.106.tar.bz2

    2) 编译器。

    arm-none-linux-gnueabi-gcc

    二 将源码编译和移植。

    1 先移植sdl,因为编译xmame是需要依赖sdl的。

    1.1 将SDL-1.2.13.tar.gz 考虑到虚拟机

    1.2 配置

    执行 ./configure --prefix=/home/sdl CC=arm-none-linux-gnueabi-gcc --host=arm-none-linux-gnueabi-

    将sdl的安装目录放到/home/sdl下。

    1.3 执行编译和安装。

    make 

    make install

    如果不出意外的,就编译成功,并把sdl所需要的文件拷贝到/home/sdl目录下了。

    1.2 xmame的交叉编译。(重点)

    xmame的编译,基本占移植工作的80%。SDL因为没有其它依赖项,所以只要指定编译器,基本都可以编译成功。而xmame这个就复杂多了。需要根据不同的平台作出修改,还有根据不同的系统制定不同的编译器,以及还要根据显示模式,指定是使用sdl方式还是x11方式。基本X11的文章最后可以讲一讲。

    1.2.1 文件的修改。

    将xmame-0.106.tar.bz2 源码拷贝到虚拟机里。

    需要修改文件。主要是修改两个文件:cpu.mak,makefile.unix。

    主要是修改makefile,启用sdl,不使用x11。指定编译器,xmame的安装路径

    文件目录

    F:\xmame\src\sdlmame\xmame-0.106\xmame-0.106\src\cpu\cpu.mak

    $(OBJ)/cpu/m68000/%.o: src/cpu/m68000/%.c

             @echoCompiling $<...

             $(CC)$(CDEFS) $(CFLAGS) -I$(OBJ)/cpu/m68000 -c $< -o $@

    修改为:

    #$(OBJ)/cpu/m68000/%.o: src/cpu/m68000/%.c

             #@echoCompiling $<...

             #$(CC)$(CDEFS) $(CFLAGS) -I$(OBJ)/cpu/m68000 -c $< -o $@

    $(OBJ)/cpu/m68000/m68kmake.o:

    src/cpu/m68000/m68kmake.c

             @echoHost compiling $<...

             $(HOST_CC)$(CDEFS) $(CFLAGS) -I$(OBJ)/cpu/m68000 -c $< -o $@

    $(OBJ)/cpu/m68000/m68kmake$(EXE):

    $(OBJ)/cpu/m68000/m68kmake.o $(OSDBGOBJS)

    修改为

    $(OBJ)/cpu/m68000/m68kmake$(EXE):

    $(OBJ)/cpu/m68000/m68kmake.o $(OSDBGOBJS)

             @echoHost linking $<...

             $(HOST_CC)$^ -o $@

    修改文件:

    F:\xmame\src\sdlmame\xmame-0.106\xmame-0.106\makefile.unix

    CC    =@gcc

    修改为:

    CC    =@arm-none-linux-gnueabi-gcc

    HOST_CC = $(CC)

    # HOST_CC = @gcc

    修改为:

    #HOST_CC = $(CC)

    HOST_CC = @gcc

    AR = @ar

    AR_OPTS = rc

    修改为:

    AR = @arm-none-linux-gnueabi-ar

    AR_OPTS = rc

    将RANLIB = @ranlib

    # RANLIB = @true

    修改为:

    RANLIB = @arm-none-linux-gnueabi-ranlib

    # RANLIB = @true

    # Uncomment next line to build expat as

    part of the build.

    # BUILD_EXPAT = 1

    # Uncomment next line to build zlib as part

    of the build.

    # BUILD_ZLIB = 1

    修改为:

    # Uncomment next line to build expat as

    part of the build.

    BUILD_EXPAT = 1

    # Uncomment next line to build zlib as part

    of the build.

    BUILD_ZLIB = 1

    PREFIX = /usr/local

    修改为:

    PREFIX = /home/xmamesdl/

    # i386, GNU asm

    MY_CPU = i386

    修改为:

    # i386, GNU asm

    MY_CPU = arm

    # X11 (including Glide & OpenGL if

    enabled below)

    DISPLAY_METHOD = x11

    # SDL library

    # DISPLAY_METHOD = SDL

    修改为:

    # X11 (including Glide & OpenGL if

    enabled below)

    #DISPLAY_METHOD = x11

    # SDL library

     DISPLAY_METHOD = SDL

    # The name of your sdl-config executable

    SDL_CONFIG    =sdl-config

    修改为

    # The name of your sdl-config executable

    SDL_CONFIG    =/home/sdl/bin/sdl-config

    1.2.2 编译。

    将这两个文件修改之后,就可以执行make了。

    如果你是使用和我一样的虚拟机版本,一样的配置,一样的修改,基本上都可以编译成功。

    1.2.3 将编译后的文件install。也就是提取。

    执行make install。有些可能需要执行sudo make install.

    然后在我们的指定的安装目录下/home/xmamesdl 就可以看到

    到这里基本上就成功一半了。

    如果你是跟着我的过程一起编译的,请先不要激动。

    如果你只是纯粹看文章的,请忽略以上两句话。

    三 将文件拷贝到触摸屏里。

    1 sdl文件的准备。

     将sdl的文件拷贝到触摸屏同目录下。

    bin目录对应bin目录,

    lib目录对应lib目录。

    2 xmame的文件拷贝。

    xmame的这个bin目录,主要就是主程序了。只要库文件在触摸屏里,这个主程序可以放到其它目录执行。

    3 游戏文件的准备。

    xmamerc,neogeo.zip,kof97.zip

    当你完成前面两步的时候,基本上就执行程序了。也就是你的xmame程序是可以运行的。

    这个可以运行,只是说你交叉编译是对的。但是不代表你可以玩游戏。

    剩下的操作,就需要根据xmame需要的文件准备一下,放到xmame需要的目录下就行了。

    需要准备下配置文件xmamerc

    xmamerc 这个配置文件呢,指定了rom包的目录,你需要将游戏放到这个目录下。

    还需要一个neogeo.zip来作为游戏的启动。

    这时候就可以将kof97.zip放进去,执行xmame,就可以玩拳皇97啦。

    不过,是用键盘玩的,我没有试过使用游戏手柄玩。这要看你触摸屏里有没有支持游戏手柄的驱动。

    所以,移植完成之后,所需要的东西有:这个是编译之后的文件打包

    让我们来看一下游戏画面:

    有没有很刺激。这时候你只需要到网上去找一些rom游戏包就可以了,你就拥有了一个街机了。

    问题区:

    以上过程,属于一遍过,中间没有什么错误阻挡的时候才看到的情况。

    说到这,让我想起一个段子,某程序员写了个很长代码,然后编译,直接通过,没有任何错误,这种激动的心情很想忍不住与他女朋友分享,和她女朋友说了之后,对方只回了个哦字。。

    好吧,我又想多了。当我移植完这个街机的时候,才发现,我没有女朋友。

    有可能你实际中会遇到各种问题。

    优先,编译器问题不在这里探讨。

    1 程序执行,可能会出现sdl一些错误。当然,前提是你需要将lib放好。下面讨论的时候xmame执行后,提示的一些错误。

    比如

    SDL Error: could not find a suitable 

    或者

    video_init failed

    或者

    SDL Error: could not find a suitable mode

    诸如此类提示和SDL相关的问题。

    这些问题怎么来的呢。这些问题主要是和你触摸屏的液晶显示有问题。

    比如你LCD的分辨率,是16位色还是24位等,以及你启动xmame的方式。

    是全屏模式,还是普通模式。

    在启动程序的命令行参数没有错误的情况。以上遇到的错误都可以在一个文件里修改。

    xmame-0.106\src\unix\video-drivers\SDL.c这个文件里。

    其中,主要是在这个函数:

    int sysdep_display_driver_open(int reopen):

    在这个函数里,是初始化和LCD的相关信息,比如是全屏运行呢,还是什么模式运行。

    在这个函数里,需要根据你的触摸屏去修改相应的一些变量和参数,主要是看你的触摸屏支持哪些参数,或者你运行过程中,哪些参数不行,你就一个个试。

    还有这个SDL_SetVideoMode。

    当然你要看你的错误提示是哪一句,你再逐个参数去试应当行了。

    2  游戏的准备。

    由于这个xmame街机是基于sdl模式的,不是所有的rom包都能正常执行的。所以,当你不能正常打开游戏的时候,适当的怀疑一下是不是rom包的问题。

    好了。

    到这里基本就是这个xmame基于sdl的移植过程了。

    我之前移植过x11,或者你也想打算移植x11的。

    优先xmame基于x11的话,你需要先移植x11。

    同时移植x11则依赖很多很多的库,实在是太多了。就不一一列出来的。不像sdl这个不需要依赖别的,比较方便。

    -----------------------------------------------------------------------------------------------------------------------------------------结束分割线

    你能看到最后,也不容易。

    如果你在移植过程中,还是遇到问题,你可以留言。如果你不好意思留言,那怎么办呢。

    如果你要联系楼主:

    1 请先了解一下我所在的公司的主页:

    http://www.flexem.cn

     我们公司有各种型号的触摸屏,还有32寸的触摸屏。想想用32寸的触摸屏玩街机,一下子回到童年的感觉。

    2 找到公司前台的电话,咨询一下我们的触摸屏。

        当然,我们公司除了有触摸屏,还有物联网产品,可以远程参数数据,远程监控PLC等,对plc程序远程上传,下载等。

    3 我们平台会根据你所在的区域,把相应区域销售的电话给你。

    当然,如果你真的想了解我们公司的产品,也可以让我们的销售主动联系你。

    4 当你和我们的销售聊得差不多了,就可以下单买个几百个触摸屏。

    5 然后你和销售说,你们想在触摸屏玩游戏。

        这时候,我们的销售就可以申请让我出差。

    通过以上步骤,你就能联系到我了。

    如果你不考虑买触摸屏,回到步骤2.

    打电话到我们前台,你说找一下你们公司又会写程序,又会写文章,诗一般的帅哥。

    如果前台美女笑了,你可以要到我的联系方式。

    相反,你可以挂机了。

    相关文章

      网友评论

          本文标题:触摸屏如何玩街机:将xmame移植到arm 触摸屏很详细的移植过

          本文链接:https://www.haomeiwen.com/subject/gqbieqtx.html