2018年06月16日

SR画面周り(7)

  P6月間企画(その16)

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

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


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

1)縦ドット数について
2)ビットマップモード、直接アクセスモードについて

 横320ドットと同じです。


3)VRAMアドレス(直接アクセスモード)

 横640ドットの場合、1ドット=2ビットで、1バイトに4ドット収容されます。

 ビット順は、
 1バイト目:b7-0 = B7 B6 B5 B4 B3 B2 B1 B0
 2バイト目:b7-0 = R7 R6 R5 R4 R3 R2 R1 R0
 です。

 HとRは、ポート0xC0で指定され、bit1:CSS2 =H、bit0:CSS1 =G、になります(CSS3=0時)。

 ですが...CSS3=0、CSS2=1、CSS1=1、で使うべきです。

 この組み合わせの場合、HGRB=1100、1101、1110、1111、の4色が出力されますが、これは全てパレットで変換できる色に当たります。そのため、16色中任意の4色を出力できる設定になります。


 VRAMアドレスは、横320ドットと同じ、ページ#0が0x0000〜0x7FFF、ページ#1が0x8000〜0xFFFFです(割り当ての変更がない場合)。
 以下、ページ#0についてで、X座標0〜639、Y座標0〜203とします。


 X,Y = 0,0 は、0x1A00、0x1A01 のbit7
 X,Y = 1,0 は、0x1A00、0x1A01 のbit6
 X,Y = 2,0 は、0x1A00、0x1A01 のbit5
 X,Y = 3,0 は、0x1A00、0x1A01 のbit4
 X,Y = 4,0 は、0x1A00、0x1A01 のbit3
 X,Y = 5,0 は、0x1A00、0x1A01 のbit2
 X,Y = 6,0 は、0x1A00、0x1A01 のbit1
 X,Y = 7,0 は、0x1A00、0x1A01 のbit0
 X,Y = 0,1 は、0x1A02、0x1A03 のbit7
 X,Y = 1,1 は、0x1A02、0x1A03 のbit6
 X,Y = 2,1 は、0x1A02、0x1A03 のbit5
 X,Y = 3,1 は、0x1A02、0x1A03 のbit4
 X,Y = 4,1 は、0x1A02、0x1A03 のbit3
 X,Y = 5,1 は、0x1A02、0x1A03 のbit2
 X,Y = 6,1 は、0x1A02、0x1A03 のbit1
 X,Y = 7,1 は、0x1A02、0x1A03 のbit0

 X,Y = 0,2 は、0x1A04、0x1A05 のbit7
 X,Y = 1,2 は、0x1A04、0x1A05 のbit6
 X,Y = 2,2 は、0x1A04、0x1A05 のbit5
 X,Y = 3,2 は、0x1A04、0x1A05 のbit4
 X,Y = 4,2 は、0x1A04、0x1A05 のbit3
 X,Y = 5,2 は、0x1A04、0x1A05 のbit2
 X,Y = 6,2 は、0x1A04、0x1A05 のbit1
 X,Y = 7,2 は、0x1A04、0x1A05 のbit0
 X,Y = 0,3 は、0x1A06、0x1A07 のbit7
 X,Y = 1,3 は、0x1A06、0x1A07 のbit6
 X,Y = 2,3 は、0x1A06、0x1A07 のbit5
 X,Y = 3,3 は、0x1A06、0x1A07 のbit4
 X,Y = 4,3 は、0x1A06、0x1A07 のbit3
 X,Y = 5,3 は、0x1A06、0x1A07 のbit2
 X,Y = 6,3 は、0x1A06、0x1A07 のbit1
 X,Y = 7,3 は、0x1A06、0x1A07 のbit0
  :

 以下省略しますが、4バイト単位(横320ドット時8ドット単位、横640ドット時16ドット単位)で見ると、アドレシングは横320ドットと同じになります。


 つまり

 横640ドット:X = 8*m, Y = 2*n
 横320ドット:x = 4*m, Y = 2*n

 が同じアドレスになります。


 例えば、

 横640ドット X,Y = 0,0
 横320ドット x,y = 0,0

 横640ドット X,Y = 0,202
 横320ドット x,y = 0,202

 横640ドット X,Y = 624,0
 横320ドット x,y = 312,0

 横640ドット X,Y = 624,202
 横320ドット x,y = 312,202

 などです。


 4バイト単位に関して、それぞれのモードを図示すると、以下のようになります。


180616_01_VRAM640.png

 横640ドットの場合は、VRAMメモリの状態がそのままXY座標になるので理解しやすいのですが...


180616_01_VRAM320.png

 横320ドットの場合は、VRAMメモリの状態とXY座標が入れ替わったりするので、直感的に理解しにくいです。

posted by えすび at 21:00| Comment(0) | P6解析:画面周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。