English
PROGRAMMER'S GUIDEVDP2ライブラリ
戻る進む
VDP2ライブラリ

2.1 データ仕様

 


Title

データ仕様

Data

二次元のデータ構造

Data Name

SclXy

No

1

typedef  struct  SclXy {
       Fixed32  x;
       Fixed32  y;
} SclXy;




Title

データ仕様

Data

三次元のデータ構造

Data Name

SclXyz

No

2

typedef  struct  SclXyz {
      Fixed32   x;
      Fixed32   y;
      Fixed32   z;
} SclXyz;




Title

データ仕様

Data

ラインパラメータテーブルのデータ構造

Data Name

SclLineTb

No

3

typedef  struct  SclLineTb {
      Fixed32    h;          /*     水平方向画面スクロール値          */
      Fixed32    v;          /*     垂直方向画面スクロール値          */
      Fixed32    dh;         /*     水平方向座標増分              */
} SclLineTb;




Title

データ仕様

Data

ラインウインドウテーブルデータ構造

Data Name

SclLinWindowTb

No

4

typedef  struct  SclLinWindowTb {
     Uint16 start;        /*     水平方向始点座標                    */
     Uint16 end;          /*     水平方向終点座標                    */
} SclLinWindowTb;




Title

データ仕様

Data

RGBカラーテーブルデータ構造

Data Name

SclRgb

No

5

typedef  struct  SclRgb {
     Sint16 red;           /*     赤          */
     Sint16 green;         /*     緑          */
     Sint16 blue;          /*     青          */
} SclRgb;




Title

データ仕様

Data

VRAMのコンフィグレーションデータ構造

Data Name

SclVramConfig

No

6

typedef struct SclVramConfig{
     Uint32     ktboffsetA;        /*     回転パラメータ用係数テーブルをVRAMの相対アドレスで*/
                                   /*     指定(SCL_RBGO_Kが指定してある場合は、      */
                                   /*     そこからの相対アドレスを指定する。)           */
     Uint32     ktboffsetB;        /*     指定単位は、2048(0x400)Byte              */
                                   /*     回転パラメータB用係数テーブルをVRAMの       */
                                   /*     相対アドレスで指定                    */
     Uint8   vramModeA;            /*     VRAM Aを2つのバンクに分割するかを指定       */
                                   /*          ON/OFF                        */
     Uint8   vramModeB;            /*     VRAM Bを2つのバンクに分割するかを指定       */
                                   /*          ON/OFF                        */
     Uint8   vramA0;               /*     VRAM A0を回転面の何で使用するかを指定       */
                                   /*     分割しない場合はVRAM A全体に対して有効       */
                                   /*          SCL_NON                     */
                                   /*               回転面のデータは置かない           */
                                   /*          SCL_RBG0_K                   */
                                   /*               RBG0の係数データを置く             */
                                   /*          SCL_RBG0_PN                  */
                                   /*               RBG0のパターンネームデータを置く      */
                                   /*          Scl_RBG0_CHAR                 */
                                   /*               RBG0のキャラクターを置く          */
     Unit8   vramA1;             /*     VRAMA1を回転面の何で使用するかを指定         */
                                   /*     VRAMAを分割しない場合は無効                  */
     Uint8   vramB0;               /*     VRAM B0を回転面の何で使用するかを指定      */
                                   /*     分割しない場合はVRAM B全体に対して有効      */
     Uint8   vramB1;               /*     VRAM B1を回転面の何で使用するかを指定       */
                                   /*     VRAM Bを分割しない場合は無効                 */
     Uint8   colram;              /*     カラーRAMに係数データを置くかを指定         */
                                   /*     VRAM中に係数データを置くと使用不可となる     */
                                   /*     カラーRAMモードは、SCL_CRM15-2048で         */
                                   /*     なければ指定不可                    */
                                   /*     SCL_RBG0_K or SCL_NONで指定           */
} SclVramConfig;

