忍者ブログ

素人翻訳

適当に翻訳する。

Ubuntu-22.10でppsspp構築[令和5年]

Ubuntu-22.10でppssppを作る。
githubにある説明に従う。

$ sudo apt install build-essential cmake libgl1-mesa-dev libsdl2-dev libvulkan-dev
$ sudo apt install qt5-qmake qtsystems5-dev qtmultimedia5-dev qttools5-dev-tools libqt5opengl5-dev
$ sudo apt install libsdl1.2-dev
$ git clone --recurse-submodules https://github.com/hrydgard/ppsspp.git
$ cd ppsspp
$ ./b.sh --qt

これで完成。
buildディレクトリに「PPSSPPQt」という実行ファイルができるので、それでppssppを起動する。

$ cd build
$ ./PPSSPPQt

ゲームの起動は問題ないのだが、ゲームパッドのDirectInputモードで「R1」と「☓」ボタンだけ入力できない。

$ cat /dev/input/by-id/usb-SHANWAN_JC-U4013S_DirectInput_Mode-event-joystick

を実行して各ボタンを押して確認したところ、☓ボタンもR1ボタンも問題なく入力できている。

$ sudo apt install joystick
$ sudo apt install jstest-gtk

jstest-gtkでもすべてのボタンで問題なく入力できる。

ppssppのゲームパッドの設定画面でSDLの入力が無い。

ppsspp/build/assets/gamecontrollerdb.txtを書き換えても、書き換えた結果を反映してくれない。

cd ppsspp/build
make clean
cd ..

ppsspp/SDL/SDLJoystick.cpp の「void SDLJoystick::setUpController(int deviceIndex)」の最後の方を書き換え、直接Mappingを追加して解決。

~~(略)~~
SDL_GameController *controller = SDL_GameControllerOpen(deviceIndex);
if (controller) {
if (SDL_GameControllerGetAttached(controller)) {
controllers.push_back(controller);

controllerDeviceMap[SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(controller))] = deviceIndex;
cout << "found control pad: " <<
SDL_GameControllerName(controller) << ", loading mapping: ";
KeyMap::NotifyPadConnected(deviceIndex, std::string(pszGUID) + ": " + SDL_GameControllerName(controller));
//ここから改変
char new_mapping[] = "030000006e0500000f20000010010000,SHANWAN JC-U4013S DirectInput Mode,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux,";
int updated = SDL_GameControllerAddMapping(new_mapping);
//ここまで改変

auto mapping = SDL_GameControllerMapping(controller);
if (mapping == NULL) {
//cout << "FAILED" << endl;
cout << "Could not find mapping in SDL2 controller database" << endl;
} else {
cout << "SUCCESS, mapping is:" << endl << mapping << endl;
}
} else {
SDL_GameControllerClose(controller);
}
~~(略)~~

SDLJoystick.cppを書き換えた上で、もう一度、

cd ppsspp
./b.sh --qt
cd build
./PPSSPPQt
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新コメント

[08/18 NONAME]
[05/18 NONAME]
[04/09 NONAME]
[03/21 NONAME]
[03/20 NONAME]

最新記事

ブログ内検索

広告

バーコード

広告