スプライト配置データ
スプライト配置データの形式について説明しています。

スプライト配置データの構造
スプライト配置データは8バイトからなる構造体で、各ステージのスプライト配置データはこの構造体の配列となります。
この構造体のフォーマットは次のようになります。

struct spriteplacement
{
    ushort parameter;
    ushort x;
    ushort y;
    ushort type;
}
ただし、パラメータに0を指定した場合は、それ以降のデータを取らず、スプライト配置データの終了宣言となります。
パラメータ
パラメータは、すべてのスプライトに付与される値であり、スプライトの属性を指定したり、ロード制御を行ったりする役割があります。このパラメータは3つのデータからなります。

上位バイト: 識別番号
識別番号を付与されたスプライト群は、どれか1つがロードされると、そのスプライトと同じ識別番号を与えられたスプライトがすべて、ロード範囲内にあるかどうかにかかわらずロードされます。この識別番号は0x01から0x1Fまでの間で指定し、識別番号を付与しない場合は0を指定します。
主に複数のスプライトの動きを同期させる場合に利用しますが、同じ識別番号を持ったスプライトを多量に設定すると、処理落ちやスプライトオーバーの原因となります。

注意: 投擲物(DKバレル、木箱、クロバー等)の多くは、識別番号を付与すると、破壊しても画面切り替えによって無限に復活するバグがあります。原作1-1のNパネル横のクロバー、原作1-4の中間付近にあるDKバレルなどがその例です。

下位バイト上位ニブル: ロード範囲
スプライトのロード範囲を規定します。この値は0x0から0x6の間で指定し、それぞれの値でロード範囲が定義されています。標準設定は0となります。
スプライトが過密気味な場所では狭くすることで、スプライトオーバーを防止し、画面外にあるスプライトや画面外に移動してしまうことの多いスプライトに対しては、広いロード範囲を指定することでアンロードを抑制します。
  値 左限界値 右限界値 上限界値 下限界値
0
32
32
32
64
1
16
16
16
16
2
48
48
64
96
3
32
32
64
96
4
32
32
248
248
5
248
248
248
248
6
248
248
32
64

下位バイト下位ニブル: スプライト属性
スプライトの性質を決定的に支配する値であり、特に断りのない限り、変数表内でスプライトと言った場合には、この4ビットデータを指します。
この値を指定することにより、条件付きロードなどの特殊処理を行うことができます。
  値 内容
0
スプライト配置データの終了宣言
この値を設定した場合、その直後からのスプライト配置データはロードされません。
1, 2, F
標準設定
特に特殊な処理は行いません。なお、スプライトジェネレータなどによって動的に生成されたスプライトに対しては、自動的にFが付与されます。
3, 4, 5, 6, 8
ロード抑制
この値を設定したスプライトは常にロードされません。ただし、配置データの終了宣言ではありません。
ただの未定義パラメータであり、利用価値はありません。
7
画像修正
大きい画像を使用するスプライトが、そのグラフィックデータを正しくVRAMに転送し、マッピングできるようにするためのパラメータです。
「大きい」の定義は8x8タイル換算で32タイル以上(16x16タイルは8x8タイル4枚とカウントする)を使用するスプライトです。
大きいスプライトに対し、これ以外のパラメータを使用した場合、画像が乱れることがあります。
9, E
画像読込を行わない
画面上に表示させる必要のない制御用のスプライトに対して主に使用します。画像データのVRAMへの転送を行わないため、通常のスプライトに対してこのパラメータを付与した場合、まったく表示されなくなるか、画像が乱れる、あるいはまったく違う画像が表示されます。
制御用スプライト等、グラフィックを必要としないスプライトに対してこのパラメータ以外のパラメータを付与した場合、周辺のスプライトの表示が乱れたり、制御スプライトが正しく機能しなくなることがあります。
A
条件付読込
ボーナスタイマーの指定条件を満たした場合に限りロードを行います。
B, C
条件付読込
基本的にはパラメータAと同じ効果を持ちますが、条件判定に用いるフラグがそれぞれ異なります。なお、このフラグは定義されているのみで原作での使用例はなく、また、このフラグにアクセスする手段はないため、このパラメータを使用しても常にロードは行われません。
このパラメータを有効に利用するためには、別途このフラグの書換を行うアセンブリを追加する必要があります。
D
条件付読込
ボスクリーバー戦のフックにのみ使用されるパラメータであり、「こちらが3回攻撃し、ボスクリーバーがこちらに1回突進する」という条件を満たした場合に限りロードを行います。ただし、参照しているフラグはパラメータAと同一のものですので、ボーナスタイマーの作用を受けます。
このパラメータは、スプライトのロード処理自体も一部行っているため、通常のスプライトに対して使用した場合は不具合が発生する可能性があります。