渡辺様

武井です。情報ありがとうございます。

WATANABE Kazuhiro さんは書きました:
> 渡辺一寛です。
> 遅いフォローですが。
> ジョイスティックですが、サウンドカードのドライバのソースをちょっと
> いじれば、標準の joy(4) ドライバで動作するようになると思います。
>
> 手持ちの Avance Logic ALS4000 の載った古い PCI サウンドカードと
> 7.3-RELEASE で試してみましたが、snd_als4000(4) ドライバで
>
> (1) ジョイスティックの I/O ポートアドレスを設定 (0x200)
> (2) ジョイスティックポートを有効にする
>
> 具体的には以下のようにしました (ちょっと乱暴なコードですが):
>
> --- sys/dev/sound/pci/als4000.c.orig    2010-02-10 09:26:20.000000000 +0900
> +++ sys/dev/sound/pci/als4000.c 2011-01-18 20:33:59.000000000 +0900
> @@ -700,6 +700,9 @@ als_init(struct sc_info *sc)
>                 als_gcr_wr(sc, i, 0);
>         }
>  
> +       /* Enable gameport @ 0x200 */
> +       als_gcr_wr(sc, 0xa8, 1 << 16 | 0x200 << 16);
> +
>         /* Emulation mode */
>         v = als_gcr_rd(sc, ALS_GCR_DMA_EMULATION);
>         als_gcr_wr(sc, ALS_GCR_DMA_EMULATION, v);
>
> あとは joy(4) のマニュアルに沿って /boot/device.hints に記述を加え、
> joy(4) ドライバをロードすることで無事動作しました。
>
>  # dmesg | egrep '^(pcm|joy)'
>  pcm0: <Avance Logic ALS4000> port 0xd400-0xd47f irq 9 at device 9.0 on pci0
>  pcm0: [ITHREAD]
>  joy0 at port 0x201 on isa0
>  joy1 at port 0x201 on isa0
>  # perl -e 
> 'open(JOY,"/dev/joy0")||die;while(1){sysread(JOY,$x,16);@j=unpack("iiii",$x);print
>  "@j\n";sleep(1);}'
>  470 446 0 0
>  470 18 0 0   十字キー上
>  469 19 0 0   十字キー上
>  466 873 0 0  十字キー下
>  467 872 0 0  十字キー下
>  468 442 1 0  Aボタン
>  471 445 0 1  Bボタン
>  468 445 0 0
>  ^C# 
>
>
> YMF744 の場合、データシートをちょろっと眺めた限りでは I/O ポートアドレ
> スを設定するだけでいけるような気もします。場合によってはポートを明示的
> に有効にする必要もあるかも知れません。
>
> ALSA (http://www.alsa-project.org/) のソースコードを参考に、
> いじってみたらどうでしょう。
> YMF744 のデータシートはこのへん↓にあります (ALSA の古いミラー)。
> http://alsa.cybermirror.org/manuals/yamaha/
>   
カードの初期化時にゲームポートのイネーブルとアドレス設定を行うと
動作するとのことで、早速ためしてみたいと思います。進展がれば
報告します。ありがとうございました。
>
> MIDI 方面はよく知らないです。最近のリリースでも USB-MIDI アダプタを含
> めて「ものによっては動く」という感じ (?) ですが、4.11-RELEASE だとどう
> なんでしょうねぇ。
>   
> ---
> WATANABE Kazuhiro (cqg00...@nifty.ne.jp)
>
>   


-- 
武井 潤
ta...@sophia-systems.co.jp


メールによる返信