スプライト定義データの形式について説明しています。
スプライトの継承階層
スプライトは多段階継承が行われていることが普通です。その概要について説明します。
まず、各スプライトには、その根本的な動作や機能をコードするプログラムが存在します。実際に配置されているスプライトの定義データは、後述するようにスプライトメモリの変数のアドレスおよび書込む値の組で構成されますが、それを解釈している部分がこのプログラムにあたります。
実際に配置されるスプライトは、まずこのプログラムを継承し、基本となる設定を追加して基底スプライト(親スプライト)を作成します。次にこの基底スプライトを継承し、追加設定や設定値の変更を行って種々の派生スプライト(子スプライト)を作成します。場合によっては、複数の基底スプライトからの多重継承が行われたり、派生スプライトからさらに派生させる多段階継承が行われることもあります。
<注意>
多重継承は一般的には行うべきではありません。派生スプライトの挙動がコードから見えづらくなり、また予期せぬバグを発生させる原因ともなるためです。
スプライト定義テーブル
各種スプライト定義はすべてバンク$FFに格納されていますが、ステージ内から参照される、すなわちステージ内に一般的に配置される派生スプライトは、スプライト定義テーブルと呼ばれるアドレステーブルにネームエントリを持っています。対照的に、内部的に参照されるスプライトや、基底スプライトの多くは、スプライト定義テーブルには登録されておらず、利用できないよう隠蔽されています。
スプライト定義テーブルはアドレス$FB:E800にあります。1要素2バイトであり、バンク$FF内絶対アドレスを指定します。
スプライト定義
スプライト定義は、コマンドとその引数の組の羅列で表されます。このコマンドには制御コマンドと、変数への代入コマンドが含まれ、いずれも2バイトです。
各コマンドの引数は通常2バイトですが、制御コマンドの一部には引数を取らないものや、2つ以上の引数を取るものがあります。
制御コマンドの詳細は
コマンドのページを、各スプライト種別における各変数の意味については、左メニュー内、変数表のツリーにある個別ページを参照してください。