Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1683004
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: LINUX

2010-11-02 01:35:24

Andrew Haung 转载请注明作者及联络方式
 
   dosbox是针对x86的的DOS模拟器。它可以运行在Linux/Windows之上。这样原来DOS下很多工具和游戏就可以直接运行起来。
   它的底层基于SDL。
 
一.RHEL的安装
----------------------------------------------------------------------
 
1.到官网下载源码.
   
 
   源码:
 
 
   要求正确编译SDL/SDL_image/SDL_ttf/SDL_mixer/SDL-net
 
    ./configure
    make
    make install
 
   在图形界面下运行dosbox,显示如下界面表示成功
 
与Linux交换文件。需要在dosbox下用mount命令把某一个目录虚拟成DOS盘符.
 
mount <盘符>
 
如 mount C:/ /home/hxy
 
把仙剑的DOS版拷入/home/hxy.
 
然后进入C:/SDLPAL 执行  pal.即可显示如下界面
 
 
DOS游戏下载
      
 
 
 我下了其中的阿拉丁,运行中的INSTALL.bat  c:\aladdin2,然后在aladdin2运行aladdin.exe
 
 
 
二.ARM版本下的移植
--------------------------------------------------------------------
1.它需要SDL/SDL_net/SDL_sound/alsa库。因此在此这前必须移植这几个库
 
 
libSDL_sound库的移植
下载
 
 
生成Makefile
./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
 
 
dosbox移植
  ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux  --disable-opengl --with-sdl-prefix=$PWD/../../output/arm-linux  --with-alsa-prefix=$PWD/../../output/arm-linux
 
在开发板上运行dosbox。第一次运行会生成配置文件。它是自动在当前目录下
.dosbox/dosbox-0.74.conf
但是分辩率不一样。需要调整。
 
dosbox.conf 这里需要将其设为
  fullresolution=480x272
  fullscreen=true
 
这个选项在开发板上一运行就死掉。用缺省的分辩率也总是比屏幕大。
 
 
 
最后不得以打开源码发现在src/gui/sdlmain.c下的
  static void show_warning(char const * const message)发现用
 
if(!sdl.surface) sdl.surface = SDL_SetVideoMode(640,400,0,0);
 
换成如下语句
  if(!sdl.surface) sdl.surface = SDL_SetVideoMode(480,272,16,0);
 
另外发现dosbox的SDL全屏模式采用直接采用SDL的全屏硬件模式,这个开发板上好象并未支持,因此挂掉比较正常
 
另外在下面
SDL_Surface* splash_surf = SDL_CreateRGBSurface(SDL_SWSURFACE, 640, 400, 32, rmask, gmask, bmask, 0);
换成
 SDL_Surface* splash_surf = SDL_CreateRGBSurface(SDL_SWSURFACE, 640,320, 16, rmask, gmask, bmask, 0);
 
但是重编译仍然显示不正常,show_warrning只是部分调用。后再读代码发现是按VGA的缺省配置来设置的。
 
启动画面:
  src/gui/sdlmain.c::GUI_StartUp()
 
 
另外我的SDL是用oss而非alsa.这样比较简单。因此需要在
[MIDI]中把mididevice=default 改成mididevice=oss
打开oss
 
另外需要[autoexec] 可以写自动命令
 一般会把几个目录自动mount成DOS 盘符
 
比如 SD卡的路径 /udisk 指定d:盘
  mount d: /udisk
  mount c: /game/dos
 
阅读(3607) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~