コマンド
スプライト定義で使用される制御コマンドについて説明しています。

制御コマンド
制御コマンドは、バイナリコード $8000 以降の値で表されます。この制御コマンドは、スプライトの種類によらず常に同じ働きをします。
なお、制御コマンドの処理テーブルは$BB:849Bにあります。

注意
制御コマンドの判別は常に上位バイトのみで行われます。したがって下位バイトには何を指定しても構いませんが、通常$00を使用します。
$8000
構文
0x8000

スプライト定義の終了宣言であり、引数は取りません。
スプライト定義はこのコマンドによって終了する必要があります。
$8100
構文
0x8100, ushort animation

指定されたアニメーションを読込みます。引数に指定するものはアニメーションの番号であり、アドレスではありません。
アニメーションの一覧は別表1を参照してください。
$8200
構文
0x8200, ushort dummy

ダミーコマンドです。引数を1つ取りますが、何も処理を行いません。
$8300
構文
0x8300, absolute address

指定されたアドレスにあるスプライト定義を継承します。多段階継承および多重継承も可能ですが、多重継承を行う場合は継承順に注意してください。
多重継承の際に競合する変数呼び出しがあった場合は、あとから継承されたものが優先されます。
$8400
構文
0x8400, absolute address

指定したパレットを読込みます。コマンド$8D00とは異なり、このコマンドにはパレットのアドレスを渡します。
通常用途としては$8D00を使用しますが、$8400を使用した場合は表引きが行われないため、$8D00より少し高速に動作します。
$8500
構文
0x8500, [flags] ushort oamstate

スプライトの表示設定を行います。指定する値はOAM下位テーブルの後半2バイトですが、ここで指定できるのはそのうちの上位4ビット(優先度および水平・垂直反転フラグ)のみです。
フラグ詳細は別表2を参照してください。
$8600
構文
0x8600, short xoffset, short yoffset

自機の座標を基準として、指定された相対位置にスプライトを配置します。
$8700
構文
0x8700, ushort valiable, ushort value

第一引数に指定した変数に、第二引数で指定した値を条件付きで代入します。
呼び出し元スプライトが右向きの場合はそのままの値を、左向きの場合は符号反転した値を代入します。
このコマンドは、スプライトジェネレータが生成するスプライトに使用されることを前提としたコマンドです。もっぱら速度制御に用いられます。(例:キャノンの発射物など)
$8800
構文
0x8800

$0A3Eおよび$0A40から座標を取得し、深度に#$00F8を指定します。引数は取りません。
$8900
構文
0x8900, ushort controlcode, absolute paletteaddress, longaddress imageaddress, byte imagesize

制御コードとパレットを設定し、スプライトグラフィックのDMA転送設定を行います。
第一引数には、このスプライトで使用する制御コード、すなわちスプライトプログラムのポインタを指定します。
第二引数には、このスプライトで使用するパレットのアドレスを指定します。
第三引数には、転送したいスプライト画像ファイルのアドレスを24ビットで指定します。
第四引数には、転送するスプライト画像ファイルのサイズの64分の1を8ビットで指定します。
$8A00
構文
0x8A00, [flags] ushort cannonmode, (byte, byte) rotaterange, ushort baseposition, ushort distance, ushort unknownparameter,
        ushort velocity, ushort returningvelocity, byte launchspeed, byte count, ushort flyingdistance, ushort stiff,
        (byte, byte) animalandlevelmove, ushort rotatespeed, ushort cameraposition

14個の変数に引数を代入します。順に$46, $42, $4C, $4E, $52, $28, $22, $2C, $2D, $20, $24, $26, $3A. $36に代入されます。
もっぱら樽大砲の設定用に使用されるものであり、詳細は個別ページを参照してください。
$8B00
構文
0x8B00, [flags] ushort oamstate

スプライトの表示設定を行います。指定する値はOAM下位テーブルの前半2バイトですが、ここで指定できるのはそのうちの上位4ビット(優先度および水平・垂直反転フラグ)のみです。
フラグ詳細は別表2を参照してください。
なお、コマンド$8500とは異なり、表示優先度の自動補正が行われます。
ISDの[効果2]の値が2の倍数の場合、指定されたOAM状態値が適用され、それ以外の場合、表示優先度を2または3として指定した場合は3が、それ以外の場合は0が適用されます。
この自動補正は溶岩面で落下した場合に溶岩の後ろ側に隠れるなどといった演出のためのものです。
$8C00
構文
0x8C00, absolute address

コマンド$8400と同じ処理を行います。コマンド$8400の処理コードへのジャンプを挟むため、$8400よりは低速に動作します。
利用価値がないため使用しないでください。
$8D00
構文
0x8D00, ushort palettenumber

指定されたスプライトパレットを読込みます。コマンド$8400とは異なり、このコマンドにはスプライトパレットの番号を渡します。
通常用途としてはこちらを使用してください。
スプライトパレットの一覧は別表3を参照してください。
$8E00
構文
0x8E00, ushort controlcode, ushort patettenumber, longaddress imageaddress, byte imagesize

制御コードとパレットを設定し、スプライトグラフィックのDMA転送設定を行います。
第一引数には、このスプライトで使用する制御コード、すなわちスプライトプログラムのポインタを指定します。
第二引数には、このスプライトで使用するパレットのインデックスを指定します。
第三引数には、転送したいスプライト画像ファイルのアドレスを24ビットで指定します。
第四引数には、転送するスプライト画像ファイルのサイズの64分の1を8ビットで指定します。