WonderWitch サンプル:スプライト表示
サンプル 1:16x16 ドットキャラクタ
spr1.lzh:2,445 Bytes(00/09/07)
どこかで見たようなキャラクタを X 上下左右で動かす。START で終了。
スプライトの表示の際に注意することは、
スクリーンと違ってパレットが 8〜15 の範囲しか使えないことである。
さらに透明色はこのうち 12〜15 のカラー 0 にしかない。
まずキャラクタ定義などに関しては、
キャラクタ表示サンプル 2 とほぼ同様である。
これに加えて sprite_set_char_location()
で表示位置を全て画面外にし、sprite_set_range()
で全て表示 ON にしている。この方式だと以後
sprite_set_range()
を使わずに制御できる。
場合によって使い分けるのがいいだろう。
定義が終わったら display_control()
で画面表示を ON にするのを忘れずに。
次にスプライトの透明色がわかるようにするため背景を縞模様にし、
sprite_set_char()
でスプライトのキャラクタだけ先に定義している。
これらの処理でわざわざ変数 chr
に代入しているのは、
#define BIOS_INLINE
対策である。これを初めに定義しておくと
BIOS コールが少し速くなるのだが、マクロ展開の都合で、
定数以外の計算式を書くと予想外の挙動をしてしまう。
あとはキー入力によって x, y を変化させ、sprite_set_location()
でスプライトの座標を移動している。スプライトのキャラクタも変更する場合は、
これに加えて sprite_set_char()
も使うか、
両者をひとまとめにした sprite_set_char_location()
を使う。
なおスプライトを 2x2 個並べ、16x16 ドットキャラクタとしている。
毎回 4 個の座標指定をするのは面倒なので、
別関数にするなどしておく方がいいだろう。