X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_in.h;h=2d15828ee4b98045bdbc5cb7467148403c30bd92;hb=a565be31ce92d6168ae6983042da75b0b683e52b;hp=b2b7b367cbf2cce87f12fc6f57f69dc6ce0e8f26;hpb=0c05325b365ec1355fd01a9d94afe45ebf401310;p=16.git
diff --git a/src/lib/16_in.h b/src/lib/16_in.h
old mode 100644
new mode 100755
index b2b7b367..828cb5f8
--- a/src/lib/16_in.h
+++ b/src/lib/16_in.h
@@ -1,41 +1,43 @@
-/* Catacomb Armageddon Source Code
- * Copyright (C) 1993-2014 Flat Rock Software
+/* Project 16 Source Code~
+ * Copyright (C) 2012-2019 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover
*
- * This program is free software; you can redistribute it and/or modify
+ * This file is part of Project 16.
+ *
+ * Project 16 is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
+ * Project 16 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see , or
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301 USA.
+ *
*/
-
//
// ID Engine
// ID_IN.h - Header file for Input Manager
// v1.0d1w
-// By Jason Blochowiak
-// Open Watcom port by sparky4
+// By Jason Blochowiak
+// Open Watcom port by sparky4
//
#ifndef __16_IN__
#define __16_IN__
-
-#include
-#include "src/lib/lib_head.h"
-//++++#ifdef __DEBUG__
-#define __DEBUG_InputMgr__
-//++++#endif
-
-#define TESTKEYIN
-#define TESTCONTROLNOISY
+#include
+#include "src/lib/16_head.h"
+#include "src/lib/16_timer.h"
+#include "src/lib/16_dbg.h"
+#ifdef __WATCOMC__ //borland C BCEXMM.EXE
+#include "src/lib/16_spri.h"
+#include "src/lib/16_enti.h"
+#endif
#define KeyInt 9 // The keyboard ISR number
@@ -44,12 +46,12 @@
#define JoyScaleShift 8
#define MaxJoyValue 5000
-#define MaxPlayers 4
+//#define MaxPlayers 2//future plans for multiple playable charaters and being able to alternate
#define MaxKbds 2
#define MaxJoys 2
#define NumCodes 128
-typedef byte ScanCode;
+//typedef byte ScanCode;
#define sc_None 0
#define sc_Bad 0xff
#define sc_Return 0x1c
@@ -132,30 +134,37 @@ typedef byte ScanCode;
#define key_BackSpace 0x08
#define key_Tab 0x09
#define key_Delete 0x7f
-
-#define key_LSuper 0x5b
-#define key_RSuper 0x5c
-#define key_Menu 0x5d
+
+#define key_LSuper 0x5b
+#define key_RSuper 0x5c
+#define key_Menu 0x5d
+#define sc_LBrkt 0x1a // [
+#define sc_RBrkt 0x1b // ]
+#define sc_BackSlash 0x2b // |
+#define sc_ForeSlash 0x35 // / ?
// Stuff for the mouse
-#define MReset 0
+//moved to 16_tdef.h
+/*#define MReset 0
#define MButtons 3
#define MDelta 11
-#define MouseInt 0x33
+#define MouseInt 0x33*/
+#define Mouse(x) _AX = x,geninterrupt(MouseInt)
+
#ifdef DEMO0
typedef enum {
demo_Off,demo_Record,demo_Playback,demo_PlayDone
} Demo;
#endif
-typedef enum {
- ctrl_None, // MDM (GAMERS EDGE) - added
+//moved to 16_tdef.h
+/*typedef enum {
+ //ctrl_None, // MDM (GAMERS EDGE) - added
ctrl_Keyboard,
ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2,
ctrl_Joystick,
ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2,
- ctrl_Mouse,
- ctrl_Joypad
+ ctrl_Mouse,
} ControlType;
typedef enum {
motion_Left = -1,motion_Up = -1,
@@ -164,38 +173,39 @@ typedef enum {
} Motion;
typedef enum {
dir_North,//dir_NorthEast,
- dir_East,//dir_SouthEast,
- dir_South,//dir_SouthWest,
- dir_West,//dir_NorthWest,
- dir_None
+ dir_West,//dir_Nortinest,
+ dir_None,
+ dir_East,//,dir_SouthEast,
+ dir_South,//dir_Soutinest,
} Direction;
typedef struct {
- boolean button0,button1,button2,button3;
- int x,y;
- Motion xaxis,yaxis;
- Direction dir;
+ boolean near button0,button1,button2,button3;
+ int near x,y;
+ Motion near xaxis,yaxis;
+ Direction near dir;
} CursorInfo;
-typedef CursorInfo ControlInfo;
typedef struct {
- ScanCode button0,button1,
+ ScanCode near button0,button1,
//upleft,
up,
+ down,
+ left,
+ right
//upright,
- left, right,
//downleft,
- down
//,downright
;
} KeyboardDef;
typedef struct {
- word joyMinX,joyMinY,
+ word near joyMinX,joyMinY,
threshMinX,threshMinY,
threshMaxX,threshMaxY,
joyMaxX,joyMaxY,
joyMultXL,joyMultYL,
joyMultXH,joyMultYH;
- } JoystickDef;
+ } JoystickDef;*/
+
/*
=============================================================================
@@ -203,237 +213,53 @@ typedef struct {
=============================================================================
*/
-
-//
-// configuration variables
-//
-static boolean MousePresent;
-static boolean JoysPresent[MaxJoys];
-static boolean JoyPadPresent;
-
-// Global variables
-// extern boolean JoystickCalibrated; // MDM (GAMERS EDGE) - added
-// extern ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added
-
- extern boolean Keyboard[NumCodes];
- extern boolean Paused;
- extern char LastASCII;
- extern ScanCode LastScan;
-
- //extern KeyboardDef KbdDefs[];
- static KeyboardDef KbdDefs[] = {0x1d,0x38,0x47,0x48,0x49,0x4b,0x4d,0x4f,0x50,0x51};
- extern JoystickDef JoyDefs[MaxJoys];
- extern ControlType Controls[MaxPlayers];
-
- extern dword MouseDownCount;
-
#ifdef DEMO0
static Demo DemoMode = demo_Off;
static byte /*_seg*/ *DemoBuffer;
static word DemoOffset,DemoSize;
#endif
-extern dword far* clockdw;
-
-/*
-=============================================================================
-
- LOCAL VARIABLES
-
-=============================================================================
-*/
-static byte far ASCIINames[] = // Unshifted ASCII for scan codes
- {
-// 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0 ,27 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,9 , // 0
- 'q','w','e','r','t','y','u','i','o','p','[',']',13 ,0 ,'a','s', // 1
- 'd','f','g','h','j','k','l',';',39 ,'`',0 ,92 ,'z','x','c','v', // 2
- 'b','n','m',',','.','/',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4
- '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7
- },
- far ShiftNames[] = // Shifted ASCII for scan codes
- {
-// 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0 ,27 ,'!','@','#','$','%','^','&','*','(',')','_','+',8 ,9 , // 0
- 'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0 ,'A','S', // 1
- 'D','F','G','H','J','K','L',':',34 ,'~',0 ,'|','Z','X','C','V', // 2
- 'B','N','M','<','>','?',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4
- '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7
- },
- far SpecialNames[] = // ASCII for 0xe0 prefixed codes
- {
-// 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 0
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,13 ,0 ,0 ,0 , // 1
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 2
- 0 ,0 ,0 ,0 ,0 ,'/',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 3
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 4
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6
- 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7
- };
-
-
-static boolean IN_Started;
-static boolean CapsLock;
-static ScanCode CurCode,LastCode;
-
-static Direction DirTable[] = // Quick lookup for total direction
- {
- //dir_NorthWest,
- dir_North,
- //dir_NorthEast,
- dir_West, dir_None, dir_East,
- //dir_SouthWest,
- dir_South//,dir_SouthEast
- };
-
-static void (*INL_KeyHook)(void);
-static void interrupt (*OldKeyVect)(void);
-
-static char *ParmStringsIN[] = {"nojoys","nomouse",nil};
-
-// Function prototypes
-#define IN_KeyDown(code) (Keyboard[(code)])
-#define IN_ClearKey(code) {Keyboard[code] = false; if (code == LastScan) LastScan = sc_None;}
-
-// DEBUG - put names in prototypes
-/* Catacomb Armageddon Source Code
- * Copyright (C) 1993-2014 Flat Rock Software
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-//
-// ID Engine
-// ID_IN.c - Input Manager
-// v1.0d1w
-// By Jason Blochowiak
-// Open Watcom port by sparky4
-//
-
-//
-// This module handles dealing with the various input devices
-//
-// Depends on: Memory Mgr (for demo recording), Sound Mgr (for timing stuff),
-// User Mgr (for command line parms)
-//
-// Globals:
-// LastScan - The keyboard scan code of the last key pressed
-// LastASCII - The ASCII value of the last key pressed
-// DEBUG - there are more globals
-//
-
-#include "src/lib/16_in.h"
-
-/*
-=============================================================================
-
- GLOBAL VARIABLES
-
-=============================================================================
-*/
-// Global variables
- boolean JoystickCalibrated=false; // MDM (GAMERS EDGE) - added
- ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added
- boolean Keyboard[NumCodes];
- boolean Paused;
- char LastASCII;
- ScanCode LastScan;
-
- //KeyboardDef KbdDefs = {0x1d,0x38,0x47,0x48,0x49,0x4b,0x4d,0x4f,0x50,0x51};
- JoystickDef JoyDefs[MaxJoys];
- ControlType Controls[MaxPlayers];
-
- dword MouseDownCount;
-
-// Internal routines
-void interrupt INL_KeyService(void);
-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);
-//static boolean INL_StartJoy(word joy);
-//static void INL_ShutJoy(word joy);
-void IN_Startup(void);
-void IN_Default(boolean gotit,ControlType in);
-void IN_Shutdown(void);
-void IN_SetKeyHook(void (*hook)());
-void IN_ClearKeysDown(void);
-//static void INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy);
-void IN_ReadCursor(CursorInfo *info);
-void IN_ReadControl(int player,ControlInfo *info);
-void IN_SetControlType(int 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);
-
-
-/*extern void IN_Startup(void),IN_Shutdown(void),
- IN_Default(boolean gotit,ControlType in),
+// Internal routines
+extern void IN_Startup(global_game_variables_t *gvar),IN_Shutdown(global_game_variables_t *gvar),
+ IN_Default(boolean gotit,player_t *player,ControlType nt, global_game_variables_t *gvar),
IN_SetKeyHook(void (*)()),
IN_ClearKeysDown(void),
- IN_ReadCursor(CursorInfo *),
- IN_ReadControl(int,ControlInfo *),
- IN_SetControlType(int,ControlType),
+ IN_ReadCursor(CursorInfo *, global_game_variables_t *gvar),
+ IN_ReadControl(player_t *player, global_game_variables_t *gvar),
+ IN_SetControlType(player_t *player,ControlType type),
IN_GetJoyAbs(word joy,word *xp,word *yp),
IN_SetupJoy(word joy,word minx,word maxx,
- word miny,word maxy),
- Mouse(int x),
-#ifdef DEMO0
- IN_StartDemoPlayback(byte __segment *buffer,word bufsize),
+ word miny,word maxy, global_game_variables_t *gvar),
+#if DEMO0
IN_StopDemo(void),IN_FreeDemoBuffer(void),
#endif
- IN_Ack(void),IN_AckBack(void);
-extern boolean IN_UserInput(dword delay,boolean clear),
- IN_IsUserInput(void)
-#ifdef DEMO0
- , IN_StartDemoRecord(word bufsize)
-#endif
-;
-extern byte *IN_GetScanName(ScanCode);
+ IN_Ack(global_game_variables_t *gvar),IN_AckBack(void);
+extern boolean IN_UserInput(word delay, global_game_variables_t *gvar);
extern char IN_WaitForASCII(void);
extern ScanCode IN_WaitForKey(void);
-extern word IN_GetJoyButtonsDB(word joy);*/
+extern word IN_GetJoyButtonsDB(word joy);
+extern byte *IN_GetScanName(ScanCode);
+
+
+byte IN_MouseButtons (global_game_variables_t *gvar);
+byte IN_JoyButtons (void);
+
+void INL_GetJoyDelta(word joy,int *dx,int *dy/*,boolean adaptive*/, global_game_variables_t *gvar);
+void IN_StartAck(global_game_variables_t *gvar);
+boolean IN_CheckAck (global_game_variables_t *gvar);
+boolean IN_IsUserInput(global_game_variables_t *gvar);
+#if DEMO0
+boolean IN_StartDemoRecord(word bufsize);
+void IN_StartDemoPlayback(byte *buffer,word bufsize);
+void IN_StopDemo(void);
+void IN_FreeDemoBuffer(void);
+#endif
+//boolean IN_KeyDown(byte code),
+// IN_qb(byte kee);
+void IN_ClearKey(byte code),
+ IN_KbdLED();
+ScanCode IN_GetLastScan(),
+ IN_GetCurCode();
-void interrupt INL_KeyService(void);
-boolean IN_qb(byte kee);
#endif