## やりたいこと
- Powkiddy [[RGB30]] の[[ plumOS]] 上で Portmaster を用いて [[DevilutionX]] をインストールした際、ゲームパッドのボタンがいい感じに動くようにしたい。
- 普通にインストールすると、ホットスペルメニューのボタンと画面の位置がズレる。Aボタンで下、Bボタンで右、など、ABとXYの位置が逆になる

## 原因と対策
- **問題**: DevilutionXの起動時に、コントローラの設定が少し違っており、ボタン配置が入れ替わる。
- **解決策**:
1. コントローラ設定ファイル `/storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt` を編集する。
2. 識別子が `190000004b4800000111000000010000` である行を下記のように変更。
### before
```gamecontrollerdb.txt
190000004b4800000111000000010000,RetroGame Joypad,a:b1,b:b0,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
```
### after
```gamecontrollerdb.txt
190000004b4800000111000000010000,RetroGame Joypad,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,
```
この変更により、DevilutionXでのゲームプレイ時にボタンの設定が適切に機能するようになり、ゲーム体験が向上しました。
### キーマップ
設定 > ゲームパッドで
- 主アクション:A
- 副アクション:X
- スペル・アクション:Y
- キャンセル・アクション:B
- スピードブック:B
とすると、操作体系が一貫します。
## 注意点
- **デバイスファイルの直接編集**: `/storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt`ファイルを直接編集する際は、慎重に行い、変更前のファイルのバックアップを取ってください。
- **影響範囲**: ゲームコントローラの設定ファイルを変更することで、そのファイルを使用する全てのゲームやアプリケーションに影響を及ぼす可能性があります。少なくともPortmaster、もしかするとさらに広い範囲のソフトウェアに影響する可能性があります。
> [!warning] これらの変更を行う際は、自己責任でお願いいたします。
## 付録:改訂箇所を特定するコツ
1. **SSHを使用する**: SSHでplumOSにリモートアクセスし、必要な設定ファイルを変更したり、スクリプトを実行します。
2. **デバッグ情報の記録**: `devilution.sh` スクリプトに、標準出力にデバッグ情報を出力するコードを追加します。これにより、スクリプトの動作を追跡し、何が起こっているのかをよりよく理解することができます。
3. **関係するファイルの特定**: 主に `devilution.sh` と `gamecontrollerdb.txt` が重要ですが、 `device_info.txt` や `control.txt` も関連します。設定や動作に関連する他のファイルも確認するとよいでしょう。
4. **影響を受けないファイルの判別**: `mod_JELOS.txt` など、影響がありそうで実際には関係ないファイルもありました。各ファイルの役割を確かめながら進めましょう。