tankweight 发表于 2019-4-11 22:30:59

龙芯派上移植超级玛丽

本帖最后由 tankweight 于 2019-5-30 00:36 编辑

https://gitee.com/tankweight/Game   用到了boost库的any库,只需要包含头文件即可,不用引入boost库。

首先介绍一下超级玛丽游戏,这是一个叫Jens Wellmann的老外写的游戏,用C++写的,用的是SDL 1.0,发布时间是2005/年9月18号,这天有点巧哦,既是抗战胜利和反法西斯战争胜利60周年,又是九一八。这个游戏是跨Windows和Linux的,我拿到这个游戏的源码后先在Windows上跑通了,然后改成了SDL2.0,移植到派上的工作不难,主要是相关的库难编译。 源码工程项目里面我把.PNG名称的图片都修改了rename .PNG .png *.PNG
原作者的makefile我也根据实际情况修改了。第二版的编译配置文档我总结一下makefile,迁移到SDL2.0的总结也会写好。
   需要SDL 2.0,lpng1636,jpeg-6b,freetype-2.10.0,SDL2_image-2.0.4,SDL2_mixer-2.0.4,SDL2_ttf-2.0.15,zlib-1.2.11这几个库。
jpegsr6.zip这个文件太小了,上传不了,得需要的朋友自己去找,还有这个zlib-1.2.11.tar.gz
   编译过程中如果碰到执行configure没有权限的错误,chmod +x configure
再./configure 如果遇到因为configure文件在windows先编辑过的打开错误
执行sed -i 's/\r$//' configure
   先把cmake装了,下载cmake-3.12.1,解压后,终端进入,./configure make -j2 make install就行了。
   编译SDL2.0:cd 进入,用文本编辑器打开CmakeLists.txt文件,再第343行找到
set_option(SDL_TEST            "Build the test directory" OFF)
把这个OFF改成ON,test也要编译。然后
mkdir build
cd build
cmake ../.
然后make -j2 make install 这段时间干点别的事情。好了之后,进入test,随便找个可执行程序./执行,说明编译好了。
然后是lpng1636,新版的png编译出现的一些错误难得修改,暂时用1636版的。
派上编译png会出现config.guse的一些line command not found错误,得把libtool/config下的config.sub config.guess这两个文件拷贝到lpng1636目录下替换原有的两个对应的文件。先用yum安装libtool
yum install libtool
yum install libtool-ltdl
yum install libtool-ltdl-devel
pwd
cd /usr/share/libtool/
cd config/
cp config.sub /root/workspace/lpng1636
cd /root/workspace/lpng1636
cp config.guess /root/workspace/lpng1636
或者cp /usr/share/libtool/config/config.guess .
   cp /usr/share/libtool/config/config.guess .   .符号表示当前目录
cd /root/workspace/lpng1636
ls
./configure
make clean
make -j2
make install

sed -i 's/\r$//' configure
yum install zlib
yum install zlib1g-dev
yum install zlib-dev

然后是jpeg-6b
cd /usr/share/libtool/config/
cp config.guess config.sub /root/workspace/jpeg-6b/
./configure make make install


cd freetype-2.10.0
ls
mkdir build
cd build
cmake ../.
make -j2
make install

vi /etc/ld.so.conf
我的ld.so.cof内容如下:
include ld.so.conf.d/*.conf
/usr/local/lib
/opt/sdl2_image/lib
/opt/sdl2_mixer/lib
/opt/sdl2_ttf/lib
然后执行
ldconfig
ldconfig -p
mixer和ttf编译很容易
./configure --prefix=/opt/sdl2_mixer CFLAGS="-I/usr/local/include" SDL_LIBS="-L/usr/local/lib/libSDL2.so -lSDL"
./configure --prefix=/opt/sdl2_ttf CFLAGS="-I/usr/local/include" SDL_LIBS="-L/usr/local/lib/libSDL2.so -lSDL"

编译SDL2_image-2.0.4
先执行./autogen.sh 一定要执行这一步,不然配置过程中会有跟jpeg库相关的错误提示。
然后
./configure --prefix=/opt/sdl2_image CFLAGS="-I/usr/local/include" SDL_LIBS="-L/usr/local/lib/libSDL2.so -lSDL" LIBPNG_CFLAGS="-I/usr/local/include/libpng16" LIBPNG_LIBS="-L/usr/local/lib/libpng.a -lpng" --enable-static --enable-bmp --enable-gif --enable-jpg --enable-png --enable-tif --enable-pnm --enable-xpm
make -j2
make install

进入超级玛丽工程 make clean make -j2./megamario可以愉快的玩游戏了




tankweight 发表于 2019-4-11 22:42:41

这是源码和相关的库,有好几个库太大了,只能朋友们自己下载了。

tankweight 发表于 2019-4-11 22:58:05

本帖最后由 tankweight 于 2019-4-12 22:58 编辑

源码,makefile在里面。图片资源和音乐资源我会放百度网盘共享。

sn2015ol 发表于 2019-4-14 03:39:15

对龙芯派是不是大材小用了啊?

VG2018 发表于 2019-4-14 10:53:26

有意思。感谢分享!

tankweight 发表于 2019-4-15 19:46:48

sn2015ol 发表于 2019-4-14 03:39
对龙芯派是不是大材小用了啊?

能玩游戏也很好啊

tankweight 发表于 2019-4-15 20:00:50

sn2015ol 发表于 2019-4-14 03:39
对龙芯派是不是大材小用了啊?

准备在派上跑强化学习来训练超级玛丽和怪物
页: [1]
查看完整版本: 龙芯派上移植超级玛丽