English
HARDWARE ManualVDP2ユーザーズマニュアル
戻る進む
VDP2ユーザーズマニュアル

第6章 回転スクロール画面


 回転スクロール画面は、「回転パラメータA」、「回転パラメータB」と呼ばれる2組のパラメータテーブルを持ち、それぞれのパラメータテーブルによる画面を同時に表示することができます。その2組のパラメータは、回転パラメータテーブルとしてVRAMに格納するほかに、それぞれ対応した係数テーブルとしてVRAMに持つことができます。

 回転パラメータは、回転パラメータAと回転パラメータBの2組あり、それぞれをテーブルに格納します。RBG0は、回転パラメータAか回転パラメータBによって指定される1画面、または回転パラメータAと回転パラメータBによって指定される2画面を同時に表示することができ、RBG1は、回転パラメータBによって指定される画面のみを表示することができます。回転スクロール画面と回転パラメータとの関係を表6.1に示します。

表6.1 回転スクロール画面
画面単独表示回転パラメータとの関係
RBG0回転パラメータA、Bのどちらか一方によって指定される1画面、
または回転パラメータA、Bでそれぞれ指定される2画面を同時に表示可能
RBG1不可(RBG0も表示
しなければならない)
回転パラメータBによって指定される画面を表示

 回転パラメータAと回転パラメータBは、それぞれに係数テーブルを持つことができ、その係数データをラインごと、またはドットごとに読み込むことで多様な表示ができます。 また、回転パラメータAを使って、スプライト用フレームバッファを拡大縮小回転させることもできます。

■6.1 回転スクロール座標演算

 回転スクロール画面の表示画面は、中心点を基準に視点およびスクリーン画面(TV画面)を回転変換(平行移動も含む)させ、変換後の視点から変換後のスクリーン画面を通った視線が、固定されたスクロールマップと交差する点を集めたものです。回転スクロール画面の表示方法を図6.1に示します。

図6.1 回転スクロール画面の表示方法

 回転変換の公式から、変換後の視点座標、および変換後のスクリーン画面座標は以下の式で表されます。


┌  ┐   ┌     ┐   ┌       ┐   ┌  ┐   ┌  ┐
│Xp│   │A B C│   │Px - Cx│   │Cx│   │Mx│
│Yp│ = │D E F│ x │Py - Cy│ + │Cy│ + │My│
│Zp│   │G H I│   │Pz - Cz│   │Cz│   │Mz│
└  ┘   └     ┘   └       ┘   └  ┘   └  ┘
┌  ┐   ┌     ┐   ┌       ┐   ┌  ┐   ┌  ┐
│Xs│   │A B C│   │Sx - Cx│   │Cx│   │Mx│
│Ys│ = │D E F│ x │Sy - Cy│ + │Cy│ + │My│
│Zs│   │G H I│   │Sz - Cz│   │Cz│   │Mz│
└  ┘   └     ┘   └       ┘   └  ┘   └  ┘

A, B, C, D, E, F, G, H, I:回転マトリクスパラメータ
               Px, Py, Pz:回転変換前の視点座標
               Sx, Sy, Sz:回転変換前のスクリーン画面座標
               Cx, Cy, Cz:回転中心座標
               Mx, My, Mz:平行移動量
               Xp, Yp, Zp:回転変換後の視点座標
               Xs, Ys, Zs:回転変換後のスクリーン画面座標

 また、回転変換後の視点から回転変換後のスクリーン画面を通る視線は、以下の式で表されます。


X − Xp   Y − Yp   Z − Zp
―――― = ―――― = ――――
Xs− Xp   Ys− Yp   Zs− Zp

 ここで、スクロールマップはXY平面(Z = 0)に固定されているので、スクロールマップ上の表示座標(X, Y)は以下の式で求められます。


X = k (Xs−Xp)+Xp
Y = k (Ys−Yp)+Yp

 ただし、


      −Zp
