搜索
bottom↓
回复: 62

Mini6410上移植<<仙剑奇侠传>>详细步骤(附图)

[复制链接]

出0入0汤圆

发表于 2010-12-29 22:59:07 | 显示全部楼层 |阅读模式
原文 :http://blog.chinaunix.net/u3/105675/showart_2325128.html\

0.支持库的编译
------------------------------------------------------------------
  仙剑奇侠传是DOS下经典游戏。这个游戏最早是一个DOS下的商业游戏,流行一行。后来还拍成的电视剧。

  LINUX上的的仙剑是在分析了其中游戏资源文件的格式情况下,用SDL重写一个开源软件。后来这个版本还移植到Android上。在我的乐phone手机也能完美运行。
   这是一批一批的开发人员接力完成的开源项目,完整写一个教材,也是我小小支持。

  这个游戏需要 SDL/SDL_mixer/SDL_ttf/SDL_image四个库
  而这四个库分别需要 mad/zlib/iconv/freetype/jpeg/png库. 嵌入式版本还需要tslib.因此完整的游戏需要大量移植工作

X86库的支持库编译
   

编译freetype
   tar xvzf freetype-2.3.11.tar.gz
   cd freetype-2.3.11
     ./configure
     make
     make install
安装zlib
      tar xvzf zlib-1.2.3.tar.gz
      cd zlib-1.2.3
       ./configure --enable-shared --enable-static
        make
       make install
安装libiconv
        tar xvzf libiconv-1.13.1.tar.gz
          cd libiconv-1.13.1
          ./configure
          make
         make install
安装libmad
    tar xvzf libmad-0.15.1b.tar.gz
      cd libmad-0.15.1b
      ./configure
       make
        make install
安装jpeg
   tar xvzf jpegsrc.v6b.tar.gz
   cd jpeg-6b
   ./configure
   make
   mkdir -p /usr/local/man/man1 #因为安装没有自己创建这个目录
    make install
安装libpng
      tar xvjf libpng-1.2.19.tar.bz2
       cd libpng-1.2.19
       ./configure
        make
        make install
安装SDL
     tar xvzf SDL-1.2.14.tar.gz
     cd SDL-1.2.14
     ./configure
      make
      make install
   
安装SDL ttf库
     tar xvzf SDL_ttf-2.0.9.tar.gz
      cd  SDL_ttf-2.0.9
      ./configure
       make
       make install

安装SDL_image库
     tar xvzf SDL_image-1.2.8.tar.gz
         cd SDL_image-1.2.8
       ./configure
        make
        make install
安装SDL_mixer
tar xvzf SDL_mixer-1.2.9.tar.gz
  cd SDL_mixer-1.2.9
     ./configure --enable-music-mp3-mad-gpl --enable-music-mp3=no
      make
       make install

   

一.x86版本的编译运行

  这个用SDL实现的经典游戏的代码同样经典,支持屏幕缩放,键盘,MOUSE和JOY Stick支持。因此在X86上可以玩得更多。

   

(原文件名:xianjian-x86.png)


x86 版本比较简单,直接在源代码目录下,直接make就行

其中dist/Debug/GNU-Linux-x86/目录下的sdlpal就是可执行文件.

运行仙剑的准备工作。

  它需要原版的资源文件。所以要在网上找到DOS版的资源包。注意原版文件名一般是大写的,而开源Linux版需要全部小写的文件。需要一一改过来。全部资源文件名如下:
0.rpg         1.rpg         abc.mkf
ball.mkf      data.mkf      f.mkf         fbp.mkf       fire.mkf
gop.mkf       install.exe   m.msg         map.mkf       mgo.mkf
midi.mkf      mpu401.drv    mus.mkf       pal.exe       pat.mkf
play.bat      rgm.mkf       rng.mkf       roriso.nfo    run.sh
sdlpal        sdlpal.map    setup.dat     sss.mkf       voc.mkf
wor16.asc     wor16.fon     word.dat

把编译好的sdlpal 程序拷入这个目录。
执行语句
  export LD_LIBRARY_PATH=/usr/local/lib; ./sdlpal

二.ARM版本支持库移植
-----------------------------------------------------------------------------

