Duplicate file removal.
[btb/d2x.git] / arch / dos / include / joy.h
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
11 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13 /*
14  * $Source: /cvs/cvsroot/d2x/arch/dos/include/joy.h,v $
15  * $Revision: 1.1.1.2 $
16  * $Author: bradleyb $
17  * $Date: 2001-01-19 03:33:52 $
18  *
19  * Headers for joystick functions
20  *
21  * $Log: not supported by cvs2svn $
22  * Revision 1.1.1.1  1999/06/14 22:00:11  donut
23  * Import of d1x 1.37 source.
24  *
25  * Revision 1.17  1995/10/07  13:22:30  john
26  * Added new method of reading joystick that allows higher-priority
27  * interrupts to go off.
28  * 
29  * Revision 1.16  1995/02/14  11:17:13  john
30  * Added BIOS readings for stick.
31  * 
32  * Revision 1.15  1995/02/14  10:09:58  john
33  * Added OS2 switch.
34  * 
35  * Revision 1.14  1994/12/28  13:49:20  john
36  * Added function to set joystick for slow reading
37  * 
38  * Revision 1.13  1994/10/13  11:36:06  john
39  * Made joy_down_time be kept track of in fixed seconds,
40  * not ticks.
41  * 
42  * Revision 1.12  1994/10/12  17:03:16  john
43  * Added prototype for joy_get_scaled_reading.
44  * 
45  * Revision 1.11  1994/10/12  16:57:55  john
46  * Added function to set a joystick button's state.
47  * 
48  * Revision 1.10  1994/09/22  16:09:00  john
49  * Fixed some virtual memory lockdown problems with timer and
50  * joystick.
51  * 
52  * Revision 1.9  1994/08/31  09:54:57  john
53  * *** empty log message ***
54  * 
55  * Revision 1.8  1994/08/29  21:02:24  john
56  * Added joy_set_cal_values...
57  * 
58  * Revision 1.7  1994/08/29  20:51:52  john
59  * Added better cyberman support; also, joystick calibration
60  * value return funcctiionn,
61  * 
62  * Revision 1.6  1994/07/01  10:55:44  john
63  * Fixed some bugs... added support for 4 axis.
64  * 
65  * Revision 1.5  1994/06/30  20:36:51  john
66  * Revamped joystick code.
67  * 
68  * Revision 1.4  1994/04/22  12:52:10  john
69  * *** empty log message ***
70  * 
71  * Revision 1.3  1994/01/18  13:53:39  john
72  * Made all joystick functions return int's instead of
73  * shorts.  Also made the stick reading be CPU speed
74  * independant by using the timer_get_Stamp_64 
75  * function.
76  * 
77  * Revision 1.2  1994/01/18  10:58:42  john
78  * *** empty log message ***
79  * 
80  * Revision 1.1  1993/07/10  13:10:39  matt
81  * Initial revision
82  * 
83  *
84  */
85
86 #ifndef _JOY_H
87 #define _JOY_H
88
89 #include "pstypes.h"
90 #include "fix.h"
91
92 #define JOY_1_BUTTON_A  1
93 #define JOY_1_BUTTON_B  2
94 #define JOY_2_BUTTON_A  4
95 #define JOY_2_BUTTON_B  8
96 #define JOY_ALL_BUTTONS (1+2+4+8)
97
98 #define JOY_1_X_AXIS            1
99 #define JOY_1_Y_AXIS            2
100 #define JOY_2_X_AXIS            4
101 #define JOY_2_Y_AXIS            8
102 #define JOY_ALL_AXIS            (1+2+4+8)
103
104 #define JOY_SLOW_READINGS       1
105 #define JOY_POLLED_READINGS     2
106 #define JOY_BIOS_READINGS       4
107 #define JOY_FRIENDLY_READINGS   8
108
109 #define JOY_NUM_AXES 4
110
111 #define MAX_BUTTONS 20
112 //==========================================================================
113 // This initializes the joy and does a "quick" calibration which
114 // assumes the stick is centered and sets the minimum value to 0 and
115 // the maximum value to 2 times the centered reading. Returns 0 if no
116 // joystick was detected, 1 if everything is ok.
117 // joy_init() is called.
118
119 extern int joy_init();
120 extern void joy_close();
121
122 extern char joy_installed;
123 extern char joy_present;
124
125 //==========================================================================
126 // The following 3 routines can be used to zero in on better joy
127 // calibration factors. To use them, ask the user to hold the stick
128 // in either the upper left, lower right, or center and then have them
129 // press a key or button and then call the appropriate one of these
130 // routines, and it will read the stick and update the calibration factors.
131 // Usually, assuming that the stick was centered when joy_init was
132 // called, you really only need to call joy_set_lr, since the upper
133 // left position is usually always 0,0 on most joys.  But, the safest
134 // bet is to do all three, or let the user choose which ones to set.
135
136 extern void joy_set_ul();
137 extern void joy_set_lr();
138 extern void joy_set_cen();
139
140
141 //==========================================================================
142 // This reads the joystick. X and Y will be between -128 and 127.
143 // Takes about 1 millisecond in the worst case when the stick
144 // is in the lower right hand corner. Always returns 0,0 if no stick
145 // is present.
146
147 extern void joy_get_pos( int *x, int *y );
148
149 //==========================================================================
150 // This just reads the buttons and returns their status.  When bit 0
151 // is 1, button 1 is pressed, when bit 1 is 1, button 2 is pressed.
152 extern int joy_get_btns();
153
154 //==========================================================================
155 // This returns the number of times a button went either down or up since
156 // the last call to this function.
157 extern int joy_get_button_up_cnt( int btn );
158 extern int joy_get_button_down_cnt( int btn );
159
160 //==========================================================================
161 // This returns how long (in approximate milliseconds) that each of the
162 // buttons has been held down since the last call to this function.
163 // It is the total time... say you pressed it down for 3 ticks, released
164 // it, and held it down for 6 more ticks. The time returned would be 9.
165 extern fix joy_get_button_down_time( int btn );
166
167 extern ubyte joy_read_raw_buttons();
168 extern ubyte joystick_read_raw_axis( ubyte mask, int * axis );
169 extern void joy_flush();
170 extern ubyte joy_get_present_mask();
171 extern void joy_set_timer_rate(int max_value );
172 extern int joy_get_timer_rate();
173
174 extern int joy_get_button_state( int btn );
175 extern void joy_set_cen_fake(int channel);
176 extern ubyte joy_read_stick( ubyte masks, int *axis );
177 extern void joy_get_cal_vals(int *axis_min, int *axis_center, int *axis_max);
178 extern void joy_set_cal_vals(int *axis_min, int *axis_center, int *axis_max);
179 extern void joy_set_btn_values( int btn, int state, fix timedown, int downcount, int upcount );
180 extern int joy_get_scaled_reading( int raw, int axn );
181 extern void joy_set_slow_reading( int flag );
182
183
184 extern int JOY_PORT;
185
186 extern int joy_deadzone;
187 #endif
188