技术开发 频道

移植VBA项目到OPhone系统

  移植步骤:

  1,将VisualBoyAdvance目录放入packages/apps目录下,创建android.mk文件,创建工程编译配置项:

include $(CLEAR_VARS)
LOCAL_MODULE :
= libvba
include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE_TAGS :
= tests
LOCAL_SHARED_LIBRARIES :
= libc libm libui libpng libz

   2,将目录中的C++源码文件列表放入android.mk文件列表中,在VisualBoyAdvance目录下使用如下命令,

find -name *.cpp | grep -v win32 | grep -v gtk | awk 'BEGIN
     {print "common_SRC_FILES:= \\"} {print $0 " \\"}'
common_SRC_FILES:= \
.
/src/gb/gbGlobals.cpp \
.
/src/gb/gbPrinter.cpp \
… #省略很多文件列表
.
/src/bilinear.cpp #结尾处连接符手工删除

   3,手工将./src/sdl/SDL.cpp里面所有涉及sdl api调用的函数全部注空,待填入新的窗口系统处理代码。

  4,试着在该目录下键入mm命令编译,正常情况下,能够一次编译通过,如有问题,应将编译错误解决。

  5,SDL模块的替换思路如下:输入事件用jni接口方式,从java层获取的键盘事件传入,游戏输出的画面帧则通过直接写入java层申请得到Surface对应的native对象,并及时刷新来实现。

  6,用eclipse创建java层代码,主要是创建全屏的窗口,窗口类型为SurfaceView,并将Surface对象通过jni接口传入 libvba中,同理将窗口获取的事件传入libvba中,将启动应用的参数(rom文件路径以及其它配置项)传入libvba中,最终由libvba来实现对rom的模拟执行,将用户的输入转为每一帧的游戏画面,并呈现在手机屏幕上。

0
相关文章