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

割引あり

前回、RetroArchを頑張って28ボタンに対応しました。
しかし、コア側にも越えなければならない壁がありまして、
今回その部分を続々対応させていきたいところですが、
従来のNullPopPoCustomには他にも多くの独自機能があり、
それらの移行がまだ済んでいません。
というわけで、今回は28ボタン対応だけで済むNintendo64コアを
対象に進めていきます。
なお、前回同様ハック部分は有料となります。

mupen64系コア

libretroじゃない方のコアは3種類ありますが、共通で対応できます。
また、コア側の書き換え不要、全てBatocera本体の変更のみで適用可。
作業ブランチこんなもん。

package/batocera/emulators/mupen64plus/mupen64plus-core/controllers/input.xml

このXML編集でボタンアサインを変更できますが、適用するには
mupen64plus-core の再ビルドが要るようです。

なお、公式では右親指域は4ボタンな前提で足りないので、
ゲームに応じてdefaultInputListとn64InputListの切り替えで凌いでいます。

NullPopPoCustomにおいてはちゃんと6ボタンあること前提なので、
実機のコントローラ使用形態に応じて
default: ファミコンポジション想定 L2=Zボタン
analog: ライトポジション想定 L1=Zボタン L2=Lボタン
dual: レフトポジション想定  R1=Zボタン R2=Rボタン スティックは右側
から選択できるように変更してみました。
それでXMLこんな感じ

package/batocera/emulationstation/batocera-es-system/es_features.xml

上記選択肢変更をEmulationStationに反映させます。
mupenで検索すると3575行あたりで引っかかりますが、
こちらはlibretro版なのでハズレ。
7586行以降にあるやつが正解。
で、mupen64-controller1~4それぞれ選択肢を変更したら
batocera-es-systemを再ビルドよろし。

package/batocera/core/batocera-configgen/configgen/configgen/generators/mupen/mupenControllers.py

いろいろハードコードされてるので要是正。
まず getMupenMapping() はboolで渡してdefaultかn64かで選択するように
なってますが、ちゃんと設定名で渡せるように整えます。

もひとつ、70~95行区間でいろいろ勝手なことやってんので除去あるのみ。

で、batocera-configgenを再ビルドよろし。
これでmupen側は対応できました。
それでは、ちと厄介なlibretro側に着手いたしましょうか。

ここから先は

3,394字

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