スプライトを用いたグラフィックやアニメーションの定義を行っています。
◇スプライトデータバンク スプライトデータバンク0 -> BANK12-13 $24010〜2800F スプライトデータバンク1 -> BANK14-15 $28010〜2C00F スプライトデータバンク2 -> BANK16 $2C010〜2E00F 以下は、スプライトデータバンク0の場合について記述する(バンク1,2も同様)。 ◇スプライトパターン定義アドレス 定義アドレス0 $24010〜2410F (100) = スプライトパターン定義番号: スプライトパターン定義アドレス(low) $24210〜2430F (100) = スプライトパターン定義番号: スプライトパターン定義アドレス(high) 定義アドレス1 $24110〜2420F (100) = スプライトパターン定義番号: スプライトパターン定義アドレス(low) $24310〜2440F (100) = スプライトパターン定義番号: スプライトパターン定義アドレス(high) ◇スプライトパターン定義 スプライト(8x8タイル)をどのように組み合わせてグラフィックを構成するかを決定する。 byte0 -> スプライトバンク番号 byte1 -> 使用するスプライト(8x8タイル)の総数(00で1個を表すため、実際の個数より1小さい値を入れる) byte2 -> スプライト配置データ参照番号(下記参照) byte3 -> 1個目のパターンインデックス番号(bit7-6 -> スプライトバンクのパターンテーブルへの読み込み位置に使われる) byte4 -> 1個目のスプライトの属性(bit7 -> 上下反転, bit6 -> 左右反転, bit1-0 -> 使用パレット) byte5 -> 2個目のパターンインデックス番号 byte6 -> 2個目のスプライトの属性 … ◇スプライト配置データのアドレス $24410〜2450F (100) = スプライト配置データ参照番号: スプライト配置データのアドレス(low) $24510〜2460F (100) = スプライト配置データ参照番号: スプライト配置データのアドレス(high) ◇スプライト配置データ スプライトをどのように配置してグラフィックを構成するかを決定する。 byte0 -> 1個目のスプライトの(相対)Y座標 byte1 -> 1個目のスプライトの(相対)X座標 byte2 -> 2個目のスプライトの(相対)Y座標 byte3 -> 2個目のスプライトの(相対)X座標 … ◇アニメーション定義へのアドレス $24610〜2470F (100) = アニメーション番号: アニメーション定義アドレス(low) $24710〜2480F (100) = アニメーション番号: アニメーション定義アドレス(high) (*) (*)実際には、BANK12では$247E0〜、BANK14では$287C0〜、BANK16では$2C730〜 スプライト配置データがあるようなので、そのまま256個分アドレスを置くことはできない(?) ◇アニメーション定義 スプライトパターンを切り替えていくことでアニメーションを表現する。 byte0 -> bit7 -> 0ならスプライトパターン定義アドレス0を参照、1なら定義アドレス1を参照する。 bit6-0 -> アニメーションに使うスプライトパターンの総数(00で1個を表すため、実際の個数より1小さい値を入れる) byte1 -> 次のスプライトパターンに切り替わるまでのフレーム数(00で毎フレーム切り替え) byte2- -> スプライトパターン定義番号(byte0で指定した個数分書く) 00を指定すると、そこでアニメーションを終了し、オブジェクトを消去する。 ブーンブロックや敵撃破時の爆発が勝手に消えるのは、ここで00が設定されているため。