回転面の何らかのデータを置いたVRAMのバンクには他のデータを置くことができません。
ただし、係数データは、ktboffsetA、ktboffsetBを指定すると、他のデータを置くことができます。




Title

データ仕様

Data

スクロール
コンフィグレーションデータ構造

Data Name

Sclconfig

No

7

パラメータの詳細は、「VDP2ユーザーズマニュアル」を参考に設定してください。

typedef  struct  Sclconfig {
     Uint8  dispenbl;         /*     表示ON/OFF                                  	*/
                              /*      画面表示イネーブルレジスタ(180020h)         */
                              /*          ON     画面に絵を表示する              	 */
                              /*          OFF     画面に絵を表示しない           	 */
     Uint8  charsize;         /*     キャラクタサイズ                                  */
                              /*      キャラクタコントロールレジスタ(180028h〜18002ah)   */
                              /*          SCL_CHAR_SIZE_1X1                    	*/
                              /*               1X1に設定                         	*/
                              /*          SCL_CHAR_SIZE_2x2                    	*/
                              /*               2x2に設定                         	*/
     Uint8  pnamesize;        /*     パターンネームサイズ                                */
                              /*      パターンネームコントロールレジスタ(180030h〜180038h)*/
                              /*          SCL_PN2WORD                         	*/
                              /*               2Word単位に設定                 	        */
                              /*          SCL_PN1WORD                         	*/
                              /*               1Word単位設定                   	        */
     Uint8  platesize;        /*     プレーンサイズ                                    */
                              /*      プレーンサイズレジスタ(18003ah)                    */
                              /*          SCL_PL_SIZE_1X1                      	*/
                              /*               1X1に設定                         	*/
                              /*          SCL_PL_SIZE_2X1                      	*/
                              /*               2X1に設定                         	*/
                              /*          SCL_PL_SIZE_2X2                      	*/
                              /*               2x2に設定                         	*/
     Uint8  bmpsize;          /*     ビットマップサイズ*/
                              /*      キャラクタコントロールレジスタ(180028h〜18002ah)   */
                              /*          SCL_BMP_SIZE_512X256                       */
                              /*               512X256に設定                     	*/
                              /*          SCL_BMP_SIZE_512X512                       */
                              /*               512X512に設定                     	*/
                              /*          SCL_BMP_SIZE_1024X256                      */
                              /*               1024X256に設定                    	*/
                              /*          SCL_BMP_SIZE_1024X512                      */
                              /*               1024X512に設定                    	*/
     Uint8  coltype;          /*    キャラクタ色数  */
                              /*     キャラクタコントロールレジスタ(180028h〜18002ah)     */
                              /*          SCL_COL_TYPE_16                       	*/
                              /*               16色に設定                          	*/
                              /*          SCL_COL_TYPE_256                     	*/
                              /*               256色に設定                        	*/
                              /*          SCL_COL_TYPE_2048                   	*/
                              /*               2048色に設定                     	*/
                              /*          SCL_COL_TYPE_32K                    	*/
                              /*               32万色に設定                        	*/
                              /*          SCL_COL_TYPE_1M                    	*/
                              /*               1677万色に設定                    	*/
     Uint8  datatype;         /*     ビットマップイネーブル                              */
                              /*      キャラクタコントロールレジスタ(180028h〜18002ah)    */
                              /*          SCL_BITMAP                         	*/
                              /*               ビットマップ形式に指定		       	 */
                              /*          SCL_CELL				          */
                              /*               セル形式に指定				   */
     Uint8  mapover;          /*     画面オーバー処理					   */
                              /*      画面オーバー処理レジスタ(18003ah)			   */
                              /*          SCL_OVER_0				          */
                              /*               表示エリア外は、表示エリアに設定		    */
                              /*               された画像を繰り返す。		      */
                              /*          SCL_OVER1				        */
                              /*          表示エリア外は、画面オーバーパターン		   */
                              /*               ネームレジスタで指定したパターンを繰り返	   */
                              /*               します(回転面のみ)			   */
                              /*          SCL_OVER_2					  */
                              /*               表示エリア外は、透明にする		    */
                              /*          SCL_OVER_3					  */
                              /*               表示エリアを、512x512にしてそれ		   */
                              /*               以外を透明にする				  */
     Uint8  flip;             /*     キャラクタナンバー補助モード			    */
                              /*     パターンネームデータのサイズが1Wordの時の特殊機能と     */
                              /*     反転機能を使用するかを指定します。			    */
                              /*     指定した場合はキャラクタナンバーが10bitになり指定し     */
                              /*     なければ12bitになります				   */
                              /*       パターンネームコントロールレジスタ(180030h〜180038h) */
                              /*          SCL_PN_10BIT					 */
                              /*               特殊機能と反転機能を有効にします		  */
                              /*          SCL_PN_12BITT					 */
                              /*               特殊機能と反転機能を無効にします		  */
     Uint16  patnamecontrl;   /*     パターンネームコントロールレジスタ中の補助データ       */
     Uint32  plate_addr[16];  /*     スクロール画面マップレジスタ                 */
                              /*     セル形式の場合はパターンネームテーブルの先頭アドレスを    */
                              /*     指定						  */
                              /*     ビットマップ形式の場合はビットマップデータの先頭アドレス */
                              /*     を指定						  */
                              /*      ノーマル(180040h〜18004eh)		        */
                              /*      回転(180050h〜18006eh)  		        */
     } Sclconfig;




