Ubuntu上のPPSSPPでPS3用コントローラ(有線)を使えるようにしてみた
「PPSSPP」は比較的簡単に楽しめるPSPエミュレータだと思います。
PSP(実機+CFW)はPCにUSB接続すれば、ほぼ外部ストレージと同様なので、すべての作業がUbuntuだけで完結します。
そもそもPSPでプレイしてるゲームは「ぺルソナ」「P3ポータブル」等のRPGや激しい操作のないソフトが多いので、キーボード操作だけで満足してました。
※動作するだけで嬉しかったので、実際のプレイは実機です。
満足してたのですが、PC環境を刷新してから、少し知識欲が出てしまいました。
せっかくUSB接続なPS3コントローラを持ってるので、何とかこれで操作できないものかと。
ダメ元で色々と試して、何とか思い通りにプレイできるようになりました。
以下、その顛末です。
....
まず、PPSSPPですが、現時点でリポジトリからUbuntu 18.04.2に導入できるバージョンは、v1.7.0 です。
そして、私が所持してるPS3コントローラは、
・PS3 標準コントローラ(DUAL SHOCK3)
・HORI PAD3 MINI (USB接続)
の2つです。
PS3の標準コントローラ(DUAL SHOCK3)が誤動作するようになり、障害切り分けのため、BluetoothではなくUSB接続の HORI PAD3 MINI を購入しました。
この HORI PAD3 MINI ですが、簡単に使えると思ってたのに、PPSSPPをインストールした直後の環境では「パッドをテスト」で十字キーが認識しません。
念の為、
$ sudo apt install joystick
$ sudo apt install jstest-gtk
から、「jstest-gtk」を起動すると、こちらは問題なく認識しています。
実際にコントローラを操作するとわかるのですが、HORI PAD3 MINI の十字キーは、Axis 4, 5に割り当てられています。
DUAL SHOCK3 は Buttons 9-12 に割り当てられていたので、同じPS3用コントローラでも機種によって異なるのは意外でした。
ちなみに、PCSX2ではキーアサインの変更だけで問題なく動作してます。
いずれにせよPPSSPP側の問題なので、アプリ設定で対処したいのですが、表面上、そのような項目設定はありません。
....
海外のサイトを巡ったところ、次のサイトを見つけました。
PPSSPP Controller Setup Guide for when nothing else works - RetroPie Forum
PPSSPPはコントローラの定義を"gamecontrollerdb.txt"というファイルに記録しているようです。
そして、このファイルには"controllermap"の実行結果が必要なようです。
チュートリアルによると、SDL2が必要なのですが、今の環境は壊したくないので、別HDDにOSとコンパイル環境を一式準備して試してみました。
【注意】
下記の手順は誤ってます。メモをコピペしたら色々と混ざってました。すみません。
controllermap を実行したいだけなので、別記事の方を参照してください。
1. mercurialのインストール$ sudo apt install mercurial
2. SDL環境のインストール
$ cd ~
$ mkdir work
$ cd work
$ hg clone https://hg.libsdl.org/SDL SDL
$ cd SDL
$ mkdir build
$ cd build
$ ../configure
$ make
$ sudo make install3. SDL2-2.0.6の取得&コンパイル
$ cd ~/work
$ wget https://www.libsdl.org/release/SDL2-2.0.6.tar.gz
$ tar -xzvf SDL2-2.0.6.tar.gz
$ cd SDL2-2.0.6/
$ cd test/
$ ./configure
$ make controllermap4. controllermap の動作確認
$ ./controllermap
Terminal に INFO: や Usage が出力されればコンパイル成功です。
続いて、HORI PAD3 MINI の設定を"hori.txt"ファイルに出力します。
$ ./controllermap 0 > hori.txt
この画面が表示された後、緑色に表示されているボタンに相当する「パッド上のボタン」を順次押していきます。
注意する点は、左のアナログスティクと十字キーのレイアウトがPS3と異なるのですが、十字キーは十字キー、アナログスティクはアナログスティクにしないと、PPSSPPの「キーを設定する」で混乱します。
で、その出力結果の内容ですが、
・HORI PAD3 MINI
030000000d0f00004d00000011010000,HORI CO.LTD PAD A,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
・PS3 標準コントローラ(DUAL SHOCK3)のUSB接続 ※故障中なので参考まで
030000004c0500006802000011810000,Sony PLAYSTATION(R)3 Controller,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b8,guide:b10,start:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpdown:b14,dpleft:b15,dpright:b16,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,
となりました。
最後に、この結果を"gamecontrollerdb.txt"に追記します。
Ubuntu上のPPSSPP v1.7.0では、/usr/share/ppsspp/assets に存在します。
sudo bash -c 'cat hori.txt >> /usr/share/ppsspp/assets/gamecontrollerdb.txt'
前述の出力結果をエディタでコピペする場合は、改行に気をつけてください。
見た目は改行しているように見えますが、1 device, 1 line です。
以上で事前準備は完了です。
....
この作業の後、PPSSPPを起動 →「ゲームの設定」→「コントロール」→「キーを設定する」→「パッドをテスト」で十字キーが認識するようになりました。
後はキー設定を確認して作業終了です。
これで、ようやくPS3コントローラが使えます。
いやー、長かった。
追記: 2020-11-30
PPSSPP について新しい情報を記事にしたのでリンクを貼っておきます。