以前youtubeでみつけて度肝を抜かれた
http://brown.ap.teacup.com/nekosan0/310.html
このスーパーマリオクローンのお話。
公式サイトが出来てるようです。↓ここ。
http://avga.prometheus4.com/
すんさんのサイトの掲示板や、makeブログでも話題に
なってますね。AVGAっていう名前なんですね。
元々はPAL専用だったんですが、バージョンアップして
NTSCにも対応しつつあるようです。
それにしても、MEGA88以降以上といってもSRAMは
少ないモデルでは1kB。
1ドット4ビットで192×144ドットなら10kB
以上のVRAMが必要になるはずなんですが、1kBに
収めているということは、私の作ったスプライト表示器
http://picavr.uunyan.com/avr_m_sprite.html
や、背景表示器
http://picavr.uunyan.com/avr_m_bg.html
などのようにVRAMは1ライン分だけしか持たない
ことになっているんだろうなぁ。
スプライト表示器や背景表示器も、128バイトしかない
TINY2313に押し込むために、1ライン分デコードして
おいて(その間は表示しない)、次の1ラインで表示する、
みたいな感じに処理したんですが、youtubeの画面を
見る限りはそういう1ライン間引くようなことは
行ってないみたい。
その方法がずーーーーーっと引っかかっていたんですよね。
どうやって処理してるんだろうなぁ…って。
デコードしながら表示もやっているというのが真相
なのでしょうが、表示のタイミングを狂わさずに
デコードもやっちゃうって言うのは、かつて
スプライト表示器で苦労した経験から言うと相当
難しいはず。
ならどうやっているのか…?
一つには、デコードと表示を数クロック毎に切り替え
ながらやる方法。これは超難しい…。
もう一つは、表示処理以外のところにデコード処理を
詰め込む方法。
AVGAのスペック詳細がわかっていないのでなんとも
言えないんですが、後者は許容できるクロック数的に
考えると大した処理が出来ないはずなんだけどなぁ。
まぁ、外部ICとのI/Fを考える必要が無いので、
ある程度融通は利くのかも知れないなぁ。
そうそう。NTSC版ではY軸120ドットという
ことなので、いずれにしても2ラインで1ドット表示
ということは間違えないんだろうなぁ。
それにしても、表示とデコード、どうやって両立
してるんだろうなぁ。
そうそう。最近VHDLでCPLD弄ってたり12.318Mhzの
オシレータを買い漁っていたりするわけですが、これは
まさにAVGAに触発されて、カラーのビデオ表示を
さらに推進したいなぁという作戦をひそかに考えている
からだったんですねぇ。
マイコンからはRGBで出力しておいて、それをひとまず
CPLD(XC9536XLみたいな安いやつ想定)でカラーバースト
やサブキャリア信号を生成し、コンポジット信号にして
しまおうっていう目論見です。
自由自在の背景スクロールと、大量のスプライト同時表示。
これを両立させたいなぁというのが当面の目標。
どうなることやら…。
|
|
|
|
|
|