カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。
Raspberry Pi Pico の NTSC 出力を行う際に今まではキャラクタVRAM方式を使ってました。VRAMにはキャラクタコードが格納されていて、水平同期信号に合わせて、そのキャラクタを描画する、という方式です。この方式はVRAMサイズが小さくて済む、という利点があります。 しかし、Raspberry Pi Pico には 264kB ものメモリがあるので、256x192のグラフィック画面に対して、1ドットをunsigned char (1バイト)で表しても48kBぐらいの VRAM サイズで納まります。残り200kBもあるなら VRAM にこれぐらい使ってもよかろう、っちゅうことで、 unsigned char gvram[256][192]; のように VRAM を確保して、水平同期信号に合わせて、1ドットずつ描画することにしました(グラフィカルVRAMと呼ぶことにします。)。この方式を使えば、現状の回路で1ドットに対して白、グレー、黒を表現することができます。もっと頑張って外付け回路作れば1バイト=8ビット→256階調を表現することができるようになると思いますが、とりあえずは頑張らない。(^^; 1ドット毎の描画っちゅうことなので、文字表示するためには文字を1ドットずつグラフィカルVRAMに書き込む関数を作る必要がありますが、フォントファイルがあるのでそんなに面倒でもありませんでした。 っちゅうことで、pa-art/test_ntscのtest_ntsc_grph.cとしてグラフィカルVRAMのテストプログラムを置きました。 sinカーブもちゃんと描ける 黒描画のタイミングが白/グレーに対して少し違うようなので、右端に行くほどフォントが潰れやすくなっているような気がします。何とかならんかな。(^^;; また、ドットとしてグレーが表現できるようになったので、"DROPPING MONSTERS"の壁部分をグレーにしてみたバージョンをpa-art/test_ntscのtest_ntsc_wall_grph.cとして置きました。とりあえず動かすことを目標にしたのでソースとは汚いですが... (^^;; 壁がグレーになっている(ハッシュパターンも込みで) 見た目は前とあまり変わりませんが、内部的にはキャラクタベースのマップ(vram)に描画用のVRAM(gvram)を追加して論理はほとんどいじらずに描画を変更しています。なので、見にくい。(^^;; 最初から設計しなおしたら違う実装があると思います。 グラフィカルRAM版の"DROPPING MONSTERS"プレイ動画 グラフィカルRAM版のNTSC出力の方が融通が利きそうなので、これからはこちらをベースにしていきたいと考えています。ドットの微妙なズレを何とかしたいけど... --- 21:20 --- お気に入りの記事を「いいね!」で応援しよう
Last updated
March 22, 2021 09:25:00 PM
コメント(0) | コメントを書く
[作りモノ] カテゴリの最新記事
|
|