りんけーじ - 開発資料 - PSX - GPU


この資料について

☆印のついたものは解析によって直接得られたもの、それ以外の情報は必ずしも実際の解析によって求められたものではなく、エミュレータで“うまく行くように”調整した結果得られたものも含まれます。
よって、それらには誤りが多数ある可能性があります。

ポリライン (☆)

コマンド ID:
0x48, 0x4C (単色の直線)
0x58, 0x5C (グラデーション付きの直線)
それぞれ、8 と C で何が違うのかは不明。
ビット 0...78...15 16...2324...31
0...15 16...31
0x48/0x4CB0G0R0
Y0X0
Y1X1
Y2X2
YnXn
0x5xxx5xxx(終端コード)
ビット 0...78...15 16...2324...31
0...15 16...31
0x58/0x5CB0G0R0
Y0X0
(reserved) B1G1R1
Y1X1
(reserved) B2G2R2
Y2X2
(reserved)BnGnRn
YnXn
0x5xxx5xxx(終端コード)

終端コードは 0x5xxx5xxx なら何でも良く、例えば 0x51235456 も可。
2 つめの頂点が指定された時点で描画が開始される。
ちなみに、グラデーション付きの場合は色を書くべきところに終端コードを書くのであって、頂点座標を書くところに終端コードを置いても終端されない。

半透明処理係数

重ねて描画するピクセル(source) : s
フレームバッファのピクセル(destination) : d
モード計算
00.5s + 0.5d
11.0s + 1.0d
20.5s - 1.0d
31.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 への画像転送後の場合でも最後に転送された値が残っている。

その他


修正・更新履歴