Re: Xbox360用アーケードスティックの認識について ( No.1 ) |
- 名前:Mやん 日時:2012/11/10 11:56
正確でない部分があったので追記します。
1についてですが、よくよく調べてみるとDxLib_Init()の前でSetUseDirectInputFlag()をFALSEに設定するだけで常に16になってしまうようです。
他のスレッドなどを拝見したところVISTA以降ではデフォルトでFALSEになっているとのことでしたが、当該アーケードスティックがデフォルトやTRUEの
呼び出しでは認識されなかったため明示的にFALSEで呼び出すようにしています。
ここがまずかったりするのでしょうか…
あと関係あるかわかりませんがSetUseDirectInputFlag()をFALSEに設定した場合、実際に存在しないコントローラー番号に対して
GetJoypadInputState()やGetJoypadDirectInputState()を呼び出すとかなりの処理負荷がかかるみたいです。
|
Re: Xbox360用アーケードスティックの認識について ( No.2 ) |
- 名前:管理人 日時:2012/11/10 17:18
すみません、Vista以降でデフォルトで DirectInput を使用しないのはキーボードのみでした
なので Vista以降でもキーボード以外はデフォルトでは DirectInput を使用しようとします
SetUseDirectInputFlag( FALSE ) の際に GetJoypadNum の戻り値が必ず 16 になってしまう原因と
存在しないコントローラー番号に対して GetJoypadInputState などの入力取得関数を使用すると
処理負荷が高くなる原因は分かり、修正できました( 両方とも同じ原因でした )
ただ、XとYが常に-1000が入ってしまう原因と、DirectInput を使用した際に
アーケードスティックが認識されない原因は分かりません・・・
よろしければデフォルト設定で起動した際の、実行時に作成されるログファイル( Log.txt )の内容を
こちらの掲示板に貼り付けて頂けないでしょうか?
あと、とりあえず GetJoypadNum の戻り値を修正したバージョンをこちらにアップしましたので
よろしければお試しになってみてください m(_ _;m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|
Re: Xbox360用アーケードスティックの認識について ( No.3 ) |
- 名前:Mやん 日時:2012/11/10 19:40
早速の対応ありがとうございます。
修正版でデフォルト設定のログが以下になります。
0:システムの情報を出力します
0: DXライブラリ Ver3.08f
1: 論理プロセッサの数 : 8
1: OS Windows ( Build 9200 )
101: CPU動作速度:大体2.78GHz
101: MMX命令を使用します
101: SSE命令が使用可能です
101: SSE2命令が使用可能です
102: CPUベンダ:GenuineIntel
103: CPU名:Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz
103:COMの初期化... 成功しました
103:メモリ総量:4096.00MB 空きメモリ領域:4096.00MB
103:タイマーの精度を検査します
104:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
104: パフォーマンスカウンターを使用します タイマー精度 : 2732.431000 KHz
104: ソフトの二重起動検査... 二重起動はされていませんでした
105:ウインドウクラスを登録します... 登録に成功しました
105:ウインドウモード起動用のウインドウを作成します
106:ウインドウの作成に成功しました
107:ウインドウを表示します
110:IMEを無効にしました
110:ウインドウスタイルをウインドウモード用に変更します... 完了
130:DirectInput関係初期化処理
130: DirectInput7 の取得中... 成功
140: 引き続き初期化処理... 初期化成功
141: ジョイパッドの初期化...
149: 入力装置を見つけました
149: デバイスの登録名:Arcade Stick (REAL ARCADE Pro.VX)
150: デバイスの製品登録名:Arcade Stick (REAL ARCADE Pro.VX)
150: ジョイパッドデバイスのX軸関係の設定に失敗しました
150: ジョイパッドの初期化は正常に終了しました
150: マウスデバイスの初期化... 初期化成功
151: キーボードデバイスの初期化... 初期化成功
152:DirectInput 関連の初期化は正常に終了しました
152:DirectSound の初期化を行います
153:DirectSound インターフェースの取得を行います.... 成功
154:引き続きインターフェースの初期化処理... 成功
201: DirectSound デバイスを列挙します
202: モジュール名: ドライバ記述:プライマリ サウンド ドライバー
202: モジュール名:{0.0.0.00000000}.{53a6ea9f-c514-44cc-95ac-5f3f7dd37a9a} ドライバ記述:SPDIF インターフェイス (Kripton USB Audio)
202: モジュール名:{0.0.0.00000000}.{4c4cbcd4-d964-4c25-80b5-a4a72d484b23} ドライバ記述:AMD HDMI Output (AMD High Definition Audio Device)
202: モジュール名:{0.0.0.00000000}.{a61b684e-ac7b-4843-824a-fbbc8e631be2} ドライバ記述:デジタル オーディオ (S/PDIF) (High Definition Audio デバイス)
203: モジュール名:{0.0.0.00000000}.{b22d1eb4-8aea-4a31-82bc-2990e18588fe} ドライバ記述:スピーカー (Envy24 Family Audio Controller WDM)
203: モジュール名:{0.0.0.00000000}.{b7a3bdc4-5ea4-4513-be88-037d1390e8bd} ドライバ記述:デジタル オーディオ (S/PDIF) (Envy24 Family Audio Controller WDM)
203: モジュール名:{0.0.0.00000000}.{cf09402f-d681-415a-921b-5ce92ef48135} ドライバ記述:デジタル オーディオ (S/PDIF) (High Definition Audio デバイス)
203: モジュール名:{0.0.0.00000000}.{f03f4687-131f-470f-b274-bb6fc3de77a9} ドライバ記述:スピーカー (High Definition Audio デバイス)
204: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz
204: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB
204: 利用可能サンプリング精度
204: プライマリ 16bit = OK 8bit = OK
205: セカンダリ 16bit = OK 8bit = OK
205: 利用可能チャンネル
205: プライマリ MONO = OK STEREO = OK
205: セカンダリ MONO = OK STEREO = OK
206:DirectSound の初期化は正常に終了しました
207:DirectDraw オブジェクトの取得を行います.... 成功
209:引き続き初期化処理... 初期化に成功しました
319:IDirect3D9Ex オブジェクトを取得します.... 成功
333:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
665:成功
666:Driver:aticfx32.dll Description:ATI Radeon HD 5800 Series
666:画面のフォーマットは D3DFMT_X8R8G8B8 です
666:Zバッファのフォーマットは D3DFMT_D16 です
667:16bit カラーフォーマットは D3DFMT_R5G6B5 です
667:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
667:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です
667:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
668:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です
668:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
668:DXT1テクスチャフォーマットはD3DFMT_DXT1 です
668:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
669:DXT3テクスチャフォーマットはD3DFMT_DXT3 です
669:DXT4テクスチャフォーマットはD3DFMT_DXT4 です
669:DXT5テクスチャフォーマットはD3DFMT_DXT5 です
670:描画用 16bit カラーフォーマットは D3DFMT_R5G5B5 です
670:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
670:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
670:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です
671:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です
671:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です
671:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です
671:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です
672:描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です
672:描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です
672:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です
672:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です
673:描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です
673:描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です
673:一度に描画できるプリミティブの最大数:5592405
673:対応している最大頂点インデックス:16777215
674:同時にレンダリングできるバッファの数:4
674:最大テクスチャサイズ 幅:16384 高さ:16384
674:テクスチャステージテンポラリレジスタ:使用可
674:減算合成のハードウェア対応:ネイティブ
675:ハードウェア頂点シェーダーバージョンコード:300
675:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し
675:ピクセルシェーダーバージョンコード:300
734:バックバッファロック転送の時間:16665nsec 一時的な描画可能バッファを使用した転送の時間:696nsec
734:バックバッファロックを使用しません
734:Zバッファを作成します.... 成功
744:プログラマブルシェーダーを使用します
812:フォントの初期化を行います
813:フォントの初期化は正常に終了しました
820:文字コードバッファの初期化を行います... 完了しました
2417:フォントの初期化を行います
2418:フォントの初期化は正常に終了しました
2420:Direct3DDevice9 の解放 2
2469:Direct3D9 DLL の解放 1
2470:DirectInput 関連の終了処理... 完了
2503:DirectSound の終了処理は正常に終了しました
2503:ウインドウを閉じようとしています
2504:ウインドウが破棄されようとしています
2504:ソフトを終了する準備が整いました
2570:
2570:Alloc memory dump
2570: Total size:0(0.000kb) Alloc num:0
2570:
他に気を回しすぎてログ確認はうっかりしてました^^;
それらしき出力がありますね・・
|
Re: Xbox360用アーケードスティックの認識について ( No.4 ) |
- 名前:管理人 日時:2012/11/10 22:12
ログを貼り付けて頂きありがとうございます
お気づきの通り設定に失敗しているみたいです
ただ、ログにある設定は一応しなくても動作させることはできるのですが、
そもそも設定をしなければ正常に動作するのかどうかを確かめなければならないので、
お手数で申し訳ありませんがログにある設定を行わないようにしたこちらのバージョンで
再度 GetJoypadDirectInputState の数値を確認して頂けないでしょうか?
( DirectInput を ON にした状態で・・・ )
https://dxlib.xsrv.jp/file/DxLibDotNetPADTest.zip
もしこれでレバーの方向に従って値がちゃんと変化してくれるのでしたら、
エラーの原因となった設定を行わないで情報を取得するように処理を変更したいと思います
|
Re: Xbox360用アーケードスティックの認識について ( No.5 ) |
- 名前:Mやん 日時:2012/11/10 22:38
上記パージョンで GetJoypadDirectInputState を呼び出したところ DINPUT_JOYSTATE.POV0 の値が変化(未入力+8方向)するのが確認できました!
これで行けそうです。
|
Re: Xbox360用アーケードスティックの認識について ( No.6 ) |
- 名前:管理人 日時:2012/11/11 01:19
なるほど、X軸、Y軸が無いから設定が失敗していたようです
軸に対する設定が失敗してもそのパッドを扱うことを放棄しないように処理を変更しましたので、
もしアーケードスティック以外のパッドも対応されるご予定でしたらこちらをお使いください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip
|
Re: Xbox360用アーケードスティックの認識について ( No.7 ) |
- 名前:Mやん(解決) 日時:2012/11/11 02:23
最新バージョンでアーケードスティックとPSコントローラー両方の入力を正常に取得できるのを確認しました。
お忙しい中での対応本当にありがとうございました。
|