From 3adab23aeae005f83ffc52609c6070f07444de9a Mon Sep 17 00:00:00 2001 From: sparky4 <sparky4@cock.li> Date: Wed, 7 Dec 2016 13:25:48 -0600 Subject: [PATCH] added older 16_in as _6_in for undo w --- DEBUG.16W | 210 -------- HEAP.16W | 47 -- MEMINFO.16W | 0 MMDUMP.16W | Bin 2244 -> 0 bytes bcexmm.exe | Bin 119900 -> 0 bytes data/g.pal | Bin 768 -> 0 bytes joytest.exe | Bin 16558 -> 25472 bytes src/lib/_6_in.c | 1290 +++++++++++++++++++++++++++++++++++++++++++++++ src/lib/_6_in.h | 309 ++++++++++++ 9 files changed, 1599 insertions(+), 257 deletions(-) delete mode 100755 DEBUG.16W delete mode 100755 HEAP.16W delete mode 100755 MEMINFO.16W delete mode 100755 MMDUMP.16W delete mode 100755 bcexmm.exe delete mode 100755 data/g.pal create mode 100755 src/lib/_6_in.c create mode 100755 src/lib/_6_in.h diff --git a/DEBUG.16W b/DEBUG.16W deleted file mode 100755 index 43cf8f7d..00000000 --- a/DEBUG.16W +++ /dev/null @@ -1,210 +0,0 @@ -[0mSeg:0 Size:10201 Owner:0x0 -[41;31m++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[0m[42;32m0 -[0m[0mSeg:27d9 Size:256 Owner:0x1640 -[44;34m++++[0m[42;32m -[0m[0mSeg:299a Size:44 Owner:0x0 -[41;31m+[0m[42;32m -[0m[0mSeg:29c6 Size:256 Owner:0x1432 -[45;35m++++[0m[42;32m -[0m[0mSeg:2ac6 Size:256 Owner:0x1434 -[45;35m+++++[0m[42;32m -[0m[0mSeg:2bc6 Size:256 Owner:0x1436 -[45;35m++++[0m[42;32m -[0m[0mSeg:2cc6 Size:256 Owner:0x1438 -[45;35m++++[0m[42;32m -[0m[0mSeg:2dc6 Size:256 Owner:0x143a -[45;35m++++[0m[42;32m -[0m[0mSeg:2ec6 Size:256 Owner:0x143c -[45;35m++++[0m[42;32m -[0m[0mSeg:2fc6 Size:256 Owner:0x143e -[45;35m+++++[0m[42;32m -[0m[0mSeg:30c6 Size:256 Owner:0x1440 -[45;35m++++[0m[42;32m -[0m[0mSeg:31c6 Size:256 Owner:0x1442 -[45;35m++++[0m[42;32m -[0m[0mSeg:32c6 Size:256 Owner:0x1444 -[45;35m++++[0m[42;32m -[0m[0mSeg:33c6 Size:256 Owner:0x1446 -[45;35m++++[0m[42;32m -[0m[0mSeg:34c6 Size:256 Owner:0x1448 -[45;35m+++++[0m[42;32m -[0m[0mSeg:35c6 Size:256 Owner:0x144a -[45;35m++++[0m[42;32m -[0m[0mSeg:36c6 Size:256 Owner:0x144c -[45;35m++++[0m[42;32m -[0m[0mSeg:37c6 Size:256 Owner:0x144e -[45;35m++++[0m[42;32m -[0m[0mSeg:38c6 Size:256 Owner:0x1450 -[45;35m++++[0m[42;32m -[0m[0mSeg:39c6 Size:256 Owner:0x1452 -[45;35m+++++[0m[42;32m -[0m[0mSeg:3ac6 Size:256 Owner:0x1454 -[45;35m++++[0m[42;32m -[0m[0mSeg:3bc6 Size:256 Owner:0x1456 -[45;35m++++[0m[42;32m -[0m[0mSeg:3cc6 Size:256 Owner:0x1458 -[45;35m++++[0m[42;32m -[0m[0mSeg:3dc6 Size:256 Owner:0x145a -[45;35m++++[0m[42;32m -[0m[0mSeg:3ec6 Size:256 Owner:0x145c -[45;35m+++++[0m[42;32m -[0m[0mSeg:3fc6 Size:256 Owner:0x145e -[45;35m++++[0m[42;32m -[0m[0mSeg:40c6 Size:256 Owner:0x1460 -[45;35m++++[0m[42;32m -[0m[0mSeg:41c6 Size:256 Owner:0x1462 -[45;35m++++[0m[42;32m -[0m[0mSeg:42c6 Size:256 Owner:0x1464 -[45;35m++++[0m[42;32m -[0m[0mSeg:43c6 Size:256 Owner:0x1466 -[45;35m+++++[0m[42;32m -[0m[0mSeg:44c6 Size:256 Owner:0x1468 -[45;35m++++[0m[42;32m -[0m[0mSeg:45c6 Size:256 Owner:0x146a -[45;35m++++[0m[42;32m -[0m[0mSeg:46c6 Size:256 Owner:0x146c -[45;35m++++[0m[42;32m -[0m[0mSeg:47c6 Size:256 Owner:0x146e -[45;35m++++[0m[42;32m -[0m[0mSeg:48c6 Size:256 Owner:0x1470 -[45;35m+++++[0m[42;32m -[0m[0mSeg:49c6 Size:256 Owner:0x1472 -[45;35m++++[0m[42;32m -[0m[0mSeg:4ac6 Size:256 Owner:0x1474 -[45;35m++++[0m[42;32m -[0m[0mSeg:4bc6 Size:256 Owner:0x1476 -[45;35m++++[0m[42;32m -[0m[0mSeg:4cc6 Size:256 Owner:0x1478 -[45;35m++++[0m[42;32m -[0m[0mSeg:4dc6 Size:256 Owner:0x147a -[45;35m+++++[0m[42;32m -[0m[0mSeg:4ec6 Size:256 Owner:0x147c -[45;35m++++[0m[42;32m -[0m[0mSeg:4fc6 Size:256 Owner:0x147e -[45;35m++++[0m[42;32m -[0m[0mSeg:50c6 Size:256 Owner:0x1480 -[45;35m++++[0m[42;32m -[0m[0mSeg:51c6 Size:256 Owner:0x1482 -[45;35m++++[0m[42;32m -[0m[0mSeg:52c6 Size:256 Owner:0x1484 -[45;35m+++++[0m[42;32m -[0m[0mSeg:53c6 Size:256 Owner:0x1486 -[45;35m++++[0m[42;32m -[0m[0mSeg:54c6 Size:256 Owner:0x1488 -[45;35m++++[0m[42;32m -[0m[0mSeg:55c6 Size:256 Owner:0x148a -[45;35m++++[0m[42;32m -[0m[0mSeg:56c6 Size:256 Owner:0x148c -[45;35m++++[0m[42;32m -[0m[0mSeg:57c6 Size:256 Owner:0x148e -[45;35m+++++[0m[42;32m -[0m[0mSeg:58c6 Size:256 Owner:0x1490 -[45;35m++++[0m[42;32m -[0m[0mSeg:59c6 Size:256 Owner:0x1492 -[45;35m++++[0m[42;32m -[0m[0mSeg:5ac6 Size:256 Owner:0x1494 -[45;35m++++[0m[42;32m -[0m[0mSeg:5bc6 Size:256 Owner:0x1496 -[45;35m++++[0m[42;32m -[0m[0mSeg:5cc6 Size:256 Owner:0x1498 -[45;35m+++++[0m[42;32m -[0m[0mSeg:5dc6 Size:256 Owner:0x149a -[45;35m++++[0m[42;32m -[0m[0mSeg:5ec6 Size:256 Owner:0x149c -[45;35m++++[0m[42;32m -[0m[0mSeg:5fc6 Size:256 Owner:0x149e -[45;35m++++[0m[42;32m -[0m[0mSeg:60c6 Size:256 Owner:0x14a0 -[45;35m++++[0m[42;32m -[0m[0mSeg:61c6 Size:256 Owner:0x14a2 -[45;35m+++++[0m[42;32m -[0m[0mSeg:62c6 Size:256 Owner:0x14a4 -[45;35m++++[0m[42;32m -[0m[0mSeg:63c6 Size:256 Owner:0x14a6 -[45;35m++++[0m[42;32m -[0m[0mSeg:64c6 Size:256 Owner:0x14a8 -[45;35m++++[0m[42;32m -[0m[0mSeg:65c6 Size:256 Owner:0x14aa -[45;35m++++[0m[42;32m -[0m[0mSeg:66c6 Size:256 Owner:0x14ac -[45;35m+++++[0m[42;32m -[0m[0mSeg:67c6 Size:256 Owner:0x14ae -[45;35m++++[0m[42;32m -[0m[0mSeg:68c6 Size:256 Owner:0x14b0 -[45;35m++++[0m[42;32m -[0m[0mSeg:69c6 Size:256 Owner:0x14b2 -[45;35m++++[0m[42;32m -[0m[0mSeg:6ac6 Size:256 Owner:0x14b4 -[45;35m++++[0m[42;32m -[0m[0mSeg:6bc6 Size:256 Owner:0x14b6 -[45;35m+++++[0m[42;32m -[0m[0mSeg:6cc6 Size:256 Owner:0x14b8 -[45;35m++++[0m[42;32m -[0m[0mSeg:6dc6 Size:256 Owner:0x14ba -[45;35m++++[0m[42;32m -[0m[0mSeg:6ec6 Size:256 Owner:0x14bc -[45;35m++++[0m[42;32m -[0m[0mSeg:6fc6 Size:256 Owner:0x14be -[45;35m++++[0m[42;32m -[0m[0mSeg:70c6 Size:256 Owner:0x14c0 -[45;35m+++++[0m[42;32m -[0m[0mSeg:71c6 Size:256 Owner:0x14c2 -[45;35m++++[0m[42;32m -[0m[0mSeg:72c6 Size:256 Owner:0x14c4 -[45;35m++++[0m[42;32m -[0m[0mSeg:73c6 Size:256 Owner:0x14c6 -[45;35m++++[0m[42;32m -[0m[0mSeg:74c6 Size:256 Owner:0x14c8 -[45;35m++++[0m[42;32m -[0m[0mSeg:75c6 Size:256 Owner:0x14ca -[45;35m+++++[0m[42;32m -[0m[0mSeg:76c6 Size:256 Owner:0x14cc -[45;35m++++[0m[42;32m -[0m[0mSeg:77c6 Size:256 Owner:0x14ce -[45;35m++++[0m[42;32m -[0m[0mSeg:78c6 Size:256 Owner:0x14d0 -[45;35m++++[0m[42;32m -[0m[0mSeg:79c6 Size:256 Owner:0x14d2 -[45;35m++++[0m[42;32m -[0m[0mSeg:7ac6 Size:256 Owner:0x14d4 -[45;35m+++++[0m[42;32m -[0m[0mSeg:7bc6 Size:256 Owner:0x14d6 -[45;35m++++[0m[42;32m -[0m[0mSeg:7cc6 Size:256 Owner:0x14d8 -[45;35m++++[0m[42;32m -[0m[0mSeg:7dc6 Size:256 Owner:0x14da -[45;35m++++[0m[42;32m -[0m[0mSeg:7ec6 Size:256 Owner:0x14dc -[45;35m++++[0m[42;32m -[0m[0mSeg:7fc6 Size:256 Owner:0x14de -[45;35m+++++[0m[42;32m -[0m[0mSeg:80c6 Size:256 Owner:0x14e0 -[45;35m++++[0m[42;32m -[0m[0mSeg:81c6 Size:256 Owner:0x14e2 -[45;35m++++[0m[42;32m -[0m[0mSeg:82c6 Size:256 Owner:0x14e4 -[45;35m++++[0m[42;32m -[0m[0mSeg:83c6 Size:256 Owner:0x14e6 -[45;35m++++[0m[42;32m -[0m[0mSeg:84c6 Size:256 Owner:0x14e8 -[45;35m+++++[0m[42;32m -[0m[0mSeg:85c6 Size:256 Owner:0x14ea -[45;35m++++[0m[42;32m -[0m[0mSeg:86c6 Size:256 Owner:0x14ec -[45;35m++++[0m[42;32m -[0m[0mSeg:87c6 Size:256 Owner:0x14ee -[45;35m++++[0m[42;32m -[0m[0mSeg:88c6 Size:256 Owner:0x14f0 -[45;35m++++[0m[42;32m -[0m[0mSeg:89c6 Size:256 Owner:0x14f2 -[45;35m+++++[0m[42;32m -[0m[0mSeg:8ac6 Size:256 Owner:0x14f4 -[45;35m++++[0m[42;32m -[0m[0mSeg:8bc6 Size:256 Owner:0x14f6 -[45;35m++++[0m[42;32m -[0m[0mSeg:8cc6 Size:256 Owner:0x14f8 -[45;35m++++[0m[42;32m -[0m[0mSeg:8dc6 Size:273 Owner:0xded0 -[44;34m+++++[0m[42;32m -[0m[0mSeg:b9c6 Size:17977 Owner:0x0 -[41;31m++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[0m \ No newline at end of file diff --git a/HEAP.16W b/HEAP.16W deleted file mode 100755 index 1917e011..00000000 --- a/HEAP.16W +++ /dev/null @@ -1,47 +0,0 @@ - - == default == - - USED block at 29bc0016 of size 66 - USED block at 29bc0058 of size 66 - FREE block at 29bc009a of size 18 - USED block at 29bc00ac of size 136 - USED block at 29bc0134 of size 20 - FREE block at 29bc0148 of size 7860 -OK - end of heap - - == near == - - USED block at 19bbdf06 of size 12 - USED block at 19bbdf12 of size 530 - USED block at 19bbe124 of size 72 - USED block at 19bbe16c of size 20 - USED block at 19bbe180 of size 20 - USED block at 19bbe194 of size 20 - USED block at 19bbe1a8 of size 20 - USED block at 19bbe1bc of size 20 - USED block at 19bbe1d0 of size 7724 -OK - end of heap - - == far == - - USED block at 29bc0016 of size 66 - USED block at 29bc0058 of size 66 - USED block at 29bc009a of size 18 - USED block at 29bc00ac of size 136 - USED block at 29bc0134 of size 20 - USED block at 29bc0148 of size 7860 -OK - end of heap - -Memory Type Total Used Free ----------------- -------- -------- -------- -Default 8166 288 7878 -Near 8438 714 7724 -Far 8166 288 7878 ----------------- -------- -------- -------- -coreleft = 7722 -farcoreleft = 31830 -GetFreeSize = 24128 -GetNearFreeSize = 7724 -GetFarFreeSize = 24128 -memavl = 7722 -stackavail = 31588 diff --git a/MEMINFO.16W b/MEMINFO.16W deleted file mode 100755 index e69de29b..00000000 diff --git a/MMDUMP.16W b/MMDUMP.16W deleted file mode 100755 index 892dcbced1ab8b0f79b025a822f92e8b42ca3cd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2244 zcmZwJJ4!@B6h%>E!N3{3P=kiDt*_8?=qc3ijltndgBZw4ceLOJ_k`~duIuX~eqN8a z`_ubzJHpFz_^XjMvsTv5I$5`B46O7<dLzA&-binxH`1HvP4p&u6TOMvL~o)u(VOYb z^k#Z9y_w!jZ>BfXTj(wH7J3W4h2BDMp|{Xm>8<oudMmw^-b!z!x6<3_ZS*#J8@-L* zMsK6H(c9_m^mckXy`A1pZ>P7@JLnzs4tfW@gWf^!pm)$a>7DdWdMCY;-bwGIchbA) zUGy$`7rl$#Mem|_(Yxv0^lo}Ly_?=m@1}Rtd(wN-d(wN-d&-+1-~aM&m#qD`@#Xb* Gt^5FOy|{<~ diff --git a/bcexmm.exe b/bcexmm.exe deleted file mode 100755 index c11e9410f7921c01c97e813a8f41177b1fd6478e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119900 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 F{{yCy`e^_F diff --git a/data/g.pal b/data/g.pal deleted file mode 100755 index 0ecbac33f44529d9701eae8c9b262c7da0f50416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 QcmZQz7zLvtFmgix00RI30RR91 diff --git a/joytest.exe b/joytest.exe index b8072513d71ac755eb4b7f9596826a9aca34facd..49400b1edcd5cb30cb426a1c47b19eff78859692 100755 GIT binary patch literal 25472 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 bH?XXD>#y-IN{A_q=tUG)Qcg<O2toKi%L5-x literal 16558 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 U>}>LT7&u-{U;#RsV;X}L0F&W+lmGw# diff --git a/src/lib/_6_in.c b/src/lib/_6_in.c new file mode 100755 index 00000000..72dcadf5 --- /dev/null +++ b/src/lib/_6_in.c @@ -0,0 +1,1290 @@ +/* Catacomb Apocalypse 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" + +#ifdef __DEBUG_InputMgr__ +boolean dbg_testkeyin=0,dbg_testcontrolnoisy=0; +#endif + +static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */ + +/* +============================================================================= + + GLOBAL VARIABLES + +============================================================================= +*/ +struct inconfig +{ + boolean MousePresent; + boolean JoysPresent[MaxJoys]; + boolean Keyboard[NumCodes]; + boolean Paused; + char LastASCII; + ScanCode LastScan; + + KeyboardDef KbdDefs[MaxKbds]; + JoystickDef JoyDefs[MaxJoys]; +} inpu; + +//extern inconfig inpu; +//inpu.KbdDefs = {0x1d,0x38,/*0x47,*/0x48,/*0x49,*/0x4b,0x4d,/*0x4f,*/0x50/*,0x51*/}; + +/* +============================================================================= + + LOCAL VARIABLES + +============================================================================= +*/ + +#ifdef __cplusplus /* Function must be declared C style */ +extern "C" { +#endif + +static struct instat { + boolean IN_Started; + boolean CapsLock; + ScanCode CurCode,LastCode; +} inst; + +static void (*INL_KeyHook)(void); +static void interrupt (*OldKeyVect)(void); +static char *ParmStringsIN[] = {"nojoys","nomouse",nil}; + +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 + }, + *ScanNames[] = // Scan code names with single chars + { + "?","?","1","2","3","4","5","6","7","8","9","0","-","+","?","?", + "Q","W","E","R","T","Y","U","I","O","P","[","]","|","?","A","S", + "D","F","G","H","J","K","L",";","\"","?","?","?","Z","X","C","V", + "B","N","M",",",".","/","?","?","?","?","?","?","?","?","?","?", + "?","?","?","?","?","?","?","?","\xf","?","-","\x15","5","\x11","+","?", + "\x13","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?", + "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?", + "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?" + }, // DEBUG - consolidate these + far ExtScanCodes[] = // Scan codes with >1 char names + { + 1,0xe,0xf,0x1d,0x2a,0x39,0x3a,0x3b,0x3c,0x3d,0x3e, + 0x3f,0x40,0x41,0x42,0x43,0x44,0x57,0x59,0x46,0x1c,0x36, + 0x37,0x38,0x47,0x49,0x4f,0x51,0x52,0x53,0x45,0x48, + 0x50,0x4b,0x4d,0x00 + }, + *ExtScanNames[] = // Names corresponding to ExtScanCodes + { + "Esc","BkSp","Tab","Ctrl","LShft","Space","CapsLk","F1","F2","F3","F4", + "F5","F6","F7","F8","F9","F10","F11","F12","ScrlLk","Enter","RShft", + "PrtSc","Alt","Home","PgUp","End","PgDn","Ins","Del","NumLk","Up", + "Down","Left","Right","" + }; + +static Direction DirTable[] = // Quick lookup for total direction + { + //dir_Nortinest, + dir_North, + dir_West, + dir_None, + dir_East, + dir_South + //dir_NorthEast, + //dir_Soutinest, + //,dir_SouthEast + }; +#ifdef __cplusplus +} +#endif + +// Internal routines + +/////////////////////////////////////////////////////////////////////////// +// +// INL_KeyService() - Handles a keyboard interrupt (key up/down) +// +/////////////////////////////////////////////////////////////////////////// +void interrupt +INL_KeyService() +{ +static boolean special; + byte k,c; + register byte temp; + + k = inp(0x60); // Get the scan code + + // Tell the XT keyboard controller to clear the key + outp(0x61,(temp = inp(0x61)) | 0x80); + outp(0x61,temp); + + if (k == 0xe0) // Special key prefix + special = true; + else if (k == 0xe1) // Handle Pause key + inpu.Paused = true; + else + { + if (k & 0x80) // Break code + { + k &= 0x7f; + +// DEBUG - handle special keys: ctl-alt-delete, print scrn + + inpu.Keyboard[k] = false; + } + else // Make code + { + inst.LastCode = inst.CurCode; + inst.CurCode = inpu.LastScan = k; + inpu.Keyboard[k] = true; + + if (special) + c = SpecialNames[k]; + else + { + if (k == sc_CapsLock) + { + inst.CapsLock ^= true; + // DEBUG - make caps lock light work + } + + if (inpu.Keyboard[sc_LShift] || inpu.Keyboard[sc_RShift]) // If shifted + { + c = ShiftNames[k]; + if ((c >= 'A') && (c <= 'Z') && inst.CapsLock) + c += 'a' - 'A'; + } + else + { + c = ASCIINames[k]; + if ((c >= 'a') && (c <= 'z') && inst.CapsLock) + c -= 'a' - 'A'; + } + } + if (c) + inpu.LastASCII = c; + } + + special = false; + } + + if (INL_KeyHook && !special) + INL_KeyHook(); +#ifdef __DEBUG_InputMgr__ + if(dbg_testkeyin > 0) printf("%c %u [0x%x %u] %u\n", c, c, k, k, inpu.Keyboard[k]); +#endif + outp(0x20,0x20); +} + +void +Mouse(int x) +{ + //union REGS CPURegs; + //x = CPURegs.x.ax; + __asm { + mov ax,x + int MouseInt + } + //int86(MouseInt,&CPURegs,&CPURegs); +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_GetMouseDelta() - Gets the amount that the mouse has moved from the +// mouse driver +// +/////////////////////////////////////////////////////////////////////////// +static void +INL_GetMouseDelta(int *x,int *y) +{ + union REGS CPURegs; + Mouse(MDelta); + *x = CPURegs.x.cx; + *y = CPURegs.x.dx; +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_GetMouseButtons() - Gets the status of the mouse buttons from the +// mouse driver +// +/////////////////////////////////////////////////////////////////////////// +static word +INL_GetMouseButtons(void) +{ + union REGS CPURegs; + word buttons; + + Mouse(MButtons); + buttons = CPURegs.x.bx; + return(buttons); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_GetJoyAbs() - Reads the absolute position of the specified joystick +// +/////////////////////////////////////////////////////////////////////////// +void +IN_GetJoyAbs(word joy,word *xp,word *yp) +{ + byte xb,yb, + xs,ys; + word x,y; + + x = y = 0; + xs = joy? 2 : 0; // Find shift value for x axis + xb = 1 << xs; // Use shift value to get x bit mask + ys = joy? 3 : 1; // Do the same for y axis + yb = 1 << ys; + +// Read the absolute joystick values + __asm { + pushf // Save some registers + push si + push di + cli // Make sure an interrupt doesn't screw the timings + + + mov dx,0x201 + in al,dx + out dx,al // Clear the resistors + + mov ah,[xb] // Get masks into registers + mov ch,[yb] + + xor si,si // Clear count registers + xor di,di + xor bh,bh // Clear high byte of bx for later + + push bp // Don't mess up stack frame + mov bp,MaxJoyValue +#ifdef __BORLANDC__ + } +#endif +loo: +#ifdef __BORLANDC__ + __asm { +#endif + in al,dx // Get bits indicating whether all are finished + + dec bp // Check bounding register + jz done // We have a silly value - abort + + mov bl,al // Duplicate the bits + and bl,ah // Mask off useless bits (in [xb]) + add si,bx // Possibly increment count register + mov cl,bl // Save for testing later + + mov bl,al + and bl,ch // [yb] + add di,bx + + add cl,bl + jnz loo // If both bits were 0, drop out +#ifdef __BORLANDC__ + } +#endif +done: +#ifdef __BORLANDC__ + __asm { +#endif + pop bp + + mov cl,[xs] // Get the number of bits to shift + shr si,cl // and shift the count that many times + + mov cl,[ys] + shr di,cl + + mov [x],si // Store the values into the variables + mov [y],di + + pop di + pop si + popf // Restore the registers + } + + *xp = x; + *yp = y; +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_GetJoyDelta() - Returns the relative movement of the specified +// joystick (from +/-127, scaled adaptively) +// +/////////////////////////////////////////////////////////////////////////// +static void +INL_GetJoyDelta(word joy,int *dx,int *dy,boolean adaptive) +{ + word x,y; + word time; + word TimeCount = *clockw; + JoystickDef *def; +static word lasttime; + + IN_GetJoyAbs(joy,&x,&y); + def = inpu.JoyDefs + joy; + + if (x < def->threshMinX) + { + if (x < def->joyMinX) + x = def->joyMinX; + + x = -(x - def->threshMinX); + x *= def->joyMultXL; + x >>= JoyScaleShift; + *dx = (x > 127)? -127 : -x; + } + else if (x > def->threshMaxX) + { + if (x > def->joyMaxX) + x = def->joyMaxX; + + x = x - def->threshMaxX; + x *= def->joyMultXH; + x >>= JoyScaleShift; + *dx = (x > 127)? 127 : x; + } + else + *dx = 0; + + if (y < def->threshMinY) + { + if (y < def->joyMinY) + y = def->joyMinY; + + y = -(y - def->threshMinY); + y *= def->joyMultYL; + y >>= JoyScaleShift; + *dy = (y > 127)? -127 : -y; + } + else if (y > def->threshMaxY) + { + if (y > def->joyMaxY) + y = def->joyMaxY; + + y = y - def->threshMaxY; + y *= def->joyMultYH; + y >>= JoyScaleShift; + *dy = (y > 127)? 127 : y; + } + else + *dy = 0; + + if (adaptive) + { + time = (TimeCount - lasttime) / 2; + if (time) + { + if (time > 8) + time = 8; + *dx *= time; + *dy *= time; + } + } + lasttime = TimeCount; +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_GetJoyButtons() - Returns the button status of the specified +// joystick +// +/////////////////////////////////////////////////////////////////////////// +static word +INL_GetJoyButtons(word joy) +{ +register word result; + + result = inp(0x201); // Get all the joystick buttons + result >>= joy? 6 : 4; // Shift into bits 0-1 + result &= 3; // Mask off the useless bits + result ^= 3; + return(result); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_GetJoyButtonsDB() - Returns the de-bounced button status of the +// specified joystick +// +/////////////////////////////////////////////////////////////////////////// +word +IN_GetJoyButtonsDB(word joy) +{ + word TimeCount = *clockw; + word lasttime; + word result1,result2; + + do + { + result1 = INL_GetJoyButtons(joy); + lasttime = TimeCount; + while(TimeCount == lasttime) + result2 = INL_GetJoyButtons(joy); + } while(result1 != result2); + return(result1); +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_StartKbd() - Sets up my keyboard stuff for use +// +/////////////////////////////////////////////////////////////////////////// +static void +INL_StartKbd() +{ + INL_KeyHook = 0; // Clear key hook + + IN_ClearKeysDown(); + + OldKeyVect = _dos_getvect(KeyInt); + _dos_setvect(KeyInt,INL_KeyService); +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_ShutKbd() - Restores keyboard control to the BIOS +// +/////////////////////////////////////////////////////////////////////////// +static void +INL_ShutKbd(void) +{ + pokeb(0x40,0x17,peekb(0x40,0x17) & 0xfaf0); // Clear ctrl/alt/shift flags + + _dos_setvect(KeyInt,OldKeyVect); +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_StartMouse() - Detects and sets up the mouse +// +/////////////////////////////////////////////////////////////////////////// +static boolean +INL_StartMouse(void) +{ + union REGS CPURegs; + if(_dos_getvect(MouseInt)) + { + Mouse(MReset); + if(CPURegs.x.ax == 0xffff) + return(true); + } + return(false); +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_ShutMouse() - Cleans up after the mouse +// +/////////////////////////////////////////////////////////////////////////// +static void +INL_ShutMouse(void) +{ +} + +// +// INL_SetJoyScale() - Sets up scaling values for the specified joystick +// +static void +INL_SetJoyScale(word joy) +{ + JoystickDef *def; + + def = &(inpu.JoyDefs[joy]); + def->joyMultXL = JoyScaleMax / (def->threshMinX - def->joyMinX); + def->joyMultXH = JoyScaleMax / (def->joyMaxX - def->threshMaxX); + def->joyMultYL = JoyScaleMax / (def->threshMinY - def->joyMinY); + def->joyMultYH = JoyScaleMax / (def->joyMaxY - def->threshMaxY); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_SetupJoy() - Sets up thresholding values and calls INL_SetJoyScale() +// to set up scaling values +// +/////////////////////////////////////////////////////////////////////////// +void +IN_SetupJoy(word joy,word minx,word maxx,word miny,word maxy) +{ + word d,r; + JoystickDef *def; + + def = &(inpu.JoyDefs[joy]); + + def->joyMinX = minx; + def->joyMaxX = maxx; + r = maxx - minx; + d = r / 3; + def->threshMinX = ((r / 2) - d) + minx; + def->threshMaxX = ((r / 2) + d) + minx; + + def->joyMinY = miny; + def->joyMaxY = maxy; + r = maxy - miny; + d = r / 3; + def->threshMinY = ((r / 2) - d) + miny; + def->threshMaxY = ((r / 2) + d) + miny; + + INL_SetJoyScale(joy); +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_StartJoy() - Detects & auto-configures the specified joystick +// The auto-config assumes the joystick is centered +// +/////////////////////////////////////////////////////////////////////////// +static boolean +INL_StartJoy(word joy) +{ + word x,y; + + IN_GetJoyAbs(joy,&x,&y); + + if + ( + ((x == 0) || (x > MaxJoyValue - 10)) + || ((y == 0) || (y > MaxJoyValue - 10)) + ) + return(false); + else + { + IN_SetupJoy(joy,0,x * 2,0,y * 2); + return(true); + } +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_ShutJoy() - Cleans up the joystick stuff +// +/////////////////////////////////////////////////////////////////////////// +static void +INL_ShutJoy(word joy) +{ + inpu.JoysPresent[joy] = false; +} + +// Public routines + +/////////////////////////////////////////////////////////////////////////// +// +// IN_Startup() - Starts up the Input Mgr +// +/////////////////////////////////////////////////////////////////////////// +void +IN_Startup() +{ + boolean checkjoys,checkmouse; + word i; + + if (inst.IN_Started) + return; + + checkjoys = true; + checkmouse = true; + for (i = 1;i < _argc;i++) + { + switch (US_CheckParm(_argv[i],ParmStringsIN)) + { + case 0: + checkjoys = false; + break; + case 1: + checkmouse = false; + break; + } + } + + INL_StartKbd(); + inpu.MousePresent = checkmouse? INL_StartMouse() : false; + + for (i = 0;i < MaxJoys;i++) + inpu.JoysPresent[i] = checkjoys? INL_StartJoy(i) : false; + + inst.IN_Started = true; + +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_Default() - Sets up default conditions for the Input Mgr +// +/////////////////////////////////////////////////////////////////////////// +void +IN_Default(boolean gotit,player_t *player,ControlType nt) +{ + int i; + if + ( + (!gotit) + || ((nt == ctrl_Joystick1) && !inpu.JoysPresent[0]) + || ((nt == ctrl_Joystick2) && !inpu.JoysPresent[1]) + || ((nt == ctrl_Mouse) && !inpu.MousePresent) + ) + nt = ctrl_Keyboard1; + inpu.KbdDefs[0].button0 = 0x1c; + inpu.KbdDefs[0].button1 = 0x38; + //in.KbdDefs[0].upleft = 0x47; + inpu.KbdDefs[0].up = 0x48; + //in.KbdDefs[0].upright = 0x49; + inpu.KbdDefs[0].left = 0x4b; + inpu.KbdDefs[0].right = 0x4d; + //in.KbdDefs[0].downleft = 0x4f; + inpu.KbdDefs[0].down = 0x50; + //in.KbdDefs[0].downright = 0x51; + IN_SetControlType(0,player,nt); + for(i=0; i>MaxPlayers;i++) + player[i].d=2; +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_Shutdown() - Shuts down the Input Mgr +// +/////////////////////////////////////////////////////////////////////////// +void +IN_Shutdown() +{ + word i; + + if (!inst.IN_Started) + return; + + INL_ShutMouse(); + for (i = 0;i < MaxJoys;i++) + INL_ShutJoy(i); + INL_ShutKbd(); + + inst.IN_Started = false; +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_SetKeyHook() - Sets the routine that gets called by INL_KeyService() +// everytime a real make/break code gets hit +// +/////////////////////////////////////////////////////////////////////////// +void +IN_SetKeyHook(void (*hook)()) +{ + INL_KeyHook = hook; +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_ClearKeyDown() - Clears the keyboard array +// +/////////////////////////////////////////////////////////////////////////// +void +IN_ClearKeysDown() +{ + //int i; + + inpu.LastScan = sc_None; + inpu.LastASCII = key_None; + memset (inpu.Keyboard,0,sizeof(inpu.Keyboard)); +} + +/////////////////////////////////////////////////////////////////////////// +// +// INL_AdjustCursor() - Internal routine of common code from IN_ReadCursor() +// +/////////////////////////////////////////////////////////////////////////// +static void +INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy) +{ + if (buttons & (1 << 0)) + info->button0 = true; + if (buttons & (1 << 1)) + info->button1 = true; + + info->x += dx; + info->y += dy; +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_ReadCursor() - Reads the input devices and fills in the cursor info +// struct +// +/////////////////////////////////////////////////////////////////////////// +void +IN_ReadCursor(CursorInfo *info) +{ + word i, + buttons; + int dx,dy; + + info->x = info->y = 0; + info->button0 = info->button1 = false; + + if (inpu.MousePresent) + { + buttons = INL_GetMouseButtons(); + INL_GetMouseDelta(&dx,&dy); + INL_AdjustCursor(info,buttons,dx,dy); + } + + for (i = 0;i < MaxJoys;i++) + { + if (!inpu.JoysPresent[i]) + continue; + + buttons = INL_GetJoyButtons(i); + INL_GetJoyDelta(i,&dx,&dy,true); + dx /= 64; + dy /= 64; + INL_AdjustCursor(info,buttons,dx,dy); + } +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_ReadControl() - Reads the device associated with the specified +// player and fills in the control info struct +// +/////////////////////////////////////////////////////////////////////////// +void near +IN_ReadControl(int pn,player_t *player) +{ + boolean realdelta; +#if DEMO0 + byte dbyte; +#endif + word buttons; + int dx,dy; + Motion mx,my; + ControlType type; + sword conpee; + byte dir=DirTable[2]; +register KeyboardDef *def; + + dx = dy = 0; + mx = my = motion_None; + buttons = 0; + +#if DEMO0 + if (DemoMode == demo_Playback) + { + dbyte = DemoBuffer[DemoOffset + 1]; + my = (dbyte & 3) - 1; + mx = ((dbyte >> 2) & 3) - 1; + buttons = (dbyte >> 4) & 3; + + if (!(--DemoBuffer[DemoOffset])) + { + DemoOffset += 2; + if (DemoOffset >= DemoSize) + DemoMode = demo_PlayDone; + } + + realdelta = false; + } + else if (DemoMode == demo_PlayDone) + Quit("Demo playback exceeded"); + else + { +#endif + switch (type = player[pn].Controls) + { + case ctrl_Keyboard1: + case ctrl_Keyboard2: + def = &(inpu.KbdDefs[type - ctrl_Keyboard]); + +/* if (Keyboard[def->upleft]) + mx = motion_Left,my = motion_Up; + else if (Keyboard[def->upright]) + mx = motion_Right,my = motion_Up; + else if (Keyboard[def->downleft]) + mx = motion_Left,my = motion_Down; + else if (Keyboard[def->downright]) + mx = motion_Right,my = motion_Down;*/ +//TODO: make this into a function that the joystick AND keyboard can use wwww + if(DIRECTIONIFELSE)//(player[pn].info.dir == 2) + { + if(!inpu.Keyboard[def->left] && !inpu.Keyboard[def->right]){ + if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down])) + my = motion_Up; + if((inpu.Keyboard[def->down] && !inpu.Keyboard[def->up])) + my = motion_Down; + }else if(!inpu.Keyboard[def->up] && !inpu.Keyboard[def->down]){ + if((inpu.Keyboard[def->left] && !inpu.Keyboard[def->right])) + mx = motion_Left; + if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left])) + mx = motion_Right; + }else{ //2 keys pressed + switch (player[pn].pdir) + { + case 0: + case 4: + if((inpu.Keyboard[def->left] && !inpu.Keyboard[def->right])){ dir = DirTable[1]; }//mx = motion_Left; } + else if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left])){ dir = DirTable[3]; }//mx = motion_Right; } + break; + case 1: + case 3: + if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down])){ dir = DirTable[0]; }//my = motion_Up; } + else if((inpu.Keyboard[def->down] && !inpu.Keyboard[def->up])){ dir = DirTable[4]; }//my = motion_Down; } + break; + default: + break; + } +#ifdef __DEBUG_InputMgr__ + //if(dbg_testcontrolnoisy > 0){ printf("dir=%c ", dirchar(dir)); printf("pdir=%c ", dirchar(player[pn].pdir)); } +#endif + } + } + //input from player + if (inpu.Keyboard[def->button0]) + buttons += 1 << 0; + if (inpu.Keyboard[def->button1]) + buttons += 1 << 1; + realdelta = false; + break; + case ctrl_Joystick1: + case ctrl_Joystick2: + INL_GetJoyDelta(type - ctrl_Joystick,&dx,&dy,false); + buttons = INL_GetJoyButtons(type - ctrl_Joystick); + realdelta = true; + break; + case ctrl_Mouse: + INL_GetMouseDelta(&dx,&dy); + buttons = INL_GetMouseButtons(); + realdelta = true; + break; + } +#ifdef DEMO0 + } +#endif + + if (realdelta) + { + mx = (dx < 0)? motion_Left : ((dx > 0)? motion_Right : motion_None); + my = (dy < 0)? motion_Up : ((dy > 0)? motion_Down : motion_None); + } + else + { + dx = mx;// * 127; + dy = my;// * 127; + } + + player[pn].info.x = dx; + player[pn].info.xaxis = mx; + player[pn].info.y = dy; + player[pn].info.yaxis = my; + player[pn].info.button0 = buttons & (1 << 0); + player[pn].info.button1 = buttons & (1 << 1); + player[pn].info.button2 = buttons & (1 << 2); + player[pn].info.button3 = buttons & (1 << 3); +// player[pn].info.dir = DirTable[((my + 1) * 3) + (mx + 1)]; + conpee=(((my + 1) * 2) + (mx + 1))-1; + player[pn].info.dir = DirTable[conpee]; + + if(DirTable[conpee]!=2) player[pn].pdir=DirTable[conpee]; + if(player[pn].q==1 &&( dir!=2 || (mx!=motion_None || my!=motion_None))) + { + if(dir==2) player[pn].d = player[pn].info.dir; + else player[pn].d = DirTable[dir]; + } + +#if DEMO0 + if (DemoMode == demo_Record) + { + // Pack the control info into a byte + dbyte = (buttons << 4) | ((mx + 1) << 2) | (my + 1); + + if + ( + (DemoBuffer[DemoOffset + 1] == dbyte) + && (DemoBuffer[DemoOffset] < 255) + ) + (DemoBuffer[DemoOffset])++; + else + { + if (DemoOffset || DemoBuffer[DemoOffset]) + DemoOffset += 2; + + if (DemoOffset >= DemoSize) + Quit("Demo buffer overflow"); + + DemoBuffer[DemoOffset] = 1; + DemoBuffer[DemoOffset + 1] = dbyte; + } + } +#endif +#ifdef __DEBUG_InputMgr__ +if(dbg_testcontrolnoisy > 0) +if(player[pn].info.dir!=2/*(inpu.Keyboard[def->up] || inpu.Keyboard[def->down] || inpu.Keyboard[def->left] || inpu.Keyboard[def->right])*/ || player[pn].q>1) +{ + //printf("b1=%u b2=%u b3=%u b4=%u ", player[pn].info.button0, player[pn].info.button1, player[pn].info.button2, player[pn].info.button3); + //printf("q=%d ", player[pn].q); + //printf("cpee=%c ", dirchar(conpee)); + printf("pdir=%c d=%c dir=%c ", dirchar(player[pn].pdir), dirchar(player[pn].d), dirchar(player[pn].info.dir)); + /*if(realdelta) */printf("dx=%d dy=%d mx=%d my=%d", player[pn].info.x, player[pn].info.y, player[pn].info.xaxis, player[pn].info.yaxis); + //else if(!realdelta) printf("%c%d %c%d %c%d %c%d", dirchar(0), inpu.Keyboard[def->up], dirchar(4), inpu.Keyboard[def->down], dirchar(1), inpu.Keyboard[def->left], dirchar(3), inpu.Keyboard[def->right]); + printf("\n"); +} +#endif +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_SetControlType() - Sets the control type to be used by the specified +// player +// +/////////////////////////////////////////////////////////////////////////// +void +IN_SetControlType(word pn,player_t *player,ControlType type) +{ + // DEBUG - check that requested type is present? + player[pn].Controls = type; +} + +#if DEMO0 +/////////////////////////////////////////////////////////////////////////// +// +// IN_StartDemoRecord() - Starts the demo recording, using a buffer the +// size passed. Returns if the buffer allocation was successful +// +/////////////////////////////////////////////////////////////////////////// +boolean +IN_StartDemoRecord(word bufsize) +{ + if (!bufsize) + return(false); + + MM_GetPtr((memptr *)&DemoBuffer,bufsize); + DemoMode = demo_Record; + DemoSize = bufsize & ~1; + DemoOffset = 0; + DemoBuffer[0] = DemoBuffer[1] = 0; + + return(true); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_StartDemoPlayback() - Plays back the demo pointed to of the given size +// +/////////////////////////////////////////////////////////////////////////// +void +IN_StartDemoPlayback(byte /*__segment*/ *buffer,word bufsize) +{ + DemoBuffer = buffer; + DemoMode = demo_Playback; + DemoSize = bufsize & ~1; + DemoOffset = 0; +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_StopDemo() - Turns off demo mode +// +/////////////////////////////////////////////////////////////////////////// +void +IN_StopDemo(void) +{ + if ((DemoMode == demo_Record) && DemoOffset) + DemoOffset += 2; + + DemoMode = demo_Off; +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_FreeDemoBuffer() - Frees the demo buffer, if it's been allocated +// +/////////////////////////////////////////////////////////////////////////// +void +IN_FreeDemoBuffer(void) +{ + if (DemoBuffer) + MM_FreePtr((memptr *)&DemoBuffer); +} +#endif + + +/////////////////////////////////////////////////////////////////////////// +// +// IN_GetScanName() - Returns a string containing the name of the +// specified scan code +// +/////////////////////////////////////////////////////////////////////////// +byte * +IN_GetScanName(ScanCode scan) +{ + byte **p; + ScanCode far *s; + + for (s = ExtScanCodes,p = ExtScanNames;*s;p++,s++) + if (*s == scan) + return(*p); + + return(ScanNames[scan]); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_WaitForKey() - Waits for a scan code, then clears LastScan and +// returns the scan code +// +/////////////////////////////////////////////////////////////////////////// +ScanCode +IN_WaitForKey() +{ + ScanCode result; + + while (!(result = inpu.LastScan)) + ; + inpu.LastScan = 0; + return(result); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_WaitForASCII() - Waits for an ASCII char, then clears LastASCII and +// returns the ASCII value +// +/////////////////////////////////////////////////////////////////////////// +char +IN_WaitForASCII() +{ + char result; + + while (!(result = inpu.LastASCII)) + ; + inpu.LastASCII = '\0'; + return(result); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_AckBack() - Waits for either an ASCII keypress or a button press +// +/////////////////////////////////////////////////////////////////////////// +void +IN_AckBack() +{ + word i; + + while (!inpu.LastScan) + { + if (inpu.MousePresent) + { + if (INL_GetMouseButtons()) + { + while (INL_GetMouseButtons()) + ; + return; + } + } + + for (i = 0;i < MaxJoys;i++) + { + if (inpu.JoysPresent[i]) + { + if (IN_GetJoyButtonsDB(i)) + { + while (IN_GetJoyButtonsDB(i)) + ; + return; + } + } + } + } + + IN_ClearKey(inpu.LastScan); + inpu.LastScan = sc_None; +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_Ack() - Clears user input & then calls IN_AckBack() +// +/////////////////////////////////////////////////////////////////////////// +void +IN_Ack() +{ + word i; + + if (!inst.IN_Started) + return; + + IN_ClearKey(inpu.LastScan); + inpu.LastScan = sc_None; + + if (inpu.MousePresent) + while (INL_GetMouseButtons()) + ; + for (i = 0;i < MaxJoys;i++) + if (inpu.JoysPresent[i]) + while (IN_GetJoyButtonsDB(i)) + ; + + IN_AckBack(); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_IsUserInput() - Returns true if a key has been pressed or a button +// is down +// +/////////////////////////////////////////////////////////////////////////// +boolean +IN_IsUserInput() +{ + boolean result; + word i; + + result = inpu.LastScan; + + if (inpu.MousePresent) + if (INL_GetMouseButtons()) + result = true; + + for (i = 0;i < MaxJoys;i++) + if (inpu.JoysPresent[i]) + if (INL_GetJoyButtons(i)) + result = true; + + return(result); +} + +/////////////////////////////////////////////////////////////////////////// +// +// IN_UserInput() - Waits for the specified delay time (in ticks) or the +// user pressing a key or a mouse button. If the clear flag is set, it +// then either clears the key or waits for the user to let the mouse +// button up. +// +/////////////////////////////////////////////////////////////////////////// +boolean +IN_UserInput(dword delay,boolean clear) +{ + word TimeCount = *clockw; + word lasttime; + + lasttime = TimeCount; + do + { + if (IN_IsUserInput()) + { + if (clear) + IN_AckBack(); + return(true); + } + } while (TimeCount - lasttime < delay); + return(false); +} + +boolean IN_KeyDown(byte code) +{ + return inpu.Keyboard[code]; +} + +void IN_ClearKey(byte code) +{ + inpu.Keyboard[code] = false; + if(code == inpu.LastScan) + inpu.LastScan = sc_None; + } + +boolean IN_qb(byte kee) +{ +#ifdef __DEBUG_InputMgr__ +// if(dbg_testkeyin > 0) printf("%u\n", inpu.Keyboard[kee]); +#endif + if(inpu.Keyboard[kee]==true) return 1; + else return 0; +} + +//init player! +void IN_initplayer(player_t *player, word pn) +{ + player[pn].x = player[pn].tx*TILEWH; + player[pn].y = player[pn].ty*TILEWH; + player[pn].triggerx = player[pn].tx; + player[pn].triggery = player[pn].ty+1; +/* player[0].info.x = player[0].tx; + player[0].info.xaxis = player[0].tx*TILEWH; + player[0].info.y = player[0].ty; + player[0].info.yaxis = player[0].ty*TILEWH;*/ + player[pn].q=1; + player[pn].d=2; + player[pn].hp=4; + player[pn].speed=4; + player[pn].persist_aniframe=0; + player[pn].spt=(TILEWH/(player[pn].speed)); //speed per tile wwww +} diff --git a/src/lib/_6_in.h b/src/lib/_6_in.h new file mode 100755 index 00000000..eb1650e4 --- /dev/null +++ b/src/lib/_6_in.h @@ -0,0 +1,309 @@ +/* Catacomb Apocalypse 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.h - Header file for Input Manager +// v1.0d1w +// By Jason Blochowiak +// Open Watcom port by sparky4 +// + +#ifndef __16_IN__ +#define __16_IN__ + +#include <string.h> +#include "src/lib/16_head.h" +#include "src/lib/16_timer.h" +#ifdef __WATCOMC__ //borland C BCEXMM.EXE +#include "src/lib/16_dbg.h" +#include "src/lib/16_sprit.h" +//#include "src/lib/bitmap.h" //old format +#endif +#ifdef __DEBUG__ +#define __DEBUG_InputMgr__ +extern boolean dbg_testkeyin,dbg_testcontrolnoisy; +#endif + +//if else for gfxtesting and direction +//player[pn].d == 2 || +//player[pn].d != 2 || +#define DIRECTIONIFELSE (player[pn].info.dir == 2) +//#define NDIRECTIONIFELSE (player[pn].info.dir != 2) + +#define KeyInt 9 // The keyboard ISR number + +// Stuff for the joystick +#define JoyScaleMax 32768 +#define JoyScaleShift 8 +#define MaxJoyValue 5000 + +#define MaxPlayers 4 +#define MaxKbds 2 +#define MaxJoys 2 +#define MaxPads 2 +#define NumCodes 128 + +typedef byte ScanCode; +#define sc_None 0 +#define sc_Bad 0xff +#define sc_Return 0x1c +#define sc_Enter sc_Return +#define sc_Escape 0x01 +#define sc_Space 0x39 +#define sc_BackSpace 0x0e +#define sc_Tab 0x0f +#define sc_Alt 0x38 +#define sc_Control 0x1d +#define sc_CapsLock 0x3a +#define sc_LShift 0x2a +#define sc_RShift 0x36 +#define sc_UpArrow 0x48 +#define sc_DownArrow 0x50 +#define sc_LeftArrow 0x4b +#define sc_RightArrow 0x4d +#define sc_Insert 0x52 +#define sc_Delete 0x53 +#define sc_Home 0x47 +#define sc_End 0x4f +#define sc_PgUp 0x49 +#define sc_PgDn 0x51 +#define sc_F1 0x3b +#define sc_F2 0x3c +#define sc_F3 0x3d +#define sc_F4 0x3e +#define sc_F5 0x3f +#define sc_F6 0x40 +#define sc_F7 0x41 +#define sc_F8 0x42 +#define sc_F9 0x43 +#define sc_F10 0x44 +#define sc_F11 0x57 +#define sc_F12 0x59 + +#define sc_1 0x02 +#define sc_2 0x03 +#define sc_3 0x04 +#define sc_4 0x05 +#define sc_5 0x06 +#define sc_6 0x07 +#define sc_7 0x08 +#define sc_8 0x09 +#define sc_9 0x0a +#define sc_0 0x0b + +#define sc_A 0x1e +#define sc_B 0x30 +#define sc_C 0x2e +#define sc_D 0x20 +#define sc_E 0x12 +#define sc_F 0x21 +#define sc_G 0x22 +#define sc_H 0x23 +#define sc_I 0x17 +#define sc_J 0x24 +#define sc_K 0x25 +#define sc_L 0x26 +#define sc_M 0x32 +#define sc_N 0x31 +#define sc_O 0x18 +#define sc_P 0x19 +#define sc_Q 0x10 +#define sc_R 0x13 +#define sc_S 0x1f +#define sc_T 0x14 +#define sc_U 0x16 +#define sc_V 0x2f +#define sc_W 0x11 +#define sc_X 0x2d +#define sc_Y 0x15 +#define sc_Z 0x2c + +#define key_None 0 +#define key_Return 0x0d +#define key_Enter key_Return +#define key_Escape 0x1b +#define key_Space 0x20 +#define key_BackSpace 0x08 +#define key_Tab 0x09 +#define key_Delete 0x7f + +#define key_LSuper 0x5b +#define key_RSuper 0x5c +#define key_Menu 0x5d + +// Stuff for the mouse +#define MReset 0 +#define MButtons 3 +#define MDelta 11 + +#define MouseInt 0x33 +#ifdef DEMO0 +typedef enum { + demo_Off,demo_Record,demo_Playback,demo_PlayDone + } Demo; +#endif +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, + } ControlType; +typedef enum { + motion_Left = -1,motion_Up = -1, + motion_None = 0, + motion_Right = 1,motion_Down = 1 + } Motion; +typedef enum { + dir_North,//dir_NorthEast, + dir_West,//dir_Nortinest, + dir_None, + dir_East,//,dir_SouthEast, + dir_South,//dir_Soutinest, + } Direction; +typedef struct { + boolean near button0,button1,button2,button3; + int near x,y; + Motion near xaxis,yaxis; + Direction near dir; + } CursorInfo; + +typedef struct { + ScanCode near button0,button1, + //upleft, + up, + down, + left, + right + //upright, + //downleft, + //,downright + ; + } KeyboardDef; +typedef struct { + word near joyMinX,joyMinY, + threshMinX,threshMinY, + threshMaxX,threshMaxY, + joyMaxX,joyMaxY, + joyMultXL,joyMultYL, + joyMultXH,joyMultYH; + } JoystickDef; + +typedef struct +{ + int x; //player exact position on the viewable map + int y; //player exact position on the viewable map + int tx; //player tile position on the viewable map + int ty; //player tile position on the viewable map + int triggerx; //player's trigger box tile position on the viewable map + int triggery; //player's trigger box tile position on the viewable map + int sheetsetx; //NOT USED YET! player sprite sheet set on the image x + int sheetsety; //NOT USED YET! player sprite sheet set on the image y + byte d; //direction to render sprite!! wwww + byte q; //loop variable for anumation and locking the playing to compleate the animation cycle to prevent issues with misalignment www + byte near pdir; //previous direction~ + //byte near kd[2]; //array of arrow key pressed + word speed; //player speed! + word spt; //speed per tile +//0000 planar_buf_t huge *data; //supposively the sprite sheet data +// planar_buf_t data; //supposively the sprite sheet data +////0000---- +#ifdef __WATCOMC__ + struct sprite *spri; //supposively the sprite sheet data + memptr gr; +#endif + bitmap_t *data; //supposively the sprite sheet data//old format + sword hp; //hitpoints of the player + int persist_aniframe; /* gonna be increased to 1 before being used, so 0 is ok for default */ + CursorInfo info; + ControlType Controls; +} player_t; + +/* +============================================================================= + + GLOBAL VARIABLES + +============================================================================= +*/ +/*extern struct inconfig +{ + boolean MousePresent; + boolean JoysPresent[MaxJoys]; + boolean Keyboard[NumCodes]; + boolean Paused; + char LastASCII; + ScanCode LastScan; + + KeyboardDef KbdDefs[MaxKbds]; + JoystickDef JoyDefs[MaxJoys]; +} inpu;*/ + +#ifdef DEMO0 + static Demo DemoMode = demo_Off; + static byte /*_seg*/ *DemoBuffer; + static word DemoOffset,DemoSize; +#endif + +// Internal routines +extern void interrupt INL_KeyService(); +extern void Mouse(int x); +//static void INL_GetMouseDelta(int *x,int *y); +//static word INL_GetMouseButtons(void); +extern 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); +extern 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); +extern 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); +extern void IN_Startup(); +extern void IN_Default(boolean gotit,player_t *player,ControlType nt); +extern void IN_Shutdown(); +extern void IN_SetKeyHook(void (*hook)()); +extern void IN_ClearKeysDown(); +//static void INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy); +extern void IN_ReadCursor(CursorInfo *info); +extern void near IN_ReadControl(int pn,player_t *player); +extern void IN_SetControlType(word pn,player_t *player,ControlType type); +#if DEMO0 +extern boolean IN_StartDemoRecord(word bufsize); +extern void IN_StartDemoPlayback(byte /*__segment*/ *buffer,word bufsize); +extern void IN_StopDemo(void); +extern void IN_FreeDemoBuffer(void); +#endif +extern byte *IN_GetScanName(ScanCode scan); +extern ScanCode IN_WaitForKey(); +extern char IN_WaitForASCII(); +extern void IN_AckBack(); +extern void IN_Ack(); +extern boolean IN_IsUserInput(); +extern boolean IN_UserInput(dword delay,boolean clear); +extern boolean IN_KeyDown(byte code); +extern void IN_ClearKey(byte code); +extern boolean IN_qb(byte kee); +void IN_initplayer(player_t *player, word pn); + +#endif -- 2.39.5