Shinobiライブラリ - データタイプ

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()

PDS_PERIPHERAL
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999