移植仙剑游戏到S3C6410

来源:互联网 发布:淘宝美工难学吗 编辑:程序博客网 时间:2024/06/10 11:28


更多精彩:嵌入式技术论坛



仙剑移植之 arm--S3C6410

平台:x86PC 机 redhat5.5 操作系统 arm-linux-交叉编译工具

资源介绍:解压 sdl.tar.bz2 包后, 有 data.tar lib.tar sdlpal.tar 三个压缩包, data.tar 是仙剑的运行资源,lib.tar 是仙剑的编译和运行需要的库,sdlpal.tar 是仙剑的源码

以上资源以上传

一、首先编译安装仙剑编译和运行需要的库
1.安装 freetype
[root@localhost lib]# tar -zxvf freetype-2.3.11.tar.gz
[root@localhost lib]# cd freetype-2.3.11
[root@localhost freetype-2.3.11]# ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
[root@localhost freetype-2.3.11]# make -j4
[root@localhost freetype-2.3.11]# make install
2.安装 zlib
[root@localhost lib]# tar -zxvf zlib-1.2.3.tar.gz
[root@localhost lib]# cd zlib-1.2.3
[root@localhost zlib-1.2.3]# ./configure CC=arm-linux-gcc NM=arm-linux-nm CPP="arm-linux-gcc -E " RANLIB="arm-linux-ranlib" AR="arm-linux-ar rcv" --shared --prefix=$PWD/../../output/arm-linux
[root@localhost zlib-1.2.3]# make -j4
[root@localhost zlib-1.2.3]# make install
3.安装 jpegsrc.v6b
[root@localhost lib]# tar -zxvf jpegsrc.v6b.tar.gz
[root@localhost lib]# cd jpeg-6b/
[root@localhost jpeg-6b]# ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-shared
[root@localhost jpeg-6b]# vim Makefile
手工修改 Makefile ,把所有工具链用 arm-linux-gcc 工具链
23 行改为 CC= arm-linux-gcc
63 行改为 AR = arm-linux-ar rc
65 行改为 AR2= arm-linux-ranlib
[root@localhost jpeg-6b]# mkdir -p $PWD/../../output/arm-linux/man/man1
[root@localhost jpeg-6b]# make -j4
[root@localhost jpeg-6b]# make install
4.安装 libpng-1.2.19
[root@localhost lib]# tar -jxvf libpng-1.2.19.tar.bz2
[root@localhost lib]# cd libpng-1.2.19
[root@localhost libpng-1.2.19]# export CPPFLAGS+="-I/root/Desktop/sdl/output/arm-linux/include"
[root@localhost libpng-1.2.19]# export LDFLAGS+="-L/root/Desktop/sdl/output/arm-linux/lib"
[root@localhost libpng-1.2.19]# ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
[root@localhost libpng-1.2.19]# make -j4
[root@localhost libpng-1.2.19]# vim Makefile
把-L 后面的空格去掉
[root@localhost libpng-1.2.19]# make
[root@localhost libpng-1.2.19]# make install
5.安装 libmad
[root@localhost lib]# tar -zxvf libmad-0.15.1b.tar.gz
[root@localhost lib]# cd libmad-0.15.1b
[root@localhost libmad-0.15.1b]# ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
[root@localhost libmad-0.15.1b]# vim Makefile
手工修改 Makefile 把 129 的-fforce-mem 去掉
[root@localhost libmad-0.15.1b]# make
[root@localhost libmad-0.15.1b]# make install
6.安装 libiconv
[root@localhost lib]# tar -zxvf libiconv-1.13.1.tar.gz
[root@localhost lib]# cd libiconv-1.13.1
[root@localhost libiconv-1.13.1]# ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
[root@localhost libiconv-1.13.1]# vim Makefile
[root@localhost libiconv-1.13.1]# vim lib/Makefile
[root@localhost libiconv-1.13.1]# vim libcharset/Makefile
[root@localhost libiconv-1.13.1]# vim libcharset/lib/Makefile
[root@localhost libiconv-1.13.1]# vim preload/Makefile
[root@localhost libiconv-1.13.1]# vim srclib/Makefile
[root@localhost libiconv-1.13.1]# vim src/Makefile
把-L 后面的空格去掉
[root@localhost libiconv-1.13.1]# make
[root@localhost libiconv-1.13.1]# make intall
7.安装 SDL-1.2.14
[root@localhost lib]# tar -xvzf SDL-1.2.14.tar.gz
[root@localhost lib]# cd SDL-1.2.14
[root@localhost SDL-1.2.14]# ./configure --prefix=$PWD/../../output/arm-linux --disable-video-nanox --disable-video-qtopia --disable-video-photon --disable-video-ggi --disable-video-svga --disable-video-aalib --disable-video-dummy --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-video-x11 --disable-nasm --enable-joystick --enable-input-tslib --enable-video-fbcon --host=arm-linux --build=i386 CPPFLAGS="-I$PWD/../../output/arm-linux/include" LDFLAGS="-L$PWD/../../output/arm-linux/lib "
[root@localhost SDL-1.2.14]# make -j4
[root@localhost SDL-1.2.14]# make install
8.安装 SDL_image
[root@localhost lib]# tar -zxvf SDL_image-1.2.8.tar.gz
[root@localhost lib]# cd SDL_image-1.2.8
[root@localhost SDL_image-1.2.8]# ./configure --enable-shared --enable-static --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-bmp --enable-gif --enable-jpg --enable-png --enable-tif --enable-pnm --enable-xpm --disable-sdltest CC=arm-linux-gcc
[root@localhost SDL_image-1.2.8]# vim Makefile
把-L 后面的空格去掉
[root@localhost SDL_image-1.2.8]# make
[root@localhost SDL_image-1.2.8]# make install
9.安装 SDL_ttf
[root@localhost lib]# tar -zxvf SDL_ttf-2.0.9.tar.gz
[root@localhost lib]# cd SDL_ttf-2.0.9
[root@localhost SDL_ttf-2.0.9]# vim glfont.c
手工修改 glfont.c.全部清空,写入如下
void main() {}
[root@localhost SDL_ttf-2.0.9]# ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-shared --enable-static --disable-sdltest --with-freetype-prefix=$PWD/../../output/arm-linux/ --with-sdl-prefix=$PWD/../../output/arm-linux/ CFLAG="-I$PWD/../../output/arm-
linux/include" CC=arm-linux-gcc
[root@localhost SDL_ttf-2.0.9]# vim Makefile
手工修改 Makefile
123 行去 掉-I/usr/include -DHAVE_OPENGL
143 行 改成 GL_LIBS =
266 行 glfont_LDADD = libSDL_ttf.la -lm
[root@localhost SDL_ttf-2.0.9]# make -j4
[root@localhost SDL_ttf-2.0.9]# make install
10.安装 SDL_mixer
[root@localhost lib]# tar -zxvf SDL_mixer-1.2.9.tar.gz
[root@localhost lib]# cd SDL_mixer-1.2.9
[root@localhost lib]# ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-shared --enable-static --disable-sdltest --with-freetype-prefix=$PWD/../../output/arm-linux/ --with-sdl-prefix=$PWD/../../output/arm-linux/CFLAG="-I$PWD/../../output/arm-linux/include" LDFLAGS="-L$PWD/../../output/arm-linux/lib -lSDL -liconv -lfreetype" CC=arm-linux-gcc
[root@localhost lib]# make -j4
[root@localhost lib]# make install
二、编译仙剑源码
[root@localhost sdl]# tar -xvf sdlpal.tar
[root@localhost sdl]# cd sdlpal
1.修改屏幕分辩率
在开发板的文件系统 shell 运行 fbset 查看分辨率
#fbset
mode "480x272-769601"
# D: 111111.111 MHz, H: 211640.212 kHz, V: 769600.770 Hz
geometry 480 272 480 272 16
timings 9 3 2 1 1 40 1
accel false
rgba 5/11,6/5,5/0,0/0
endmode
把 main.c 的 524/525 行改成的板的分辨率
wScreenWidth = 480;
wScreenHeight = 272;
2.修改 Makefile.
修改 nbproject/Makefile-Debug.mk 如下:
14 行改成 RANLIB=arm-linux-ranlib
15 行改成 CC=arm-linux-gcc
16 行改成 CCC=arm-linux-g++
17 行改成 CXX=arm-linux-g++
18 行改成 FC=arm-linux-g77
65 行改成 CFLAGS=-I$(PRJ_ROOT)/output/arm-linux/include -I$
(PRJ_ROOT)/output/arm-linux/include/SDL
68 行改成 CCFLAGS = $(CFLAGS)
69 行改成 CXXFLAGS = $(CFLAGS)
73 行添加 LDFLAGS:=-L$(PRJ_ROOT)/output/arm-linux/lib -lSDL_image
-lSDL_mixer -lSDL_ttf -lSDL -liconv -lpt hread -lmad -ljpeg -lfreetype -lz -lpng
75 行改成 LDLIBSOPTIONS=-lm $(LDFLAGS)
82 行改为${LINK.cc} -o sdlpal_arm ${OBJECTFILES} $
{LDLIBSOPTIONS}把 nbproject/Makefile-Debug.mk 里所有-I/usr/include/SDL 置换成 $
(CPPFLAGS),所有的 GNU-Linux-x86 换成 GNU-Linux-arm,在第一行增加
PRJ_ROOT=/root/Desktop/sdl 这个是编译好的库的位置,要根据自己的实际情
况而定,改变比较多,可以参考 txt 目录下的 Makefile-Debug.mk 文件
[root@localhost sdl]# make
三、把编译好的仙剑可执行程序拷贝到仙剑的运行资源目录下
[root@localhost sdlpal]# cp sdlpal_arm ../data/
四、运行资源文件都必须小写
[root@localhost data]# mv WOR16.FON wor16.fon
[root@localhost data]# mv M.MSG m.msg
五、把编译好的可执行文件以及库全部拷贝到开发板的文件系统中
[root@localhost data]# cp ../output/arm-linux /nfsroot -rf
[root@localhost data]# cp ../data /nfsroot -rf
六、在开发板上运行仙剑
[root@zhiyongli /]# export LD_LIBRARY_PATH=/arm-linux/lib
[root@zhiyongli /]# cd data
[root@zhiyongli /]# ./sdlpal_arm
在开发板上插入一个 USB 键盘就可以玩了
七、利用开发板的按键玩游戏
把开发板按键驱动加入内核,执行如下命令:
主机:
[root@localhost sdl]# cd key_driver
[root@localhost key_driver]# cp key_test.ko /nfsroot
开发板:
[root@zhiyongli /]# insmod key_test.ko