avr背景表示器スクロールのプログラム。バグ取りが完了
しました!
凄くバカらしいバグでした…(^_^)
ソースプログラムの一部をコピー&ペーストで流用した際、
直さないとならない部分を直し忘れていたという恥ずか
しいミスです。
直したつもりで直し忘れてたって場合、頭が「正しい
はずだ!」って思いこんでいるので、なかなか疑って
考えられず、発見が遅れるんですね…。という言い訳。
判ってしまえばたいしたこと無いわけで、サクッと直して
テストしてみると、無事上手く動きました。
ひとまず、上下にスクロールするデモムービーを作って
みました。ドキュメント類やデモプログラムまできちんと
整備しようとすると暫く時間がかかるので、ひとまず
ムービーだけでも載せようと思います。
明日か明後日にでも、時間が取れたら新たなページを
作ってアップしようと思います。
これまでの背景処理機と違って、下側と右側のそれぞれ
1キャラクター分ほど表示領域が狭くなりました。
表示領域の外側に1キャラクター分のバッファを持た
せておかないとならないのですが、そもそも2313
ではVRAMに充てるメモリが一杯一杯なので、仕方
なく下と右の1キャラクター分を削ってそのバッファー
に充てました。
その分当然背景の表示領域が狭くなりましたが
(16×12キャラ → 15×11キャラへ)、
スクロールできるということは、実画面の外に世界が
広がっているということであり、まぁいいや…と。
なぜ右側まで?と言うと、今後横スクロールを実現する
際、このプログラムの上位互換にして、置き換えて
しまおうと企んでいるからです。
(いつになるかわかりませんけどね…)
縦スクロールは、1ライン1ラインのデコード処理時に
ライン数にオフセット値を加味するだけでよく、
プログラムは簡単だったんですが、横スクロールと
なると、8ビット単位のデータをリアルタイムでビット
シフトさせる必要があり、なかなか厄介。
走査線1本=約64usの中に、どうやったらビット
シフトの処理を組むことができるのか、どうやったら
残りの数百バイトの中に押し込めるのか、どうやったら
残ったSRAMやレジスタの中で実現できるのか、
これまで以上に複雑なパズルに挑む難しさです。
(これまでのプログラムも充分変態的ですけどね…)
|