上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- -- l スポンサー広告 l top
PIC32MXでキャプチャしたフレームデータにアトリビュート(属性)を付加することでカラー、ブリンク、アンダーライン表示ができるようにしました。



アトリビュートはキャラクタサイズ8x8ではなく、4x4ドットごとに指定できるようになっていますので、セミグラフィックキャラクタを使った場合に各ドットの色を変えることが可能です。

動作は動画をご覧ください。

 

「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">



アトリビュートの指定は当然ichigojamから行うわけで、シリアル通信で行う予定ですが、ちょっと思いついた方法が有って、先にそれを試しています。「PCG機能を使ってichigojamの表示データの中にアトリビュート指定コマンドを埋め込んでしまう。」という方法です。ちょっと気に入っているので解説図を用意しました。



この方式の利点は別系統の通信手段が要らないこと、欠点はichigojamからはPIC32MXがコマンドを受け付けたかどうかしる方法がないことです。そのため、コマンドを出してからPICが確実に受け付けるだけ待ち時間をWAITで入れており、その分遅くなっています。

今回のアトリビュート機能に対応したPICMX32ソースをアップします。

なおデバッグ用にPICMX32がichigojamとは独立して文字を表示できるようにフォントと各種表示ルーチンを追加しています。必要なフォントデータ(ヘッダファイル)もアップします。

以下はこの機能を使ったichigojamソフト例です。

10 CLS:POKE#91F,#FF:H=#55:M=#C0:X=0:Y=0:V=31:W=23:C=#07:GOSUB510:X=31:Y=0:V=31:W=0:C=#00:GOSUB510
20 LC5,5:?"ichigojam pocket";:X=5:Y=5:V=31:W=5:C=#01:GOSUB510
30 LC10,7:?"C O L O R";:Y=7:W=7:X=10:V=X:FORI=1TO5:C=I:GOSUB510:X=X+2:V=X:NEXT
40 FORI=0TO7:C=I:X=10+I:Y=9:V=X:W=Y:LCX,Y:?CHR$(1);:GOSUB510:NEXT
50 LC5,11:?"BLINK TEST1";:X=5:Y=11:V=22:W=Y:C=#0f:GOSUB510
70 LC5,14:?"BLINK TEST2";:X=5:Y=14:V=22:W=Y:C=#38:GOSUB510
80 LC5,16:?"UNDERLINE TEST1";:X=5:Y=16:V=22:W=Y:C=#87:GOSUB510
90 LC5,18:?"UNDERLINE TEST2";:X=5:Y=18:V=22:W=Y:C=#84:GOSUB510
100 FOR I=0TO7:FORJ=0TO7:X=J+24:Y=I+5:LCX,Y:?CHR$(I*8+J+#40);:C=I*16+J:V=X:W=Y:GOSUB510:NEXT:NEXT
110 FOR I=0TO7:FORJ=0TO7:X=J+24:Y=I+14:LCX,Y:?CHR$(I*8+J+#40);:C=I*16+J+8:V=X:W=Y:GOSUB510:NEXT:NEXT
120 WAIT300:LRUN2
499 GOTO 499
500 '**** attribute set *******
510 POKE#7F9,M,X,Y,V,W,C:POKE#7F8,H:H=#FF-H:WAIT5:RETURN


510行でコマンドをPCGに書いています。これが動画の最初の方のデモです。

次がセミグラフィックでの使用例。以前作ったセミグラフィックPSETルーチンと併用しています。

5 wait 100
10 CLS:POKE#91F,#FF:H=#55:M=#C0:X=0:Y=0:V=31:W=23:C=#07:GOSUB510:GOSUB510:X=31:Y=0:V=31:W=0:C=#00:GOSUB510
20 LC1,2:?"ichigojam pocket";:X=1:Y=2:V=31:W=5:C=#01:GOSUB510
50 LC1,4:?"COLOR GRAPHIC";:X=1:Y=4:V=22:W=Y:C=#0f:GOSUB510:M=#C1
60 FORI=1TO7
70 FORJ=ITO26-I:X=J+5:Y=I+10:GOSUB205:C=I:V=X:W=Y:GOSUB510:Y=36-I:GOSUB205:V=X:W=Y:GOSUB510:NEXT
80 FORJ=ITO26-I:X=I+5:Y=J+10:GOSUB205:C=I:V=X:W=Y:GOSUB510:X=31-I:GOSUB205:V=X:W=Y:GOSUB510:NEXT
100 NEXT
190 X=RND(20)+32:Y=RND(20)+14:C=RND(7)+1:GOSUB205:V=X:W=Y:GOSUB510:GOTO190
200 '=== PSET X,Y ===
205 Z=(X&1)+(Y&1)*2:W=X/2:V=Y/2:LC W,V:? CHR$(VPEEK(W,V)|(1<< Z)|#80):RETURN
500 '**** attribute set *******
510 POKE#7F9,M,X,Y,V,W,C:POKE#7F8,H:H=#FF-H:WAIT3:RETURN


動画見ると分かりますように、結構遅いです。そのうちまっとうにシリアル通信型に直せばもっと速くなると思います。
あとは入力がないので、ジョイスティックをつけるか、いや折角PICマイコンがあるのだからタッチパネルでも制御させるか、等々考え中です。

それではまたです。



 
2015.05.30 Sat l ICHIGOJAM l コメント (0) l top

コメント

コメントの投稿












上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。