WonderWitch サンプル:キャラクタ表示
サンプル 1:テキスト表示
chr1.lzh:1,141 Bytes(00/09/07)
まずはテキスト画面 BIOS を使って文字表示してみる。
と言っても text_screen_init()
で初期化すれば、あとは text_put_string()
などで簡単に表示できる。
しかしテキスト画面 BIOS には、以下のような欠点がある。
- マニュアルに仕組みが書かれていないので、
高度な使い方をするのが困難。
- あらかじめ画面中にキャラクタを敷き詰め、
キャラクタデータを書き換えるという方式を採用している。
このため日本語表示も可能であるが、512 キャラクタ中 504
キャラクタ(=28x18)を消費してしまう。
- 同じ理由により、表示速度が遅い。1 V-BLANK 周期中に 100
文字程度。
なお 2 に関しては、text_window_init()
を使ってテキストの表示範囲を限定すれば、キャラクタの消費を抑えられる。
サンプル 2:モノクロ/カラーキャラクタ表示
chr2.lzh:2,088 Bytes(00/09/07)
今度は自分でキャラクタデータを作ってスクリーンに表示してみる。
キャラクタデータを作る方法はいくつかあるが、
ここでは付属ツール bmpcnv を使うことにする。
- まず Windows のアクセサリ「ペイント」(MSPAINT.EXE)
などで絵を描く。モノクロなら白と黒の 2 色、カラーなら
「白、黒、グレー 2 色」もしくは「白、黒、グレー、背景色」
の 4 色を使う。背景色はグレースケール以外、すなわち RGB
のいずれかが違う値の色。
- できあがったら、モノクロなら白黒ビットマップ、
カラーなら 256 色ビットマップでセーブする。
- カレントディレクトリに format ファイルを用意してから、
bmpcnv -c <入力ファイル.bmp>
<出力ファイル.h>
とすると、C 言語用ソースで出力される。
これをインクルードすればいい。
まず画面初期化処理として、
display_control()
、
lcd_set_color()
、
palette_set_color()
、
screen_set_scroll()
などの設定をしておく。
また、display_control(0)
として画面を非表示にしておけば、
各種書き換えが全て見えなくなる。状況に応じて使うといい。
モノクロキャラクタを設定するには、まず font_set_color()
で 2 色が 4 色中のどの色に割り当てられるかを指定し、その後
font_set_monodata()
で設定する。
カラーキャラクタの設定は font_set_colordata()
だけでいい。
キャラクタデータの設定が済んだら、
screen_fill_char()
や screen_set_char()
などでキャラクタ表示すればいい。
縦横反転表示やパレットの実験もしてみるといいだろう。
なお初期のマニュアルでは、縦横反転のビットが入れ替わっているので注意。
パレット 4〜7、12〜15 のカラー 0 は透明であることにも注意。
サンプル 3:スクリーン 1,2 重ね合わせ
chr3.lzh:1,967 Bytes(00/09/08)
X 上下左右でウィンドウ範囲移動、A でウィンドウ外側表示
(実行直後はこちらになっている)、B でウィンドウ内側表示、START
で終了。
スクリーン 1 が奥、スクリーン 2 が手前である。
スクリーン 1 が見えるようにするためには、スクリーン 2 で透明色を指定する
(パレット 4〜7、12〜15 のカラー 0 を使う)か、
ウィンドウでスクリーン 2 の表示範囲を限定する。
ウィンドウを使用するには、display_control()
のパラメータに DCM_SCR2_WIN_INSIDE
か
DCM_SCR2_WIN_OUTSIDE
を含め、
screen2_set_window()
でウィンドウ範囲を指定するだけである。
なおサンプルを実行してすぐに X 上や X 左を押すとわかるが、
ウィンドウの範囲が画面の左右や上下をまたがることはできない。