]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_in.h
converting
[16.git] / src / lib / 16_in.h
index 262f7b114cb4ad4f997bd2d0000ee5508ef552a3..2d15828ee4b98045bdbc5cb7467148403c30bd92 100644 (file)
@@ -1,4 +1,4 @@
-/* Catacomb Armageddon Source Code\r
+/* Catacomb Apocalypse Source Code\r
  * Copyright (C) 1993-2014 Flat Rock Software\r
  *\r
  * This program is free software; you can redistribute it and/or modify\r
 //\r
 //     ID Engine\r
 //     ID_IN.h - Header file for Input Manager\r
-//     v1.0d1\r
-//     By Jason Blochowiak\r
+//     v1.0d1w\r
+//     By Jason Blochowiak
+//     Open Watcom port by sparky4\r
 //\r
 \r
 #ifndef        __16_IN__\r
 #define        __16_IN__\r
 
+#include <string.h>\r
 #include "src/lib/lib_head.h"\r
-#include "src/lib/16_us.h"
 \r
-#ifdef __DEBUG__\r
+//++++#ifdef   __DEBUG__\r
 #define        __DEBUG_InputMgr__\r
-#endif\r
-
-#define        KeyInt  9       // The keyboard ISR number
-
-// Stuff for the joystick
-#define        JoyScaleMax             32768
-#define        JoyScaleShift   8
-#define        MaxJoyValue             5000
+//++++#endif\r
+\r
+#define TESTKEYIN
+#define TESTCONTROLNOISY\r
+\r
+#define        KeyInt  9       // The keyboard ISR number\r
+\r
+// Stuff for the joystick\r
+#define        JoyScaleMax             32768\r
+#define        JoyScaleShift   8\r
+#define        MaxJoyValue             5000\r
 \r
 #define        MaxPlayers      4\r
 #define        MaxKbds         2\r
-#define        MaxJoys         2\r
+#define        MaxJoys         2
+#define        MaxPads         2\r
 #define        NumCodes        128\r
 \r
 typedef        byte            ScanCode;\r
@@ -128,6 +133,10 @@ typedef    byte            ScanCode;
 #define        key_BackSpace   0x08\r
 #define        key_Tab                 0x09\r
 #define        key_Delete              0x7f\r
+
+#define        key_LSuper                      0x5b
+#define        key_RSuper                      0x5c
+#define        key_Menu                        0x5d
 \r
 //     Stuff for the mouse\r
 #define        MReset          0\r
@@ -135,17 +144,20 @@ typedef   byte            ScanCode;
 #define        MDelta          11\r
 \r
 #define        MouseInt        0x33\r
-\r
+#ifdef DEMO0\r
 typedef        enum            {\r
                                                demo_Off,demo_Record,demo_Playback,demo_PlayDone\r
                                        } Demo;\r
+#endif\r
 typedef        enum            {\r
-                                               ctrl_None,                              // MDM (GAMERS EDGE) - added\r
+                                               //ctrl_None,                            // MDM (GAMERS EDGE) - added\r
                                                ctrl_Keyboard,\r
                                                        ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2,\r
                                                ctrl_Joystick,\r
                                                        ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2,\r
-                                               ctrl_Mouse\r
+                                               ctrl_Mouse,
+                                               ctrl_Joypad,
+                                                       ctrl_Joypad1 = ctrl_Joypad,ctrl_Joypad2\r
                                        } ControlType;\r
 typedef        enum            {\r
                                                motion_Left = -1,motion_Up = -1,\r
@@ -153,24 +165,29 @@ typedef   enum            {
                                                motion_Right = 1,motion_Down = 1\r
                                        } Motion;\r
 typedef        enum            {\r
-                                               dir_North,dir_NorthEast,\r
-                                               dir_East,dir_SouthEast,\r
-                                               dir_South,dir_SouthWest,\r
-                                               dir_West,dir_NorthWest,\r
+                                               dir_North,//dir_NorthEast,\r
+                                               dir_East,//dir_SouthEast,\r
+                                               dir_South,//dir_Soutinest,\r
+                                               dir_West,//dir_Nortinest,\r
                                                dir_None\r
                                        } Direction;\r
 typedef        struct          {\r
-                                               boolean         button0,button1;\r
+                                               boolean         button0,button1,button2,button3;\r
                                                int                     x,y;\r
                                                Motion          xaxis,yaxis;\r
                                                Direction       dir;\r
                                        } CursorInfo;\r
-typedef        CursorInfo      ControlInfo;\r
+\r
 typedef        struct          {\r
                                                ScanCode        button0,button1,\r
-                                                                       upleft,         up,             upright,\r
+                                                                       //upleft,\r
+                                                                       up,\r
+                                                                       //upright,\r
                                                                        left,                           right,\r
-                                                                       downleft,       down,   downright;\r
+                                                                       //downleft,\r
+                                                                       down\r
+                                                                       //,downright\r
+                                                                       ;\r
                                        } KeyboardDef;\r
 typedef        struct          {\r
                                                word            joyMinX,joyMinY,\r
@@ -179,8 +196,37 @@ typedef    struct          {
                                                                        joyMaxX,joyMaxY,\r
                                                                        joyMultXL,joyMultYL,\r
                                                                        joyMultXH,joyMultYH;\r
-                                       } JoystickDef;\r
+                                       } JoystickDef;
+typedef        struct
+{
+       boolean w;\r
+} JoypadDef;
+
+typedef        struct
+{
+       CursorInfo      info;
+       ControlType     Controls;
+} player_t;
+
+typedef        struct
+{
+       boolean                 MousePresent;\r
+       boolean                 JoysPresent[MaxJoys];\r
+       boolean                 JoyPadPresent[MaxPads];
+       boolean         Keyboard[NumCodes];\r
+       boolean         Paused;\r
+       char            LastASCII;\r
+       ScanCode        LastScan;
+
+       boolean         IN_Started;\r
+       boolean         CapsLock;\r
+       ScanCode        CurCode,LastCode;
 
+       KeyboardDef     KbdDefs[MaxKbds];
+       JoystickDef     JoyDefs[MaxJoys];
+       JoypadDef       JoypadDefs[MaxPads];
+} inconfig;
+\r
 /*\r
 =============================================================================\r
 \r
@@ -192,34 +238,34 @@ typedef   struct          {
 //\r
 // configuration variables\r
 //\r
-boolean                        MousePresent;\r
-boolean                        JoysPresent[MaxJoys];\r
-boolean                        JoyPadPresent;\r
-\r
+//static boolean                       MousePresent;\r
+//static boolean                       JoysPresent[MaxJoys];\r
+//static boolean                       JoyPadPresent[MaxPads];\r
 \r
-//     Global variables
-               boolean JoystickCalibrated=false;               // MDM (GAMERS EDGE) - added
-               ControlType ControlTypeUsed;                            // MDM (GAMERS EDGE) - added
+//     Global variables\r
+//             extern boolean JoystickCalibrated;              // MDM (GAMERS EDGE) - added\r
+//             extern ControlType ControlTypeUsed;                             // MDM (GAMERS EDGE) - added\r
 \r
-               boolean         Keyboard[NumCodes];\r
-               boolean         Paused;\r
-               char            LastASCII;\r
-               ScanCode        LastScan;\r
+               //extern boolean                Keyboard[NumCodes];\r
+               //extern boolean                Paused;\r
+               //extern char           LastASCII;\r
+               //extern ScanCode       LastScan;\r
 \r
-               KeyboardDef     KbdDefs[] = {0x1d,0x38,0x47,0x48,0x49,0x4b,0x4d,0x4f,0x50,0x51};\r
-               JoystickDef     JoyDefs[MaxJoys];\r
-               ControlType     Controls[MaxPlayers];\r
+               //extern KeyboardDef    KbdDefs[];
+               //static KeyboardDef    KbdDefs[MaxKbds] = {0x1d,0x38,0x47,0x48,0x49,0x4b,0x4d,0x4f,0x50,0x51};\r
+               //extern JoystickDef    JoyDefs[MaxJoys];\r
+               //extern ControlType    Controls[MaxPlayers];\r
 \r
-               dword   MouseDownCount;
+               //extern dword  MouseDownCount;\r
 \r
 #ifdef DEMO0\r
-               Demo            DemoMode = demo_Off;\r
-               byte /*_seg*/   *DemoBuffer;\r
-               word            DemoOffset,DemoSize;
-#endif
-
-
-
+               static Demo             DemoMode = demo_Off;\r
+               static byte /*_seg*/    *DemoBuffer;\r
+               static word             DemoOffset,DemoSize;\r
+#endif\r
+\r
+extern dword far* clockdw;\r
+\r
 /*\r
 =============================================================================\r
 \r
@@ -262,32 +308,93 @@ static    byte        far ASCIINames[] =          // Unshifted ASCII for scan codes
        0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,        // 5\r
        0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,        // 6\r
        0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0           // 7\r
-                                       };\r
-\r
-\r
-static boolean         IN_Started;\r
-static boolean         CapsLock;\r
-static ScanCode        CurCode,LastCode;\r
+                                       },\r
+                                       *ScanNames[] =          // Scan code names with single chars\r
+                                       {\r
+       "?","?","1","2","3","4","5","6","7","8","9","0","-","+","?","?",\r
+       "Q","W","E","R","T","Y","U","I","O","P","[","]","|","?","A","S",\r
+       "D","F","G","H","J","K","L",";","\"","?","?","?","Z","X","C","V",\r
+       "B","N","M",",",".","/","?","?","?","?","?","?","?","?","?","?",\r
+       "?","?","?","?","?","?","?","?","\xf","?","-","\x15","5","\x11","+","?",\r
+       "\x13","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?",\r
+       "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?",\r
+       "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?"\r
+                                       },      // DEBUG - consolidate these\r
+                                       far ExtScanCodes[] =    // Scan codes with >1 char names\r
+                                       {\r
+       1,0xe,0xf,0x1d,0x2a,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,\r
+       0x3f,0x40,0x41,0x42,0x43,0x44,0x57,0x59,0x46,0x1c,0x36,\r
+       0x37,0x38,0x47,0x49,0x4f,0x51,0x52,0x53,0x45,0x48,\r
+       0x50,0x4b,0x4d,0x00\r
+                                       },\r
+                                       *ExtScanNames[] =       // Names corresponding to ExtScanCodes\r
+                                       {\r
+       "Esc","BkSp","Tab","Ctrl","LShft","Space","CapsLk","F1","F2","F3","F4",\r
+       "F5","F6","F7","F8","F9","F10","F11","F12","ScrlLk","Enter","RShft",\r
+       "PrtSc","Alt","Home","PgUp","End","PgDn","Ins","Del","NumLk","Up",\r
+       "Down","Left","Right",""\r
+                                       };
 \r
 static Direction       DirTable[] =            // Quick lookup for total direction\r
                                        {\r
-                                               dir_NorthWest,  dir_North,      dir_NorthEast,\r
+                                               //dir_Nortinest,\r
+                                               dir_North,\r
+                                               //dir_NorthEast,\r
                                                dir_West,               dir_None,       dir_East,\r
-                                               dir_SouthWest,  dir_South,      dir_SouthEast\r
+                                               //dir_Soutinest,\r
+                                               dir_South//,dir_SouthEast\r
                                        };\r
 \r
 static void                    (*INL_KeyHook)(void);\r
 static void interrupt  (*OldKeyVect)(void);\r
 \r
-static char                    *ParmStrings[] = {"nojoys","nomouse",nil};\r
+static char                    *ParmStringsIN[] = {"nojoys","nomouse",nil};\r
 \r
 // Function prototypes\r
 #define        IN_KeyDown(code)        (Keyboard[(code)])\r
-#define        IN_ClearKey(code)       {Keyboard[code] = false;\\r
-                                                       if (code == LastScan) LastScan = sc_None;}\r
+#define        IN_ClearKey(code)       {Keyboard[code] = false; if (code == LastScan) LastScan = sc_None;}\r
+
+//     Internal routines
+void interrupt INL_KeyService(inconfig *in);
+void Mouse(int x);
+//static void INL_GetMouseDelta(int *x,int *y);
+//static word INL_GetMouseButtons(void);
+void IN_GetJoyAbs(word joy,word *xp,word *yp);
+//static void INL_GetJoyDelta(word joy,int *dx,int *dy,boolean adaptive);
+//static word INL_GetJoyButtons(word joy);
+word IN_GetJoyButtonsDB(word joy);
+//static void INL_StartKbd(void);
+//static void INL_ShutKbd(void);
+//static boolean INL_StartMouse(void);
+//static void INL_ShutMouse(void);
+//static void INL_SetJoyScale(word joy);
+void IN_SetupJoy(word joy,word minx,word maxx,word miny,word maxy, inconfig *in);
+//static boolean INL_StartJoy(word joy);
+//static void INL_ShutJoy(word joy);
+void IN_Startup(inconfig *in);
+void IN_Default(boolean gotit,player_t *player,ControlType nt, inconfig *in);
+void IN_Shutdown(inconfig *in);
+void IN_SetKeyHook(void (*hook)());
+void IN_ClearKeysDown(inconfig *in);
+//static void INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy);
+void IN_ReadCursor(CursorInfo *info);
+void IN_ReadControl(int playnum,player_t *player);
+void IN_SetControlType(word playnum,player_t *player,ControlType type);
+#if DEMO0
+boolean IN_StartDemoRecord(word bufsize);
+void IN_StartDemoPlayback(byte /*__segment*/ *buffer,word bufsize);
+void IN_StopDemo(void);
+void IN_FreeDemoBuffer(void);
+#endif
+byte *IN_GetScanName(ScanCode scan);
+ScanCode IN_WaitForKey(void);
+char IN_WaitForASCII(void);
+void IN_AckBack(void);
+void IN_Ack(void);
+boolean IN_IsUserInput(void);
+boolean IN_UserInput(dword delay,boolean clear);
 \r
