>>823実は自作で汎用のパッド入力処理関数のようなものを作ってあったんですが
ちょっと出来に難があります。
1回のメインループで2回使用、例えばKEY_DOWNとKEY_UPの2種類を検出しようと
したりすると1種類目の呼び出ししか有効でなかったり。
enum BTN_STATE{ NO_PUSH, KEY_DOWN, KEY_PUSH, KEY_UP };
//「押されていない」「押下げた瞬間」「押されている状態」「押上げた瞬間」
class JoyPad{
 int isPushDown[2][8];//[パッド1P、2P][ボタン数] (各ボタン押されているか否か)
public:
 BTN_STATE getBtnState(int pad_num, int btn_num );
}

BTN_STATE JoyPad::getBtnState (int pad_num, int btn_num ){
  int btn = ボタンが押されているか?関数( pad_num, btn_num );
  if ( btn == 1 ) {//ボタンが押されていたら
    if ( isPushDown[pad_num][btn_num] == 0){
    isPushDown[pad_num][btn_num] = 1;
    return KEY_DOWN;//「押下げた瞬間」
    }else{
    return KEY_PUSH;//「押されている状態」
    }
  }
  if ( btn == 0 ) {//ボタンが押されてなければ
    if(isPushDown[pad_num][btn_num] != 0){
    isPushDown[pad_num][btn_num] = 0;
    return KEY_UP;//「押上げた瞬間」
    }
  }
return NO_PUSH; //「押されていない
}