PIC AVR 工作室->TopPage->AVRの工作->背景表示器

背景表示器

背景表示器の概要

背景表示器サムネイル

スプライト表示器と組み合わせて使う背景表示器です。 スプライト表示器からUARTで座標と背景パターン番号を受信して、スプライト信号に合成する為の映像信号を生成します。

TINY2313を使用します。横16キャラクター×縦12キャラクターの表示ができます。 1キャラクターは8×8ドット。(スプライト表示器の同期信号を利用するため、同期信号は生成しません)

キャラクタービットマップは16種類を自由に定義可能。マイコン内部にオリジナルの背景マップを8画面分収録可能です。

ちなみに上のサムネイル画像はドンキーコング75mを真似た映像ですが、左下の人の形とエレベーターだけがスプライトで、 ハシゴや鉄骨など残りはすべてこの背景表示器で出力された映像です。

使い方

スプライト表示器と組み合わせて使用します。組み合わせないと信号が出ませんのでご注意を! (スプライト表示器から出力される映像信号・複合同期信号と合成することでNTSC信号になります)

この背景表示器とスプライト表示器を接続した例がPLAYERです。 スプライト表示器から出力される「UART出力」「垂直同期出力」「水平同期出力」の3つの信号を入力することで動作します。

メインCPUはスプライト表示器と同様で、AVRでもPICでもH8でもPCでも、とにかく繋がれば何でも構いません。

詳しい使い方や仕様、サンプル回路図、サンプルソース、オリジナルビットマップの作り方などをPDFファイルにまとめてあります。 下のダウンロードからアーカイブをダウンロードし、その中のPDFファイルをご参照ください。 最新版はV2です。V2は画面全体洗い替え機能と1キャラ分だけ更新機能を搭載しています。(当バージョンではスクロールも カラー表示もできません。)

まぁ、ドキュメントに目を通さなくても、スプライトデモドットイーターのC言語ソースをご覧頂けば、使い方はすぐにわかると思います。

コメント

とにかくTINY2313でそれなりのものを作る時は、最初から終わりまでメモリ容量との戦いです!スプライトの表示領域にあわせて 8×8ドットのキャラクターを表示しようとすると、単純に8ドットで割り算するとおよそ17×12キャラクター。 1キャラクターに1バイトを割り当てると、204バイト!既にTINY2313のSRAMの倍近い容量です…。

しかも、垂直同期、水平同期の入力に外部割込み(サブルーチンコール)を使うので、戻りアドレスの為にスタックとして SRAMを合計10バイト前後段使います。

とうわけで、1キャラクターを4ビット(16種類のキャラ)に省エネし、しかも横を16キャラとすることで無理やり128バイトのSRAMに 押し込んだというわけです。いやー、SRAMの少なさにはホントに閉口…。

SRAMさえもっと大きければ、この機能をテキスト画面表示器の変わりに使えそうなんですけどねぇ。 スクロールやカーソル表示などの機能を削ればフラッシュメモリの容量は若干余裕が残るだろうから、プログラム自体は2KBでも 押し込められるような気がするんですけど…。

ダウンロード

背景表示器用アーカイブ(クリックすると開きます)

(注)V2用背景マップデータ/背景ビットマップデータ書き換えツールの入力ファイルは、標準でd:\99\ntsc_bg2_origin.hexになっているので 適宜修正して使ってください。詳しくは背景表示器V2説明書(PDFファイル)をご参照ください。または、他の言語に移植するなりして もっと使いやすくしていただければ助かります。

99BASICインタプリタについては、VECTORなどで「99BASIC」と検索して頂けばすぐに見つかります。別途ご用意ください。

スプライトと併せてこっちのソースも見てみたいぞ!というご意見がたくさん集まるようでしたらソース公開したいと思います。 リクエストしてください。