WonderWitch サンプル:キャラクタ表示


サンプル 1:テキスト表示

chr1.lzh:1,141 Bytes(00/09/07)

まずはテキスト画面 BIOS を使って文字表示してみる。 と言っても text_screen_init() で初期化すれば、あとは text_put_string() などで簡単に表示できる。

しかしテキスト画面 BIOS には、以下のような欠点がある。
  1. マニュアルに仕組みが書かれていないので、 高度な使い方をするのが困難。

  2. あらかじめ画面中にキャラクタを敷き詰め、 キャラクタデータを書き換えるという方式を採用している。
    このため日本語表示も可能であるが、512 キャラクタ中 504 キャラクタ(=28x18)を消費してしまう。

  3. 同じ理由により、表示速度が遅い。1 V-BLANK 周期中に 100 文字程度。
なお 2 に関しては、text_window_init() を使ってテキストの表示範囲を限定すれば、キャラクタの消費を抑えられる。

サンプル 2:モノクロ/カラーキャラクタ表示

chr2.lzh:2,088 Bytes(00/09/07)

今度は自分でキャラクタデータを作ってスクリーンに表示してみる。
キャラクタデータを作る方法はいくつかあるが、 ここでは付属ツール bmpcnv を使うことにする。
  1. まず Windows のアクセサリ「ペイント」(MSPAINT.EXE) などで絵を描く。モノクロなら白と黒の 2 色、カラーなら 「白、黒、グレー 2 色」もしくは「白、黒、グレー、背景色」 の 4 色を使う。背景色はグレースケール以外、すなわち RGB のいずれかが違う値の色。

  2. できあがったら、モノクロなら白黒ビットマップ、 カラーなら 256 色ビットマップでセーブする。

  3. カレントディレクトリに 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_INSIDEDCM_SCR2_WIN_OUTSIDE を含め、 screen2_set_window() でウィンドウ範囲を指定するだけである。
なおサンプルを実行してすぐに X 上や X 左を押すとわかるが、 ウィンドウの範囲が画面の左右や上下をまたがることはできない。

WonderWitch の部屋に戻る

HOMEホームに戻る