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