Title

データ仕様

Data

ライン&縦セルスクロールパラメータ
データ構造

Data Name

SclLineParam

No

8

パラメータの詳細は、「VDP2ユーザーズマニュアル/■5.3 ライン&縦セルスクロール機能」を参考に設定してください。
typedef  struct  SclLineParam {
     Uint8          delta_enbl;    /*     ラインズームイネーブル				            */
                                   /*     ライン&縦セルスクロールレジスタ(18009ah)  */
                                   /*          ON/OFF					             */
     Uint8          v_enbl;        /*     ラインスクロールイネーブル(垂直) 			  */
                                   /*     ライン&縦セルスクロールレジスタ;(18009ah) */
                                   /*          ON/OFF					              */
     Uint8          h_enbl;        /*     セルスクロールイネーブル(水平)			                     */
                                   /*     ライン&縦セルスクロールレジスタ(18009ah)  */
                                   /*          ON/OFF					             */
     Uint8          cell_enbl;     /*     縦セルスクロールイネーブル				                         */
                                   /*     ライン&縦セルスクロールレジスタ(18009ah)  */
                                   /*          ON/OFF					             */
     Uint8          interval;      /*     ライインスクロール間隔				             */
                                   /*     ライン&縦セルスクロールレジスタ(18009ah)  */
                                   /*          SCL_1_LINE				                */
                                   /*               1ラインごとにラインスクロールデータテーブルを    */
                                   /*               設定する					              */
                                   /*          SCL_2_LINE				                */
                                   /*               2ラインごとにラインスクロールデータテーブルを    */
                                   /*               設定する					              */
                                   /*          SCL_4_LINE				                                 */
                                   /*               4ラインごとにラインスクロールデータテーブルに    */
                                   /*               設定する					             */
                                   /*          SCL_8_LINE                                        */
                                   /*               8ラインごとにラインスクロールデータテーブルに    */
                                   /*               設定する                        */
     Uint32          line_addr;    /*     ラインスクロールアドレスレジスタ(18009ch〜18009eh)	       */
                                   /*     ラインスクロールテーブルを置くVRAM上のアドレスを設定       */
     Uint32          cell_addr;    /*     縦セルスクロールテーブルアドレスレジスタ(18009c〜18009e) */
                                   /*     縦セルスクロールテーブルを置くVRAM上のアドレスを設定       */
     GlbLineTb     line_tbl[];     /*     ラインスクロールテーブル       */
     Fixed32          cell_tbl[];  /*     縦セルスクロールアドレスレジスタ       */
} SclLineParam;




Title

データ仕様

