2009年9月24日木曜日

大胸筋強制サポーター

 ゲームパッド部分のプログラムを見直してみてる。


↑入りっぱなし状態になってしまって
ゲームできない・・・


って書き込みが某所にあって気になってたので。

 今のところ詳細な原因不明だけど、スティックの中央値を0x8000に固定してるのが原因かなと踏んでる。ちょっと調べなおしてみたところ(wXmax-wXmin)/2あたりを中央値としたほうがよさげ。そこからスティックの遊び値を計算に入れればOKっぽい。
 自分の環境ではwXmaxは65535, wXminは0なので中央値は(0xFFFF - 0x0000)/2 = 0x7FFFで、1しか差がないので問題ないといえばない。

 joyGetThreshold 関数
http://msdn.microsoft.com/ja-jp/library/cc410477.aspx

の解説に、


移動しきい値は、デバイスをキャプチャしたウィンドウに WM_JOYMOVE メッセージが送信される前に、ジョイスティックを動かさなければならない距離です。しきい値の初期値は 0 です。


とあり、キャプチャして使用している場合にのみ使う関数のような気がする。いままで遊び値を取得するのに使っていたが大きな間違いで、おそらく自分で設定しない限りは0が帰るんじゃないかと。遊びを取得する関数がないかと探してみたが見つからない。ないのかな? 

 それはそれとして、メモリの無駄遣いがひどいので修正じゃ!

 ゲームパッドのパラメータ取得には以下の関数を使用しています。
joyGetPosEx
joyGetThreshold
joyGetNumDevs
joyGetDevCaps
 検索助長なのか検索妨害なのか微妙なところ。DirectX使わなくてパッドを使用可能に出来るから、みんなゲーム作るときは組み込んでね、というおはなしじゃったんじゃ。結構「パッドが使えれば」って書き込みを某所でよく見るので。

0 件のコメント: