ポリライン (☆)
コマンド ID:
0x48, 0x4C (単色の直線)
0x58, 0x5C (グラデーション付きの直線)
それぞれ、8 と C で何が違うのかは不明。
| ビット |
0...7 | 8...15 |
16...23 | 24...31 |
| 0...15 |
16...31 |
| 0x48/0x4C | B0 | G0 | R0 |
| Y0 | X0 |
| Y1 | X1 |
| Y2 | X2 |
|
| Yn | Xn |
| 0x5xxx5xxx(終端コード) |
| ビット |
0...7 | 8...15 |
16...23 | 24...31 |
| 0...15 |
16...31 |
| 0x58/0x5C | B0 | G0 | R0 |
| Y0 | X0 |
| (reserved) | B1 | G1 | R1 |
| Y1 | X1 |
| (reserved) | B2 | G2 | R2 |
| Y2 | X2 |
|
| (reserved) | Bn | Gn | Rn |
| Yn | Xn |
| 0x5xxx5xxx(終端コード) |
終端コードは 0x5xxx5xxx なら何でも良く、例えば 0x51235456 も可。
2 つめの頂点が指定された時点で描画が開始される。
ちなみに、グラデーション付きの場合は色を書くべきところに終端コードを書くのであって、頂点座標を書くところに終端コードを置いても終端されない。
半透明処理係数
重ねて描画するピクセル(source) :
s
フレームバッファのピクセル(destination) :
d
| モード | 計算 |
| 0 | 0.5s + 0.5d |
| 1 | 1.0s + 1.0d |
| 2 | 0.5s - 1.0d |
| 3 | 1.0s + 0.25d |
テクスチャパレット
パレット(CLUT):
| ビット |
0 |
1...9 |
10...15 |
| 説明 |
(reserved) |
y 座標 |
x 座標 |
フレームバッファ内でのアドレスオフセットは以下の通り。(rowbytes = 2048)
offset = (clut << 5) & 0xFFFE0;
テクスチャウィンドウ
コマンドパケット:
| ビット |
0...7 |
8...11 |
12...16 |
17...21 |
22...26 |
27...31 |
| 説明 |
0xE2 |
(reserved) |
y_or |
x_or |
y_andc |
x_andc |
テクスチャの座標は以下の通り。
x = x & ~(x_andc << 3) | (x_or << 3);
y = y & ~(y_andc << 3) | (y_or << 3);
GetInfo (☆)
コマンド(GP1):
| コマンド | 返り値 | データフォーマット |
| 10000000 | (なし) |
| 10000001 | (なし) |
| 10000002 | テクスチャウィンドウ | E2 による設定時と同じ |
| 10000003 | 左上クリッピング | E3 による設定時と同じ |
| 10000004 | 右下クリッピング | E4 による設定時と同じ |
| 10000005 | 描画オフセット | E5 による設定時と同じ |
| 10000006 | (なし) |
| 10000007 | (なし) |
どの値を得るかはコマンドの下位 3 ビットのみで決められるため、例えば 0x1000000A はテクスチャウィンドウの値を返す。
返り値が (なし) になっているコマンドを実行した場合は、GP0 レジスタの値は最後に GP0 レジスタから読み出された値のまま変化しない。この時、GPU から CPU への画像転送後の場合でも最後に転送された値が残っている。