English
HARDWARE ManualVDP1ユーザーズマニュアル
戻る進む
VDP1ユーザーズマニュアル

第6章 コマンドテーブル


■6.1 CMDCTRL(コントロールワード)

 CMDCTRLはコマンドの指定とコマンドテーブルの制御、スプライトの反転と不動点の指定をします。CMDCTRLは、コマンドテーブル先頭アドレス+00Hにある16bitで、ビット構成は次のとおりです。未使用ビットは0に設定してください。

ビット
 15 
 14 
 13 
 12 
 11 
 10 
CMDCTRL
+00H
ENDJPZP00DirComm

エンドビット: end bit(END)、ビット15
 描画終了コマンドを表します。描画終了コマンドでないときコマンド選択ビットが有効になります。

ジャンプ形式 jump select(JP)、ビット14〜12
 次に読み込む(フェッチする)コマンドテーブルを指定する方法を表します。

ズームポイントビット zoom point(ZP)、ビット11〜8
 矩形スプライト描画コマンドのとき、ズームポイント(不動点)を表します。ズームポイントは反転、拡大縮小の基準点を指定します。

キャラクタ読み出し方向ビット character read direction(Dir)、ビット5〜4
 テクスチャ描画コマンドのとき、キャラクタパターンテーブルからの読み出し方向を表します。

コマンド選択ビット command select(Comm)、ビット3〜0
 コマンドの機能を表します。エンドビットが終了コマンドのときコマンド選択は無効になります。

 ●コマンド

 コマンドは、CMDCTRLのエンドビット(END、ビット15)とコマンド選択ビット(Comm、ビット3〜0)により決まります。エンドビットとコマンド選択ビットとで設定されるコマンドは次のとおりです。
 コマンドによりVRAMのコマンドテーブルの内容が決まります。

表6.1 コマンド
END
Comm
機能
コマンド
ビット15
3
2
1
0
0
0
0
0
0
描画
コマンド
テクスチャ
描画コマンド
定形スプライト描画コマンド
0
1
矩形スプライト描画コマンド
1
0
変形スプライト描画コマンド
1
0
0
ノンテクスチャ
描画コマンド
ポリゴン描画コマンド
0
1
ポリライン描画コマンド
1
0
ライン描画コマンド
1
0
0
0
座標設定
コマンド
クリッピング座標
設定コマンド
ユーザクリッピング座標設定コマンド
1
システムクリッピング座標設定コマンド
1
0
相対座標設定コマンド
1
0 0 0 0
描画終了コマンド
上記以外のコード
設定禁止(設定しないでください)

 ●ジャンプ形式

 ジャンプ形式は、次に処理されるコマンドテーブルとそのテーブルへのジャンプ形式を指定します。
 ジャンプ形式がアドレスを指定してジャンプする場合に、ジャンプ先のコマンドテーブルのアドレスをCMDLINK(コマンドテーブル先頭アドレス+02H、16ビット)に設定します。

ジャンプ形式: jump mode(JP)、コマンドテーブル先頭アドレス+00H、ビット14〜12
 次に処理されるコマンドテーブルへのジャンプ形式を指定します。ジャンプ形式がスキップ(ビット14=1)のときコマンドテーブルの読み出しはそこで終了し、そのテーブルは処理されません。
 ジャンプコールによるネスティングは1レベルです。サブルーチンの中でのジャンプコールは禁止です

000 ジャンプネクスト(jump next)
このテーブルを処理後、自動的に次のテーブル(+20H番地)に移行します(CMDLINKは無視されます)

001 ジャンプアサイン(jump assign)
このテーブルを処理後、CMDLINKのテーブルに移行します

010 ジャンプコール (jump call)
このテーブルを処理後、CMDLINKのテーブルをサブルーチンコールします

011 ジャンプリターン(jump return)
このテーブルを処理後、メインルーチンに戻ります(CMDLINKは無視されます)

100 スキップネクスト(skip next)
このテーブルを処理せずに、次のテーブル(+20H番地)に移行します(CMDLINKは無視されます)

101 スキップアサイン(skip assign)
このテーブルを処理せずに、CMDLINKのテーブルに移行します

110 スキップコール (skip call)
このテーブルを処理せずに、CMDLINKのテーブルをサブルーチンコールします

111 スキップリターン(skip return)
このテーブルを処理せずに、メインルーチンに戻ります(CMDLINKは無視されます)

 ジャンプアサイン、ジャンプコール、スキップアサイン、スキップコールを指定した場合は、次に処理するテーブルのアドレスをCMDLINKに指定します。
 ジャンプネクスト、ジャンプリターン、スキップネクスト、スキップリターンを指定した場合は、CMDLINKは無視されます。

 ●ズームポイント

 ズームポイントは矩形スプライトを拡大/縮小して描画するときキャラクタの不動点を指定します。矩形スプライトのみが対象になります。

