Copy Link
Add to Bookmark
Report

Mask欄は右欄で参照されるビットマスクです

PS_2's profile picture
Published in 
Playstation
 · 4 years ago


  

Mask欄は右欄で参照されるビットマスクです。
レジスタ書き込み時、上位8ビットにコマンドコード(- XX -)を加えるのを忘れない
こと。例えば、- 03 - 表示マスクでは、表示無効 -> 03000001

形式:

Mask
bitmask - 説明

- gp1レジスタ読み出し ----------------------------------------------------------

- gp1 - GPUステータス

Mask
04000000 - 1:Idle 0:Busy
10000000 - コマンド受信 1:Ready 0:Not ready
80000000 - インターレースモードでGPUが1:奇数 0:偶数 ラインを描画中

- gp1レジスタ書き込み ----------------------------------------------------------

書き込みモードでは、gp1はGPUの機能に影響するコマンドを送るのに使われる。
コマンドデータが1ワード(32ビット)を超える場合、残りのデータはgp0に送られる。

- 00 - All Reset?

00000000 - All Reset?

- 01 - Command Reset

00000000 - Reset Command

- 02 - Reset IRQ

00000000 - Reset IRQ

- 03 - 表示マスク

00000000 - 表示有効
00000001 - 表示無効

- 04 - Misc

00000000 - I/Oモードに設定. 全てのプリミティブ、他のコマンドはgp0に送られる
00000002 - DMAスライスモード, CpuからGPU
00000003 - DMAスライスモード, GPUからCpu

I/OでVRAMにアップロードする, 32ビットアライン

*gp1 = 04000000 - I/Oモードに設定
*gp0 = 01000000 - キャッシュフラッシュ
*gp0 = a0000000 - CpuからGPU
*gp0 = yyyyxxxx - 左上隅
*gp0 = hhhhwwww - 矩形の幅と高さ
*gp0 = (w*h/2)個の32ビットワードを送る

I/OでVRAMからダウンロードする, 32ビットアライン

*gp1 = 04000000 - I/Oモードに設定
*gp0 = 01000000 - キャッシュフラッシュ
*gp0 = c0000000 - GPUからCpu
*gp0 = yyyyxxxx - 左上隅
*gp0 = hhhhwwww - 矩形の幅と高さ
RAM = *gp0 - (w*h/2)個の32ビットワードを読む

- 05 - 表示オフセット

Mask
000003ff - offset x
000ffc00 - offset y

- 06 - 水平開始/終了 (x , w) - これはTV表示上で、フレームバッファではない。

Mask
00000fff - s - スクリーン水平開始
00fff000 - e - スクリーン水平終了

x = screen.x
w = screen.w
s = 500 < 608 + x * 10 < 3290
e = s + 80 < s + (w * 10) < 3290

- 07 - 垂直開始/終了 (y , h) - これはTV表示上で、フレームバッファではない。

Mask
000003ff - s - スクリーン垂直開始
000ffc00 - e - スクリーン垂直終了

y = screen.y
h = screen.h
s = 0 < y + (PAL=19 NTSC=16) < PAL=310 NTSC=254
e = s + 1 < s + h < PAL=312 NTSC=256

- 08 - 表示モード

Mask
00000000 - 表示幅 <= 280
00000001 - 表示幅 <= 352
00000002 - 表示幅 <= 560
00000003 - 表示幅 > 560
00000008 - 1:Pal 0:Ntsc
00000010 - 1:24ビットモード 0:16ビットモード
00000020 - 1:インターレース 0:ノンインターレース
00000024 - 表示高 > (PAL=288 NTSC=256)
00000040 - 表示幅 <= 400
00000080 - 1:Reversed 0:Non-reversed

- 09 - ??? Used for GPU-B Ext ???

09000001

- 80 - Move Image

*gp1 = 80000000
*gp0 = yyyyxxxx - 転送元の左上隅
*gp0 = yyyyxxxx - 転送先の左上隅
*gp0 = hhhhwwww - 矩形の幅と高さ

- E1 - 描画モード

Mask
00000400 - 表示領域描画フラグ
00000200 - ディザフラグ
000009ff - テクスチャページ (tpageを作る計算式は不明)

- E2 - テクスチャウィンドウ

調査中

- E3 - クリップ領域開始

Mask
000003ff - clip.x
000ffc00 - clip.y

- E4 - クリップ領域終了 (X , Y)

