Home - NullPopPoLab/batocera.linux GitHub Wiki

最高のレトロゲーム環境をつくろう

なコンセプトで、理想形に近い Batocera.linux からさらに魔改造してみた。
あくまで個人的な理想形を追求したものであるということで、本家にプルリクとかしないよ。
(互換性もないし)
差分とりやすいブランチ構成にしてあるので、各自で欲しいとこだけdiffってもってくのもあり。

リリースはおすそ分け程度に検討はしてみたものの、7z圧縮で2GBあるので手に負えないのでありました。
というわけで、現状ソース公開のみです。
自前でビルドしてでも欲しい人は 先人の獣道 を辿ると少しは楽かもしれない。
ただし、フルビルドにン十時間の世界なので覚悟よろし。

NullPopPo Customの特徴

16ボタンなゲームコントローラ前提

近年のゲームコントローラはPSやXboxを基準とした仕様になっていて、
ストリートファイターⅡ以降の6ボタン構成が適用できなくなっている上、
DirectXのDirectInput→XInputでデグレードされた仕様で標準化されてるので
各種レトロゲーム製品でもボタンアサイン無理矢理で、ぶっちゃけ遊び心地よくない。

というわけで、この点を最重要事項としています。
(とはいえ、DirectInputの16ボタン対応製品自体が絶滅危惧種なので困りどころではある)
が、本家Batocera.linuxでもこの問題は健在で、特に公式libretroはボタン数の拡張も利かないため、
互換性を捨てた大改造になってしまいました。
(このため、NetPlayとか本家に迷惑な機能は封印な方針)

また、コントローラのホットキーも16ボタン前提で再編してあります。

キーボードも極力単なるデバイスとして使う

Batocera.linuxはゲーム機だけでなく、レガシーPCにも対応しています。
しかし、各種エミュレータでキーボード操作からエミュレータ独自の機能をアサインしているために
キーボード操作で意図しない機能が暴発する問題がでてきます。
(ESCキー押したら終了しちゃったとか)
というわけで、ホットキー類は極力外しています。

レガシーPCの独自キー対応

レガシーPCには現行品にはない固有のキーがいくつかあり、現行品でアサインしきれない問題があります。
Batocera.linuxでは現行品ベースでアサインするようになっているため、これらのキーが使用不能になります。
この対策というか代替策として、これらのキーを定義だけ追加してゲームコントローラから
アサインできるようにしています。
(現状libretroのみ対応)

アナログスティックでのポインティングデバイス操作改善

本家Batocera.linuxでもある程度対応してますが、操作性的に実用的ではないみたい。
その主要因として、ポインティングデバイスにある移動の緩急に適応できない問題があります。
というわけで、まだ試運転段階ではありますが、ひとまずNDSでのタッチパネル操作について、
スティック2本を速い操作と遅い操作で使い分ける手法を実装してあります。
できたら多機種のマウスや光線銃にも同様の操作を適用したいところではありますが、
うまく動いてないので保留中。

ゲームコントローラからのテンキー操作

現行のPCゲームは方向操作をカーソルキーかWASDにアサインするのが主流となっていますが、
レガシーPCのゲームではテンキーで方向操作するものが多くあります。
2468の4方向だけでよければ本家Batocera.linuxでも充分可能ですが、
ゲームによっては斜めの1379も含めた8方向でアサインされているものがあるため、
8方向でのアサインを可能にする特殊な定義を追加しています。
(現状libretroのみ対応)

2ディスクドライブ対応

レガシーPCではFDDを2基搭載しているものがありますが、
本家Batocera.linux(というかlibretro)では1台ぶんのインタフェイスしか用意されていません。
コアによってはその対策でトリッキーな機能を載せていたりもしますが、そのあたりは廃止して
ちゃんと2FDD両方とも交換可能な形に独自拡張しています。

ついでに、FDSとかPC88とか全面的にトリッキーな対応されているところも
共通のインタフェイスで再実装してあります。

M3U拡張

レガシーPCでは2FDDに加え、ハードディスク,光学ドライブ,カートリッジといったデバイスを扱うことがあります。
本家Batocera.linuxでも一部扱えますが、FDDとの共用はできないので
この対策でM3Uファイルの記述を拡張して、複数のデバイスを共用できるようにしてあります。
(カセットテープにも対応したはずだけど読んでくんないんだよぅ)

ついでに、いくつかのコアはディスク交換対応しているけどEmulationStationで認識されない
問題があったりするので、そこんとこ対応しといた。

Wine周辺機能整備

最近のLinuxはWineでWindowsソフトがいろいろ動くようになってまして、
本家Batocera.linuxでもいろいろ動くようにはなっているのですが、
ちょっとした機能不足で正常動作しないのも多々あるため、
できそうなところは追加機能として補完してみました。

周辺データ関連機能整備

本家Batocera.linuxのディレクトリ構成のままファイル数が増えるとごちゃつくので
問題ない程度に整理しています。

また、EmulationStationのWebサーバ/フロントエンド機能を拡充し
メタデータの編集や関連情報のまとめなどにも対応します。

UI整備

Batocera.linuxは超多機能ですが、その反面UIがごちゃついて扱いにくいところもあります。
よく使う機能は先頭または末尾に寄せるといった対応で、改善を進めていきます。

その他

細かい変更点は変更箇所参照

NullPopPo Customの欠点

XInputコントローラのことなんか一切考慮してない

もう16ボタン前提なので。

NetPlay非対応

前述のとおり、互換性のない変更を行っているため封印

プリセットroms削除

データ整理観点で邪魔になるし、削除しても甦ったりとか厄介なのでやむを得ず。
必要なら公式品から拾ってくればいいんじゃねっすか的な感じで。

で、romsが空の状態で起動するとEmulationStationの画面真っ黒な現象があります。
ただメニュー操作は可能だしネットワークも生きてるので、romsになんか入れてリスト更新すれば解決できます。

本家の更新に追いついてない

現状、本家Batocera34ベースです。
(Batocera35ビルドできなくて困ってる)
RetroArchなんかは33時代のままです。
コアも一部33のままなやつあります。
(差分適用できないのとか、試してみて挙動怪しかったりとか)

その他

新看板
旧看板
業務日誌