Last Updated: 2002年11月20日






ここは、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
!?
 なんかすげー肩透かしくらった気分です。てなわけで、また新たなドライバが出てくるまで、この記事は役に立ちそうもないです。
#アングラサイト探せばファイルは落ちてるかもしれませんが。。。
 ありましたよ、それらしきもの。↑を書きながら探せば、こんなものがあるじゃないですか。十字キーとアナログの切り替えにも対応してそうだし、なんか期待してしまいます。まだ使ってないんでなんとも言えませんが。

 ってーか、それ以前にダウンロードできないんですが(↑のやつ)。試しようがないじゃん。てわけで、はい終了。さて、どうしようかなぁ。誰かドライバ書いてくれないかなぁ(自分で書けという話もあったり…)



ホーム

090/Yoshi.