k = ――――
     Zs− Zp

 このkは、透視変換係数と呼ばれ、X軸回転ではスクリーン画面の垂直方向でのみ変化し、水平方向では一定になります。また、Y軸回転ではスクリーン画面の水平方向でのみ変化し、垂直方向では一定になります。Z軸回転では常に一定になります。
 通常、回転変換前のスクリーン画面はTV画面と同一なので、SxはTV画面における水平方向座標値(Hカウンター値)に、SyはTV画面における垂直方向座標値(Vカウンター値)に、Szは0になります。このスクリーン画面の垂線(SZ軸)で回転させたときのスクリーン画面の座標値は、以下の式で求められます。


┌  ┐   ┌     ┐   ┌          ┐   ┌   ┐   ┌   ┐
│Sx│   │a b 0│   │Hcnt - Csx│   │Csx│   │Msx│
│Sy│ = │c d 0│ x │Vcnt - Csy│ + │Csy│ + │Msy│
│Sz│   │0 0 1│   │     0    │   │ 0 │   │Msz│
└  ┘   └     ┘   └          ┘   └   ┘   └   ┘

   a, b, c, d:スクリーン画面の回転マトリクスパラメータ
   Hcnt, Vcnt:HVカウンター値
     Csx, Csy:スクリーン画面の回転中心座標
Msx, Msy, Msz:スクリーン画面の平行移動量

 上記の式は、以下のように表されます。


Sx = Xst+DX・Hcnt+DXst・Vcnt
Sy = Yst+DY・Hcnt+DYst・Vcnt
Sz = Zst

 ただし、


Xst = −a・Csx−b・Csy+Csx+Msx
Yst = −c・Csx−d・Csy+Csy+Msy
Zst = Msz

△X = a
△Y = c
△Xst = b
△Yst = d

Xst, Yst, Zst:スクリーン画面スタート座標
 △X,   △Y  :スクリーン画面水平方向座標増分
 △Xst, △Yst:スクリーン画面垂直方向座標増分

 以上の式から、スクロール画面の3軸回転とスクリーン画面の回転とを両方行う場合の表示座標(X, Y)の計算式は以下のようになります。


X = kx (Xsp+dX・Hcnt)+Xp
Y = ky (Ysp+dY・Hcnt)+Yp

 ただし、


Xsp = A{(Xst+△Xst・Vcnt)−Px}+B{(Yst+△Yst・Vcnt)−Py}+C(Zst−Pz)
Ysp = D{(Xst+△Xst・Vcnt)−Px}+E{(Yst+△Yst・Vcnt)−Py}+F(Zst−Pz)
Xp  = A(Px−Cx)+B(Py−Cy)+C(Pz−Cz)+Cx+Mx
Yp  = D(Px−Cx)+E(Py−Cy)+F(Pz−Cz)+Cy+My
dX  = A・DX+B・DY
dY  = D・DX+E・DY

   Xst、Yst、Zst:スクリーン画面スタート座標
    △Xst、△Yst:スクリーン画面垂直方向座標増分
        △X、△Y:スクリーン画面水平方向座標増分
A、B、C、D、E、F:回転マトリクスパラメータ
      Px、Py、Pz:視点座標
      Cx、Cy、Cz:中心座標
          Mx、My:平行移動量
          kx、ky:拡大縮小係数
      Hcnt、Vcnt:HVカウンター値

 VDP2は、VRAM上に格納された回転パラメータテーブルから各パラメータをラインごとに読み込み、上記の計算式を用いてXsp、Ysp、Xp、Yp、dX、dYを計算し、その結果を使ってドットごとの表示座標(X, Y)を求めます。拡大縮小係数のkxとkyは通常、回転パラメータテーブルから読み込んだ値を使用しますが、係数テーブルを使用することでラインごとやドットごとに値を変えることもできます。


戻る進む
HARDWARE ManualVDP2ユーザーズマニュアル
Copyright SEGA ENTERPRISES, LTD., 1997