Data

VDP2レジスタバッファ1

Data Name

SclSysreg

No

9

typedef struct     SclSysreg{
                                        /*     Address 内容            */
     Uint16     tvmode;                 /*     180000H TV画面モード        */
     Uint16     extenbl;                /*     180002H 外部信号          */
     Uint16     tvstatus;               /*     180004H 画面ステータス       */
     Uint16     vramsize;               /*     180006H VRAMサイズ       */
     Uint16     H_val;                  /*     180008H Hカウンター        */
     Uint16     V_val;                  /*     18000AH Vカウンター        */
     Uint16     vramchg;                /*     18000CH               */
     Uint16     ramcontrl;              /*     18000EH RAMコントロール     */
     Uint16     vramcyc[8];             /*     180010H VRAMサイクルパターン  */
     Uint16     dispenbl;               /*     180020H 画面表示イネーブル     */
     Uint16     mosaic;                 /*     180022H モザイクコントロール    */
     Uint16     specialcode_sel;        /*     180024H 特殊コードセレクト     */
     Uint16     specialcode;            /*     180026H 特殊機能コード       */
 } SclSysreg;     

本ライブラリ内では以下のようにシンボル登録されています。このシンボルに対して書き込みを行ったのちにグローバル変数"SclProcess"に1を書き込むと次のV-Blank時にレジスタに反映されます。

SclSysreg Scl_s_reg;




Title

データ仕様

Data

VDP2レジスタバッファ2

Data Name

SclDataset

No

10

typedef struct SclDataset{
                                        /*  Address 内容                             */
     Uint16     charcontrl0;            /*  180028H キャラクタコントロール(NBG0,NBG1)         */
     Uint16     charcontrl1;            /*  18002AH キャラクタコントロール(NBG2,NBG3,RBG0)    */
     Uint16     bmpalnum0;              /*  18002CH ビットマップパレットナンバー(NBG0,NBG1)      */
     Uint16     bmpalnum1;              /*  18002EH ビットマップパレットナンバー(RBG0)           */
     Uint16     patnamecontrl[5];       /*  180030H パターンネームコントロール                  */
     Uint16     platesize;              /*  18003AH プレーンサイズ                        */
     Uint16     mapoffset0;             /*  18003CH マップオフセット(NBG0〜NBG3)            */
     Uint16     mapoffset1;             /*  18003EH マップオフセット(回転パラメータA.B)           */
        Uint16     normap[8];           /*  180040H マップ(ノーマルスクロール)                 */
     Uint16     rotmap[16];             /*  180050H マップ(回転パラメータA,B)                */
} SclDataset;

本ライブラリ内では以下のようにシンボル登録されています。このシンボルに対して書き込みを行ったのちにグローバル変数“SclProcess”に1を書き込むと次のV-Blank時にレジスタに反映されます。

SclDataset Scl_d_reg;




Title

データ仕様

Data

VDP2レジスタバッファ3

Data Name

SclNorscl

No

11

typedef struct SclNorscl{
                                   /*     Address 内容                           */
     Fixed32     n0_move_x;          /*     180070H 水平方向画面スクロール値(NBG0)           */
     Fixed32     n0_move_y;          /*     180074H 垂直方向画面スクロール値(NBG0)           */
     Fixed32     n0_delta_x;         /*     180078H 水平方向座標増分(NBG0)               */
     Fixed32     n0_delta_y;         /*     18007CH 垂直方向座標増分(NBG0)               */
     Fixed32     n1_move_x;          /*     180080H 水平方向画面スクロール値(NBG1)           */
     Fixed32     n1_move_y;          /*     180084H 垂直方向画面スクロール値(NBG1)           */
     Fixed32     n1_delta_x;         /*     180088H 水平方向座標増分(NBG1)               */
     Fixed32     n1_delta_y;         /*     18008CH 垂直方向座標増分(NBG1)               */
     Uint16     n2_move_x;           /*     180090H 水平方向画面スクロール値(NBG2)           */
     Uint16     n2_move_y;           /*     180092H 垂直方向画面スクロール値(NBG2)           */
     Uint16     n3_move_x;           /*     180094H 水平方向画面スクロール値(NBG3)           */
     Uint16     n3_move_y;           /*     180096H 垂直方向画面スクロール値(NBG3)           */
     Uint16     zoomenbl;            /*     180098H 縮小イネーブル                      */
     Uint16     linecontrl;          /*     18009AH ライン&縦セルスクロールコントロール(NBG0,NBG1)*/
     Uint32     celladdr;            /*     18009CH 縦セルスクロールテーブルアドレス(NBG0,NBG1)   */
     Uint32     lineaddr[2];         /*     1800A0H ラインスクロールテーブルアドレス              */
     Uint32     linecolmode;         /*     1800A8H ラインカラー画面テーブルアドレス              */
     Uint32     backcolmode;         /*     1800ACH バック画面テーブルアドレス                */
} SclNorscl;

