当前位置:首页 > SDL系列游戏在ARM上移植的实现 - 图文
课程考核大作业 课程名称:《嵌入式技术》 任课教师: 学期:2016-2017学年第1学期 成绩
《SDL系列游戏在ARM上移植的实现》
院 系 专 业 班 级
提交时间: 2016年 11月 12日
SDL系列游戏在ARM上移植的实现
湖北省武汉,430070
摘要:在现在,年轻人喜欢通过玩游戏来放松自己,娱乐自己。许多人会选择到电玩厅游戏厅放松自己。因此,我研究并使用FriendlyARM实现一个简易的SDL系列《仙剑奇侠传一》的移植,使其能够通过键盘运行游戏。完成这个游戏移植同时需要嵌入式硬件知识和软件知识。硬件方面主要是烧写SD卡,将linux镜像文件安装到嵌入式设备上,修改分辨率;软件方面主要是移植游戏和SDL游戏库,设置开机自启动。并且,因为移植原理简单方便,可以以此为模板移植到一些大型设备上,比如电玩厅的游戏机,以此获得商业利益。 关键词:SDL系列游戏;ARM移植
The Realization of SDL Series Game Porting on ARM
Abstract: In the present, young people like to play through the game to relax and entertain themselves. Many people choose to relax in the arcade game room. Therefore, I study and use FriendlyARM to achieve a simple SDL series \this game migration requires both embedded hardware knowledge and software knowledge. Hardware is the main programming SD card, the linux image file installed on the embedded device, modify the resolution; software is mainly transplant games and SDL game library, set the boot from the start. And, because the transplant principle is simple and convenient, you can use this as a template to transplant to some large equipment, such as video game console, in order to obtain commercial interests. Keywords: SDL series of games; ARM transplantation
1 实验的主要工作
1. 了解linux操作系统,熟悉各种基础指令代码;了解SDL游戏移植基本原理,熟悉移植过程;了解ARM硬件软件操作。
了解linux操作系统 了解SDL游戏移植基本原理 了解ARM硬件软件操作 准备工作 通过之前的学习,我基本上学会了所有linux基本代码,能够独立编写出移植过程中的全部代码;我了解到SDL游戏有SDL_mixer声音库、SDL_net网络库、SDL_ttf字体库、SDL_rtf图像库,移植游戏的时候必须也移植进去;我了解到ARM上没有运行操作系统、屏幕是A70长640宽480、cpu为512MHZ、内存为256M,我选择了满足硬件要求的《仙剑奇侠传一》作为本次移植对象,我选择烧写linux到开发板中。
2. 进行硬件相关操作,烧写SD卡;再烧写linux的镜像文件到开发板中;修改游戏分辨率。
我使用superboot工具烧写SD卡,使其能够进行SD-BOOT,再修改烧写linux的ini配置文件,比如烧写的系统名称,ARM屏幕是A70,烧写格式是ubfi,使其适合FriendlyARM,再烧写linux的镜像文件到开发板中,方便之后软件更容易移植;我了解到FriendlyARM屏幕分辨率为640*480,并修改main.c中的游戏分辨率参数,并且编写函数让游戏动态获取分辨率。
3. 进行软件操作,对SDL库以及游戏进行交叉编译;再将可执行文件连同游戏一起倒入ARM之中;建立一个开机自启动的脚本文件。
交叉编译 创建开机自启动shell程序 我将五个游戏库以及游戏下载,在电脑linux交叉编译并打包,然后使用U盘将打包文件拷入开发板中,游戏不能直接运行,必须建立开机自启动shell脚本,并在脚本中引导游戏启动。
软件相关操作 烧写SD卡 烧写linux的镜像文件到开发板中 修改游戏分辨率 硬件相关操作
2 FriendlyARM与SDL游戏的介绍
1.FriendlyARM概念
FriendlyARM是一款以ARM11芯片(三星S3C6410)作为主处理器的嵌入式核心板,该CPU 基于 ARM1176JZF-S 核设计,内部集成了强大的多媒体处理单元,支持Mpeg4, H.264/H.263等格式的视频文件硬件编解码,可同时输出至LCD和TV显示;它还并带有 3D 图形硬件加速器,以实现 OpenGL ES 1.1 & 2.0 加速渲染,另外它还支持 2D 图形图像的平滑缩放,翻转等操作。FriendlyARM采用高密度 6 层板设计,尺寸为64 x 50mm,它集成了 128M/256M DDR RAM,SLC NAND Flash(256M/1GB)或 MLC NAND Flash(2GB)存储器,采用 5V 供电,在板 实现 CPU 必需的各种核心电压转换,还带有专业复位芯片,通过 2.0mm 间距的排针,引出各种常见的接口资源,以供不打算自行设计 CPU 板的开发者进行快捷的二次开发使用。
Tiny6410SDK 是采用FriendlyARM核心板的一款参考设计底板,它主要帮助开发者以此 为参考进行核心板的功能验证以及扩展开发。该底板具有三 LCD 接口、 4 线电阻触摸屏接口、 100M 标准网络接口、标准 DB9 五线串口、Mini USB 2.0 接口、USB Host 1.1、3.5mm 音频输 入输出口、标准 TV-OUT 接口、SD 卡座、红外接收等常用接口;另外还引出 4 路 TTL 串口, 另 1 路 TV-OUT、SDIO2 接口(可接 SD WiFi)接口等;在板的还有蜂鸣器、I2C-EEPROM、备 份电池、AD 可调电阻、8 个中断式按键等。 2.SDL系列游戏的基本介绍
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用 C 语言写成。SDL 提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平 台(Linux、Windows、Mac OS X 等)的应用软件。目前 SDL 多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
SDL 在结构上是将不同操作系统的库再包装成相同的函数,例如 SDL 在 Windows 平台上其实是 DirectX 的再包装,旧版本包装的是 DirectX 5,现时的版本(SDL 1.2)则是 DirectX 7。而在使用 X11 的 平台上(包括 Linux), SDL 则是与 Xlib 库沟通来输出图像。
SDL 库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统,除此之外,还有一些单独 的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了 SDL 的“标准库”:
* SDL_image—支持时下流行的图像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGA。
* SDL_mixer—更多的声音输出函数以及更多的声音格式支持。 * SDL_net—网络支持。
* SDL_ttf—TrueType 字体渲染支持。 * SDL_rtf—简单的 RTF 渲染支持。
共分享92篇相关文档