;---------------------------------------------------------------- ; ジョイスティック入力モジュール MIA 2004 / onitama 2005 ; 使用に関する制限はありません。ご自由にお使いください。 ;---------------------------------------------------------------- #module "joy" #const BORDER_LOW 32768 - 4096 #const BORDER_HIGH 32768 + 4096 #uselib "winmm.dll" #func _joyGetPosEx "joyGetPosEx" int, var #deffunc joyGetPosEx array p1, int p2 p1.15=0:p1=52,255 _joyGetPosEx p2,p1 return #deffunc jstick var p1, int p2 ; jstick 変数,ポート番号 ; (stick命令互換の値を変数に返す) ; jdata.15=0:jdata=52,255 _joyGetPosEx p2,jdata if stat!=0 : p1=0 : return res=(jdata.8)<<4 if jdata.2BORDER_HIGH : res|=4 if jdata.3BORDER_HIGH : res|=8 p1=res return #global ;---------------------------------------------------------------- ; サンプルコード ;---------------------------------------------------------------- ;---------------------------------------------------------------- ; joyGetPosEx data, ポート番号 ; stat = 0 であれば入力は正常です。 ; data.0 = 常に 52 が入ります ; data.1 = 常に 255 が入ります ; data.2 = 第 1 軸の状態(普通のジョイスティックの X 軸) ; data.3 = 第 2 軸の状態(普通のジョイスティックの Y 軸) ; data.4 = 第 3 軸の状態(スロットル等) ; data.5 = 第 4 軸の状態 ; data.6 = 第 5 軸の状態 ; data.7 = 第 6 軸の状態 ; data.8 = ボタンの状態(最大32ボタン) ; data.9 = 同時に押されているボタンの数 ; data.10 = POV スイッチの状態 ; data.11 = 予備情報1 ; data.12 = 予備情報2 ;---------------------------------------------------------------- /* repeat redraw 0 color 255,255,255 : boxf : color 0,0,0 joyGetPosEx data, 0 pos 0,0 : mes "stat = " + stat repeat 13 : mes data.cnt : loop redraw 1 : await 30 loop */