はじめに
特に理由が無い限り、このページのバイナリではなく ONScripter on Android のページ のバイナリを使
用してください。
フレームバッファ (/dev/graphics/fb0) に直接アクセスすることによっ
て Android 上で動作する
ONScripter のバイナリパッケージを配布します。実行には root 権限が必要
です。SDL など必要なライブラリは全て静的にリンクされているため、単体で
動作するはずです。
現在のところエミュレータ(Android 2.2)上でしかテストしておりません。
ただし 以下の手順を見てもわかるとおり、コンパイルは Android のバージョ
ンに非依存なので、他のバージョンの Android でも動作すると思います。何
か要望があればご連絡下さい。
実行方法
/sdcard にゲームのファイル一式(nscript.dat, arc.nsa, default.ttf な
ど)があるとします。
> adb push onscripter_android /sdcard
> adb shell /sdcard/onscripter_android -r /sdcard
開発環境の導入
ここでは当方の環境(Linux Debian/squeeze)における開発環境の導入方法
を説明します。
Emulator の導入方法については、まずAndroid SDK Starter
Packageから自身の環境に合わせて SDK インストーラをダウンロードして
実行してください。インストーラの実行に Sun JAVA が必要です。Eclipse や
NDK は必要ありません。その後の Emulator の設定方法などについてはグーグルなどで調べてください。
クロスコンパイラ
Download
Sourcery G++ Lite Edition for ARMより GNU/Linux on ARM 用のクロス
コンパイラのインストーラ (IA32 GNU/Linux Installer) をダウンロードして
実行します。
> sudo sh arm-2010q1-202-arm-none-linux-gnueabi.bin
インストール先は、例えば /opt/Sourcery_G++_Lite とします。
環境変数
以下のファイルを作成し、クロスコンパイルをする前に、source
dev-arm-android.sh として環境変数を設定します。
dev-arm-android.sh:
setenv PATH /opt/Sourcery_G++_Lite/bin/:/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi/bin/:$PATH
setenv LD arm-none-linux-gnueabi-ld
setenv CC arm-none-linux-gnueabi-gcc
setenv CXX arm-none-linux-gnueabi-g++
setenv LDFLAGS -L/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi/lib
setenv CFLAGS -I/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi/include
echo "Altered environment for Android Development ARM"
SDL-1.2.14
SDL本家より SDL-1.2.14.tar.gz
をダウンロード。
SDL-1.2.14/src/video/fbcon/SDL_fbvideo.c の中で、
"/dev/fb0" を "/dev/graphics/fb0" に2個所置換しま
す。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--enable-video=yes \
--enable-cdrom=no \
--enable-joystick=yes \
--enable-loadso=no \
--enable-esd=no \
--enable-arts=no \
--enable-pulseaudio=no \
--enable-video-fbcon=yes \
--enable-shared=no \
--enable-sdl-dlopen=no \
--enable-video-x11=no \
--enable-x11-shared=no \
--enable-dga=no \
--enable-video-dga=no \
--enable-video-x11-dgamouse=no \
--enable-video-x11-vm=no \
--enable-video-x11-xv=no \
--enable-video-x11-xinerama=no \
--enable-video-x11-xme=no \
--enable-video-x11-xrandr=no \
--enable-video-photon=no \
--enable-video-carbon=no \
--enable-video-cocoa=no \
--enable-video-fbcon=yes \
--enable-video-directfb=no \
--enable-video-ps2gs=no \
--enable-video-ggi=no \
--enable-video-svga=no \
--enable-video-vgl=no \
--enable-video-wscons=no \
--enable-video-aalib=no \
--enable-video-qtopia=no \
--enable-video-picogui=no \
--enable-video-dummy=no \
--enable-video-opengl=no
> make
> sudo make install
libjpeg 8b
Independent JPEG Groupより
jpegsrc.v8b.tar.gzをダウンロード。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--enable-shared=no
> make
> sudo make install
zlib-1.2.5
zlibより zlib-1.2.5.tar.gz をダ
ウンロード。
> configure --static --prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi
Makefile: line 171 を以下のように修正
-cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)
> make
> sudo make install
libpng-1.2.43
libpngより
lbipng-1.2.43.tar.gz をダウンロード。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--enable-shared=no
> make
> sudo make install
SDL_image-1.2.10
SDL本家より
SDL_image-1.2.10.tar.gz をダウンロード。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--enable-shared=no
> make
> sudo make install
SDL_mixer-1.2.11
SDL本家より
SDL_mixer-1.2.11.tar.gz をダウンロード。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--disable-music-mp3 \
--disable-music-ogg --disable-music-native-midi \
--disable-music-cmd --disable-music-mod \
--disable-smpegtest \
--enable-shared=no
> make
> sudo make install-lib
> sudo make install-hdrs
bzip2-1.0.5
The bzip2 and libbzip2
official home pageより bzip2-1.0.5-tar.gz をダウンロード。
Makefile: の下記の行を変更
CC=arm-none-linux-gnueabi-gcc
AR=arm-none-linux-gnueabi-ar
RANLIB=arm-none-linux-gnueabi-ranlib
PREFIX=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi
all: libbz2.a bzip2 bzip2recover
> make
> sudo make install
freetype-2.3.12
the Free Type Projectより
freetype-2.3.12.tar.gz をダウンロード。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--enable-shared=no
> make
> sudo make install
SDL_ttf-2.0.9
SDL本家より
SDL_ttf-2.0.9.tar.gz をダウンロード。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--without-x \
--enable-shared=no
> make
> sudo make install
mad-0.15.1b
MAD: MPEG Audio Decoderより libmad-0.15.1b.tar.gz をダウンロード。
MADは整数計算のみでMP3をデコードするライブラリです。ARM系のCPUでは
浮動小数点計算が非常に遅いため、ONScripterでは、SMPEGに差し替えこれで
MP3をデコードします。
> configure \
--prefix=/opt/Sourcery_G++_Lite/arm-none-linux-gnueabi \
--host=i386-linux \
--target=arm-linux \
--enable-fpm=arm --enable-speed --disable-debugging --enable-sso \
--enable-shared=no
> make
> sudo make install
ONScripter
最後に、ONScripter のページから最
新の ONScripter のソースをダウンロードしてコンパイルします。strip した
方がサイズ小さくなっていいと思います。
> make -f Makefile.Android
> arm-none-linux-gnueabi-strip onscripter_android