いまさら自宅で筐体 その4

  • 2010/05/28(金) 08:08:46

内容としてもだいぶ時間が経ってしまいましたが、自宅で筐体その後です。

今回はLinuxでDirectPadProによるジョイスティックの設定です。
今書いている日付のカーネルでも問題なくLinuxはDPPをサポートしています。
ですが、一筋縄では行きませんでした。

少なくとも日本語のドキュメントはグーグル先生も知らないようでした。
#探し方が悪いかも?

早速設定してみます。
まずはカーネルの設定から。

前にも書きましたが、筐体のコンパネをサターンのアストロコンパネまんまである、パーチャスティックプロに変更し、そこから第三科学研究所作成のサターンDPPケーブルにてPCのパラレルポートに接続。
当然、1P,2Pとも接続して使えるようにするです。

Windowsな環境では、検索すればなんとかドライバーの入手が可能な用ですが、有志によって移植されたり改良されたりしつつ、なんとかXPまでは使えるようですが、64Bitドライバーはまだ作成されておらず、私のように技術力ないものではどうすることもできないです。

んで、本題のLinuxではどうするかというと、標準のカーネルにサポートされていますので、それを設定すればいいだけ。

カーネルのコンパイルは人それぞれやり方あると思いますので、その辺は割愛。
#そもそも最近ではしたことないひととかいるかもしれません。
#Ubuntuとかだといらないかも。

要するにパラレルポートとジョイスティックのサポートを追加します。
まずはパラレルポートです。
make menuconfigなどで
Device Drivers→Parallel port supportをモジュールなりbuilt-inなりに設定して有効にしましょう。
#すでに有効なら設定しなくてもいいです。
Parallel port supportの中のPC-style hardwareも設定。
次にジョイスティックです。
Device Drivers→Input device support→Joystick interfaceを同じく有効にします。モジュールがいいかも。
んで、DPPのドライバーは
Device Drivers→Joysticks/Gamepads→Multisystem, Sega Genesis, Saturn joysticks and gamepadsでした。

これはモジュールでコンパイルしましょう。後でモジュールにパラメータを渡してmodprobeしなくてはならないので。

ちなみに、
Multisystem, NES, SNES, N64, PSX joysticks and gamepads
Multisystem joysticks via TurboGraFX device
なんかを有効にすると、それぞれのDPPが使えます。私はついでにモジュールとしてコンパイルしました。
DPPのモジュールはdb9という名前です。
これで新しいカーネルで起動してモジュールをロードすれば、問題なく使えます。

ってわけには簡単にできませんでした。
話が前後しますが、
/usr/src/linux/Documentation/inputの中にある、joystick.txtやjoystick-parpot.txtを読んで見てください。
特にjoystick-parpot.txtの中にパラレルポートへの接続するピンアサインなどが記載されていますが、これは直接接続する場合のものです。
また、3.2 db9.cのドライバーの項目に記載されている、ドライバーのパラメータとして渡す0-10までのタイプはこの直接接続する場合の番号です。
ですので、サターンパッドをDPP接続して、db9のドライバーを

modprobe joydev(Built-inなら不要です)
modprobe db9 dev=0,7

としてロードしてやっても使えません。
んで、どうするか?
結局のところ記載はドライバーのソースにしか記載がされていませんでした。
/usr/src/linux/drivers/input/joystickのなかの、db9.cを見てみてください。

#define DB9_MULTI_STICK         0x01
#define DB9_MULTI2_STICK        0x02
#define DB9_GENESIS_PAD         0x03
#define DB9_GENESIS5_PAD        0x05
#define DB9_GENESIS6_PAD        0x06
#define DB9_SATURN_PAD          0x07
#define DB9_MULTI_0802          0x08
#define DB9_MULTI_0802_2        0x09
#define DB9_CD32_PAD            0x0A
#define DB9_SATURN_DPP          0x0B
#define DB9_SATURN_DPP_2        0x0C
#define DB9_MAX_PAD             0x0D

こんな感じ。
何と10以降のタイプで
11 サターンDPP
12 サターンDPP 2つ
13 MAX_PAD(これなんでしょうか?マルチタップとか?)
といった、ドキュメントに記載されていない設定があります。
なんじゃそりゃ。

そんなわけで、パーチャスティックプロで1P、2Pとも接続して使うためには、
さっきのモジュールのロード時に

modprobe db9 dev=0,0x0C

としてパラメータを渡すことで、動作します。
簡単に確認するには

jstest /dev/input/js0
jstest /dev/input/js1

でそれぞれ、1P,2Pの動作が確認できると思います。
問題なければ、起動時のオートロードにでも設定しましょう。
gentooの場合は/etc/modules.autoload.d/kernel-2.6に

db9 dev=0,0x0C

を追記するだけでOkです。
こんなところです。では

この記事に対するトラックバック

この記事のトラックバックURL

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する