Batocera.linux: 28ボタン対応 Part 2

割引あり

前回は、EmulationStationだけ28ボタンに仮対応しました。
ただそれだけでは実際に使えるコアが限られるので、
一番のキモであるRetroArchへの対応を進めていきます。

今回は中身が濃ゆいので有料となります。
(作業ブランチこんなだし)
主に、エミュレータを改良してみたい人向け。
なお、EmulationStationはC++ですが、RetroArchは素のCで
いろいろややこしい上、ソースファイル行数普通に
4桁とかあるので覚悟よろしぅ。

まず公式パッチ適用

前回と同様に、Batocera38相当のブランチを用意して
公式パッチを適用していくわけですが…

なんてこった

おもむろに手動で。

-から始まる行を削除して
+から始まる行を追加
一旦公式でビルド済なら
パッチ済ソース拾ってきてもヨシ!
(なんか行番号合ってないけど)

ひとまず、パッチ済ブランチは用意できました。
では、ハック開始しましょうか…といったところで…

バグっぽいの

input/input_driver.h に

なんちう定義ありますが、用途的にUSERSには見えない。
ていうか添字はボタンですね。

公式にはどっちも16なので一応問題ないんですが、
ボタン増やすとやばいので RARCH_FIRST_CUSTOM_BIND
に変更しときます。
併せて input/input_driver.c の方にも。

というわけで、対応ブランチ
それでは改めて、ハック開始。

これは非互換の魔改造だよ

まず今回のハックはデータ構造的に非互換であり、
特にNetPlayで支障をきたすので、バージョン表記で忠告しておきます。
機能として別物なので、ブランチも分けときます

version.all

PACKAGE_VERSION には NullPopPoCustom38 サフィクスを付けときます。
(ほんとはBatocera本体のretroarch.mkで指定すべきなんですが、
コンパイラオプションでの文字列指定うまくいかなかった)

また、NetPlay用バージョン表記として NET_VERSION を用意し、
非互換であることを強調しておきます。

network/netplay/netplay_frontend.c

3箇所ある PACKAGE_VERSION を NET_VERSION に差し替えておきます。

では本題

ボタン数を16個増やすだけのお仕事、楽勝ですね。
…んなアホな。
そりゃもう、いろんな罠でいっぱい。
書き換え箇所わんさか。

ここから先は

6,766字

この記事が気に入ったらサポートをしてみませんか?