HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0903
ZAPジョイパッドのハットスイッチの有無の判定2解決


ZAP

リンク

2016/9/3(Sat) 09:39:09|NO.76778

mod_joystick.asを自分でカスタマイズしたモジュールで
ジョイパッドを使用するプログラムを組んでいるのですが、
最近のジョイパッドは十字キーがアナログレバーではなく
POV(ハットスイッチ)に割り当てられているものもあります。

上記モジュールではPOVの入力を取得できないため、
POV入力を取得する部分を追加し、アナログ入力による
十字キー判定と合成して、POV、アナログ、どちらでも
十字キーとして使用できるようにしたいと考えています。


jdata(15)=0 :jdata=52,255 _joyGetPosEx p2,jdata if stat!=0 : p1=0 : return ;ボタン情報取り出し res=(jdata(8))<<4 ;スティック情報取り出し(アナログ → 十字キー) if jdata(2)<BORDER_LOW : res|=1 ;左 if jdata(2)>BORDER_HIGH : res|=4 ;右 if jdata(3)<BORDER_LOW : res|=2 ;上 if jdata(3)>BORDER_HIGH : res|=8 ;下 ;スティック情報取り出し(POV → 十字キー) if UsePovFlag { pov = jdata(10) if (pov & 0xFFFF)!0xFFFF { ; なにか押されていた場合の処理 ;povは何も押されていない場合、環境によって-1を帰す場合と、0xFFFFを帰す場合があります。 ;↑方向を 0度とした角度[deg]を返します。 ;値は100倍されたものを返します。右回り正。 ;→方向は 9000 ;↓方向は18000 ;←方向は27000 ;↑+→方向は4500となります。 if (pov=31500)|(pov= 0)|(pov= 4500) : res|=2 ;上 if (pov= 4500)|(pov= 9000)|(pov=13500) : res|=4 ;右 if (pov=13500)|(pov=18000)|(pov=22500) : res|=8 ;下 if (pov=22500)|(pov=27000)|(pov=31500) : res|=1 ;左 } } p1=res;アナログキーとPOVを合成した戻り値

しかし上記の方法だと、そもそもPOVがついていないジョイパッドを
接続した場合、上方向が入りっぱなしになってしまうのです。

ユーザー側に設定させることも選択肢の一つですが、できることなら
プログラム側でハットスイッチの有無を検出し、ついていない
場合はPOV入力を取らないようにしたいのですが、可能でしょうか?



この記事に返信する


GENKI

リンク

2016/9/3(Sat) 12:45:00|NO.76779

どうぞ。

PAD設定さん
http://mclab.uunyan.com/dl/dl11.htm

> 上方向が入りっぱなしになってしまうのです。
機種によって出たり出なかったりするようです。
対処済み。



ZAP

リンク

2016/9/3(Sat) 18:06:22|NO.76782

>GENKIさん

「PAD設定さん」拝見しました。

JStickGetDevCaps関数の戻り値でハットスイッチの有無が判るのですね。

最初にこれでスティックIDごとに有無を調べておけば
ユーザーに設定してもらう必要もないですね!

参考になりました。ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.