ジャンル不定の日記です。

MednafenのJoystick設定

新環境にゲーム機のエミュレータ入れようと思って、とりあえず定番のpcsxrとかsnes9xがArch Linuxの公式リポジトリにあったから入れてたんだが、
higan-qtっていう複数ハードに対応したQtのエミュレータがあったんで試してみた。

higan-qtは、ファミコンROMはそのまま実行できて、joystickもGUIで設定できるんだが、
設定すると設定ファイルに書き込まれてるのに、次回起動の際に有効にならなかった・・・

ROMイメージロードするとフォルダを作成して、そこにセーブデータとか保存して、ROMファイルまでコピーするとかいう容量無駄遣いの変態仕様だった。
あと、GBAのROMロードしたら、別途BIOSイメージが必要だった。
速度は問題なさそうなんだが、音がダメダメ。

higan-qtはそんな感じなんだが、もう一個複数ハードに対応したエミュレータで、mednafenってのがあったんで試してみた。

mednafenはGUI設定なしでテキストファイルいじって設定する。
ROMロードすると~/.mednafen/mednafen-09x.cfgができるんでそれいじる。

んだが、Joystickの設定方法が公式ドキュメント見ても書いてないから難しかった。
公式フォーラムで質問に管理人さんが回答してたからなんとか設定できた。

コンソール上でROMロードする
Joystick 0 - Sysgration Ltd. Elecom Wired Gamepad - Unique ID: 080e4a1ee1ed960b
とかJoystickが出力される。
Unique IDでJoystick指定してボタン番号を設定する。

GBAだけ設定してみたが、うちのElecomパッドだと、
gba.input.builtin.gamepad.a joystick 080e4a1ee1ed960b 00000003
gba.input.builtin.gamepad.b joystick 080e4a1ee1ed960b 00000002
gba.input.builtin.gamepad.select 080e4a1ee1ed960b 00000008
gba.input.builtin.gamepad.shoulder_l joystick 080e4a1ee1ed960b 00000004
gba.input.builtin.gamepad.shoulder_r joystick 080e4a1ee1ed960b 00000005
gba.input.builtin.gamepad.start joystick 080e4a1ee1ed960b 00000009
gba.input.builtin.gamepad.left joystick 080e4a1ee1ed960b 0000c004
gba.input.builtin.gamepad.right joystick 080e4a1ee1ed960b 00008004
gba.input.builtin.gamepad.up joystick 080e4a1ee1ed960b 0000c005
gba.input.builtin.gamepad.down joystick 080e4a1ee1ed960b 00008005
こんな感じの設定で動いた。

エミュ入れる前にKDEのシステム設定でジョイスティック試したが、KDE入れるだけでjoystickのドライバとかは入れないで平気ぽい。

gba.input.builtin.gamepad.a
ならGBAのAボタン設定ってことだが、スペース空けて、
joystick [Unique ID] [ボタン設定]
Unique IDは起動時に出力されるやつ。

ボタン設定はデジタルパッド(通常ボタン)なら16進8桁でボタン番号そのまま。
KDEのシステム設定のJyoistickテストだとボタン番号は1から表示されるが、0からなんで-1する。
16進だから11番目のボタンはaになる。
17個以上ボタンあるなら2桁になると思われる。

難しかったのは、アナログ(方向キー)の設定。
デジタルパッドと同じように軸番号を末尾に書いて、+方向なら0xc000で-方向なら0x8000になるぽい。

Mednafenは、
Atari Lynx [lynx]
GameBoy (Color) [gb]
GameBoy Advance [gba]
Neo Geo Pocket (Color) [ngp]
Nintendo Entertainment System/Famicom [nes]
PC Engine (CD)/TurboGrafx 16 (CD)/SuperGrafx [pce]
PC Engine (CD)/TurboGrafx 16 (CD)/SuperGrafx [pce_fast]
PC-FX [pcfx]
Sega Game Gear [gg]
Sega Genesis/MegaDrive [md]
Sega Master System [sms]
Sony PlayStation [psx]
Super Nintendo Entertainment System/Super Famicom [snes]
Virtual Boy [vb]
WonderSwan [wswan]
に対応してるらしい。

物理CD対応してるって書いてあるからPlayStationなんかは簡単に遊べそうだね。
PC EngineとかPC-FXのCDはさすがに中古屋置いてないかな?w
サターンは残念ながら無いね。サターンならyabauseがリポジトリ入ってたからそっちで。

と思ったけど、GUIないのにどうやって物理CD渡すんだ?
/dev直渡しで動くんかな?
イジェクトの説明も書いてないような・・・