123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- Wonx - WonderWitch on X.
- ■ αバージョン配布に当たって
- Wonx はまだ不完全なαバージョンです.実装されていない機能や,
- 不完全な機能,おかしな動作をする部分などがいっぱいあります.
- バグ情報やアドバイスがあれば,作者の坂井弘亮まで,どんどんメールください.
- アドレスは,
- sakai@seki.ee.kagu.sut.ac.jp
- hsakai@pfu.co.jp
- です.
- また,リリース版ができるまでは,アップデートは頻繁に行っていきます.
- http://www.seki.ee.kagu.sut.ac.jp/~sakai/WonderWitch/index.html
- で,随時公開していきます.
- 現在は坂井が一人で製作していますが,ひとりでは細かい点の整合性
- (初期化しなかった場合の動作の違いなど.WonderWitch と Wonx では
- 微妙に異なっていると思う)を追いきれないのが現状です.
- とくにマニュアルに書いてない部分に関しては,WonderWitch ではどのように
- 動作するのか,ひとりではチェックしきれません.
- 情報をお待ち(ていうか期待)しています(そのためのα版配布です).
- いっしょに少しずつ,完全なものに仕上げていきましょう.
- 広く情報を募るために,早い段階でα版として公開します.ご意見,ご要望なども
- 歓迎します.どしどしお寄せください.
- (ただし,返事を書くとは限らないし,要望を反映するとも限りませんので
- その点はご容赦ください)
- ■ はじめに
- Wonx は,WonderWitch 用のプログラムを X アプリケーションとしてコンパイルする
- ための,ライブラリです.以下の特徴があります.
- ・C言語レベルで互換機能を持っているので,WonderWitch 用のプログラムを
- UNIX上でそのままコンパイルできる.(-lwonx でコンパイルする)
- ・UNIX上でデバッガを使用してデバッグできるようになる.(強力!)
- ・キャラクタデータやパレットデータのダンプ機能がある.
- ・不正な引数の値や,パレットやキャラクタを初期化しないで使用するなどを
- 厳しくチェックし,エラーを出力する(ようにする).厳しくエラーチェックする.
- ・使用できない機能(関数は用意してあるが,まだ実装してなかったり,
- 実装が困難だったりして,中身が空のもの)はたくさんある.
- 徐々に追加していくつもり.
- ・ゲームの画面写真が簡単に撮れる.(デジカメで撮ったり,画像取り込み用の
- プログラムを使ったりする必要が無くなる) これはわりとべんり.
- ・エミュレータでなくライブラリであり,ソースコード公開しているので,
- 自由にカスタマイズが可能.
- ・描画速度は遅いが,デバッグ目的のためなので,速度を速くすることは
- あまり考えていない.(それよりも上記のデバッグ性を優先する)
- ・WonderWitch 用のプログラムを,X上で楽しむためのものではない.
- あくまでデバッグ目的のもの.(そういうポリシーで開発を進める)
- ■ 足りないもの
- 以下のものにはまだ対応してません.したがって,例えばサウンド関連の
- 関数を呼び出しても,何も起こりません.(空の関数になっている)
- ・文字表示関連 (ターミナルにそのまま出力する)
- とくに,文字だけでタイトル画面を書いてるゲームの場合などは,
- なにも表示されないことになってしまうので注意してください.
- (正常に動作していても,画面が真っ白で固まっているように見えてしまう)
- ・画面周りの細かいところ(ウインドウ機能など)
- ・サウンド
- ・シリアルポート
- ・割り込み処理関連
- 割り込みを使用している場合は注意してください.そのままではまともに
- 動かないでしょう.
- そのうちシグナル使ってなんとかサポートしたいと思います.
- ■ Wonx概要
- Wonx は,WonderWitch の display_control() とか display_status() といった
- 関数(システムコール)と互換の関数を持っています.
- これらの関数は,X上にウインドウを開いて,そこで WonderWitch と互換の動作を
- するように書いてあります.
- Wonx を make すると,libwonx.a というライブラリができます.
- で,WonderWitch 用のプログラムを,UNIX 上で -lwonx してコンパイルしてやれば,
- WonderWitch の display_control() とかのかわりに,Wonx の display_control() が
- リンクされ,X 上で動作するようになる,という仕組みです.
- ■ インストール
- インストールするには,以下のことを行う必要があります.
- ・Wonx のコンパイルには,WonderWitch 付属のヘッダファイル(sys/disp.h とか)が
- 必要なので,それらをコピーします.
- ・Wonx をコンパイルします.→ libwonx.a ができあがります.
- ・ヘッダファイル(sys/disp.h とか)と libwonx.a を,適切なディレクトリに
- 置きます.
- (アプリケーションのコンパイルには,WonderWitch 付属のヘッダファイルが必要)
- インストールは,以下の手順で行います.
- 1. Wonx を展開する.
- ~>% tar xvzf wonx.tar.gz
- ~>% cd wonx
- ~/wonx>%
- 2. WonderWitch 付属のヘッダファイルをコピーする.
- ~/wonx>% mkdir sys
- ~/wonx>% cp ~/WWitch/include/bank.h sys
- ~/wonx>% cp ~/WWitch/include/comm.h sys
- ~/wonx>% cp ~/WWitch/include/disp.h sys
- ~/wonx>% cp ~/WWitch/include/key.h sys
- ~/wonx>% cp ~/WWitch/include/sound.h sys
- ~/wonx>% cp ~/WWitch/include/system.h sys
- ~/wonx>% cp ~/WWitch/include/text.h sys
- ~/wonx>% cp ~/WWitch/include/timer.h sys
- ~/wonx>% cp ~/WWitch/include/types.h sys
- 3. 以下の内容のファイル(sys/service.h)を作成する.
- ~/wonx>% emacs sys/service.h
- ==== ここから ====
- #ifndef _service_h_INCLUDED_
- #define _service_h_INCLUDED_
- #define far /* None */
- #define near /* None */
- #endif
- ==== ここまで ====
- sys/service.h は,disp.h などの中から,
- #include <sys/service.h>
- のようにしてインクルードされますが,コンパイル時には -I. でコンパイル
- されるので,ばあいによっては,sys/sys/service.h にする必要があるかも
- しれません.(未確認)
- 4. Wonx を make する.
- ~/wonx>% make
- gcc -c WWCharacter.c -O -I. -I/usr/X11R6/include
- gcc -c WWColorMap.c -O -I. -I/usr/X11R6/include
- ...(中略)...
- gcc -c wonx.c -O -I. -I/usr/X11R6/include
- ar ruc libwonx.a WWCharacter.o WWColorMap.o WWDisplay.o WWLCDPanel.o WWPalette.o WWScreen.o WWSprite.o WonxDisplay.o XDisplay.o disp.o text.o key.o system.o timer.o etc.o wonx.o
- ~/wonx>% ls lib*
- libwonx.a
- ~/wonx>%
- ここまでで,ライブラリとヘッダファイルの作成は終りです.
- ■ WonderWitch 用アプリケーションのコンパイル
- 拙作の SpeedMac をコンパイルしてみます.
- 1. 展開する.
- ~/wonx>% cd
- ~>% unzip xvzf smac-b02.zip
- ...(中略)...
- ~>% cd smac-b02
- ~/smac-b02>%
- 2. ヘッダファイルと libwonx.a をコピーする.
- ~/smac-b02>% mkdir sys
- ~/smac-b02>% cp ~/wonx/sys/* ./sys
- ~/smac-b02>% cp ~/wonx/libwonx.a .
- ~/smac-b02>%
- 3. Makefile を修正する.
- ~/smac-b02>% emacs Makefile
- 以下のように修正します.
- ・gcc でコンパイルをするように修正する.このときに,コンパイルオプションに,
- -I. -I/usr/X11R6/include -L. -L/usr/X11R6/lib -lwonx -lX11 -lXt
- を追加する.
- (必要なら,-g も追加する)
- ・mkfent によるファイルのコンバートなどがあったら,削除する.
- 4. make する.
- ~/smac-b02>% make
- gcc -c chara.c -g -I.
- gcc -c game.c -g -I.
- ...(中略)...
- gcc -c main.c -g -I.
- gcc -g -o smac chara.o game.o man.o mansub.o mansub2.o map.o mapsub.o menu.o monster.o picture.o player.o smac.o stage.o dsp.o etc.o main.o -lwonx -lX11 -lXt -L. -L/usr/X11R6/lib
- ~/smac-b02>% ls smac
- smac
- ~/smac-b02>%
- 5. smac を起動する.
- ~/smac-b02>% ./smac
- ■ 操作
- smac を起動すると,ウインドウが開きます.また,ターミナルには,
- 以下のデバッグ用の情報が表示されます.
- ・WonderWitch の互換関数が呼ばれると,引数と戻り値を表示します.
- またここでは,以下の操作が行えます.
- ・カーソルキーが,WonderSwan のX1~X4ボタンに対応している.
- ・i,j,k,l キーが,WonderSwan のY1~Y4ボタンに対応している.
- ・スペースバーと左シフトキーが,A,Bボタンに対応している.
- ・sキーが,STARTボタンに対応している.
- ・p を押すと,表示/非表示モードを切替える.
- (非表示だと画面への描画を行わないが高速)
- ・F1 を押すと,LCDカラーマップのデータをダンプ出力する.
- ・F2 を押すと,パレットのデータをダンプ出力する.
- ・F3 を押すと,キャラクターのデータをダンプ出力する.
- ・F4 を押すと,スプライトのデータをダンプ出力する.
- 標準ではなにか関数が呼ばれるたびに画面の再描画を行うため,非常に低速です.
- たとえば,以下のようなことをやっていると,非常に低速になります.
- for (y = 0; y < 32; y++)
- for (x = 0; x < 32; x++) {
- screen_fill_char(0, x, y, 1, 1, 0x0000); /* ここで毎回再描画される */
- }
- }
- このような場合は,p を押して非表示モードにして,ループ処理が終ったら
- 再び p を押して表示モードに戻してください.
- F1 や F2 を押すと,データをダンプ出力するのですが,標準ではその他にも
- メッセージが大量に出力されているので,ふつうに F1 を押しただけでは,
- あっというまに大量のメッセージに流されてしまうことがあります.
- このようなときは,以下のようにして起動します.たとえばコンパイルして
- smac という実行形式ができているのなら,
- > smac | grep -v call
- もしもキャラクタ番号10番のキャラクタのデータだけが見たい場合には,
- 以下のように実行してから,F3 キーを押せば良いでしょう.
- > smac | grep "character\[10\]"
- wonx は,メッセージを出力する再に,grep でフィルタリングできるように,
- かならず行の先頭に統一性のある文字列を追加しています.
- たとえば,関数呼び出し時に表示されるメッセージには,先頭に必ず
- "call" という文字列が追加されてます.よって,grep -v call を通せば,
- 関数呼び出しのメッセージがごっそり出なくなる,というようになってます.
- 標準では大量のメッセージが出てくるので,grep をうまく使うようにしてください.
- もしくは,
- > smac | grep call > function_call.log
- のようにして,ログをとるのも有効でしょう.
- ■ 作者
- Wonx は,坂井弘亮が通勤電車の中で Libretto で書いた作品です.
- GPLで配布します.
- 坂井弘亮の連絡先のメールアドレスは,
- sakai@seki.ee.kagu.sut.ac.jp
- hsakai@pfu.co.jp
- です.また,本ソフトウエアの最新版を,
- http://www.seki.ee.kagu.sut.ac.jp/~sakai/WonderWitch/index.html
- で配布しています.
- ■ このファイルはここまで
|