ズームポイント:zoom point(ZP)、コマンドテーブル先頭アドレス+00H、ビット11〜8
 ズームポイントは矩形スプライトを拡大、縮小して描画するときキャラクタの不動点を指定します。ズームポイントの値と不動点との関係は次のとおりです。 ズームポイント(ZP)が0Hのときズームポイントは存在せず、左上座標、右下座標の2点指定で描画されます。
 矩形スプライト以外ではズームポイントは0Hに固定してください。

ZP
コード
ズームポイント
ビット11
10
9
8
0
0
0
0
0H
座標2点指定
0
1
0
1
5H
上辺の左端
0
1
1
0
6H
上辺の中央
0
1
1
1
7H
上辺の右端
1
0
0
1
9H
中央の左端
1
0
1
0
AH
中央の中央
1
0
1
1
BH
中央の右端
1
1
0
1
DH
下辺の左端
1
1
1
0
EH
下辺の中央
1
1
1
1
FH
下辺の右端

厳守★上記以外の設定は禁止です。

図6.1 ズームポイント
   +1    +2      +3     
           ┃            
   ┌─┬─┬─┬─╂─┬─┬─┬─┐    
+4 │■│ │ │■┃ │ │ │■│    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
+8 ┿■┿━┿━┿■╋━┿━┿━┿■┿ 中心線
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
   │ │ │ │ ┃ │ │ │ │    
   ├─┼─┼─┼─╂─┼─┼─┼─┤    
+C │■│ │ │■┃ │ │ │■│    
   └─┴─┴─┴─╂─┴─┴─┴─┘    
           ┃            
          中心線           
                        
これら縦、横の値を加えたものがズームポイントの値
となります                   

 ズームポイント(ZP)に0以外の値を指定したときは、ズームポイント(ZP)と不動点座標、表示幅で、スプライトの描画位置、描画サイズが決められます。
 不動点座標(CMDXA、CMDYA)にズームポイントで指定されたキャラクタの不動点が描画されます。
 描画サイズは、表示幅(CMDXB、CMDYB)で決まります。
 縮小時、ピクセルが間引きされ、指定した不動点が消滅することがあります。
 ズームポイントとして決められた以外の値は指定しないでください。決められた以外の値を指定された場合の描画は保証されません。
 キャラクタサイズのX方向の長さは8の倍数なので、中央を指定しても厳密には不動点は中央となりません。Y方向の長さが偶数の場合も中央になりません。
 キャラクタの描画の方向は、キャラクタ読み出し方向ビットで指定します。
 X方向の表示幅が負の場合、X方向のキャラクタ読み出しビットで指定した方向とは逆のX方向に描画します。Y方向の表示幅が負の場合は、Y方向のキャラクタ読み出しビットで指定した方向とは逆のY方向に描画します。

不動点指定
 ZPが0H以外のとき、不動点座標をCMDXA、CMDYAに、表示幅をCMDXB、CMDYBに指定します。

 15 
 14 
 13 
 12 
 11 
 10 
CMDXA+0CH 符号拡張不動点,X座標(XA)
CMDYA+0EH 符号拡張不動点,Y座標(YA)
CMDXB+10H 符号拡張表示,X座標(XB)
CMDYB+12H 符号拡張表示,Y座標(YB)

座標2点指定
 ZPが0Hのとき、左上座標、右下座標の2点指定となります。頂点 をCMDXA、CMDYAに、頂点 をCMDXC、CMDYCに指定します。

 15 
 14 
 13 
 12 
 11 
 10 
CMDXA+0CH 符号拡張頂点(A),X座標(XA)
CMDYA+0EH 符号拡張頂点(A),Y座標(YA)
 +10H
 +12H
CMDXC+14H 符号拡張頂点(C),X座標(XC)
CMDYC+16H 符号拡張頂点(C),Y座標(YC)

描画領域
 CMDXA、CMDYAには不動点座標を指定します。不動点座標にはズームポイント(ZP)で指定した不動点を描画します。不動点はキャラクタをズームするときの基準点となります。
 CMDXB、CMDYBには表示幅を指定します。表示幅は描画するサイズになります。
 キャラクタが描画される領域は、ズームポイントビット(ZP)、不動点座標、および表示幅で決まります。不動点座標を(XA,YA)、表示幅を(XB,YB)としたとき、次のようになります。

