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

话不多说,直接开始,下面是将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.

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

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

相反,你可以挂机了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容