]> 4ch.mooo.com Git - 16.git/blob - src/lib/16_in.h
__seguse.txt added to show _seg usage also OpenVGMFile needs to be ported to 16_snd...
[16.git] / src / lib / 16_in.h
1 //\r
2 //      ID Engine\r
3 //      ID_IN.h - Header file for Input Manager\r
4 //      v1.0d1w\r
5 //      By Jason Blochowiak\r
6 //      Open Watcom port by sparky4\r
7 //\r
8 \r
9 #ifndef __16_IN__\r
10 #define __16_IN__\r
11 \r
12 #include <string.h>\r
13 #include "src/lib/16_head.h"\r
14 #include "src/lib/16_timer.h"\r
15 #ifdef __WATCOMC__      //borland C BCEXMM.EXE\r
16 #include "src/lib/16_dbg.h"\r
17 #include "src/lib/16_spri.h"\r
18 #include "src/lib/16_enti.h"\r
19 #endif\r
20 \r
21 #define KeyInt  9       // The keyboard ISR number\r
22 \r
23 // Stuff for the joystick\r
24 #define JoyScaleMax             32768\r
25 #define JoyScaleShift   8\r
26 #define MaxJoyValue             5000\r
27 \r
28 //#define       MaxPlayers              2//future plans for multiple playable charaters and being able to alternate\r
29 #define MaxKbds         2\r
30 #define MaxJoys         2\r
31 #define NumCodes        128\r
32 \r
33 //typedef       byte            ScanCode;\r
34 #define sc_None                 0\r
35 #define sc_Bad                  0xff\r
36 #define sc_Return               0x1c\r
37 #define sc_Enter                sc_Return\r
38 #define sc_Escape               0x01\r
39 #define sc_Space                0x39\r
40 #define sc_BackSpace    0x0e\r
41 #define sc_Tab                  0x0f\r
42 #define sc_Alt                  0x38\r
43 #define sc_Control              0x1d\r
44 #define sc_CapsLock             0x3a\r
45 #define sc_LShift               0x2a\r
46 #define sc_RShift               0x36\r
47 #define sc_UpArrow              0x48\r
48 #define sc_DownArrow    0x50\r
49 #define sc_LeftArrow    0x4b\r
50 #define sc_RightArrow   0x4d\r
51 #define sc_Insert               0x52\r
52 #define sc_Delete               0x53\r
53 #define sc_Home                 0x47\r
54 #define sc_End                  0x4f\r
55 #define sc_PgUp                 0x49\r
56 #define sc_PgDn                 0x51\r
57 #define sc_F1                   0x3b\r
58 #define sc_F2                   0x3c\r
59 #define sc_F3                   0x3d\r
60 #define sc_F4                   0x3e\r
61 #define sc_F5                   0x3f\r
62 #define sc_F6                   0x40\r
63 #define sc_F7                   0x41\r
64 #define sc_F8                   0x42\r
65 #define sc_F9                   0x43\r
66 #define sc_F10                  0x44\r
67 #define sc_F11                  0x57\r
68 #define sc_F12                  0x59\r
69 \r
70 #define sc_1                    0x02\r
71 #define sc_2                    0x03\r
72 #define sc_3                    0x04\r
73 #define sc_4                    0x05\r
74 #define sc_5                    0x06\r
75 #define sc_6                    0x07\r
76 #define sc_7                    0x08\r
77 #define sc_8                    0x09\r
78 #define sc_9                    0x0a\r
79 #define sc_0                    0x0b\r
80 \r
81 #define sc_A                    0x1e\r
82 #define sc_B                    0x30\r
83 #define sc_C                    0x2e\r
84 #define sc_D                    0x20\r
85 #define sc_E                    0x12\r
86 #define sc_F                    0x21\r
87 #define sc_G                    0x22\r
88 #define sc_H                    0x23\r
89 #define sc_I                    0x17\r
90 #define sc_J                    0x24\r
91 #define sc_K                    0x25\r
92 #define sc_L                    0x26\r
93 #define sc_M                    0x32\r
94 #define sc_N                    0x31\r
95 #define sc_O                    0x18\r
96 #define sc_P                    0x19\r
97 #define sc_Q                    0x10\r
98 #define sc_R                    0x13\r
99 #define sc_S                    0x1f\r
100 #define sc_T                    0x14\r
101 #define sc_U                    0x16\r
102 #define sc_V                    0x2f\r
103 #define sc_W                    0x11\r
104 #define sc_X                    0x2d\r
105 #define sc_Y                    0x15\r
106 #define sc_Z                    0x2c\r
107 \r
108 #define key_None                0\r
109 #define key_Return              0x0d\r
110 #define key_Enter               key_Return\r
111 #define key_Escape              0x1b\r
112 #define key_Space               0x20\r
113 #define key_BackSpace   0x08\r
114 #define key_Tab                 0x09\r
115 #define key_Delete              0x7f\r
116 \r
117 #define key_LSuper                      0x5b\r
118 #define key_RSuper                      0x5c\r
119 #define key_Menu                        0x5d\r
120 \r
121 //      Stuff for the mouse\r
122 #define MReset          0\r
123 #define MButtons        3\r
124 #define MDelta          11\r
125 \r
126 #define MouseInt        0x33\r
127 #ifdef DEMO0\r
128 typedef enum            {\r
129                                                 demo_Off,demo_Record,demo_Playback,demo_PlayDone\r
130                                         } Demo;\r
131 #endif\r
132 //moved to 16_tdef.h\r
133 /*typedef       enum            {\r
134                                                 //ctrl_None,                            // MDM (GAMERS EDGE) - added\r
135                                                 ctrl_Keyboard,\r
136                                                         ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2,\r
137                                                 ctrl_Joystick,\r
138                                                         ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2,\r
139                                                 ctrl_Mouse,\r
140                                         } ControlType;\r
141 typedef enum            {\r
142                                                 motion_Left = -1,motion_Up = -1,\r
143                                                 motion_None = 0,\r
144                                                 motion_Right = 1,motion_Down = 1\r
145                                         } Motion;\r
146 typedef enum            {\r
147                                                 dir_North,//dir_NorthEast,\r
148                                                 dir_West,//dir_Nortinest,\r
149                                                 dir_None,\r
150                                                 dir_East,//,dir_SouthEast,\r
151                                                 dir_South,//dir_Soutinest,\r
152                                         } Direction;\r
153 typedef struct          {\r
154                                                 boolean near    button0,button1,button2,button3;\r
155                                                 int     near            x,y;\r
156                                                 Motion  near    xaxis,yaxis;\r
157                                                 Direction near  dir;\r
158                                         } CursorInfo;\r
159 \r
160 typedef struct          {\r
161                                                 ScanCode near   button0,button1,\r
162                                                                         //upleft,\r
163                                                                         up,\r
164                                                                         down,\r
165                                                                         left,\r
166                                                                         right\r
167                                                                         //upright,\r
168                                                                         //downleft,\r
169                                                                         //,downright\r
170                                                                         ;\r
171                                         } KeyboardDef;\r
172 typedef struct          {\r
173                                                 word    near    joyMinX,joyMinY,\r
174                                                                         threshMinX,threshMinY,\r
175                                                                         threshMaxX,threshMaxY,\r
176                                                                         joyMaxX,joyMaxY,\r
177                                                                         joyMultXL,joyMultYL,\r
178                                                                         joyMultXH,joyMultYH;\r
179                                         } JoystickDef;*/\r
180 \r
181 /*\r
182 =============================================================================\r
183 \r
184                                         GLOBAL VARIABLES\r
185 \r
186 =============================================================================\r
187 */\r
188 #ifdef DEMO0\r
189                 static Demo             DemoMode = demo_Off;\r
190                 static byte /*_seg*/    *DemoBuffer;\r
191                 static word             DemoOffset,DemoSize;\r
192 #endif\r
193 \r
194 //      Internal routines\r
195 extern  void            IN_Startup(void),IN_Shutdown(void),\r
196                                         IN_Default(boolean gotit,player_t *player,ControlType nt),\r
197                                         IN_SetKeyHook(void (*)()),\r
198                                         IN_ClearKeysDown(void),\r
199                                         IN_ReadCursor(CursorInfo *),\r
200                                         IN_ReadControl(player_t *player),\r
201                                         IN_SetControlType(player_t *player,ControlType type),\r
202                                         IN_GetJoyAbs(word joy,word *xp,word *yp),\r
203                                         IN_SetupJoy(word joy,word minx,word maxx,\r
204                                                                 word miny,word maxy),\r
205 #if DEMO0\r
206                                         IN_StopDemo(void),IN_FreeDemoBuffer(void),\r
207 #endif\r
208                                         IN_Ack(void),IN_AckBack(void);\r
209 extern  boolean         IN_UserInput(word delay);\r
210 extern  char            IN_WaitForASCII(void);\r
211 extern  ScanCode        IN_WaitForKey(void);\r
212 extern  word            IN_GetJoyButtonsDB(word joy);\r
213 extern  byte            *IN_GetScanName(ScanCode);\r
214 \r
215 \r
216 byte    IN_MouseButtons (void);\r
217 byte    IN_JoyButtons (void);\r
218 \r
219 void INL_GetJoyDelta(word joy,int *dx,int *dy/*,boolean adaptive*/);\r
220 void IN_StartAck(void);\r
221 boolean IN_CheckAck (void);\r
222 boolean IN_IsUserInput();\r
223 #define Mouse(x)         INL_Mouse(x)\r
224 //void IN_SetKeyHook(void (*hook)());\r
225 #if DEMO0\r
226 boolean IN_StartDemoRecord(word bufsize);\r
227 void IN_StartDemoPlayback(byte *buffer,word bufsize);\r
228 void IN_StopDemo(void);\r
229 void IN_FreeDemoBuffer(void);\r
230 #endif\r
231 \r
232 boolean IN_KeyDown(byte code),\r
233                 IN_qb(byte kee);\r
234 void            IN_ClearKey(byte code),\r
235                 IN_KbdLED();\r
236 ScanCode        IN_GetLastScan(),\r
237                 IN_GetCurCode();\r
238 \r
239 #endif\r