[joystick]
# joysticktype -- Type of joystick to emulate: auto (default), none,
# 2axis (supports two joysticks,
# 4axis (supports one joystick, first joystick used),
# 4axis_2 (supports one joystick, second joystick used),
# fcs (Thrustmaster), ch (CH Flightstick).
# none disables joystick emulation.
# auto chooses emulation depending on real joystick(s).
# timed -- enable timed intervals for axis. (false is old style behaviour).
# autofire -- continuously fires as long as you keep the button pressed.
# swap34 -- swap the 3rd and the 4th axis. can be useful for certain joysticks
# buttonwrap -- enable button wrapping at the number of emulated buttons.
joysticktype=2axis
timed=true
autofire=false
swap34=false
buttonwrap=true
Code: Select all
DIM JoyX(8)
DIM JoyY(8)
DIM JoyOldX(2)
DIM JoyOldY(2)
DIM Bttn(7)
SCREEN 0
WIDTH 80, 50
COLOR 7, 0
CLS
JoyX(4) = 160
JoyY(4) = 100
JoyX(5) = 160
JoyY(5) = 100
DO
COLOR 15, 7
LOCATE 49, INT((80 - LEN("JOYSTICK TEST")) / 2)
PRINT "JOYSTICK TEST";
JoyX(0) = STICK(0)
JoyY(0) = STICK(1)
JoyX(1) = STICK(2)
JoyY(1) = STICK(3)
FOR z = 0 TO 7
Bttn(z) = STRIG(z)
NEXT z
'range 1 to 200
JoyX(2) = JoyX(0) - 100
JoyY(2) = JoyY(0) - 100
IF JoyX(2) <1> 200 THEN JoyX(2) = 200
IF JoyY(2) <1> 200 THEN JoyY(2) = 200
JoyX(3) = JoyX(1) - 100
JoyY(3) = JoyY(1) - 100
IF JoyX(3) <1> 200 THEN JoyX(3) = 200
IF JoyY(3) <1> 200 THEN JoyY(3) = 200
'do our centering now.
'() JOYSTICK DEMO PROGRAM
'[] measure joysticks normally.
'[] use centering algo.
ScaleX = 40
ScaleY = 40
TempX = INT((JoyX(2) - 100) * (ScaleX / 100))
TempY = INT((JoyY(2) - 100) * (ScaleY / 100))
JoyX(4) = JoyX(4) + TempX
JoyY(4) = JoyY(4) + TempY
TempX = INT((JoyX(3) - 100) * (ScaleX / 100))
TempY = INT((JoyY(3) - 100) * (ScaleY / 100))
JoyX(5) = JoyX(5) + TempX
JoyY(5) = JoyY(5) + TempY
'JoyX(2), JoyY(2), JoyX(3), JoyY(3) = absolute coordinates
'JoyX(4), JoyY(4), JoyX(5), JoyY(5) = relative centering coordinates
IF JoyX(4) <0> 320 THEN JoyX(4) = 320
IF JoyY(4) <0> 200 THEN JoyY(4) = 200
IF JoyX(5) <1> 320 THEN JoyX(5) = 320
IF JoyY(5) <1> 200 THEN JoyY(5) = 200
'[] display graphics
'{} loop until done.
LOCATE 5, 1
FOR z = 0 TO 7
IF Bttn(z) THEN
COLOR 14, 8
ELSE
COLOR 0, 8
END IF
PRINT "#:"; LTRIM$(STR$(z)); " ";
NEXT z
LOCATE INT(JoyY(4) / 200 * 50) MOD 50 + 1, INT(JoyX(4) / 320 * 80) MOD 80 + 1
COLOR 9, 0
PRINT "*";
LOCATE INT(JoyY(5) / 200 * 50) MOD 50 + 1, INT(JoyX(5) / 320 * 80) MOD 80 + 1
COLOR 10, 0
PRINT "*";
LOCATE INT(JoyY(2) / 200 * 50) MOD 50 + 1, INT(JoyX(2) / 200 * 80) MOD 80 + 1
COLOR 11, 0
PRINT "*";
LOCATE INT(JoyY(3) / 200 * 50) MOD 50 + 1, INT(JoyX(3) / 200 * 80) MOD 80 + 1
COLOR 12, 0
PRINT "*";
n = n + 1
n = n MOD 50
IF n = 0 THEN CLS
JoyOldX(0) = JoyX(2)
JoyOldY(0) = JoyY(2)
JoyOldX(1) = JoyX(3)
JoyOldY(1) = JoyY(3)
WHILE TIMER - t < .1: WEND
LOOP UNTIL INKEY$ = CHR$(27)
Second, the source.
~Kiyote!
Let me know what you think.