はじめに

Linux が走っている Zaurus (SL-5500, SL-A300, SL-B500, SL-C700, SL-C750, SL-C760)上でSDLを使い、その上で ONScripter を動 作させようという試みです。文市(あやち)さんのLinux Zaurus 日本語版 SL-A300に、SL-A300 で動作している様子が掲載されています。

現在、mpeg ムービー再生、CD-Audio 演奏以外のONScripterの全ての機能が動作します。ペン とボタン(もしくはキーボード)を併用しての入力となります。具体的な機能 及び実行方法については、ONScripter のペー ジを参照してください。

ipk パッケージ

3種類のパッケージがあります。

ONScripter 本体

こちらは、ONScripter の開 発に合わせて更新されていきます。

注意おそらく swap memory 必須です。Qtopia 環境で動作するための作業にある手順にしたがっ て swap を作ってから起動しないと、まずハングします。Main memory に余裕 がある ROM を使っていれば別ですが。また、SL-5500やSL-A300では、FAT ファ イルシステム上に swap を作るとハングするという現象が報告 されています。この場合、例えば SD カード等に swap を作る場合には、 ext2 ファイルシステムでフォーマットし直した上で swap を生成してくださ い。

ONScripter実行中にHomeボタンでQtopiaに戻れます。この状態では、 ONScripterはバックグラウンドで実行されています。ONScripter に戻るには、 タスクバーのアイコンをクリックしてください。ONScripter-Resumeのアイ コンをクリックするか、もしくはterminalから以下のコマンドを実行してくだ さい。

qcop QPE/Application/onscripter "raise()"

なおVGAで起動している場合には、このようにしても戻ろうとしても失敗す ることが多いです。ハングした場合には、Homeボタンでいったん戻して上記の 操作を繰り返してください。

同梱されている sarconv, nsaconv でアーカイブを縮小することができ ます。縮小したアーカイブを使う場合は、-s のついたアイコンを使ってくだ さい。

CD-Audio の代わりに MP3 ファイルを使う場合は、44.1KHz もしくは 22.05KHz でサンプルされたものを用意してください。

当方では SL-5500,SL-C700 で動作確認をしており、また SL-A300, SL-B500 での動作報告もいただいております。

SL-C700の場合、-s付のアイコンは、3200x240の圧縮されたアーカイブ用で す。-sの付かないアイコンは、640x480表示用になります。SL-5500,SL-A300に ついては従来通りですが、画面が従来と180度回転しています。これはSL-C700 の320x240モードと整合性を取るためです。SL-C700の320x240モードは、A300 互換モードとなるため、従来の表示法のままでは画面が180度逆に表示されて しまいます。

ONScripter 関連ライブラリ

ONScripter を実行する上で必要な SDL 関連のライブラリです。面倒なの で、必要なライブラリ(下記)を1つにまとめました。本来は個々のライブラ リ毎にパッケージを作るべきですし、そのように作られたパッケージとバッティ ングする可能性がありますが、あくまで非公式パッケージなので入れる人はそ の辺を分かった上で入れてください。

  • libSDL-1.2.so(1.2.5)
  • libSDL_image-1.2.so(1.2.10),
  • libSDL_mixer-1.2.so(1.2.11)
  • libSDL_ttf-2.0.so(2.0.9),
  • libfreetype.so(2.1.10)
  • libvorbisidec.so(1.0.2)
  • libz.so(1.2.3)
  • libpng.so(1.4.5)

また、現在の制限として本体メモリか ext2 等の symlink が効く場所に入 れてください。まあ何も考えずにいれてもまず問題ないと思いますが、お約束 として無保証です。こちらは、めったに更新されないはずです。

timidity patch

「ひとかた」のような MIDI を使用したゲームで MIDI を聞きたい場合に 入れてください。MIDIの音色データtimidity.tar.gz をパッケージ化したものです。15MB 程あります。

なお、GUI からインストールするパッケージにしようとすると、メモリ不 足で失敗する可能性が大なので、SD カードに余裕があるとし、コマンドライ ンから SD カードにインストールする場合にのみ対応とさせていただきます。

インストール

> ipkg -d /mnt/card install timidity-patch_1.0.1-sd_arm.ipk

アンインストール

> ipkg -d /mnt/card remove timidity-patch

お世話になっているページ、よく利用させていただいているページへのリンクです。

