Virtual-ONではMSサイドワインダーが標準で認識されるようですが、これ以外のゲームパッドについてはバージョンに応じて使えたり使えなかったりします。現在、SEGA PCゲームアップデートからダウンロードできるv_on.exe Ver.1.0.7では、ツインスティックPC、ツインスティックSS、SSゲームパッドに追加対応しています。しかし、Ver.1.0.7では、MSサイドワインダーに対する確認が厳しくなり、MSサイドワインダーに似た他のゲームパッドをMSサイドワインダーと見做して使うことが難しくなっています。
しかしこれを解決する方法を、TOMさんが考えてくださいました。以下、TOMさんからの紹介です。なお、この方法はレジストリを操作する必要があるため、場合によってはWindowsに深刻な障害を与える可能性があります。この方法を試すときは、自分の責任で試してください。
TOMの 貴方も出来る お気楽、プログラム解析のレポート (読みながら同じ様に解析すると面白いかも…)
- このレポートの趣旨
電脳戦機バーチャロンでSideWinder Gamepad以外のコントローラ(USBも含む)を
Microsoft(R) SideWinder(TM)として認識させる事
平たく言うと、Windowsで使用出来ているデバイスを、バーチャロンで使う比較ファイルが1.0.4aではないのは、1.0.7がSEGAに置いてあり誰でも入手出来るからです。
後で1.0.4aも調べましたが、比較した位置は1.0.7と同じでした。まず検査
プログラムは基本的に読める文字から見ます(私のやり方)
バイナリエディタ起動、SideWinderを文字検索します。(SideWinderで)
1.0.0は(以下 旧EXEと表記)アドレス 269A54 に Microsoft(R) SideWinder(TM)
1.0.7は(以下 新EXEと表記)アドレス 267518 に Microsoft(R) SideWinder(TM)
と有りました。デバイス設定の選択肢に出てくる文字です。プログラムはこの付近に存在するはずなので、上下を見ることにしましょう。(適当な人)
まずは新EXEのSideWinderより上を見ました。
jump やら dash 書かれてますね。パッドデバイス設定の割り当ての選択肢かキーボードの設定項目ですね。
関係無いので無視します。更に上に行くと、scrstfmp.bin と scrstfcg.bin が出てきました。
どこかで見たファイルですね。確か新EXEと同じページに置かれていたNEC用の追加ファイルですね。
1.04aには元から有ります。更に上を見ても文字が見えませんので諦めて下を見ましょう。
おや?下に読める文字の大群を発見。
P GamePad Assig SEGA SATURN PAD Microsoft SideWinder Gamepad 等が書かれてますね。
旧EXEの方は・・・後者二つが有りません。新EXEはSEGA SATURN PADとSideWinderの判別をしていますね。
その下を見ると Microsoft SideWinder gamepad(gが小文字)があり
更に下には System\CurrentControlSet\Control\MediaProperties\Joystick\OEM.Jostick%d%s と書かれています。どこかで見たことの有る文字列ですねぇ…カレントとかコントロールとか。コレはWINのレジストリですね。
その下には、System\CurrentControlSet\Control\MediaResources\JoystickSettings と書かれています。
前記述の %d%s は文字変数ですね。
プログラムの内容は、System\CurrentControlSet\Control\MediaResources\JoystickSettings を見て中身を読み出し
System\CurrentControlSet\Control\MediaProperties\Joystick\OEM.Jostick に
読み出したデータを付け足して OEMNameが欲しいと言ってます。さて、レジストリエディタで追いましょう。(私の使用しているデバイスは、USBのSideWinderと旧SideWinderです)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\Joystick\DINPUT.DLL\CurrentJoystickSettings
有りました。ココに
名前 Joystick1OEMName データ VID_045E&PID_0003
名前 Joystick2OEMName データ VID_045E&PID_0027
多分 0003 が旧SideWinderでしょう(古いからなんとなく・・・)
プログラムは データを取っていましたね。次のレジストリを見ましょうか。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM
有りました。私は友人のコントローラを何種類も使っているので沢山有ります(汗
友達がUSBのコントローラ持参で遊びに来るので。さて 取ったデータの内容を見ます。
VID_045E&PID_0003 には 名前 OEMName データ Microsoft SideWinder game pad (当たりでしたね旧版です)
VID_045E&PID_0027 には 名前 OEMName データ Microsoft SideWinder Plug & Play Game Pad
(WINのゲームコントローラに表示されているUSBのパッドの名前です)
どうやらこれだけで判断している様子(大汗旧EXEを修正するつもりでしたが、新EXEを使いレジストリのデータを書き換える方が楽ですね…
IF-SEGAも普通に使えて、その他のパッドはレジストリをSideWinderに情報書き換えで判定を逃れる事にします。
取り合えず、動くかどうか試しましょう。値のデータを Microsoft SideWinder game pad に書き換えました。
これで新EXEをダブルクリックしましょう。どうでしょうか?私の環境では1P、2Pで両パッドが使えるようになりました。一人でvsしても面白くないので直ぐに止めましたが…
以上が結果です。と言うわけで、お試しあれ。
以上、TOMさんの報告でした。
この方法に従って、かふうもJUSTY製のUSBゲームパッドをVer.1.0.7に認識させることに成功しました。これはVer.1.0.0.0では動作していたがVer.1.0.7で使えなくなったゲームパッドです。なお、この設定変更をした状態で、このゲームパッドで他のゲームを試してみましたが、特に問題なく動くようです。
ただレジストリ操作に自信のない人は、Ver.1.0.0.0のv_on.exeを使うのもよいかも知れません。Ver.1.0.0.0ではツインスティックが認識されない ( ただしツインスティックが認識されない場合に従って解決可能 ) などの問題もありますが、これらの問題が表面化しない環境ならば、より安全にUSBゲームパッドを使えます。
この方法で動かない場合、以前にそのPCで本物のMSサイドワインダー ( 旧サイドワインダーゲームパッド ) を使ったことがあるかどうか確認してください。
使ったことがないか、使ってもOSを再インストールしていて痕跡はないという場合は、書き換えるデータを「Microsoft SideWinder Gamepad」として試してみてください。