Andrew Huang 转载请注明作者及出处
在做通实验后,开始将这个函数库加入到Linux的SDL库当中.
关于Post Process的简单实验和函数库,请参见我的博文件
我开始考虑将其加入到SDL的显示功能当中,这样SDL_fbvideo.c加入一定补丁代码修改后.新的功能加入到SDL库,这样所有利用的SDL库的软件均可以在不修改代码的情况下,利用为硬件缩放代码在自由的在不同尺寸屏幕上显示.这样以前很多无法移植的SDL程序就可以简单移植到S3C6410开发板上。
比如我以前移植失败的Dosbox.
因为绝大部分游戏模拟器都是采用SDL作为底层显示库,所以利用这个功能,我们可以把S3C6410打造一个超级游戏机,当然从成本上来说,比一般MP4的游戏机贵了很多,但是强劲不少。
一.SDL tank移植
SDL tank 是模拟红白机一个经典游戏,这个游戏有人用SDL来移植,但是因为其它地图采用二维数组来表示,与图片的高宽度有很重大的关联,因此一但修改了分辩率,其地图要全部重画,工作量不少。以前有不少学生试着移植到Linux开发板.均告失败或者功能损失很多。
原程序是针对640*480 16bpp的显示。
源码可以从这里下载
如果在480*272的4.3"屏幕上显示,最快方法是用硬件缩放
Makefile的修改
- MAIN = tank
-
CROSS=arm-linux-
-
CC = $(CROSS)g
-
CFLAGS =
-
PRJ_HOME=$(PWD)/../../output/arm-linux
-
#INCLUDE = -I/usr/include/SDL
-
INCLUDE = -I$(PRJ_HOME)/include
-
LIBS = -L$(PRJ_HOME)/lib -lSDL -lSDL_image -lSDL_mixer -lts -lfreetype -lpng -ljpeg -liconv -lmad -lz
-
HEADER =
-
OBJS = draw.o function.o game.o hit.o init.o keyevent.o newtank.o test.o
-
-
all: $(MAIN)
-
-
.cpp.o:
-
$(CC) -c $(CFLAGS) $(INCLUDE) $<
-
-
$(MAIN): $(OBJS)
-
$(CC) -o $(MAIN) $(OBJS) $(LIBS)
-
-
clean:
-
rm -f *.o a.out $(MAIN) core *~
这里的运行,采用按键的input event驱动,用来模拟键盘的按键,并且重新调整了按键对应用,让第一个用户使用光标键移动,回车键开火,这样开发板上的按键即可操作一辆坦克.如果两个游戏者可能用USB键盘来操作.
基本移植后,声音和操作正常
二. Dosbox ARM的移植
1.基本版本的移植
可以参考的我文章
生成Makefile
./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
编译 make
安装 make install
最后需要在bin目录写一个run_dos.sh来运行dosbox
2.关于dosbox的配置文件
在运行dosbox后,会自动生成一个配置文件 ~/.dosbox/dosbox-0.7.4.conf .修改其中一行配置让软件在开发板运行更加方便
关于按键错误
在ARM-LINUX下或者桌面机的VGA=788的frame buffer的模式情况下运行DOSBOX,用USB键盘按下的键与实际的显示的键全部错位.
比如在DOSBOX控制台下输入z,则显示j.这样的游戏机无法正常运行,而在X11中无此问题.
经过分析和打印运行中间结果,发现是运行中没有采用SDL的按键而且采用扫描码来取得健值原因,必须将配置文件中的默认的usescancodes=true,
改为
usescancodes=false
关于在dosbox运行游戏
在开发板上运行dosbox玩游戏有两种办法,一种是接上USB键盘直接在DOSBOX控制台输入DOS命令。别外一种方法是直接把DOS命令系列写在配置文件的AUTOEXEC 段中,这样将一启动DOSBOX就会自动运行游戏.
两种方法输入命令都一样的。
因为dos程序都是运行在DOS盘符之下(跟WINDOWS一样), 首先要用扩展命令MOUNT把某一个目录映射成盘符
mount y /home/hxy/aladdin #将/home/hxy/aladdin 映射成DOS下的Y:
然后把DOS游戏拷入这个目录下,然后直接用这个路径运行程序。
运行游戏阿拉丁神灯
运行游戏阿拉丁神灯这个游戏为例演示如何安装和运行DOS游戏。
它程序是用DOS下的压缩软件lha.exe打包发行的,因此要用LHA来解压。将游戏压缩包拷入DOS盘符的根目录。 假设是 /home/hxy/aladdin
在[AUTOEXEC]段输入如下命令
- MOUNT Y /home/hxy/aladdin
-
Y:
- MKDIR Y:\ALADDIN
-
INSTALL.BAT Y:\ALADDIN\
安装成功后再直接执行ALADDIN
- MOUNT Y /home/hxy/aladdin
-
Y:
-
CD \ALADDIN
-
SETSND
-
ALADDIN
阅读(2934) | 评论(1) | 转发(1) |