あの楽器(カラー版) その12
一応完成ということで、ソフトの作りと図形のデータ構造を簡単にご説明いたします。
今回のソフトは図のようにメインループとインターバルタイマ割込みの2つで構成されています。
メインループは画像表示に専念し、タイマ割込みでは演奏とセンサスキャン(手動時)に専念する作りになっています。
以前作ったキャラクタLCD版を参考にしていますが、メインと割込みの分担を以前の物よりきれいにしましたので、すっきりした構造になったと思います。(以前の物はセンサスキャンをメインに置いていたので、モードによってメインの動作が変わってしまうのですが、今回の物はそういうこともなくなりました。)
次に図形のデータ構造です。「あの楽器」の機能の一つとして三角、四角、星形といったワイヤフレーム図形が表示されます。この図形データをどうするかが、今回一番悩んだところでした。
メモリが一杯あれば単にモノクロビットマップで格納すれば良いですし、演算が早ければ都度演算で描画しても良いのですが、PICマイコンではどちらも困難です。
そこで下のような方法でデータを生成しました。
この形式ですと、例えば上図の四角の例では、X方向1ラインにつき2ポイント分のY座標情報を格納すればよいことになります。
また表示のときも、データファイルからシーケンシャルにあたえられた座標情報に図形の中心座標を加算してLCDに与えれば描画できますので、簡単で速くなります。(実際はLCD外の判定や、2枚のLCDの境目の処理で結構手間取っておりますが)
なお、今回のソフトでは図形3つまで同時表示できるようにしてあります。PICでグラフィック表示は初めてでしたので、やってみるまでは大昔の8ビットマイコン(昔いじってたPC−8001とか)みたいなぎこちない描画になるかもしれないと心配していましたが、思ったよりも速く動いているのでほっとしました。
考えてみると、PC-8001は確かクロック4MHzでした。今回使ったPICは44MHz以上ですので8ビットのワンチップマイコンとはいえ10倍以上の性能を持っている訳です。メモリも速くなっていてノーウェイトですし、性能差はもっと大きいですね。今更ながら技術の進歩を実感いたしました。
ということで今回は以上です。
にほんブログ村 ←記事が面白かったらクリックしてやってください。
コメント