りなざうテクノウ
SL Zaurus に関するソフトのバージョンアップ情報・技術情報などが日々更新されており、たいへん役に立ちます。
ONScripter でしゃべる まじかる☆ひよりん
文市(あやち)さんのサイトです。SL-A300 で ONScripter が動いているのを初めて見ました
○できる「月姫」#1 #2 #3 #4
Kenji さんのサイト A Way Out にて、SL-C760 に標記ゲームを導入した時の作業記録が掲載されています。ONScripter を初めて導入される方は参考にしてください。
The Unofficial Zaurus FAQ
SL-5500 での TIPS や FAQ。Swap memory や、リモートでアプリケーションを実行する tips は SL-A300 でも必須です。
SDL と ONScripter
神木さんの日記です。SDL と kernel の関係を hack され、ONScripter の最適化の話が掲載されています。
zaurus-ja
Linux 塔載Zaurusで日本語アプリケーションの利用可能な環境を整備することを目標としているプロジェクトです。成果物を利用させていただいております。ここのメーリングリストも重要な情報源です。
【Linux】ザウルス開発系スレッド-3【SL】
情報源です。
りなざうまにあっくす
Poex さんの LinuxZaurus ユーザ向け情報サイトです。
ザウルスサポートステーション
Zaurus の公式な資料・ツールはこちらからどうぞ。

ONScripter を Qtopia 環境で動作させるための作業(Aug 15. 2002)

次に、ONScripter を Qtopia 上で動くようにします。
色々試行錯誤しましたが、要点は下の通りです。

  1. アイコン設定ファイルの [Desktop Entry] の Exec にて引数が渡せな いので、別の shell script を呼ぶようにし、その中で --root オプションを 付けて onscripter を呼ぶ。
  2. ONScripter 側で Qt 環境でのコンパイルに対応し、また無効なオプショ ンを無視するようにする。

問題点として、実行中にメモリが足りなくなると、「メモリ不足」という 警告ウィンドウが出ようとするが、どうやらこれと ONScripter とでデッドロッ クを起こしてハングするようです。SDL on Qtopia と Qtopia の相性の問題で すね。現状では、大抵のゲームはしばらく進むとハングします。

ペンでクリックしてもクリック音がしない場合はハングしていますので、 リモートログインしてプロセスを殺すか、もしくはザウルスを再起動してくだ さい。

FB console から起動するようにコンパイルして、コンソールログインした 状態で起動すれば問題なく動くのですが……。

20020421

Unofficial Sharp Zaurus SL-5500 FAQの 12. # Can I use a CF or SD card as memory, instead of file storage space? にあるように swapfile を作ればよいことが判明しました。
terminal を開いて、

> dd if=/dev/zero of=/mnt/card/SwapFile bs=512 count=65536
> mkswap /mnt/card/SwapFile
> swapon /mnt/card/SwapFile
で、32MB のスワップができます。ゲームにもよりますが、SL-5500 の場合 16MB 以上はあったほうがよいです。32MB あれば多分安心です。これでハング することが無くなりました。

なぜか、上下の矢印ボタンが効かない。途中まではちゃんと scancode が 来ているのだが……。ボタンや選択肢の選択にはペンを使ってください。 SDLにパッチを当てて解決。

ハングを無くすには、(1)下記(*)の通りにして余計な常駐アプリケーションを 消す、(2)最初から画像を1/4のしたアーカイブを使用する、(3)ONScripter の使用メモリ量を減らす、(4) ROM を作り直しメモリ量を増やす、などの対策 が考えられます。(1) はもちろんですが、瞬間最大風速が閾値を越えるとメモ リ不足警告が出るようですので (2)も結構有効そうです。そのうちコンバータ を書きます。本当は (3) を頑張るべきですが、結構厳しいです。困ったもの です。

Unofficial Sharp Zaurus SL-5500 FAQの 11. Why do I keep running out of memory? にあるように、Applications の 'Address Book', 'Calendar' と 'Todo List' のアイコンをペンでタッチしたまましばらく待ち、表れるオプショ ン画面で "Fast load" を無効にすると、全体の消費メモリが減って ONScripter の動作が若干快適になります。

また、アイコンをクリックして ONScripter 起動するため、起動時にゲー ムファイルのある場所を指定することができません。上記のパッケージでは、 /mnt/card/nscr もしくは /mnt/cf/nscr をゲームファイルのある場所と設定 したスクリプトをインストールするようになっています。
/mnt/card/nscr は、SD カードのルートの nscr ディレクトリを指します。
/mnt/cf/nscr は、CF カードのルートの nscr ディレクトリを指します。

複数のゲームを持ち運ぶ場合は、複数のカードを用意して取り替えるか、自分 でスクリプトを追加・修正してください。
追加・修正する場合のテンプレートは、下のファイルです。

/opt/QtPalmtop/apps/Games/onscripter-sd.desktop
/opt/QtPalmtop/bin/onscripter-sd
/opt/QtPalmtop/apps/Games/onscripter-cf.desktop
/opt/QtPalmtop/bin/onscripter-cf
QVGA ザウルス上でQVGA表示で無圧縮アーカイブを使う場合。
VGA ザウルス上でVGA表示で無圧縮アーカイブを使う場合。

