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のビットマップページ指定との関係は?
・メモリ割り当てと同時に使うとどうなる?
・そもそもビットマップモードとは?
などなど。
この答えは次回に(^^;)/
2018年06月13日
この記事へのコメント
コメントを書く

