PS3 Dualshockを使用して、2人のプレイヤーでsnes9x-gtkをプレイしようとしています。私の問題は、プレーヤー2の入力設定です。js1のボタン押下を登録しません。 js0は正常に動作します。ジョイスティックのキャリブレーション用のJtestは、両方のコントローラーが機能していることを示しています。
1)私のジョイパッドは実際にオペレーティングシステムから聞こえましたか?
ターミナルで:
cat /dev/input/js0
ファンキーな出力が表示され、ボタンが押されたときに応答します。デュアルショックで最初に接続された音が聞こえていました。今:
cat /dev/input/js1
同じことを示し、ボタンの押下にも応答します。 (ボタンを押し続けると、端末の応答画面にパターンが表示されます...)
2)snes9x-gtkプログラムを起動し、オプションに移動してから設定に移動します。snesボタンのテキストフィールドをクリックしても機能しますか?
ジョイパッド1の場合、プログラムはjs0のコントローラー入力に応答し、正しい入力を正しいsnesボタンにバインドします。
ジョイパッド2(ドロップダウン、および2を選択)の場合、ほとんどの部分で応答がありません。幸運なことに、snesボタン「right」のテキストフィールドをランダムにクリックし、js1の右のDパッド入力「Joystick 2 Button 5」を押して、ジョイパッド1に切り替えて、「Joystick 1」を見つけました。ボタン5 "。それで機能し、正しいボタンでした!ただし、他のコントローラーボタンは聞こえませんでした。だから私は
gedit ~/.snes9x/snes9x.xml
ジョイパッド0の下にあり、js0のすべてのバインディング番号。
ジョイパッド1(js1ですが、プログラムではジョイパッド2)の下で(プログラミング言語はリストを1ではなく0で開始します)私は見つけました:
<binding name="Right" binding="570425349"/>
他のすべてのボタンのバインディングは0であるため、設定されていません。ジョイパッド0を振り返ると、js0の同等のバインディングが
<binding name="Right" binding="553648133"/>
だから、これはjs0のすべてのバインディングをすぐに解放する助けにはなりません。設定のjoypad 1の入力はすべてのボタンの押下を聞いたので、すべてのバインディングがありました。少しのロジックと数学を使用して、joypad 0の下のleftのバインディングを見て、次のようになりました:
<binding name="Left" binding="553648135"/>
そのため、左バインディングの入力は右バインディングよりも2大きくなりました。ジョイパッド1(js1)の下で
この: <binding name="Left" binding="0"/>
これになりました:<binding name="Left" binding="570425351"/>
そしてxmlファイルを保存し、snes9x-gtkを再度開き、ジョイパッド2の下を見て、左のボタンに「ジョイスティック2ボタン7」が表示されました。 js1で必要な残りのボタンを編集することができました。うまくいけば、すべてのデュアルショックでバインディングが普遍的であるかどうかはわかりませんが、十分に説明しました。
3)ゲームは最終的に機能しましたか?はい、2人のプレイヤーでスーパーマリオの世界をテストしました。ルイージは、プラグインした2番目のデュアルショックに応答しました。