2.1.arm版本支持库的移植.

   
这里采用相应的移植规范.
   1.freetype移植
        tar xvzf freetype-2.3.11.tar.gz
        cd freetype-2.3.11
       ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
       make
      make install
   
  2.移植zlib库
          tar xvzf zlib-1.2.3.tar.gz
          cd zlib-1.2.3
          CC=arm-linux-gcc NM=arm-linux-nm CPP="arm-linux-gcc -E " RANLIB="arm-linux-ranlib" AR="arm-linux-ar rcv" ./configure --shared --prefix=$PWD/../../output/arm-linux
            make
           make install

   3. 移植jpeg库
           tar xvzf jpegsrc.v6b.tar.gz
            cd jpeg-6b/
           ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux  --enable-shared
       #这里直接用环境变量来修改Makefile,会造成configure执行失败.因此只能手工修改Makefile

             #手工修改Makefile ,把所有工具链用arm-linux-gcc工具链
                       #23 行改为  CC= arm-linux-gcc
                       #63行改为 AR = arm-linux-ar rc
                       #65行改为 AR2= arm-linux-ranlib

         make
         mkdir -p $PWD/../../output/arm-linux/man/man1
         make install

4.移植 png库
        tar xvjf libpng-1.2.19.tar.bz2
        cd libpng-1.2.19
         ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
         make
         make install

5.移植libmad
       tar xvzf libmad-0.15.1b.tar.gz
       cd libmad-0.15.1b
       ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
           #手工修改Makefile 把129的-fforce-mem去掉
         make
         make install

6.移植libiconv库
        tar xvzf libiconv-1.13.1.tar.gz
        cd libiconv-1.13.1
        ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
         make
         make install

移植tslib参见我相关博文.

7.SDL库的移植
注意SDL的ALSA音频在ARM板上很不正常,会造成SDL启动卡死的现象,因此这里还是采用OSS音频。

   tar xvzf SDL-1.2.14.tar.gz
   cd 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 "
make
  make install

8.SDL_image库移植
      tar xvzf SDL_image-1.2.8.tar.gz
      cd 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 SDL_CFLAGS="-I$PWD/../../output/arm-linux/include" \
  SDL_LIBS="-L$PWD/../../output/arm-linux/lib -lSDL"  LIBPNG_CFLAGS="-I$PWD/../../output/arm-linux/include" \
   LIBPNG_LIBS="-L$PWD/../../output/arm-linux/lib -lpng" CPPFLAGS="-I$PWD/../../output/arm-linux/include/SDL "\
  LDFLAGS="-L$PWD/../../output/arm-linux/lib -ljpeg -lts -lpng -liconv"

  make
  make install

9 SDL_ttf 库移植
            tar xvzf SDL_ttf-2.0.9.tar.gz
            cd 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" \
LDFLAGS="-L$PWD/../../output/arm-linux/lib -lSDL -lts -liconv -lfreetype"

           #手工修改Makefile,去掉OpenGL相关处理
              # 123行去 掉-I/usr/include -DHAVE_OPENGL
              #  143行 改成GL_LIBS =
              # 266行 glfont_LDADD = libSDL_ttf.la -lm
           #手工修改 glfont.c.全部清空,写入如下
               #void main() {}
        make
        make install

10.音频库SDL_mixter移植
        tar xvzf SDL_mixer-1.2.9.tar.gz
         cd SDL_mixer-1.2.9
         ./configure --enable-music-mp3-mad-gpl --enable-music-mp3=no \
--host=arm-linux --prefix=$PWD/../../output/arm-linux \
--with-sdl-prefix=$PWD/../../output/arm-linux --enable-shared --enable-static
     make
     make install