Mask
000003ff - clip.w
000ffc00 - clip.h

- E5 - 描画オフセット

Mask
000007ff - ofs.x
003ff800 - ofs.y

- E6 - Priority?

調査中

- プリミティブ -----------------------------------------------------------------

- プリミティブをI/Oモードで送る
*gp1 = 0x04000000;
*gp0 = pkt[0]; *gp0 = pkt[1]; ...

以下で使っている形式についての注:

pkt[X] | aa | bb | cc | dd | コメント
- pkt[X]は32ビット
- aa, bb, cc, ddはバイトに対応する。したがって、送るデータは0xddbbccaa

- 01 - キャッシュフラッシュ

pkt[0] 01000000 - キャッシュフラッシュ

- 02 - 矩形塗りつぶし

pkt[0] | r0 | g0 | b0 | 02 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | w | h | 幅と高さ

- 20 - PolyF3 - フラットシェーディング三角形

pkt[0] | r0 | g0 | b0 | 20 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | x1 | y1 | 第2頂点
pkt[3] | x2 | y2 | 第3頂点

- 24 - PolyFT3 - フラットシェーディングテクスチャ三角形

pkt[0] | r0 | g0 | b0 | 24 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | u0 | v0 | clut id | 第1テクスチャ座標, CLUT id
pkt[3] | x1 | y1 | 第2頂点
pkt[4] | u1 | v1 | tpage | 第2テクスチャ座標, テクスチャページ
pkt[5] | x2 | y2 | 第3頂点
pkt[6] | u2 | v2 | | 第3テクスチャ座標

- 28 - PolyF4 - フラットシェーディング四角形

pkt[0] | r0 | g0 | b0 | 28 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | x1 | y1 | 第2頂点
pkt[3] | x2 | y2 | 第3頂点
pkt[4] | x3 | y3 | 第4頂点

- 2c - PolyFT4 - フラットシェーディングテクスチャ四角形

pkt[0] | r0 | g0 | b0 | 24 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | u0 | v0 | clut id | 第1テクスチャ座標, CLUT id
pkt[3] | x1 | y1 | 第2頂点
pkt[4] | u1 | v1 | tpage | 第2テクスチャ座標, テクスチャページ
pkt[5] | x2 | y2 | 第3頂点
pkt[6] | u2 | v2 | | 第3テクスチャ座標
pkt[7] | x3 | y3 | 第4頂点
pkt[8] | u3 | v3 | | 第4テクスチャ座標

- 30 - PolyG3 - グローシェーディング三角形

pkt[0] | r0 | g0 | b0 | 30 | 第1頂点 RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | r1 | g1 | b1 | | 第2頂点 RGB色
pkt[4] | x1 | y1 | 第2頂点
pkt[5] | r2 | g2 | b2 | | 第3頂点 RGB色
pkt[6] | x2 | y2 | 第3頂点

- 34 - PolyGT3 - グローシェーディングテクスチャ三角形

pkt[0] | r0 | g0 | b0 | 34 | 第1頂点 RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | u0 | v0 | clut id | 第1テクスチャ座標, CLUT id
pkt[4] | r1 | g1 | b1 | | 第2頂点 RGB色
pkt[5] | x1 | y1 | 第2頂点
pkt[6] | u1 | v1 | tpage | 第2テクスチャ座標, テクスチャページ
pkt[7] | r2 | g2 | b2 | | 第3頂点 RGB色
pkt[8] | x2 | y2 | 第3頂点
pkt[9] | u2 | v2 | | 第3テクスチャ座標

- 38 - PolyG4 - グローシェーディング四角形

pkt[0] | r0 | g0 | b0 | 38 | 第1頂点 RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | r1 | g1 | b1 | | 第2頂点 RGB色
pkt[4] | x1 | y1 | 第2頂点
pkt[5] | r2 | g2 | b2 | | 第3頂点 RGB色
pkt[6] | x2 | y2 | 第3頂点
pkt[7] | r3 | g3 | b3 | | 第4頂点 RGB色
pkt[8] | x3 | y3 | 第4頂点

- 3c - PolyGT4 - グローシェーディングテクスチャ四角形