本ライブラリ内では以下のようにシンボル登録されています。このシンボルに対して書き込みを行ったのちにグローバル変数“SclProcess”に1を書き込むと次のV-Blank時にレジスタに反映されます。

SclNorscl Scl_n_reg;




Title

データ仕様

Data

VDP2レジスタバッファ4

Data Name

SclRotscl

No

12

typedef struct SclRotscl{
                                   /*     Address 内容               */
     Uint16     paramode;          /*     1800B0H 回転パラメータモード       */
     Uint16     paramcontrl;       /*     1800B2H 回転パラメータリードコントロール */
     Uint16     k_contrl;          /*     1800B4H 係数テーブルコントロール     */
     Uint16     k_offset;          /*     1800B6H 係数テーブルアドレスオフセット  */
     Uint16     mapover[2];        /*     1800B8H 画面オーバーパターンネーム    */
     Uint32     paramaddr;         /*     1800BAH 回転パラメータテーブルアドレス  */
} SclRotscl;

本ライブラリ内では以下のようにシンボル登録されています。このシンボルに対して書き込みを行ったのちにグローバル変数“SclProcess”に1を書き込むと次のV-Blank時にレジスタに反映されます。

SclRotscl Scl_r_reg;




Title

データ仕様

Data

VDP2レジスタバッファ5

Data Name

SclWinscl

No

13

typedef struct SclWinscl{
                                   /*     Address 内容                     */
     Uint16     win0_start[2];     /*     1800C0H ウィンドウポジション(W0,始点XY)    */
     Uint16     win0_end[2];       /*     1800C4H ウィンドウポジション(W0,終点XY)    */
     Uint16     win1_start[2];     /*     1800C8H ウィンドウポジション(W1,始点XY)    */
     Uint16     win1_end[2];       /*     1800CCH ウィンドウポジション(W1,終点XY)    */
     Uint16     wincontrl[4];      /*     1800D0H ウィンドウコントロール            */
     Uint32      linewin0_addr;    /*     1800D8H ラインウィンドウテーブルアドレス(W0)   */
     Uint32      linewin1_addr;    /*     1800DCH ラインウィンドウテーブルアドレス(W0)   */
} SclWinscl;

本ライブラリ内では以下のようにシンボル登録されています。このシンボルに対して書き込みを行ったのちにグローバル変数"SclProcess"に1を書き込むと次のV-Blank時にレジスタに反映されます。

SclWinscl Scl_w_reg;




Title

データ仕様

Data

ライブラリ内で使用される
画面のXYサイズ

Data Name

SclDisplayX,
SclDisplayY

No

14

これは、2Byteのグローバル変数です。この変数を参照すると画面の縦横のサイズがわかります。ライブラリを使用して画面モードなどを設定すると自動的に反映されます。ライブラリ中に以下のように定義されています。

Uint16 SclDisplayX;
Uint16 SclDisplayY;


戻る進む
PROGRAMMER'S GUIDEVDP2ライブラリ
Copyright SEGA ENTERPRISES, LTD., 1997