ここは、Xpadのぁゃιぃ使い方に関するページです。 XboxのコントローラがUSB接続というのは既に公然の秘密だったりしますが、自分はXbox持ってないので、関係ねーやと最近まで思っていました。そう、このデバイスを見るまでは…買った理由として安かったってのも大きいんですが(笑) こいつは何かと言いますと、PSのコントローラをXboxで使うためのアダプタです。ごらんのとおり上の写真にはUSBコネクタが付いていますが、もちろん最初は付いていませんでした。(あたりまえか)付け方は…開けて、USBの線を切って、同じ色の線をハンダ付けするだけ。1行で言うとこんな感じかな。でも、ほんとそれだけ(笑)写真アップしろゴルァというリクエストがあれば、加筆修正いたしますので掲示板にでも書き込んでくださいませ。 でもって詳しいことはよくわからないんですが、中を開けたらCY7C65113というCypressのチップが載っていて、調べたところProgramable USB Controllerとのこと。てことは、このチップの中にあるマイコンがPSのコントローラの値を読み取って、Xbox用に変換してくれると考えて間違いなさそうです。 #実際の動作確認は、知り合いにXbox借りて試しました。もちろん、ちゃんと動きましたよ。 というわけで、内部にちゃちゃっとハンダづけして、PCに刺してみるも、うまくいかない。てーか、Xboxのコントローラって特殊らしく、それで専用のドライバが要るんだとか。さらに、Linuxマシンにぶっ刺して調べてみると、プロダクトIDとベンダIDも違う。ただ、エンドポイントとかの数はいっしょ。 ちなみにLinuxマシンだと、/proc/bus/usb/devicesというファイルを見ると、たとえデバイスドライバがなくても↓みたいな情報がわかるので、とても便利。サブマシンに入れとくと便利ですぜ旦那(笑) ちなみに/proc/bus/usb/devicesの表示はこんな感じ。ただし、ディストリビューションによって表示のされ方に違いがあるみたい。これはVine Linux 2.5の場合です。あ、色はついてませんよ。私が勝手につけただけですから(笑) T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB UHCI-alt Root Hub S: SerialNumber=d400 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 11/900 us ( 1%), #Int= 1, #Iso= 0 D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB UHCI-alt Root Hub S: SerialNumber=d000 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 3 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0c12 ProdID=9901 Rev= 0.01 S: Manufacturer=Zeroplus S: Product=XBOX Game controller C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 64mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0c12 ProdID=9902 Rev= 1.00 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 2 Cls=58(unk. ) Sub=42 Prot=00 Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl= 4ms E: Ad=02(O) Atr=03(Int.) MxPS= 8 Ivl= 4ms えーと、たくさん項目があってどこ見たらいいのかよくわかりませんね。とりあえず今回要注目なのは、 P: Vendor=0c12 ProdID=9902 Rev= 1.00 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 2 Cls=58(unk. ) Sub=42 Prot=00 Driver=(none) この3行。ほかのところは正直どうでもいい(笑)。この3行からわかるのは、 ・ベンダID:0c12 プロダクトID:9902 リビジョン:1.00 ・(なんかごちゃごちゃあって)必要な電流:100mA ・(なんかごちゃごちゃあって)デバイスクラス:58(シラネーヨ)サブクラス:42 プロトコル:00(バルク転送) ドライバ:無えょ っていうこと。エンドポイントの数とかは、まぁ、、、勝手に勉強してください(笑)あと、間違ってたらメールでこっそり教えてください。更新履歴に載せずに直します(笑) こんないいかげんな説明じゃなくて、Xboxのコントローラについてもっとちゃんと知りたい人はこのページを見てください。私は最近USB始めた初心者なもんで、わけのわからないことだらけです。今回の記事だって、カンに任せてやってます(おい) でもって、これが何の手がかりなのかというと、xidというXboxのコントローラをPCで使うためのドライバのINFファイルを書き換える手がかりだったりします。このドライバはWin2k&WinXP+DirectX 8.0a以下で動くらしいんですが、アメリカ版Xboxのコントローラ用に作られているため、そのままでは日本版Xboxのコントローラを動かせないんだそうです。詳しいことはこちらをどうぞ。 まぁ、こっちはそれよりもさらに邪道な(笑)サードパーティ製コントローラ(でいいのかな?)を使おうとしてるんで、その程度のハードルは無駄無駄無駄ぁぁぁぁ(笑) ふざけてる場合じゃないですね。実際に作業に入りましょう。xpadをダウンロードして解凍すると、xid.sys、xid.inf、readme.txtが出来ます。実際に書き換えるのは、xid.infです。 具体的にはこんなふうに書き換えます。 ; ; USB HID Minidriver for XBox Controllers ; Copyright Joseph Cossette. All Rights Reserved. ; [Version] Signature="$CHICAGO$" Class=HIDClass ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da} provider=%XID% ;LayoutFile=layout.inf ;DriverVer=mm/dd/yyyy [SourceDisksNames] 1="USB HID Minidriver for XBox Controllers Installation Disk",,0 [SourceDisksFiles] xid.sys = 1 XID.inf = 1 [Manufacturer] %MfgXID%=XID [XID] XID=XID.Dev, USB\VID_0C12&PID_9902 [PreCopySection] HKR,,NoSetupUI,,1 [DestinationDirs] XID.Files.Ext = 10,System32\Drivers XID.Files.Inf = 10,INF [XID.Dev] CopyFiles=XID.Files.Ext, XID.Files.Inf AddReg=XID.AddReg [XID.Dev.NT] CopyFiles=XID.Files.Ext, XID.Files.Inf AddReg=XID.AddReg [XID.Dev.NT.Services] Addservice = xid, 0x00000002, XID.AddService [XID.AddService] DisplayName = %XID.SvcDesc% ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ; SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = %10%\System32\Drivers\xid.sys LoadOrderGroup = Extended Base [XID.AddReg] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,xid.sys [XID.Files.Ext] xid.sys [XID.Files.Inf] ;XID.Inf ;---------------------------------------------------------------; [Strings] XID="XID" MfgXID="XBoyz, patched by Yoshi." USB\XID.DeviceDesc="USB HID Minidriver for XBox Controllers" XID.SvcDesc="USB HID Minidriver for XBox Controllers" 書き換えたところは黄色で強調しておきました。たった2箇所ですね。あとはUSBに刺して、このドライバを入れるだけ。 と、ここまではうまくいったんですが、実際の使用に対して問題発生! ・アナログコントローラにしか対応してない! ・十字キーがアナログスティックの左手側に固定される(常時ANALOGが点きっぱなし。切り替えも不可) ・十字キーの上下が逆! なんてこったい。ちくしょー、そんじゃこれは実質アナログコントローラ専用?ってパッケージ見たらアナログコントローラの絵しか書いてない…よく見て買えよ俺(笑) しょーがない。買いましたよ、アナログコントローラ(なんか本末転倒だなぁ(笑))。PS2持ってないのに、DUALSHOCK2買ってきました。無駄だなぁ(笑) んでもって、結論から言うと十字キーの上下が逆なのはあんまし問題にならなかった。何でかっていうと、パッドを使うのは(自分の場合)えむれーただけ。で、たいていのえむにはキーコンフィグでどのキーを使うか、変更可能なものがほとんど。そこで十字キーの上下を逆に割り当ててしまえば…はいOK。何の問題も無くゲームができてしまうのでした。アナログスティックは切り返しが早くてよいです(謎 なんて書いてさぁHPに上げるぞ!と思ってXpadのオフィシャルページを見にいったら、なんとOFFICIALY DEAD !? なんかすげー肩透かしくらった気分です。てなわけで、また新たなドライバが出てくるまで、この記事は役に立ちそうもないです。 #アングラサイト探せばファイルは落ちてるかもしれませんが。。。 ありましたよ、それらしきもの。↑を書きながら探せば、こんなものがあるじゃないですか。十字キーとアナログの切り替えにも対応してそうだし、なんか期待してしまいます。まだ使ってないんでなんとも言えませんが。 ってーか、それ以前にダウンロードできないんですが(↑のやつ)。試しようがないじゃん。てわけで、はい終了。さて、どうしようかなぁ。誰かドライバ書いてくれないかなぁ(自分で書けという話もあったり…) |