pkt[0] | r0 | g0 | b0 | 3c | 第1頂点 RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | u0 | v0 | clut id | 第1テクスチャ座標, CLUT id
pkt[4] | r1 | g1 | b1 | | 第2頂点 RGB色
pkt[5] | x1 | y1 | 第2頂点
pkt[6] | u1 | v1 | tpage | 第2テクスチャ座標, テクスチャページ
pkt[7] | r2 | g2 | b2 | | 第3頂点 RGB色
pkt[8] | x2 | y2 | 第3頂点
pkt[9] | u2 | v2 | | 第3テクスチャ座標
pkt[10] | r3 | g3 | b3 | | 第4頂点 RGB色
pkt[11] | x3 | y3 | 第4頂点
pkt[12] | u3 | v3 | | 第4テクスチャ座標

- 40 - LineF2 - フラットシェーディングライン

pkt[0] | r0 | g0 | b0 | 40 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | x1 | y1 | 第2頂点

- 48 - LineF3 - 2連結フラットシェーディングライン

pkt[0] | r0 | g0 | b0 | 48 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | x1 | y1 | 第2頂点
pkt[3] | x2 | y2 | 第3頂点
pkt[4] | 55 | 55 | 55 | 55 | ???

- 4c - LineF4 - 3連結フラットシェーディングライン

pkt[0] | r0 | g0 | b0 | 4c | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | x1 | y1 | 第2頂点
pkt[3] | x2 | y2 | 第3頂点
pkt[4] | x3 | y3 | 第3頂点
pkt[5] | 55 | 55 | 55 | 55 | ???

- 50 - LineG2 - グローシェーディングライン

pkt[0] | r0 | g0 | b0 | 50 | 第1頂点 RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | r1 | g1 | b1 | | 第2頂点 RGB色
pkt[3] | x1 | y1 | 第2頂点

- 58 - LineG3 - 2連結グローシェーディングライン

pkt[0] | r0 | g0 | b0 | 58 | 第1頂点 RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | r1 | g1 | b1 | | 第2頂点 RGB色
pkt[3] | x1 | y1 | 第2頂点
pkt[4] | r2 | g2 | b2 | | 第3頂点 RGB色
pkt[5] | x2 | y2 | 第3頂点
pkt[6] | 55 | 55 | 55 | 55 | ???

- 5c - LineG4 - 3連結グローシェーディングライン

pkt[0] | r0 | g0 | b0 | 5c | 第1頂点 RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | r1 | g1 | b1 | | 第2頂点 RGB色
pkt[3] | x1 | y1 | 第2頂点
pkt[4] | r2 | g2 | b2 | | 第3頂点 RGB色
pkt[5] | x2 | y2 | 第3頂点
pkt[6] | r3 | g3 | b3 | | 第4頂点 RGB色
pkt[7] | x3 | y3 | 第4頂点
pkt[8] | 55 | 55 | 55 | 55 | ???

- 60 - Tile - 任意サイズタイル

pkt[0] | r0 | g0 | b0 | 64 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | h | w | 幅と高さ

- 64 - Sprt - 任意サイズスプライト

pkt[0] | r0 | g0 | b0 | 64 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | u0 | v0 | clut id | 第1テクスチャ座標, CLUT id
pkt[3] | h | w | 幅と高さ

- 68 - Tile1 - 1x1タイル

pkt[0] | r0 | g0 | b0 | 68 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点

- 70 - Tile8 - 8x8タイル

pkt[0] | r0 | g0 | b0 | 70 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点

- 74 - Sprt8 - 8x8スプライト

pkt[0] | r0 | g0 | b0 | 74 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | u0 | v0 | clut id | 第1テクスチャ座標, CLUT id

- 78 - Tile16 - 16x16タイル

pkt[0] | r0 | g0 | b0 | 78 | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点

- 7c - Sprt16 - 16x16スプライト

pkt[0] | r0 | g0 | b0 | 7c | RGB色, プリミティブコード
pkt[1] | x0 | y0 | 第1頂点
pkt[2] | u0 | v0 | clut id | 第1テクスチャ座標, CLUT id

- a0 - Cpu -> GPU転送領域の設定 (フレームバッファへのDMA転送)

pkt[0] a0000000 - CpuからGPUへの転送
pkt[1] yyyyxxxx - 転送領域の左上隅
pkt[2] hhhhwwww - 転送領域の幅と高さ

- c0 - GPU -> Cpu転送領域の設定 (フレームバッファからのDMA転送)

pkt[0] c0000000 - GPUからCpuへの転送
pkt[1] yyyyxxxx - 転送領域の左上隅
pkt[2] hhhhwwww - 転送領域の幅と高さ


← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT