はじめに
特に理由が無い限り、このページのバイナリではなく ONScripter on Android のページ のバイナリを使 用してください。
フレームバッファ (/dev/graphics/fb0) に直接アクセスすることによっ て Android 上で動作する ONScripter のバイナリパッケージを配布します。実行には root 権限が必要 です。SDL など必要なライブラリは全て静的にリンクされているため、単体で 動作するはずです。
現在のところエミュレータ(Android 2.2)上でしかテストしておりません。 ただし 以下の手順を見てもわかるとおり、コンパイルは Android のバージョ ンに非依存なので、他のバージョンの Android でも動作すると思います。何 か要望があればご連絡下さい。
バイナリパッケージ
制限・注意事項
- root 権限が必要です。
- ESC キー(=マウス右クリック)はホームボタンで代用しています。
- 音は鳴りません。/dev/eac がオーディオデバイスのようですが、SDL から使う方法が分かりません。動画再生も無効にしてあります。
- Emulator 上のマウスカーソルが実マウスカーソルに追従しません。キーボードショートカットでカーソルを移動してください。
- コンパイル時に -DPDA と -DPDA_AUTOSIZE を指定しています。解像度は画面いっぱいに自動調整されます。
- Emulator + SDL では実マウスが左クリックくらいしか効かないので、キーボードショートカットを駆使してください。
- キーボードショートカットがスクリプトから無効にされないように、起動オプションで --force-button-shortcut を指定した方がいいかもしれません。
実行方法
/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-gnueabiMakefile: 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