三.SDLPAL的ARM版的移植
-----------------------------------------------------------------------------
ARM版本的的调整需要做如下处理,
   用unzip码解压zip源码
      

   2.1 修改屏幕分辩率
        开发板的分辩率可以在busybox下运行fbset命令查看到
           我用的6410板是采用 480*272 (QVGA),bpp是16
          #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.2 修改Makefile.
     通过对主Makefile的分析,实际编译动作,是nbproject/Makefile-Debug.mk 来实现的。
     在ARM板的移植可以通过修改这个Makefile来完成.

    14行改成  RANLIB=arm-linux-ranlib
     15行改成  CC=arm-linux-gcc
     16行改成  CCC=arm-linux-g++
     17行改成  CXX=arm-linux-g++


     65行 改成 CFLAGS="-I$(PRJ_ROOT)/output/arm-linux/include"
     68行 CCFLAGS = $(CFLAGS)
     69行 CXXFLAGS = $(CFLAGS)

     82行改为
    ${LINK.cc} -L$(PRJ_ROOT)/output/arm-linux/lib  -lfreetype -liconv -lmad -lz -ljpeg -lpng -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL -Xlinker -Map=dist/Debug/GNU-Linux-x86/sdlpal.map -o sdlpal_arm  ${OBJECTFILES}


  把Makefile里所有 -I/usr/include/SDL 置换成 为空

    所有的GNU-Linux-x86换成 GNU-Linux-arm  

      
     在第一行增加 PRJ_ROOT=/home/hxy #这个要根据你自己目录来定

这里改动比较多,因此可以参考我写的模板的.   

  2.2 声音的处理.
    另外在实测发现SDL如果用ALSA模式在ARM板上启动时会卡死。最后只能换成OSS才能正常运行通过。

  2.3 在ARM-LInux的USB JoyStick
     它是直接支持的,插入后直接直接用手柄的来控制。

  2.4 MOUSE及触摸屏操作
       默认的的MOUSE支持没有打开。可以简单的写在common.h 最后部分加入
     #define PAL_HAS_MOUSE
     并且在Linux打开tslib支持。而且tslib支持需要大量的环境变量支持。具体情况参见我的博文。

   并且调用sdlpal_arm之前。需要设SDL的环境变量
     SDL_MOUSEDRV=tslib
     SDL_MOUSEDEV=/dev/input/event1  #这个取决于你tslib的设置。这里只是我的板上tslib的事件结点。
   
2.5设置运行进的LD_LIBRARY_PATH指向支持库路径
     
     export LD_LIBRARY_PATH=/mnt/output/arm-linux/lib ; ./sdlpal_arm


(原文件名:xianjian-arm.jpg)



以上是实际运行效果,各部分都正常工作
  

   

最终运行结果是在S3C6410运行成功

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-12-29 23:15:04 | 显示全部楼层

出0入0汤圆

发表于 2010-12-29 23:16:29 | 显示全部楼层
牛贴得顶

出0入0汤圆

发表于 2010-12-29 23:37:16 | 显示全部楼层
高手。。搬个凳子看看。

出0入0汤圆

发表于 2010-12-29 23:49:22 | 显示全部楼层
额,楼主你老牛了

出0入0汤圆

发表于 2010-12-29 23:51:19 | 显示全部楼层
MAIRK

出0入0汤圆

发表于 2010-12-30 00:05:11 | 显示全部楼层
好玩,先mark!

出100入0汤圆

发表于 2010-12-30 08:22:01 | 显示全部楼层
大牛,顶

出0入0汤圆

发表于 2010-12-30 08:30:28 | 显示全部楼层
顶!

出0入0汤圆

发表于 2010-12-30 08:43:44 | 显示全部楼层
牛头

出0入0汤圆

发表于 2010-12-30 08:44:45 | 显示全部楼层
大家又有“新”的游戏可以玩了哈,强悍!

出0入0汤圆

发表于 2010-12-30 09:13:33 | 显示全部楼层
一个字 强

出0入0汤圆

发表于 2010-12-30 09:26:38 | 显示全部楼层
不得不说强!
太给力了!

出0入296汤圆

发表于 2010-12-30 09:28:52 | 显示全部楼层
太给力了~!

出0入0汤圆

发表于 2010-12-30 09:57:11 | 显示全部楼层
真棒啊,如果有更好的DOS/X86模拟器,可以把当年的N多游戏都玩起来,毕竟那时候的CPU只有几十M来着,用几百M的ARM来模拟,不会差到哪里去。。。

出0入0汤圆

发表于 2010-12-30 10:35:59 | 显示全部楼层
牛贴得顶

出0入18汤圆

发表于 2010-12-30 10:36:23 | 显示全部楼层
很好

出0入0汤圆

发表于 2010-12-30 10:53:59 | 显示全部楼层
强烈关注!

谁给讲讲原理,我一头雾水!

出0入9汤圆

