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_PERIPHERAL;

メンバ

idデバイスID
supportボタン・レバーのサポート状態
onデジタルボタン状態
offデジタルボタン状態(反転)
pressデジタルボタンダウンエッジ状態
releaseデジタルボタンアップエッジ状態
rRトリガーの値(0〜255)
lLトリガーの値(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予約

解説

コントロールパッドの状態を格納する構造体です。

メンバ 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ボタンを持つことが必須となっているため、 これらのボタンのみを使用してアプリケーションを組むことにより、互換性を維持することができます。

参照

pdExecPeripheralServer()
pdGetPeripheral()
pdGetPeripheralInfo()

PDS_PERIPHERAL
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998