//===========================================================================// // File: PCjoystk.hh // // Project: MUNGA Brick: Platform-specific IO // // Contents: PC joystick interface routines // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- -----------------------------------------------------------// // ??/??/?? JMA Initial coding. // // 01/04/95 CPB Made pretty. // // 01/20/95 CPB Added PC_Joystick_Mask // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // // PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined(L4JOYSTK_HPP) # define L4JOYSTK_HPP # if !defined(STYLE_HPP) # include "c:\source\munga\style.hpp" # endif # define PCJ1_Button1 0x10 # define PCJ1_Button2 0x20 # define PCJ2_Button1 0x40 # define PCJ2_Button2 0x80 # define PC_All_Buttons 0xF0 // These are used to build "mask" values, below # define PCJ_AnalogChannel1 0x01 # define PCJ_AnalogChannel2 0x02 # define PCJ_AnalogChannel3 0x04 # define PCJ_AnalogChannel4 0x08 # define PC_All_Analog 0x0F // Definitions for standard old 2-axis joystick # define PCJ_Standard_Button1 0x10 # define PCJ_Standard_Button2 0x20 # define PCJ_Standard_Mask PCJ_AnalogChannel1|PCJ_AnalogChannel2 // Definitions for Flightstick Pro (CH products) // // These states are mutually exclusive and ordered by decreasing // priority (only the highest priority state is returned). // Yes, this means that you cannot activate two states at a time: // while you hold the "thumb joystick", you cannot fire. # define PCJ_FSP_Up 0xF0 // "thumb joystick" up # define PCJ_FSP_Down 0x70 // "thumb joystick" down # define PCJ_FSP_Left 0x30 // "thumb joystick" left # define PCJ_FSP_Right 0xB0 // "thumb joystick" right # define PCJ_FSP_Trigger 0x10 // Trigger # define PCJ_FSP_LButton 0x20 // Leftmost button # define PCJ_FSP_RButton 0x40 // Rightmost button # define PCJ_FSP_CButton 0x80 // Center button # define PCJ_FSP_Mask PCJ_AnalogChannel1|PCJ_AnalogChannel2|\ PCJ_AnalogChannel4 // Handy equates for reading the analog values # define PCJ_FSP_X PC_Joystick1_Raw_X; # define PCJ_FSP_Y PC_Joystick1_Raw_Y; # define PCJ_FSP_Dial PC_Joystick2_Raw_Y; // Definitions for Thrustmaster // // The "hat" actually is connected to resistors on // analog channel 3. // Full value is open // Up is low value // Down is 1/2 value // Left is 3/4 value // Right is 1/4 value // # define PCJ_TM_Trigger 0x10 // Trigger # define PCJ_TM_ThumbHigh 0x20 // Button next to "hat" # define PCJ_TM_ThumbMid 0x40 // Button halfway down stick # define PCJ_TM_ThumbLow 0x80 // Lowest thumb button # define PCJ_TM_Mask PCJ_AnalogChannel1|PCJ_AnalogChannel2|\ PCJ_AnalogChannel4 // Handy equates for reading the analog values # define PCJ_FSP_X PC_Joystick1_Raw_X; # define PCJ_FSP_Y PC_Joystick1_Raw_Y; # define PCJ_FSP_Dial PC_Joystick2_Raw_Y; extern "C" Word PC_Joystick1_Raw_X, PC_Joystick1_Raw_Y; extern "C" Word PC_Joystick2_Raw_X, PC_Joystick2_Raw_Y; extern "C" Byte PC_Joystick_Buttons; // // The PC_Joystick_Mask defaults at power-up to all four channels. // It should be set according to one of the PCJ_...Mask values from above. // This will speed up joystick updates by ignoring unused analog channels. // extern "C" Byte PC_Joystick_Mask; extern "C" void PC_Joystick_Update(void); extern "C" void test1(void); extern "C" void test2(Byte a, Word b, LWord l, char *p); extern "C" void test3(void); extern "C" void test4(Byte a, Word b, LWord l, char *p); // // In watcom, force stack-based addressing // # if defined(__WATCOMC__) # pragma aux PC_Joystick_Update parm []; # pragma aux test1 parm []; # pragma aux test2 parm []; # pragma aux test3 parm []; # pragma aux test4 parm []; # endif #endif