/opt/QtPalmtop/apps/Games/onscripter-sd-s.desktop
/opt/QtPalmtop/bin/onscripter-sd-s
/opt/QtPalmtop/apps/Games/onscripter-cf-s.desktop
/opt/QtPalmtop/bin/onscripter-cf-s
QVGA ザウルス上でQVGA表示で圧縮アーカイブを使う場合。
VGA ザウルス上でQVGA表示で圧縮アーカイブを使う場合。要するに、800x600 もしくは640x480のアーカイブを 320x240 にしている場合。

/opt/QtPalmtop/apps/Games/onscripter-sd-vga-s.desktop
/opt/QtPalmtop/bin/onscripter-sd-vga-s
/opt/QtPalmtop/apps/Games/onscripter-cf-vga-s.desktop
/opt/QtPalmtop/bin/onscripter-cf-vga-s
VGA ザウルス上でVGA表示で圧縮アーカイブを使う場合。要するに、800x600 のアーカイブを 640x480 にしている場合。

追加・修正例
ゲームが Game2 という名前で、ゲームのデータが /mnt/card/game2 にあるものとをします。

/opt/QtPalmtop/apps/Games/game2-sd-s.desktop:
最低限、Exec 項を下記のシェルスクリプト名に修正。

[Desktop Entry]
Comment=game2
Exec=game2-sd-s
Icon=Go
Type=Application
Name=Game2
CanFastload=0

/opt/QtPalmtop/bin/game2-sd-s:
--root オプションで、ゲームデータのある場所を設定。

#!/bin/sh

onscripter --root /mnt/card/game2 --force-button-shortcut --disable-rescale $1

実行パーミッションをつけることをお忘れなく。
Qtopia を再起動すると、ゲームタブにアイコンが追加されています。

なお、SL-5500 でしか確認していませんので、SL-A300 で動くかどうかは分か りません。

20021121

ザウルスのアプリケーションをリモートで使えますか?によると、

リモート接続(telnetまたはssh経由で)している間は、ザウルス上のプログラ
ムを実行(し、ザウルス上で表示)できますが、先に環境変数"LOGNAME"を設
定する必要があります。まず以下のコマンドを実行します。

 export LOGNAME=unknown

らしいです。

知りませんでした。これでデバッグがずいぶん楽になります。
The Unofficial Zaurus FAQ にあったのですね。これは一度全部読まないといけないな。

感想

非常に開発しやすい PDA です。普通にクロスコンパイルするだけで大抵のものは入ってしまいます。Project: Zaurus Open Source Developmentに x11zaurus なんてのもあるみたいですし。

ただし現状では、日本語表示は頑張ればできるものの、日本語入力ができ ません。プログラマのおもちゃであり、日本語 PDA としては全くお勧めでき ないと思います。ただ、有志により日本語IMの開 発がかなり進んでいるようですし、アプリケーションも急速に充実してい きそうなので、Linux 環境で簡単に開発が可能な日本語 PDA として近い将来 素晴らしい製品になることを期待しています。

もっとメモリを……。

SL-5500 の場合、BGM(MP3) と音声 (WAV) の同時演奏も特に途切れることなくできています。素晴らしい。

2003年1月2日

大晦日になって、ようやく懸案のSL-C700で入力を受け付けなくなる不具合を解消できました。SDLへのパッチという形で対処しています。これで気持良く年を越せます。というか、越せました(これを書いているのは既に2003年)。

2003年1月26日

-e 付き 640x480 にしてギリギリ512MBのCFに収まるゲームをやってみまし た。swap を 64MB とって、なんとか正常に動きました。ただし、メモリー不 足というウィンドウが頻繁に出ます。無視できますが。free で見ると、used が瞬間最大風速 Mem: 29604, Swap: 57684, Total 87288 までいきます。この ゲームは特に同時使用画像量が多いと思うのですが、一般にVGA だとデータ量 も半端ではないので、使われていない画像データを一時的に解放する機構を実 装しないときついかも。画面は非常に綺麗なんですけどねぇ。

640x480→640x480 の場合は、onscripter-cf, onscripter-sdのアイコンを 使ってください。800x600→640x480の場合は、対応するアイコンを作ってない ので、コンソールから onscripter --root /mnt/cf/nscr --force-button-shortcut --disable-rescale とやってください。そのうちに、 launcher を作ります。

2003年6月22日

SDL ライブラリを、阿川さんのものをベースにすることにしました。です が、ONScripter を動かすと色々不具合が出たので、修正パッチを書きました。 また、SL-5500 で検証するため、久々に電源を入れ、 ROM 3.1 を試しました。 確かに、SL-B500 風になります。試行錯誤しましたが、最終的には SL-5500(QVGA), SL-C700(QVGA, VGA)どちらでも ONScripter が問題なく動き ます。ただし、SL-A300 等ではおかしくなっているかもしれません。その場合 は報告を下さい。しかし、QVGA だと SL-5500 の方が SL-C700 より綺麗だ。