表示を行う基板を作成しました。格子状にドットパターンを並べたものなので,滑からな動きをするキャラクターの表示などには向いていません。文字通り背景表示を想定した機能です。そこで,今回は,ゲームには必須なキャラクターの表示を行う機能として「スプライト」機能を作って行きたいと思います。スプライトって何だ?古いアーケードゲームや家庭用ゲーム機を遊んでいた方なら聞いたことがあると思います。ハードウェアとして装備されていましたね。例によって,ウィキペディアに詳しい説明があります(笑)。ドットの大きさのパターンを,画面上の好きな位置に表示できるようにするものです。違って,スプライト同士を重ねて表示することもできます。使わないで,すべてスプライトで表示すればいいんでないの...?って思うのですが,さすがにそうはならないです(笑)。ドットのパターンを表示してくれます。高速に設定できて,大変便利なのですが,その分回路も複雑で,表示できる枚数も限りがあるのです。ドットのパターンが敷き詰められているので,画面を(ドットクロックに合わせて)走査していく中で,それぞれの位置が確定します。画面を走査しながら,ドットパターンを比較的簡単に表示することができるんですね。対して,スプライトは,それぞれが表示座標を持っているので,どこに表示されるかは,それぞれのスプライトの表示座標と,現在の走査線位置を比較チェックしなくてはいけません。加えてパターン番号やカラー番号の決定もあるし,すべてのスプライトが同じ座標に重なって表示されていたら,画面を走査するのに合わせて表示するのでは,とても間に合いません。ライン分のドットを表示していきます。ライン分の表示用メモリを「ラインバッファ」と言います。あれ?でも,そのラインバッファの内容は,いつ書き込むんでしょう...?少なくとも表示するラインを走査する前に書き込まれている必要がありますよね。ラインを表示する直前には,水平ブランク期間という画面に表示されていない期間があります。時間としては短い期間ですが,このタイミングで,上で説明した,どのスプライトが今回の走査線上に重なっているか(表示する必要があるか)をチェックします。ライン表示時に,ラインバッファの内容を画面に出力する...という流れになります。用意して,交換しながら使います。いわゆるダブルバッファっていうやつですね。スプライトと言えば横並び問題この横並び問題。