SDL on Zaurus のページ

Since: May. 20, 2002
Last updated: Feb. 4, 2012 (パッケージ更新、更新内容はONScripter 開発日誌)

はじめに

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 を開いて以下のように入力すると、32MB のスワップができます。

> dd if=/dev/zero of=/mnt/card/SwapFile bs=512 count=65536
> mkswap /mnt/card/SwapFile
> swapon /mnt/card/SwapFile

ゲームにもよりますが、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 より綺麗だ。