ゲーム機を作ろう(その8)前回はスプライトメモリの基板を作りました。この基板を追加すると,表示しようとしている走査線に入っているスプライトを,スプライトメモリから判定し,ラインバッファへ書き込むドットデータを決定することができます。前回は,スプライトの概要を説明したので,今回はこのドットデータの出力までの流れを書いてみようかなと思います。水平ブランク期間は,結構短いです。この限られた時間内に,スプライトメモリ(全スプライトの位置やパターン番号が設定されているメモリ)を上から順になめていきます。位置と現在の走査線を比較します。マシン語をやっていた人にはお馴染みですが,比較は引き算によって行いますよね。結果がゼロだったら一致とか,ボローが出たら小さいとか...。補数」を足し算することによっても同じことができますよね。位置の補数を,加算器に入力すると判定できるというわけです。その結果,表示する走査線に重なっていると判定されたスプライトは,その番号をスタック構造のメモリに格納し,覚えておきます。個入れるだけの処理しかできないのです)。個までスプライトを表示することができるということですね。表示中(水平ブランクじゃない期間)は,二つの処理を平行して行います。一つは,ラインバッファへのドットパターンの書き込み。一つはラインバッファの内容の画面への出力です。前回も書きましたが,ラインバッファを画面に出力するには,ラインバッファへドットパターンが事前に書き込まれている必要がありますよね。このため,ラインバッファは書き込み用と読み出し用の二つを用意します。書き込んだバッファは次のラインで読み出し用に,読み出したバッファは次のラインでは書き込み用になるわけです。水平ブランク期間に,表示すべきスプライトを特定し,スタック構造のメモリに格納しましたので,今度はそれを順番に取り出します。言います)なので,最後に入れたものから処理します。)取り出したスプライト番号をアドレスにして,スプライトメモリからクロックに従って,パターン番号,位置,カラー番号を取り出します。ドットのうち,走査線に表示するラインを決定します。アドレスを決めることができます。実は,スプライトメモリ内のカラー番号には,フリップ情報のビットが含まれていて,左右,または上下に反転して表示することができます。上下反転時は,スプライトパターン内の表示するラインを決定するときに反転し,左右反転時は,シフトレジスタでシフトする方向を変えることで,それぞれ逆方向から表示することができるんですね。この機能のおかけで,反転したパターンを用意しなくてもいいので,パターンデータの節約になるんです。データを出力するところまでになります。基板...んで,作った基板がこちらです。遮光シールがお気に入りです(笑)。