Batocera.linux: 28ボタン対応 Part 2
前回は、EmulationStationだけ28ボタンに仮対応しました。
ただそれだけでは実際に使えるコアが限られるので、
一番のキモであるRetroArchへの対応を進めていきます。
今回は中身が濃ゆいので有料となります。
(作業ブランチこんなだし)
主に、エミュレータを改良してみたい人向け。
なお、EmulationStationはC++ですが、RetroArchは素のCで
いろいろややこしい上、ソースファイル行数普通に
4桁とかあるので覚悟よろしぅ。
まず公式パッチ適用
前回と同様に、Batocera38相当のブランチを用意して
公式パッチを適用していくわけですが…
![](https://assets.st-note.com/img/1697871054950-lckt7UAX3d.jpg)
おもむろに手動で。
![](https://assets.st-note.com/img/1697871364468-paOrbr0szt.jpg)
+から始まる行を追加
![](https://assets.st-note.com/img/1697873516264-GS0jgMAWsM.jpg?width=800)
パッチ済ソース拾ってきてもヨシ!
(なんか行番号合ってないけど)
ひとまず、パッチ済ブランチは用意できました。
では、ハック開始しましょうか…といったところで…
バグっぽいの
input/input_driver.h に
![](https://assets.st-note.com/img/1697875890197-YFRFp2Vqpv.jpg)
なんちう定義ありますが、用途的にUSERSには見えない。
ていうか添字はボタンですね。
![](https://assets.st-note.com/img/1697875963608-nJUbPpofBQ.jpg?width=800)
公式にはどっちも16なので一応問題ないんですが、
ボタン増やすとやばいので RARCH_FIRST_CUSTOM_BIND
に変更しときます。
併せて input/input_driver.c の方にも。
![](https://assets.st-note.com/img/1697876165945-E0S8GceuaC.jpg)
というわけで、対応ブランチ。
それでは改めて、ハック開始。
これは非互換の魔改造だよ
まず今回のハックはデータ構造的に非互換であり、
特にNetPlayで支障をきたすので、バージョン表記で忠告しておきます。
機能として別物なので、ブランチも分けときます。
version.all
PACKAGE_VERSION には NullPopPoCustom38 サフィクスを付けときます。
(ほんとはBatocera本体のretroarch.mkで指定すべきなんですが、
コンパイラオプションでの文字列指定うまくいかなかった)
また、NetPlay用バージョン表記として NET_VERSION を用意し、
非互換であることを強調しておきます。
network/netplay/netplay_frontend.c
3箇所ある PACKAGE_VERSION を NET_VERSION に差し替えておきます。
では本題
ボタン数を16個増やすだけのお仕事、楽勝ですね。
…んなアホな。
そりゃもう、いろんな罠でいっぱい。
書き換え箇所わんさか。
ここから先は
この記事が気に入ったらサポートをしてみませんか?