1 /*         ______   ___    ___
2  *        /\  _  \ /\_ \  /\_ \
3  *        \ \ \L\ \\//\ \ \//\ \      __     __   _ __   ___
4  *         \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `\/\`'__\/ __`\
5  *          \ \ \/\ \ \_\ \_ \_\ \_/\  __//\ \L\ \ \ \//\ \L\ \
6  *           \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
7  *            \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
8  *                                           /\____/
9  *                                           \_/__/
10  *
11  *      DOS-specific header defines.
12  *
13  *      By Shawn Hargreaves.
14  *
15  *      See readme.txt for copyright information.
16  */
17 
18 
19 #ifndef ALLEGRO_DOS
20    #error bad include
21 #endif
22 
23 
24 /********************************************/
25 /************ Platform-specifics ************/
26 /********************************************/
27 
28 #define SYSTEM_DOS               AL_ID('D','O','S',' ')
29 
30 AL_VAR(SYSTEM_DRIVER, system_dos);
31 
32 AL_VAR(int, i_love_bill);
33 
34 
35 #define KEYDRV_PCDOS             AL_ID('P','C','K','B')
36 
37 AL_VAR(KEYBOARD_DRIVER, keydrv_pcdos);
38 
39 
40 #define TIMEDRV_FIXED_RATE       AL_ID('F','I','X','T')
41 #define TIMEDRV_VARIABLE_RATE    AL_ID('V','A','R','T')
42 
43 AL_VAR(TIMER_DRIVER, timedrv_fixed_rate);
44 AL_VAR(TIMER_DRIVER, timedrv_variable_rate);
45 
46 
47 #define MOUSEDRV_MICKEYS         AL_ID('M','I','C','K')
48 #define MOUSEDRV_INT33           AL_ID('I','3','3',' ')
49 #define MOUSEDRV_POLLING         AL_ID('P','O','L','L')
50 #define MOUSEDRV_WINNT           AL_ID('W','N','T',' ')
51 #define MOUSEDRV_WIN2K           AL_ID('W','2','K',' ')
52 
53 AL_VAR(MOUSE_DRIVER, mousedrv_mickeys);
54 AL_VAR(MOUSE_DRIVER, mousedrv_int33);
55 AL_VAR(MOUSE_DRIVER, mousedrv_polling);
56 AL_VAR(MOUSE_DRIVER, mousedrv_winnt);
57 AL_VAR(MOUSE_DRIVER, mousedrv_win2k);
58 
59 
60 
61 /*******************************************/
62 /************ Joystick routines ************/
63 /*******************************************/
64 
65 #define JOY_TYPE_STANDARD        AL_ID('S','T','D',' ')
66 #define JOY_TYPE_2PADS           AL_ID('2','P','A','D')
67 #define JOY_TYPE_4BUTTON         AL_ID('4','B','U','T')
68 #define JOY_TYPE_6BUTTON         AL_ID('6','B','U','T')
69 #define JOY_TYPE_8BUTTON         AL_ID('8','B','U','T')
70 #define JOY_TYPE_FSPRO           AL_ID('F','P','R','O')
71 #define JOY_TYPE_WINGEX          AL_ID('W','I','N','G')
72 #define JOY_TYPE_SIDEWINDER      AL_ID('S','W',' ',' ')
73 #define JOY_TYPE_SIDEWINDER_AG   AL_ID('S','W','A','G')
74 #define JOY_TYPE_SIDEWINDER_PP   AL_ID('S','W','P','P')
75 #define JOY_TYPE_GAMEPAD_PRO     AL_ID('G','P','R','O')
76 #define JOY_TYPE_GRIP            AL_ID('G','R','I','P')
77 #define JOY_TYPE_GRIP4           AL_ID('G','R','I','4')
78 #define JOY_TYPE_SNESPAD_LPT1    AL_ID('S','N','E','1')
79 #define JOY_TYPE_SNESPAD_LPT2    AL_ID('S','N','E','2')
80 #define JOY_TYPE_SNESPAD_LPT3    AL_ID('S','N','E','3')
81 #define JOY_TYPE_PSXPAD_LPT1     AL_ID('P','S','X','1')
82 #define JOY_TYPE_PSXPAD_LPT2     AL_ID('P','S','X','2')
83 #define JOY_TYPE_PSXPAD_LPT3     AL_ID('P','S','X','3')
84 #define JOY_TYPE_N64PAD_LPT1     AL_ID('N','6','4','1')
85 #define JOY_TYPE_N64PAD_LPT2     AL_ID('N','6','4','2')
86 #define JOY_TYPE_N64PAD_LPT3     AL_ID('N','6','4','3')
87 #define JOY_TYPE_DB9_LPT1        AL_ID('D','B','9','1')
88 #define JOY_TYPE_DB9_LPT2        AL_ID('D','B','9','2')
89 #define JOY_TYPE_DB9_LPT3        AL_ID('D','B','9','3')
90 #define JOY_TYPE_TURBOGRAFX_LPT1 AL_ID('T','G','X','1')
91 #define JOY_TYPE_TURBOGRAFX_LPT2 AL_ID('T','G','X','2')
92 #define JOY_TYPE_TURBOGRAFX_LPT3 AL_ID('T','G','X','3')
93 #define JOY_TYPE_IFSEGA_ISA      AL_ID('S','E','G','I')
94 #define JOY_TYPE_IFSEGA_PCI      AL_ID('S','E','G','P')
95 #define JOY_TYPE_IFSEGA_PCI_FAST AL_ID('S','G','P','F')
96 #define JOY_TYPE_WINGWARRIOR     AL_ID('W','W','A','R')
97 
98 
99 AL_VAR(JOYSTICK_DRIVER, joystick_standard);
100 AL_VAR(JOYSTICK_DRIVER, joystick_2pads);
101 AL_VAR(JOYSTICK_DRIVER, joystick_4button);
102 AL_VAR(JOYSTICK_DRIVER, joystick_6button);
103 AL_VAR(JOYSTICK_DRIVER, joystick_8button);
104 AL_VAR(JOYSTICK_DRIVER, joystick_fspro);
105 AL_VAR(JOYSTICK_DRIVER, joystick_wingex);
106 AL_VAR(JOYSTICK_DRIVER, joystick_sw);
107 AL_VAR(JOYSTICK_DRIVER, joystick_sw_ag);
108 AL_VAR(JOYSTICK_DRIVER, joystick_sw_pp);
109 AL_VAR(JOYSTICK_DRIVER, joystick_gpro);
110 AL_VAR(JOYSTICK_DRIVER, joystick_grip);
111 AL_VAR(JOYSTICK_DRIVER, joystick_grip4);
112 AL_VAR(JOYSTICK_DRIVER, joystick_sp1);
113 AL_VAR(JOYSTICK_DRIVER, joystick_sp2);
114 AL_VAR(JOYSTICK_DRIVER, joystick_sp3);
115 AL_VAR(JOYSTICK_DRIVER, joystick_psx1);
116 AL_VAR(JOYSTICK_DRIVER, joystick_psx2);
117 AL_VAR(JOYSTICK_DRIVER, joystick_psx3);
118 AL_VAR(JOYSTICK_DRIVER, joystick_n641);
119 AL_VAR(JOYSTICK_DRIVER, joystick_n642);
120 AL_VAR(JOYSTICK_DRIVER, joystick_n643);
121 AL_VAR(JOYSTICK_DRIVER, joystick_db91);
122 AL_VAR(JOYSTICK_DRIVER, joystick_db92);
123 AL_VAR(JOYSTICK_DRIVER, joystick_db93);
124 AL_VAR(JOYSTICK_DRIVER, joystick_tgx1);
125 AL_VAR(JOYSTICK_DRIVER, joystick_tgx2);
126 AL_VAR(JOYSTICK_DRIVER, joystick_tgx3);
127 AL_VAR(JOYSTICK_DRIVER, joystick_sg1);
128 AL_VAR(JOYSTICK_DRIVER, joystick_sg2);
129 AL_VAR(JOYSTICK_DRIVER, joystick_sg2f);
130 AL_VAR(JOYSTICK_DRIVER, joystick_ww);
131 
132 
133 #define JOYSTICK_DRIVER_STANDARD                                  \
134       { JOY_TYPE_STANDARD,       &joystick_standard,  TRUE  },    \
135       { JOY_TYPE_2PADS,          &joystick_2pads,     FALSE },    \
136       { JOY_TYPE_4BUTTON,        &joystick_4button,   FALSE },    \
137       { JOY_TYPE_6BUTTON,        &joystick_6button,   FALSE },    \
138       { JOY_TYPE_8BUTTON,        &joystick_8button,   FALSE },    \
139       { JOY_TYPE_FSPRO,          &joystick_fspro,     FALSE },    \
140       { JOY_TYPE_WINGEX,         &joystick_wingex,    FALSE },
141 
142 #define JOYSTICK_DRIVER_SIDEWINDER                                \
143       { JOY_TYPE_SIDEWINDER,     &joystick_sw,        TRUE  },    \
144       { JOY_TYPE_SIDEWINDER_AG,  &joystick_sw_ag,     TRUE  },    \
145       { JOY_TYPE_SIDEWINDER_PP,  &joystick_sw_pp,     TRUE  },
146 
147 #define JOYSTICK_DRIVER_GAMEPAD_PRO                               \
148       { JOY_TYPE_GAMEPAD_PRO,    &joystick_gpro,      TRUE  },
149 
150 #define JOYSTICK_DRIVER_GRIP                                      \
151       { JOY_TYPE_GRIP,           &joystick_grip,      TRUE  },    \
152       { JOY_TYPE_GRIP4,          &joystick_grip4,     TRUE  },
153 
154 #define JOYSTICK_DRIVER_SNESPAD                                   \
155       { JOY_TYPE_SNESPAD_LPT1,   &joystick_sp1,       FALSE },    \
156       { JOY_TYPE_SNESPAD_LPT2,   &joystick_sp2,       FALSE },    \
157       { JOY_TYPE_SNESPAD_LPT3,   &joystick_sp3,       FALSE },
158 
159 #define JOYSTICK_DRIVER_PSXPAD                                    \
160       { JOY_TYPE_PSXPAD_LPT1,    &joystick_psx1,      FALSE },    \
161       { JOY_TYPE_PSXPAD_LPT2,    &joystick_psx2,      FALSE },    \
162       { JOY_TYPE_PSXPAD_LPT3,    &joystick_psx3,      FALSE },
163 
164 #define JOYSTICK_DRIVER_N64PAD                                    \
165       { JOY_TYPE_N64PAD_LPT1,    &joystick_n641,      FALSE },    \
166       { JOY_TYPE_N64PAD_LPT2,    &joystick_n642,      FALSE },    \
167       { JOY_TYPE_N64PAD_LPT3,    &joystick_n643,      FALSE },
168 
169 #define JOYSTICK_DRIVER_DB9                                       \
170       { JOY_TYPE_DB9_LPT1,       &joystick_db91,      FALSE },    \
171       { JOY_TYPE_DB9_LPT2,       &joystick_db92,      FALSE },    \
172       { JOY_TYPE_DB9_LPT3,       &joystick_db93,      FALSE },
173 
174 #define JOYSTICK_DRIVER_TURBOGRAFX                                \
175       { JOY_TYPE_TURBOGRAFX_LPT1,&joystick_tgx1,      FALSE },    \
176       { JOY_TYPE_TURBOGRAFX_LPT2,&joystick_tgx2,      FALSE },    \
177       { JOY_TYPE_TURBOGRAFX_LPT3,&joystick_tgx3,      FALSE },
178 
179 #define JOYSTICK_DRIVER_IFSEGA_ISA                                \
180       { JOY_TYPE_IFSEGA_ISA,     &joystick_sg1,       FALSE },
181 
182 #define JOYSTICK_DRIVER_IFSEGA_PCI                                \
183       { JOY_TYPE_IFSEGA_PCI,     &joystick_sg2,       FALSE },
184 
185 #define JOYSTICK_DRIVER_IFSEGA_PCI_FAST                           \
186       { JOY_TYPE_IFSEGA_PCI_FAST,&joystick_sg2f,      FALSE },
187 
188 #define JOYSTICK_DRIVER_WINGWARRIOR                               \
189       { JOY_TYPE_WINGWARRIOR,    &joystick_ww,        TRUE  },
190 
191 
192 #define joy_FSPRO_trigger     joy_b1
193 #define joy_FSPRO_butleft     joy_b2
194 #define joy_FSPRO_butright    joy_b3
195 #define joy_FSPRO_butmiddle   joy_b4
196 
197 #define joy_WINGEX_trigger    joy_b1
198 #define joy_WINGEX_buttop     joy_b2
199 #define joy_WINGEX_butthumb   joy_b3
200 #define joy_WINGEX_butmiddle  joy_b4
201 
202 
203 AL_FUNC(int, calibrate_joystick_tl, (void));
204 AL_FUNC(int, calibrate_joystick_br, (void));
205 AL_FUNC(int, calibrate_joystick_throttle_min, (void));
206 AL_FUNC(int, calibrate_joystick_throttle_max, (void));
207 AL_FUNC(int, calibrate_joystick_hat, (int direction));
208 
209 
210 
211 /*******************************************/
212 /************ Graphics routines ************/
213 /*******************************************/
214 
215 #define ALLEGRO_GFX_HAS_VGA
216 #define ALLEGRO_GFX_HAS_VBEAF
217 
218 #define GFX_VGA                  AL_ID('V','G','A',' ')
219 #define GFX_MODEX                AL_ID('M','O','D','X')
220 #define GFX_VESA1                AL_ID('V','B','E','1')
221 #define GFX_VESA2B               AL_ID('V','B','2','B')
222 #define GFX_VESA2L               AL_ID('V','B','2','L')
223 #define GFX_VESA3                AL_ID('V','B','E','3')
224 #define GFX_VBEAF                AL_ID('V','B','A','F')
225 #define GFX_XTENDED              AL_ID('X','T','N','D')
226 
227 AL_VAR(GFX_DRIVER, gfx_vga);
228 AL_VAR(GFX_DRIVER, gfx_modex);
229 AL_VAR(GFX_DRIVER, gfx_vesa_1);
230 AL_VAR(GFX_DRIVER, gfx_vesa_2b);
231 AL_VAR(GFX_DRIVER, gfx_vesa_2l);
232 AL_VAR(GFX_DRIVER, gfx_vesa_3);
233 AL_VAR(GFX_DRIVER, gfx_vbeaf);
234 AL_VAR(GFX_DRIVER, gfx_xtended);
235 
236 
237 #define GFX_DRIVER_VGA                                            \
238    {  GFX_VGA,          &gfx_vga,            TRUE  },
239 
240 #define GFX_DRIVER_MODEX                                          \
241    {  GFX_MODEX,        &gfx_modex,          TRUE  },
242 
243 #define GFX_DRIVER_VBEAF                                          \
244    {  GFX_VBEAF,        &gfx_vbeaf,          TRUE   },
245 
246 #define GFX_DRIVER_VESA3                                          \
247    {  GFX_VESA3,        &gfx_vesa_3,         TRUE   },
248 
249 #define GFX_DRIVER_VESA2L                                         \
250    {  GFX_VESA2L,       &gfx_vesa_2l,        TRUE   },
251 
252 #define GFX_DRIVER_VESA2B                                         \
253    {  GFX_VESA2B,       &gfx_vesa_2b,        TRUE   },
254 
255 #define GFX_DRIVER_XTENDED                                        \
256    {  GFX_XTENDED,      &gfx_xtended,        FALSE  },
257 
258 #define GFX_DRIVER_VESA1                                          \
259    {  GFX_VESA1,        &gfx_vesa_1,         TRUE   },
260 
261 
262 AL_FUNC_DEPRECATED(void, split_modex_screen, (int lyne));
263 
264 
265 AL_INLINE(void, _set_color, (int index, AL_CONST RGB *p),
266 {
267    outportb(0x3C8, index);
268    outportb(0x3C9, p->r);
269    outportb(0x3C9, p->g);
270    outportb(0x3C9, p->b);
271 
272    _current_palette[index] = *p;
273 })
274 
275 
276 
277 /****************************************/
278 /************ Sound routines ************/
279 /****************************************/
280 
281 #define DIGI_SB10             AL_ID('S','B','1','0')
282 #define DIGI_SB15             AL_ID('S','B','1','5')
283 #define DIGI_SB20             AL_ID('S','B','2','0')
284 #define DIGI_SBPRO            AL_ID('S','B','P',' ')
285 #define DIGI_SB16             AL_ID('S','B','1','6')
286 #define DIGI_AUDIODRIVE       AL_ID('E','S','S',' ')
287 #define DIGI_SOUNDSCAPE       AL_ID('E','S','C',' ')
288 #define DIGI_WINSOUNDSYS      AL_ID('W','S','S',' ')
289 
290 #define MIDI_OPL2             AL_ID('O','P','L','2')
291 #define MIDI_2XOPL2           AL_ID('O','P','L','X')
292 #define MIDI_OPL3             AL_ID('O','P','L','3')
293 #define MIDI_SB_OUT           AL_ID('S','B',' ',' ')
294 #define MIDI_MPU              AL_ID('M','P','U',' ')
295 #define MIDI_AWE32            AL_ID('A','W','E',' ')
296 
297 
298 AL_VAR(DIGI_DRIVER, digi_sb10);
299 AL_VAR(DIGI_DRIVER, digi_sb15);
300 AL_VAR(DIGI_DRIVER, digi_sb20);
301 AL_VAR(DIGI_DRIVER, digi_sbpro);
302 AL_VAR(DIGI_DRIVER, digi_sb16);
303 AL_VAR(DIGI_DRIVER, digi_audiodrive);
304 AL_VAR(DIGI_DRIVER, digi_soundscape);
305 AL_VAR(DIGI_DRIVER, digi_wss);
306 
307 AL_VAR(MIDI_DRIVER, midi_opl2);
308 AL_VAR(MIDI_DRIVER, midi_2xopl2);
309 AL_VAR(MIDI_DRIVER, midi_opl3);
310 AL_VAR(MIDI_DRIVER, midi_sb_out);
311 AL_VAR(MIDI_DRIVER, midi_mpu401);
312 AL_VAR(MIDI_DRIVER, midi_awe32);
313 
314 
315 #define DIGI_DRIVER_WINSOUNDSYS                                   \
316       {  DIGI_WINSOUNDSYS, &digi_wss,           FALSE  },
317 
318 #define DIGI_DRIVER_AUDIODRIVE                                    \
319       {  DIGI_AUDIODRIVE,  &digi_audiodrive,    TRUE   },
320 
321 #define DIGI_DRIVER_SOUNDSCAPE                                    \
322       {  DIGI_SOUNDSCAPE,  &digi_soundscape,    TRUE   },
323 
324 #define DIGI_DRIVER_SB                                            \
325       {  DIGI_SB16,        &digi_sb16,          TRUE   },         \
326       {  DIGI_SBPRO,       &digi_sbpro,         TRUE   },         \
327       {  DIGI_SB20,        &digi_sb20,          TRUE   },         \
328       {  DIGI_SB15,        &digi_sb15,          TRUE   },         \
329       {  DIGI_SB10,        &digi_sb10,          TRUE   },
330 
331 #define MIDI_DRIVER_AWE32                                         \
332       {  MIDI_AWE32,       &midi_awe32,         TRUE   },
333 
334 #define MIDI_DRIVER_ADLIB                                         \
335       {  MIDI_OPL3,        &midi_opl3,          TRUE   },         \
336       {  MIDI_2XOPL2,      &midi_2xopl2,        TRUE   },         \
337       {  MIDI_OPL2,        &midi_opl2,          TRUE   },
338 
339 #define MIDI_DRIVER_SB_OUT                                        \
340       {  MIDI_SB_OUT,      &midi_sb_out,        FALSE  },
341 
342 #define MIDI_DRIVER_MPU                                           \
343       {  MIDI_MPU,         &midi_mpu401,        FALSE  },
344 
345 
346 #ifdef __cplusplus
347 extern "C" {
348 #endif
349 
350 AL_FUNC(int, load_ibk, (AL_CONST char *filename, int drums));
351 
352 #ifdef __cplusplus
353 }
354 #endif
355