Shinobi Library - 構造体/その他のデータ型

PDS_PERIPHERAL

コントローラデバイスの状態構造体

定義

typedef struct { 
     Uint32 id; 
     Uint32 support; 
     Uint32 on; 
     Uint32 off; 
     Uint32 press; 
     Uint32 release; 
     Uint16 r; 
     Uint16 l; 
     Sint16 x1; 
     Sint16 y1; 
     Sint16 x2; 
     Sint16 y2; 
     Sint8* name; 
     void* extend; 
     Uint32 old; 
     PDS_PERIPHERALINFO *info; 
} PDS_PERIPHERAL; 

メンバ

id   デバイスID
support   ボタン・トリガーなどのサポート状態
on   デジタルボタン状態
off   デジタルボタン状態(反転)
press   デジタルボタンダウンエッジ状態
release   デジタルボタンアップエッジ状態
 Rトリガーの値(0〜255)
 Lトリガーの値(0〜255)
x1   アナログ方向キー1のX値(-128〜127)
y1   アナログ方向キー1のY値(-128〜127)
x2   アナログ方向キー2のX値(-128〜127)
y2   アナログ方向キー2のY値(-128〜127)
name   デバイス名文字列へのポインタ
extend   拡張データアドレス(未使用)
old   予約
info   ペリフェラル情報へのポインタ

解説

コントローラデバイスの状態を格納する構造体です。

メンバ supportは、以下のビットアサインになっています。 デバイスがビット指定位置定数のボタン・トリガーを保持している場合は1、そうでない場合は0が格納されています。

 ビット位置指定用定数    ボタン・トリガーなど 
 PDD_DEV_SUPPORT_KU    方向ボタンA上 
 PDD_DEV_SUPPORT_KD    方向ボタンA下 
 PDD_DEV_SUPPORT_KL    方向ボタンA左 
 PDD_DEV_SUPPORT_KR    方向ボタンA右 
 PDD_DEV_SUPPORT_KUB    方向ボタンB上 
 PDD_DEV_SUPPORT_KDB    方向ボタンB下 
 PDD_DEV_SUPPORT_KLB    方向ボタンB左 
 PDD_DEV_SUPPORT_KRB    方向ボタンB右 
 PDD_DEV_SUPPORT_ST    スタートボタン 
 PDD_DEV_SUPPORT_TA    Aボタン 
 PDD_DEV_SUPPORT_TB    Bボタン 
 PDD_DEV_SUPPORT_TC    Cボタン 
 PDD_DEV_SUPPORT_TD    Dボタン 
 PDD_DEV_SUPPORT_TX    Xボタン 
 PDD_DEV_SUPPORT_TY    Yボタン 
 PDD_DEV_SUPPORT_TZ    Zボタン 
 PDD_DEV_SUPPORT_AR    Rトリガー 
 PDD_DEV_SUPPORT_AL    Lトリガー 
 PDD_DEV_SUPPORT_AX1    アナログ方向キー1X 
 PDD_DEV_SUPPORT_AY1    アナログ方向キー1Y 
 PDD_DEV_SUPPORT_AX2    アナログ方向キー2X 
 PDD_DEV_SUPPORT_AY2    アナログ方向キー2Y 

メンバ on、off、press、releaseの4つのメンバには、デジタルボタンの情報が格納されています。

それぞれのメンバの各ビットにはボタンが割り振られています。 ボタンが押されていれば1、押されていなければ0となります(正論理)。 また、論理状態は初期化関数 pdInitPeripheral()の呼び出し時に負論理に設定することもできます。

以下は、各ビットを指定する定数とその意味です。

 ビット位置指定定数    デジタルボタン 
 PDD_DGT_KU    方向ボタンA上 
 PDD_DGT_KD    方向ボタンA下 
 PDD_DGT_KL    方向ボタンA左 
 PDD_DGT_KR    方向ボタンA右 
 PDD_DGT_KUB    方向ボタンB上 
 PDD_DGT_KDB    方向ボタンB下 
 PDD_DGT_KLB    方向ボタンB左 
 PDD_DGT_KRB    方向ボタンB右 
 PDD_DGT_ST    スタートボタン 
 PDD_DGT_TA    Aボタン 
 PDD_DGT_TB    Bボタン 
 PDD_DGT_TC    Cボタン 
 PDD_DGT_TD    Dボタン 
 PDD_DGT_TX    Xボタン 
 PDD_DGT_TY    Yボタン 
 PDD_DGT_TZ    Zボタン 
 PDD_DGT_TL    Lボタン 
 PDD_DGT_TR    Rボタン 

メンバ on は、ボタンが押されているとき(ボタンダウン)、対応するビットが1になります。 押されていないボタンのビットは0になります。

メンバ off は、onメンバをビット反転したものです。 ボタンが押されていないとき(ボタンアップ)、対応するビットが1になります。

メンバ press は、 ボタンが押されていない状態から押された状態に変化したとき(ボタンダウンエッジ)対応するビットが1になります。 そうでないビットは0になります。

メンバ release は、 ボタンが押されている状態から押されていない状態に変化したとき(ボタンアップエッジ)対応するビットが1になります。 そうでないビットは0になります。

負論理に設定した場合、button、on、off、press、releaseのすべてのビットは反転して格納されます。

デジタルLRボタン情報は、LRトリガー情報からソフトウェアで擬似的に生成しています。

LRトリガーをもたないデバイスの場合、ビットは変化しませんので注意してください。 デジタルLRボタンを物理的にもつデバイスはありません。

メンバ r、l、x1、y1、x2、y2には、アナログデータが格納されます。 これらのセンター位置の値は0です。

取得した構造体には、デバイスの種別を表すIDとその名称が格納されています。

Maple Bus仕様では取得できるデバイスIDは複雑なフォーマットになっているため、 アプリケーションが取り扱うには不向きです。

Shinobiライブラリではそれを簡略化し、以下のように定義します。

 デバイス   デバイスID(id)   デバイス名称文字列(name)  
 コントローラデバイス   PDD_DEV_CONTROLLER   デバイス自体がもつ製品名  


備考

コントローラデバイスでは、方向ボタンA、スタートボタン、Aボタン、Bボタンをもつことが必須となっているため、 これらのボタンのみを使用したアプリケーションを作成すれば高い互換性を持つことができます。

参照

pdGetPeripheral()
 コントローラのボタン状態の取得
pdGetPeripheralDirect()
 ペリフェラルデータの取得(低レイテンシ用)

PDS_PERIPHERAL
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000