/* *****************************************************************************
	Title : pad.h
***************************************************************************** */


#define		PAD_CONTROLLER_MAX		1				/* １つだね					*/
#define		PAD_COUNT_TYPEMAX		3				/* 十字1, 2, ﾎﾞﾀﾝ			*/
#define		PAD_REPEAT_START		25				/* 25 VSyncまで停滞			*/
#define		PAD_REPEAT_AFTER		4				/*  4 VSync単位でﾌﾗｸﾞON		*/
#define		PAD_GAME_VSPEED			1				/* ｹﾞｰﾑの基本 SyncCount		*/

#if 0
-----------------------------------------
#define KEY_START	0x002
#define KEY_A		0x004
#define KEY_B		0x008
#define KEY_UP1		0x010
#define KEY_RIGHT1	0x020
#define KEY_DOWN1	0x040
#define KEY_LEFT1	0x080
#define KEY_UP2		0x100
#define KEY_RIGHT2	0x200
#define KEY_DOWN2	0x400
#define KEY_LEFT2	0x800

#define	KEY_X1	KEY_UP1
#define	KEY_X2	KEY_RIGHT1
#define	KEY_X3	KEY_DOWN1
#define	KEY_X4	KEY_LEFT1
#define	KEY_Y1	KEY_UP2
#define	KEY_Y2	KEY_RIGHT2
#define	KEY_Y3	KEY_DOWN2
#define	KEY_Y4	KEY_LEFT2
-----------------------------------------
#endif

/* ●参照用パッドデファイン */
#define		PAD_TRG_ANY			(KEY_START | KEY_A | KEY_B |\
								 KEY_X1 | KEY_X2 | KEY_X3 | KEY_X4 |\
								 KEY_Y1 | KEY_Y2 | KEY_Y3 | KEY_Y4)

#define		PAD_BTN_AB			(KEY_A | KEY_B)
#define		PAD_TRG_DURL_X		(KEY_X1 | KEY_X2 | KEY_X3 | KEY_X4)
#define		PAD_TRG_DURL_Y		(KEY_Y1 | KEY_Y2 | KEY_Y3 | KEY_Y4)



/* ///  ●列挙型定義●  /// */



/* ///  ●構造体宣言●  /// */
typedef struct __tagPAD
{
	u_short		repCntSt;							/* ﾘﾋﾟｰﾄｶｳﾝﾀ（初回設定：V）	*/
	u_short		repCntAf;							/* ﾘﾋﾟｰﾄｶｳﾝﾀ（２回以降：V）	*/
	u_short		pad;								/* ﾊﾟｯﾄﾞ処理状態：ﾉｰﾏﾙ		*/
	u_short		padr;								/*              ：ﾘﾋﾟｰﾄ		*/
	u_short		padt;								/*              ：ﾄﾘｶﾞ		*/
	u_short		bfPad;								/* ﾊﾟｯﾄﾞ状態	：一回前	*/
	u_short		wait[( PAD_COUNT_TYPEMAX * 2)];		/* ｶｳﾝﾀが 2段階必要なため	*/
} PAD;



/* ///  ●外部関数宣言●  /// */
void	PadInit( void);								/* ﾊﾟｯﾄﾞ処理の初期化		*/
void	PadRead( void);								/* ﾊﾟｯﾄﾞ情報の設定			*/
short	PadSet( short num, u_short key);			/* ﾊﾟｯﾄﾞ情報の詳細設定		*/
													/* ﾊﾟｯﾄﾞ･ﾘﾋﾟｰﾄ処理			*/
short	PadCheckRepeat( u_short key, short num, u_short *wait, u_short target);
PAD		*PadGetInfo( short idx);					/* ﾊﾟｯﾄﾞ情報の取得			*/



