##### 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 | Rトリガーの値(0〜255)
  l | 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