amodova blog

他社製パッドをXbox360コントローラとして使う

Feb 15, 2010 - ゲームパッド

最近のPCゲームはXbox360版と同時開発、または移植されたものも多く、 ゲームパッド(パッド形コントローラ)での使用を前提としたもの等も結構あったりします。 そういったゲームではXbox360コントローラ(USB有線接続)や、 Xbox360ワイヤレスコントローラ(専用レシーバ接続)を使えば 特にパッドの設定をする必要もなく、メーカーが意図した通りのボタン設定でゲームがすぐに始められます。

一方、従来のPC用ゲームパッドは Direct Input と呼ばれる技術を使いPC上で動作していたのですが、 Xbox360コントローラ対応ゲームでは Xinput という技術に変わってしまったので、逆に最近のゲームでは 従来の Direct Input を使ったゲームパッドでは最悪使えない、または使えても パッドの設定を自分でしなければならないという問題も起きてきます。
(パッドの設定をパッド毎にしなければいけないのは従来からのDirectInput対応のゲームでも同じですが)

そこで、Xinput 対応ゲームでも慣れ親しんだ Direct Input パッドを使いたいという場合に、 素晴らしいユーティリティが開発されています。 Racer_S氏が開発し、ToCA EDITさんでで公開されているXBOX360 Controller Emulatorです。

ToCA EDIT XBOX360 Controller Emulator v3.0のページ

今回はこれを使って実際にDirectInputパッドをXbox360パッド(Xinput)として使用してみます。

XBOX360 Controller Emulatorのインストール

今回はXBOX360 Controller Emulatorをベースにアナログトリガーの半軸対応などカスタマイズされた x360ce vibmod 3.1.4.1を使ってみます。

x360ce vibmod 3.1.4.1ダウンロードページ
ページ中ほど中央にあるDownload Fileボタンを押すとダウンロードできます。

large image

x360ce vibmod 3.1.4.1.zipをダウンロードしたらzipファイルを解凍します。 解凍したら、入ってる中身の内の

  • xinput1_3.dll
  • x360ce.ini
  • XInputTest.exe

の3つを選択して右クリックして「コピー」を選択します。

large image

Xinputとして使用させたいゲームのプログラム(.exe)があるディレクトリに移動し、 何も選択せず右クリックして「貼り付け」を選択、ゲームのあるディレクトリと同じ階層に XBOX360 Controller Emulatorを複製します。

ボタン設定

large image

ゲームと同じディレクトリに複製したファイルの中からXInputTest.exeを起動してみて 一応正常に入力信号がきているかためしてみます。 現段階では動きはめちゃくちゃですが、とりあえずは入力を認識しているので良しとします。

large image

ではDirectInputパッドのボタン配置をXbox360コントローラと同じようにしていきましょう。 コントロールパネル>ゲームコントローラから自分の使っているDirectInputパッドのボタン配置を確認します。

例えば僕の使っているDirectInputパッド(Logitechロジクールコードレスプレシジョン)だと

ボタン3 R1 ボタン6 スタート ボタン10
× ボタン2 L2 ボタン7 セレクト ボタン9
ボタン1 R2 ボタン8 十字キー POV
ボタン4 L3 ボタン11 Lアナログ X軸/Y軸
L1 ボタン5 R3 ボタン12 Rアナログ Z軸/Rz軸

となっていますので、 先ほゲームと同じディレクトリに複製したx360ce.iniをメモ帳等で開き、ボタン配置情報を書き込んでいきます。

僕の場合では以下のような記述ですよ。

  • Left Analog X=1
  • Left Analog Y=-2
  • Right Analog X=3
  • Right Analog Y=-6
  • ...
  • D-pad POV=1
  • ...
  • A=2
  • B=3
  • X=1
  • Y=4
  • Left Shoulder=5
  • Right Shoulder=6
  • Back=9
  • Start=10
  • Left Thumb=11
  • Right Thumb=12

*設定ティップス
1=X軸、2=Y軸、3=Z軸、4=Rx軸、5=Ry軸、6=Rz軸、7=スライダーです。
-1のように数字の前に"-"をつけると軸が反転します。
Xbox360コントローラではレースゲーム等で 「アナログRトリガー:アクセル」 「アナログLトリガー:ブレーキ」 となっている事が多いので、Left Trigger、Right Triggerにそれぞれ軸を割り当てるのですが、 割り当てたいDirectInputのアナログが軸がそれぞれ半軸だった場合 (例:アナログスティック↑がRz軸の127?255、↓が127?0)、 "x"(アナログ半軸)や、"h"(スライーダー半軸)のオプションを使います。
DirectIputパッドのRz軸127?0を、 Xbox360コントローラのLトリガー0?255として使いたい場合は"Left Trigger="の項目に"x-6"と記述していきます。

書き込みが終わったらiniファイルを保存します。

動作の確認。

iniファイルへのボタンの記述を終え保存したら、XInputTest.exeを起動してみましょう。 自分の想定した通りに反応していればOKです。
ゲームも起動して確認してみます。
(ゲームにDirectInputを使うかXinputを使うかの設定がある場合、Xinputに設定しておきます)
右下スクリーンショットの様に、Xinput対応ゲームではゲーム内で特に何も設定せずきちんとXinputパッドとして他社製パッドが動作しました!

large image large image

XInputTest.exeではちゃんと動いているのに、 ゲーム内でうまく動かない場合はdllのファイル名を以下のどれかに変更してみてください。

  • xinput9_1_0.dll
  • xinput1_3.dll
  • xinput1_2.dll
  • xinput1_1.dll

僕がテストした環境では
GTA4(v1.0.0.4)、DMC4、Lost Planet、SEGA RALLY REVOは"xinput1_3.dll"で動作しました。
PES2009は"xinput1_1.dll"へリネームすることで動作しました。

ちなみにGTA4ではそれぞれ違う半軸としてLRトリガーとして設定した場合は 動作がアナログになりませんでした。 同じ軸の半軸とすればアナログとして動作するのですが、 同じ軸として設定してしまうと Rを最大に入力していて、Lに入力があった場合、Rの入力値が減ってしまい実用できません・・・。 ToCAEDITフォーラムでもこの不具合はまだ解決されていないようです。

GTA4をPS3パッドでアナログで使いたい場合は このユーティリティを使わずドライバ自体をMotionJoyにすることで解決するので、PS3パッドを使う人は MotionJoyのXbox360エミュ機能を使ってみてください。

関連記事

最新記事

カテゴリ