図6.2 描画領域
 ┌────────────────→左端が不動点、左端=XA         
 │                        右端=XA+XB      
 │                                      
 │     ┌──────────→中央が不動点、左端=XA−XB/2    
 │     │                  右端=XA+(XB+1)/2
 │     │                                
 │     │       ┌───右端が不動点、左端=XA−XB      
 │     │       │          右端=XA         
 │     │       │                        
┌─┬─┬─┬─┬─┬─┬─┬─┐                       
│■│ │ │■│ │ │ │■│─→上辺が不動点、上辺=YA         
├─┼─┼─┼─┼─┼─┼─┼─┤         下辺=YA+YB      
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│■│ │ │■│ │ │ │■│─→中央が不動点、上辺=YA−YB/2    
├─┼─┼─┼─┼─┼─┼─┼─┤         下辺=YA+(YB+1)/2
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│ │ │ │ │ │ │ │ │                       
├─┼─┼─┼─┼─┼─┼─┼─┤                       
│■│ │ │■│ │ │ │■│─→下辺が不動点、上辺=YA−YB      
└─┴─┴─┴─┴─┴─┴─┴─┘         下辺=YA         

[注]小数点以下は切り捨て

ズームポイントと描画領域
 不動点座標が(100, 50)、表示幅が(40, 30)のとき、各頂点の座標は次のようになります。ただし、上下左右の反転の指定はないものとします。ズームポイント(ZP)が0Hのときは、頂点 が(100, 50)、頂点 が(140, 80)の場合です。

図6.3 ズームポイントと描画領域
ZP=0
(100,50)          
   ┏━━━━━━━━┓     
   ┃        ┃     
   ┃        ┃     
   ┃        ┃     
   ┃        ┃     
   ┃        ┃     
   ┗━━━━━━━━┛     
          (140,80)


ZP=5H                ZP=6H               ZP=7H            
(100,50)  (140,50)  (80,50    (120,50)  (60,50    (100,50)
   ┏┿━━━━━━━┓          ┏━━━┿━━━━┓          ┏━━━━━━━┿┓     
   ╂■───────╂          ╂───■────╂          ╂───────■╂     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┗┿━━━━━━━┛          ┗━━━┿━━━━┛          ┗━━━━━━━┿┛     
(100,80)  (140,80)  (80,80)   (140,80)  (60,80)   (100,80)


ZP=9H                ZP=AH(10)           ZP=BH(11)        
(100,35)  (140,35)  (80,35    (120,35)  (60,35    (100,35)
   ┏┿━━━━━━━┓          ┏━━━┿━━━━┓          ┏━━━━━━━┿┓     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ╂■───────╂          ╂───■────╂          ╂───────■╂     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┗┿━━━━━━━┛          ┗━━━┿━━━━┛          ┗━━━━━━━┿┛     
(100,65)  (140,65)  (80,65)   (140,65)  (60,65)   (100,65)


ZP=DH(13)            ZP=EH(14)           ZP=FH(15)        
(100,20)  (140,20)  (80,20    (120,20)  (60,20    (100,20)
   ┏┿━━━━━━━┓          ┏━━━┿━━━━┓          ┏━━━━━━━┿┓     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ┃│       ┃          ┃   │    ┃          ┃       │┃     
   ╂■───────╂          ╂───■────╂          ╂───────■╂     
   ┗┿━━━━━━━┛          ┗━━━┿━━━━┛          ┗━━━━━━━┿┛     
(100,50)  (140,50)  (80,50)   (140,50)  (60,50)   (100,50)

 ●キャラクタ読み出し方向

 キャラクタの読み出し方向を指定することができます。この指定でキャラクタを上下反転、左右反転させることができます。

キャラクタ読み出し方向ビット:character read direction(Dir)、コマンドテーブル先頭アドレス+00H、ビット5、4
 キャラクタパターンの読み出し方向を指定します。上下反転指示、左右反転指示、または同時に上下左右反転指示ができます。
 ビット5が0のとき上下の反転はせず、縦(Y)方向はそのまま描画します。1のとき上下を反転して描画します。
 ビット4が0のとき左右の反転はせず、横(X)方向はそのまま描画します。1のとき左右を反転して描画します。
 ビット4、5が共に0のとき、反転させずにキャラクタパターンを描画します。ビット4、5が共に1のとき、上下と左右を反転して描画します。
 スプライト以外ではキャラクタ読み出し方向は00Bに固定してください。

Dir
反転処理
Y
X
0
0
反転しません
0
1
左右反転します
1
0
上下反転します
1
1
上下左右反転します

図6.4 キャラクタ読み出し方向


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