ゲーム機を作ろう(その9)今回は,週末に作業を集中して行ったので,いつもより更新が早くできました。ライン分のパターンデータを取り出すところまで作りました。枚揃って,スプライトが画面に表示できるようになります。今回は,残っていたスプライトのラインバッファ周りの基板を作ります。ダブルバッファになっているフレームバッファと呼ばれるものに描画し,垂直同期に合わせてフリップする...と言うことは,ゲームプログラムの文献などでよく見たりしますよね。フレームバッファはフレーム単位で画面情報を書き込むバッファです(...よね?)。画面分の情報を書き込んだら,それを画面に反映します。ライン毎にその内容を画面に反映します。書き込み単位が短いだけで,行うことは似ているんですね。フレームバッファは,書き込んだあとに画面に反映する(バッファをフリップする)タイミングは,ソフトウェアで制御できるのが一般的です。画面にたくさん表示したければ,時間をかけて描画し,フリップのタイミングを遅らせると,たくさん表示することはできます。低い」と言った状態になってしまいます。今回作るラインバッファは,このフリップするタイミングが,ハードウェアによって水平帰線タイミングで行われます。「フレーム落ち」みたいに「ライン落ち」をしたら,画面の一部が崩れてしまいますので,必ず一定のタイミングで画面に反映する必要があります。いった理由から,表示できる枚数が限定されてしまうんですね。ライン分のメモリがあれば良いので,フレームバッファに比べて,メモリは少なく済みます。枚数をより多く表示するにはどうすれば良いかというと,処理するクロック数を上げて,読み書きの速いメモリを使用すれば良いのです。...って当たり前か。ライン分のバッファなので,その容量は,横ドット数分になります。ドット分のデータが順次送られてきますので,これを書き込む直前に,スプライトメモリから水平位置を取得して,カウンタにロードします。ドット分書き込まれていきます。透明色は書き込みスルーします。これと同時に,もう一方のバッファには一つ前のラインで情報が書き込まれていますので,ドットクロックに合わせてバッファの左端から右端に向かって読み出します。ドット分読みだしたら,次回の書き込みに備えて,その場所をクリアしておきます。表示データが出力されていますので,これらを表示優先順にしたがって選択し,一番上になるドットデータが最終的にモニターに送られることになるんですね。今回作った基板がこちらです。なんか,コネクタが増えてきましたね...。ダブルバッファの切り替えをするので,マルチプレクサが数個あります。持ち上げると,結構重いです(笑)。スプライトが表示できるようになりましたので,簡単なテストプログラムを作りました。違って,それぞれをドット単位に動かすことができます。スプライトを重ねて,パレット変換して表示できれば,ゲーム機っぽくなると思います。スプライトの重ね合わせと,これらの表示プライオリティを制御する基板を作ってみたいと思います。基板の枚数が増えてきたので,全体的な安定性がチョット不安ですが,まぁ,気楽にやっていきます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。電子工作アーカイブ2020年1月2019年11月2019年7月2019年6月2019年1月2018年12月2018年9月2018年7月2018年6月2018年5月2018年3月2018年2月2018年1月2017年12月2017年11月2017年10月2017年9。