* Tue May 23 00:00:00 JST 2002 Naoyuki Sawa
前回に引き続き、LCD最下ラインに現れる、ゴミ・欠けの原因を調べて行きます。今回は、
2.仮想画面からLCDへの転送形式への変換コードの問題。転送形式の段階で、ゴミ・欠けが発生している。
という予想が正しいかどうかを、検証してみます。
これを確かめるためには、カーネルに、仮想画面からLCD転送形式への変換を行わせなければいいのです。
pceLCDTransDirect()に直接渡せる形式(以下、画面バッファ形式と呼ぶことにします)の描画を行い、
pceLCDTransDirect()で転送して、ゴミ・欠けが発生するかどうか、確かめてみましょう。
画面バッファ形式の描画には、スプライトライブラリを使うのが最適な方法ですが、
今回は簡単なラインパターンの描画だけなので、プログラムで直接描くことにしました。
画面バッファ形式の構造は、次のようになっています。
===============================================================
画面バッファのデータ並びについて:
横8ピクセル1ハーフワード(1ピクセル2ビット*8=16ビット=1ハーフワード)を一単位として、縦方向にデータが並んでいます。
よって、画面バッファの最初の88ハーフワードは、画面左端の(0,0)−(7,87)の領域のデータとなります。
次の88ハーフワードは、(8,0)−(15,87)のデータとなります。それ以降も同様です。
X=0 X=127
↓ ↓
Y=0→+−+−+−+−+−+−+−+−+−+−+−+−+−+−+−+−+
|最|つ|つ|つ|つ|つ|つ|つ|つ|つ|つ|つ|つ|つ|つ|最|
|初|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|ぎ|後|
|の|の|の|の|の|の|の|の|の|の|の|の|の|の|の|の|
|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|
|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|
|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|ハ|
|||||||||||||||||||||||||||||||||
|フ|フ|フ|フ|フ|フ|フ|フ|フ|フ|フ|フ|フ|フ|フ|フ|
|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|ワ|
|||||||||||||||||||||||||||||||||
|ド|ド|ド|ド|ド|ド|ド|ド|ド|ド|ド|ド|ド|ド|ド|ド|
Y=87→+−+−+−+−+−+−+−+−+−+−+−+−+−+−+−+−+
横8ピクセル1ハーフワードの構成は、次のようになっています。
上位ビット ← FEDCBA9876543210 → 下位ビット
|||||||||||||||+−左から1番目のピクセルの色コードのビット1
||||||||||||||+−−左から2番目のピクセルの色コードのビット1
|||||||||||||+−−−左から3番目のピクセルの色コードのビット1
||||||||||||+−−−−左から4番目のピクセルの色コードのビット1
|||||||||||+−−−−−左から5番目のピクセルの色コードのビット1
||||||||||+−−−−−−左から6番目のピクセルの色コードのビット1
|||||||||+−−−−−−−左から7番目のピクセルの色コードのビット1
||||||||+−−−−−−−−左から8番目のピクセルの色コードのビット1
|||||||+−−−−−−−−−左から1番目のピクセルの色コードのビット0
||||||+−−−−−−−−−−左から2番目のピクセルの色コードのビット0
|||||+−−−−−−−−−−−左から3番目のピクセルの色コードのビット0
||||+−−−−−−−−−−−−左から4番目のピクセルの色コードのビット0
|||+−−−−−−−−−−−−−左から5番目のピクセルの色コードのビット0
||+−−−−−−−−−−−−−−左から6番目のピクセルの色コードのビット0
|+−−−−−−−−−−−−−−−左から7番目のピクセルの色コードのビット0
+−−−−−−−−−−−−−−−−左から8番目のピクセルの色コードのビット0
ピクセル位置の上位・下位方向と、カラーコードのビットの上位・下位方向が、感覚的に逆
(あるいは、ハーフワードの並びがモトローラ並びっぽい?)なので、注意してください。
===============================================================
ちょっとわかりづらいですね。
サンプルプログラムの、pset()関数のソースを見ていただいたほうが、はやいかもしれません。
サンプルプログラムは こちら
サンプルプログラムの使い方は、前回とほぼ同じです。結果は、次のようになりました。