2018年06月13日

SR画面周り(4)

  P6月間企画(その13)

  SRモードでの画面周りについて、の続きです。

  今回は、横320ドットのグラフィックモードについて、その2です。


○グラフィックモード320×200/320x204ドット

4)ビットマップモード
 前にも書きましたが、『Y座標をポート0xCE、X座標をアドレスで指定』する事で、指定のXY座標の位置にドットを描きます。
 指定したアドレスに対してデータを書き込めばドットを描き、読み出せばそのドットの色が分かるというものです。

 1ドット=4ビットなので、以下のようになります。

 書き込み時:
  bit7-4:何でもよい
  bit3-0:HGRB

 読み出し時:
  bit7-4:不定
  bit3-0:HGRB


 例1:X,Y = 0,0 に、赤のドットを描く

ld a,0x00 ; Y座標
out (0xCE),a
ld a,0x02 ; 赤
ld (0x0000),a ; X座標


 例2:X,Y = 1,1 と X,Y = 2,1 のドットの色が同じかどうかを調べる

ld a,0x01 ; Y座標
out (0xce),a
ld a,(0x0001) ; X,Y = 1,1 を読み出す
and $0f ; 不定部分を削除
ld b,a
ld a,(0x0002) ; X,Y = 2,1 を読み出す
and $0f ; 不定部分を削除
cp b ; 比較


 例2のように、読み出した値を比較するなどをする場合は、不定部分をマスクする必要があります。


 この説明だけだと、直接アドレスモードよりもビットマップモードの方が単純だと考えそうなのですが...いろいろと疑問点が出てきますよね?

・Y座標の設定を204以上にした場合はどうなる?
・X座標の設定を320以上にした場合はどうなる?
・ポート0xC8のビット3でイネーブル/ディセーブルの切換だけど、ビット4のビットマップページ指定との関係は?
・メモリ割り当てと同時に使うとどうなる?
・そもそもビットマップモードとは?

 などなど。

 この答えは次回に(^^;)/
 
posted by えすび at 21:00| Comment(0) | P6解析:画面周り | このブログの読者になる | 更新情報をチェックする