-// DEBUG - put names in prototypes\r
-extern void            IN_Startup(void),IN_Shutdown(void),\r
+/*extern       void            IN_Startup(void),IN_Shutdown(void),\r
                                        IN_Default(boolean gotit,ControlType in),\r
                                        IN_SetKeyHook(void (*)()),\r
                                        IN_ClearKeysDown(void),\r
@@ -296,21 +403,23 @@ extern    void            IN_Startup(void),IN_Shutdown(void),
                                        IN_SetControlType(int,ControlType),\r
                                        IN_GetJoyAbs(word joy,word *xp,word *yp),\r
                                        IN_SetupJoy(word joy,word minx,word maxx,\r
-                                                               word miny,word maxy),
+                                                               word miny,word maxy),\r
+                                       Mouse(int x),\r
 #ifdef DEMO0\r
                                        IN_StartDemoPlayback(byte __segment *buffer,word bufsize),\r
-                                       IN_StopDemo(void),IN_FreeDemoBuffer(void),
+                                       IN_StopDemo(void),IN_FreeDemoBuffer(void),\r
 #endif\r
                                        IN_Ack(void),IN_AckBack(void);\r
 extern boolean         IN_UserInput(dword delay,boolean clear),\r
-                                       IN_IsUserInput(void)
+                                       IN_IsUserInput(void)\r
 #ifdef DEMO0\r
-                                       , IN_StartDemoRecord(word bufsize)
-#endif
+                                       , IN_StartDemoRecord(word bufsize)\r
+#endif\r
 ;\r
 extern byte            *IN_GetScanName(ScanCode);\r
 extern char            IN_WaitForASCII(void);\r
 extern ScanCode        IN_WaitForKey(void);\r
-extern word            IN_GetJoyButtonsDB(word joy);\r
+extern word            IN_GetJoyButtonsDB(word joy);*/\r
 \r
+boolean IN_qb(byte kee);\r
 #endif\r