发表于 2010-12-30 11:40:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-30 11:43:28 | 显示全部楼层

出0入0汤圆

发表于 2010-12-30 12:27:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-30 12:30:04 | 显示全部楼层
牛逼~!

出0入0汤圆

发表于 2010-12-30 12:33:14 | 显示全部楼层
强大,改天也按楼主的方法在OMAP3530下试试

出0入0汤圆

发表于 2010-12-30 12:45:31 | 显示全部楼层
NB

出0入0汤圆

发表于 2010-12-30 12:58:38 | 显示全部楼层
MARK之,慢慢看!!

出0入0汤圆

发表于 2010-12-30 14:08:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-30 14:24:53 | 显示全部楼层
真的相当给力 ding!!

出0入0汤圆

发表于 2010-12-30 15:07:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-30 15:10:21 | 显示全部楼层
太牛拉!

出0入0汤圆

发表于 2010-12-30 15:36:25 | 显示全部楼层
非常好,我看2440上也行。能不能WINCE6入手,可以省不少事

出0入0汤圆

发表于 2010-12-30 16:58:26 | 显示全部楼层
不知道在MINI2440上运行效果怎么样?

出0入0汤圆

发表于 2011-2-10 21:18:20 | 显示全部楼层
超强,mark一下

出0入0汤圆

发表于 2011-2-10 21:31:24 | 显示全部楼层
markkkkkkkkkkkkkkk

出0入0汤圆

发表于 2011-2-11 10:43:30 | 显示全部楼层
很强大

出0入0汤圆

发表于 2011-2-11 17:33:53 | 显示全部楼层
牛贴,留个记号。谢谢分享!

出0入0汤圆

发表于 2011-2-11 19:39:53 | 显示全部楼层
不是一般的强

出0入0汤圆

发表于 2011-2-11 20:34:07 | 显示全部楼层
太强了!不顶不行1

出0入0汤圆

发表于 2011-2-11 21:17:03 | 显示全部楼层
哇!超犀利哦

出0入0汤圆

发表于 2011-2-11 21:27:27 | 显示全部楼层
好啊,改天移植到MINI2440下不知道能不能行

出0入0汤圆

发表于 2011-2-11 21:38:51 | 显示全部楼层
NB大了,必须收藏

出0入0汤圆

发表于 2011-2-13 10:34:16 | 显示全部楼层
这得留着  一切都是经典啊 !!!

出0入4汤圆

发表于 2011-2-13 10:35:43 | 显示全部楼层
太给力了!

出0入0汤圆

发表于 2011-2-14 16:26:37 | 显示全部楼层
不错,nx

出0入0汤圆

发表于 2011-2-16 09:13:39 | 显示全部楼层
不得不说强!
太给力了!

出0入0汤圆

发表于 2011-2-16 09:26:43 | 显示全部楼层
真是厉害啊,学习了

出0入0汤圆

发表于 2011-2-20 14:48:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-20 17:09:57 | 显示全部楼层
lz 那个run.sh还有sdlpal怎么弄来呢?要自己写嘛?

出0入0汤圆

发表于 2011-2-20 17:56:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-20 18:12:21 | 显示全部楼层
经典

出0入0汤圆

发表于 2011-2-20 18:13:08 | 显示全部楼层
正好有个6410开发板,过几天试试

出0入0汤圆

发表于 2011-2-20 20:24:52 | 显示全部楼层
牛的不得了,顶了

出0入0汤圆

发表于 2011-2-20 21:36:06 | 显示全部楼层
Mark,准备买个板子也试试!

出0入0汤圆

发表于 2011-2-20 22:04:59 | 显示全部楼层

出0入0汤圆

发表于 2011-2-21 10:14:19 | 显示全部楼层
强!

出0入0汤圆

发表于 2011-2-21 14:57:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-15 01:19:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-18 22:25:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-20 09:29:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-20 09:33:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-20 13:28:01 | 显示全部楼层
强 mark

出0入0汤圆

发表于 2011-4-20 13:30:27 | 显示全部楼层
竟然没有看到过!强!

出0入0汤圆

发表于 2011-4-20 13:55:03 | 显示全部楼层
记号~~

出0入0汤圆

发表于 2011-5-12 16:53:42 | 显示全部楼层
mark 之
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 15:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表