当前位置: 首页 > news >正文

xmame(0.106)在imx6q上移植

硬件环境:
我采用的是i.mx6q开发板,屏幕分辨率为800x480

系统环境:
linux 4.1.15
根文件系统 用的是开发板自带的根文件系统,里面已经移植好了alsa相关的库文件

首先移植SDL1.2

配置SDL1.2

./configure --disable-video-directfb --disable-video-qtopia --disable-video-dummy --disable-video-dga --disable-arts --disable-cdrom --disable-video-x11 --disable-nasm --enable-video-fbcon --enable-joystick --enable-input-tslib --host=arm-poky-linux-gnueabi --prefix=$(pwd)/_install

接着编译

make

安装
make install

将_install中bin lib include复制到/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/bin
/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/SDL
/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/SDL

sudo cp -r /home/w/NES/SDL-1.2.15/_install/include/SDL/* .
sudo cp -r /home/w/NES/SDL-1.2.15/_install/lib/SDL/* .
sudo cp -r /home/w/NES/SDL-1.2.15/_install/bin/sdl-config .

将编好的lib下的.so文件考到开发板/usr/lib下

其次,pc机操作:
安装 Ubuntu 官方的 x86 版 SDL 1.2
sudo apt-get update
sudo apt-get install --reinstall libsdl1.2-dev

验证恢复成功
sdl-config --version
# 应该输出 1.2.15(x86 主机版)

最后修改mame的makefile:
CC= @gcc改为CC= @arm-poky-linux-gnueabi-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/(自己的路径)

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(你的sdl-config路径)

添加以下内容

###########################################################################
# Reset CFLAGS
###########################################################################


SYSROOT = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi(你自己的编译根目录)

CFLAGS += --sysroot=$(SYSROOT) -mfloat-abi=hard -mfpu=neon -march=armv7-a -I$(SYSROOT)/usr/include -I$(SYSROOT)/usr/include/SDL -Wall


LDFLAGS += --sysroot=$(SYSROOT) -L$(SYSROOT)/usr/lib -L$(SYSROOT)/usr/lib/SDL -lpthread -lSDL

MY_CPU = loongson2f 改为 MY_CPU = armv7-a

xmame-0.106/src/unix/unix.mak修改

##############################################################################
# Non-user-configurable settings
##############################################################################
CC = @arm-poky-linux-gnueabi-gcc
SDL_INCPATH=/home/w/NES/SDL-1.2.15/_install/include/SDL

SDL_LIBPATH=/home/w/NES/SDL-1.2.15/_install/lib

SYSROOT = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi

CFLAGS += --sysroot=$(SYSROOT) -mfloat-abi=hard -mfpu=neon -march=armv7-a -I$(SYSROOT)/usr/include -I$(SYSROOT)/usr/include/SDL -Wall


# 链接选项:sysroot + 链接 ALSA 库
LDFLAGS += --sysroot=$(SYSROOT) -L$(SYSROOT)/usr/lib -L$(SYSROOT)/usr/lib/SDL -lpthread -lSDL

##############################################################################
# CPU-dependent settings
##############################################################################

make clean

make

出现错误:
Generating M68K source files...
xmame.obj/cpu/m68000/m68kmake xmame.obj/cpu/m68000 src/cpu/m68000/m68k_in.c
xmame.obj/cpu/m68000/m68kmake: 3: xmame.obj/cpu/m68000/m68kmake: Syntax error: word unexpected (expecting ")")
src/cpu/cpu.mak:664: recipe for target 'xmame.obj/cpu/m68000/m68kops.h' failed
make: *** [xmame.obj/cpu/m68000/m68kops.h] Error 2
make: *** Waiting for unfinished jobs....

m68kmake需要用PC机下的gcc编译,不能用交叉编译器编译

# 先删除错误的 m68kmake
rm -f xmame.obj/cpu/m68000/m68kmake

# 用本机 gcc 重新编译(关键!)
gcc -O2 -o xmame.obj/cpu/m68000/m68kmake src/cpu/m68000/m68kmake.c

# 然后再继续你的 make 交叉编译
make


编译成功,放进开发板

查看开发板的/etc/fb.modes是否有屏幕信息
如果没有,开发板上执行fbset将显示的信息如下,拷贝到/etc/fb.modes文件下
mode "800x480-58"
# D: 27.000 MHz, H: 29.348 kHz, V: 57.545 Hz
geometry 800 480 800 480 16
timings 37037 40 60 10 10 20 10
rgba 5/11,6/5,5/0,0/0
endmode

./xmame.SDL -showconfig > ~/.xmame/xmamerc (生成配置文件)
将游戏.zip和neogeo.zip放在下列路径中/usr/local/share/xmame/roms/游戏..zip
(配置文件中可以设置rompath /usr/local/share/xmame/roms)

运行./xmame.SDL 游戏名

我运行的合金弹头如下图,但有个缺点只能小窗口无法放大

http://www.jsqmd.com/news/617434/

相关文章:

  • 终极键盘防抖软件指南:彻底解决机械键盘重复输入问题
  • BepInEx实战指南:5步构建Unity游戏模组开发环境
  • 3分钟学会Windows和Office激活:KMS_VL_ALL_AIO一键解决方案
  • 让老旧Mac重获新生:OpenCore Legacy Patcher完整使用指南
  • 八大网盘直链下载助手:免费高速下载的完整终极解决方案
  • 碧蓝航线Alas脚本:让游戏自动化的终极懒人指南 [特殊字符]
  • SpringBoot+MyBatis-Plus 实现用户管理模块 CRUD + 分页 + 条件查询(电商系统实战,代码可直接复制)
  • 百度网盘直链解析工具:让下载速度飞起来的秘密武器
  • Android Camera开发避坑指南:HAL3与MediaCodec整合的那些坑
  • 车辆电耗变化情况
  • 美团打造“视觉语言大一统“:让AI像人类一样看图说话生图聊天
  • Beyond Compare 5密钥生成终极指南:快速解决授权问题的完整教程
  • Xenos技术内幕:Windows DLL注入架构深度解析
  • 芯片设计经理开始研究AI了,“一人团队“真的要来了吗?
  • aibiye的AI工具针对高重复率论文,推出五步降重法。结合深度学习技术重构语句,保留原意的同时提升独特性,让30%的重复率迅速降至合格线。
  • 山东哪家老干烘茶品质好? - 中媒介
  • 2026 企业 AI 知识中枢与智能 BI 部署优选:知识库部署厂商 / 服务商、AI 知识库方案商、Deepseek 部署服务商、BI 私有化 / 本地部署厂商完整盘点 - 品牌2026
  • OpenClaw+Qwen3-14B科研助手:文献自动归档与摘要生成
  • AgentCgroup论文学习:AI Agent为什么需要新的OS资源控制
  • ChatGPT Plus/Pro用户必看:如何突破O1/O3模型文件识别限制与使用次数瓶颈?
  • MySQL超详细安装教程(保姆级)
  • 绍兴Geo优化服务,究竟哪家更值得选?
  • 终极指南:3分钟为Android Studio添加中文界面,告别英文困扰
  • 终极网盘直链解析方案:八大平台全速下载实战指南
  • 终极指南:如何恢复B站经典旧版界面 - 让你的Bilibili重回怀旧时代
  • KH Coder完全指南:5步零代码实现专业文本挖掘,让数据自己说话
  • Z-Image-Turbo-rinaiqiao-huiyewunv开发者案例:基于Z-Image Turbo的定制化角色生成工具开发
  • Ubuntu:在docker中执行OpenHarmoyOS的hb相关命令报错Exception(“Please call hb utilities inside source root directo
  • Python 中的 Map 和 Reduce 详解
  • mac安装idea