From 6339995f5499b33983d4f5e5038ae68ff0ecd2e3 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sat, 27 Jun 2015 16:48:57 -0500 Subject: [PATCH] inputest~ Signed-off-by: sparky4 --- 16.LIB | Bin 74752 -> 74240 bytes GFX.LIB | Bin 28160 -> 28160 bytes exmmtest.exe | Bin 54888 -> 54906 bytes inputest.exe | Bin 9824 -> 29822 bytes src/inputest.c | 64 +++++++++++++++++++----------------- src/lib/16_in.c | 15 +++++---- src/lib/16_in.h | 85 ++++++++++++++++++++++++++++-------------------- 7 files changed, 91 insertions(+), 73 deletions(-) diff --git a/16.LIB b/16.LIB index 523265fe9a5ee6712a12e09db3c7ab1da448c0f7..dd1d8950ab2c976f815062fd37d676ac27f8cdfd 100644 GIT binary patch delta 5691 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 delta 6101 zcmZ`-d0-U9(yyMG-8q(oTqJ=UB$yDw8AJl;Cudv)In;y!QCM^Am`F$<*?@p12mzKL zNNnVIM88Clr=o%e35X)fAd62Qh))jh15rWbPyr(kzF%*`^~bkK_58ZJs=K`j=vZ9iQ%4tHwPEtb@qO<5Zj7=b-SUFtbm*>P)#enT%+4;F8 z!%7Rh^gG(R(x;3uBa`J-_jkAVOM((p>U0XUGYvb@ZiFX7&FQPSKL`zI)x5y=3{q7jCq?>A?;$| z=auG`32_<$PAn6AtcGl0UFb?jGL}(t5V`xHxY1uM*}lv zd0kSP>e>tMx$JJHD=@}vV?SuN2~0Ob?D=NM^oEI~u6GchG0&agqbw>YD)WpfE%Ox; zdBmJ%qpN1ne%{+I$ZU9vR8e!WtfDgPs-n^onuU6-F1S}MMq^HHUa^;i$%d1^YfqDI zRe0~+QA7LI^`JnU8ESVmLj!%ywzk`B8@R^|vmY|U0%c~nJ>(q4_ZH|yjaU0P8N&S%23JeA1LE}{&+ zRWZVwH>$$93@@@&8%q?=Bx!lF^*2xcS8`P|lt$8@WbFaCAAe;11vHaRlXU@L3H?IW z4**Z&kF1kGn`t-Dd7#5+Z29@oIgJjEu8Glu)&&PWTX#PNLd_0#mmFqy1@#5>%VB|m zQOsdSj1uK|u2Z~LfUW-)Mp%>tuDKk#)5F~)fKqX#;s!w)n{ zdQ>87CD43n15iECHt7V=%RpzP4l-F;jrM^ytZE||X|gF>?*I%0AQ~#%)H)Yi$DCX_ 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 diff --git a/GFX.LIB b/GFX.LIB index 1e340935ae68ec5c3d486646cf87a4cd8e6bf904..30582814bf73bc28f0cebb0d5d447ac30285f027 100644 GIT binary patch delta 49 qcmZp;!`N_#al;BHRwlmw(5%f45y6a`T&zXlTm?Qjb2j6m3^o9yVGq&( delta 49 qcmZp;!`N_#al;BHRw=gr(5TH05y6a`T&zXlTm?Qjb2j6m3^o9zISgu9`3ada}SI}ZsZAv|Y7PT6p6|G0Tu&i2TfiB>YKt)kw zv>Ndxnt-qnwT-D&U@4b~fLIO%Nu<#p_Rv-(jaQRKE!g(^#+JH&eD=-vz4x6rGn>7C z#_;DEL&>&0xtX@-g-Ks3$g|1M=`whO9^~2d`Zt9bLr?N76q#=}-hE35wTRCjq~FKF zkK`f?W#*gp$5^>}W!j+&p$YzIKD)f7`QOXX!9xBlh3GF`PFHHWTXbV#Hauo({-}*e zrLzT#*1mu+MJ7A9r3)=O)W9Zaaji>A`CxPU_Ee|f+Q6H}RD4~R($KHRD8#?{G+{6Z zu?rcq)|a>Yb3WO*70J2!30hki7hD?8g?CelDNi}hkA}r02 z)Rx?}EG|AFG0}~-jXKww4NEaA_Zn!WXM}&c{wZ5(X3F*ig>Ta@zg)d)ny^0I=}t>=r=u@Zzeg85!G>(zk8XKF zg2v)X`ut<#;@@-foV)d6$~rYt?xl%E!EzrhC<>;iqM`KLsebYkI#@J3_>f+VGxT*P zXSkNc&E!ixj06qz4D&yt^Mmb^JE^tE5fOudT4aKI!xkZYl1Ourwh9lwJ{vHKb?_1* z%EZ5fKfJbLhe`I*`)6&k*PCGjkApW# zr+@>>7J#eELcyJ7lfa6yTyU<}4!XVLzycLFd#55cmUI2$a?XBSo`;QtzRcu}k5;f$ zU%?x6SL^{(D#wEbl{w((sw~h`6$}1a#oG+8o&m0?jsW*ob7i^W?P?y{QZoUZS+fEx zsCf;%RKt~zYW@Nrp2vx4Xzd(ubuEvTUmFRw)E0xAE;zx?3(;WzIzHHhI`&^#Hyb=r z$GhLGbA$6QP6zj2JOl>S^Zc{w*?F@f)h8l;R?qu}H*5uuH@pFMHSifz>cSMC488y-f|D#UK2UqahFfZfr(1O zKLfrY(yg!TvXXq8t@1~*HP4Zel+x@loeRKELHl7S7l)8+wU~ZVO0QDxDJ5VC*W4M# zH9M5zQp&nOR$?i)!y=DTSc^kCXlaX8ZlbMV4IKk-Q6)H-ZnR7@orHr?YaPj5ud|Qr zpvkRP({rUiQ~Chq9|mWm<`c}7E{efaYn74~!b+H`DN)K%r9>#@TctE8rAH|lLF`k6 zYgz6;juqeEhqKZ~#qB|IBu#F!%2-;`W|voJ2jb`CL7YXchXl{9XM2;R9%*LgkOyS>K{&zpWHg1S^l!TxQH@)OwX-RLXRvh)Avpq?k5~ zOrh&n?6QzvT;aKbuUe&*rh)Tm6*!NwKsOa!wfCibN6(>$J;XD5lea+sHuNL!M5noZ-FLnPH%iuQzxPcXdgl Id#Vus08Vj9*#H0l delta 1779 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 Ti)uJ-V=ERHgxdEmWbFR{pja}A delta 5337 zcmZu#32+nV6@LHj`sR?q*n$KX(}{;8B{mQPapS<)m?J)f1^8g_T9($9f}}O8m2DV` zY_9Pl)lfE}Ez_pc#0}6INQ;Bgz=RNo(#g1P4l+z;MBJP-Ow$1F`*&A|Y1gyb z{lE9U3{iMB@O`pEDI-yJ2t~BA-A+0n1s8WAx5XO8~<;V}e0KZoOJ3 z7Y9cM-8i+^O^nr26B_RQ_$>20sH2l+Z+sEXFmP(+mApF3Ai&wF5V;O@rz)=GSq9P6 zNL~2y<(mWJ8#XI%DDOw!VfGKnY-4>`xukp(d3GG{YJ%AZNZ&qkF*$^57iqd1d6QB5 zO_iqh@$<*w+;gDZ>$%kZ{c$*wIg2?C>Vug}7iEw4Ts?mR&K;-1NcZajJX>u)z@XaLBRdNv26*)hc-wS8QVbBDT%Xi1K zdtp5LFeoE8yYJK}7h>c0Zf?H=YI@e9z)@&_JXrKJ?7uB9+<)8uEGv1VlkeF?#T&15mi#f6U1vFB+RpBD~= z0Zz_%UzJObTDJ*t$jxTU1TZYAU`dbLPnApC{At!_44ecObAqxo0oo! zGSc>zAo_6bEK?&CUIBG;ZZ5Ukp1X=U`n`H4x7dxD?K=ia_AzJ(vuMq_ z0g>WlCrHIg`1c%c(Q9M-|AD&v{QR6SOC_ zC+R3Q7;=Wids3aGKD|g{LYZpnBXg7HO$T^D-9B%6_G~JQn}AZ3xLLIhNv~qR+NzP3 z-$$C11CT=0Un6O{8TBb?#-{s7St#MCL`^R+C7E#~(b44BQUI{w;lU)IR-Y)i!~7A{ z#|wXmmy^wf50SaUC|WP>C=*(Iz_J6d9@*wD@(se*2w~Ha{+q?+nUwaVu%lVDNe<*) zha*c)V6Oxy6}_?~x~Xy#apCMUh@(S9(wV3Q%BmFoKA}wP@Ro{xuZ&y=QIMO~F1j3$ z0_DRvAmlXuzN!6!iTM)_vm-zJVgl4ejAD0-_HB+1l&^%ZshrfJ zqM0>u2_%b6@>pfbakV3x%0C0DBxg-Z=Ur#@_XGJlb3(x}sDNU^9UmIu*s(pwv*a~k_$iu2D!>wx^5jROIp3f zTv8FOE0p*Mt)G~r)Yj&!z*V#A$9gYTGV3m3{_ zb3~VlWjp^z?2}#gZKXE1t68$?^Dl!5^Vc?Q+`{tw{5@mk1SM;|!`AWefN;^=RjrFQ4@It4H@*j;O z4p9d?T(Xn*_*!`scgDqQR&OlJwF29P5NJ-dNceKgYF?6YF}oS{-KyDv4^hl9b`LfU zH?VtR27Dfy+s)e%M!PYXE?p(1R=SWN+noRbG(aaz&CpD>FR}x-lRiP%bUJ@6d)%%G zKs#`|bzlpn7@V#+hayO#8OPvtj#u<9T?X9o`!RgVR3H|Op%Zg~Az;kvVarTrKcoKE z@=$D=xWom^i>Um?*i`w_O1kp!^8_m{uS>=>`6%;rG=+9d2`+27zES%3`Fy@YO5tFg2=-brVhBZc??mmR8vG+&o1uYvExIMU2qWdD6saa5# z5F0+#1j*4%qi9G{Kir%XIEYdsy?kvMAMJ*)B0}K|4=}z~htPtpL2o*SlJ-F5>(=RA#{gG* z9rr^zuO4|P;vOjvAy^i7!#G_&+1KW#Gv|5|(y6{wmlHUWK=jh~E81y>PQ+$wfLIqX zOsDa{QRV1Vy-vZ_){LdeJ)MA7Vgap1L5xAf5jQ3Y0^pmuMX{ghtW-WEv^sBa$M zFwiPKvNQ-i#}G+!q>)Z*lv$<*TC5E#WzO?0|!qlQ#y zl>cX}Ta)Xb$21F78dKA4Ql?OABbv4Ur~9TRr#lw3PstihH<~$$Mni6xN-fbH2Ji-+ zquQy3JfMl@;2PpPsFvW5G^8L!EpeHPaU+O{q#4}TU)>A@q)JL{oSHr#n^{($H J+;e7t{{mxnP5b}= diff --git a/src/inputest.c b/src/inputest.c index 7d5777d0..15a1b3a5 100644 --- a/src/inputest.c +++ b/src/inputest.c @@ -1,31 +1,35 @@ -/* Project 16 Source Code~ - * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 - * - * 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 3 of the License, or - * (at your option) any later version. - * - * 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, see , or - * write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301 USA. - * - */ -/* - input test -*/ -#include "src/lib/16_in.h" - -void +/* Project 16 Source Code~ + * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * + * 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 3 of the License, or + * (at your option) any later version. + * + * 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, see , or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +/* + input test +*/ +#include "src/lib/16_in.h" + +void main(int argc, char *argv[]) -{ - -} +{ + ControlInfo control; + IN_Startup(); + IN_Default(0,ctrl_Keyboard); + IN_ReadControl(0,&control); + IN_Shutdown(); +} diff --git a/src/lib/16_in.c b/src/lib/16_in.c index 34679d96..0b2da7d8 100644 --- a/src/lib/16_in.c +++ b/src/lib/16_in.c @@ -44,7 +44,7 @@ // INL_KeyService() - Handles a keyboard interrupt (key up/down) // /////////////////////////////////////////////////////////////////////////// -static void interrupt +void interrupt INL_KeyService(void) { static boolean special; @@ -112,7 +112,7 @@ static boolean special; outp(0x20,0x20); } -static void +void Mouse(int x) { union REGS CPURegs; @@ -652,6 +652,7 @@ IN_ReadCursor(CursorInfo *info) } } +#ifndef DOMO /////////////////////////////////////////////////////////////////////////// // // IN_ReadControl() - Reads the device associated with the specified @@ -728,14 +729,14 @@ register KeyboardDef *def; type = ctrl_Keyboard1; def = &KbdDefs[type - ctrl_Keyboard]; - if (Keyboard[def->upleft]) +/* 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; + mx = motion_Right,my = motion_Down;*/ if (Keyboard[def->up]) my = motion_Up; @@ -803,7 +804,7 @@ register KeyboardDef *def; #endif } -#if 0 +#else /////////////////////////////////////////////////////////////////////////// // // IN_ReadControl() - Reads the device associated with the specified @@ -853,14 +854,14 @@ register KeyboardDef *def; case ctrl_Keyboard2: def = &KbdDefs[type - ctrl_Keyboard]; - if (Keyboard[def->upleft]) +/* 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; + mx = motion_Right,my = motion_Down;*/ if (Keyboard[def->up]) my = motion_Up; diff --git a/src/lib/16_in.h b/src/lib/16_in.h index 1e099ee4..b37a9d5b 100644 --- a/src/lib/16_in.h +++ b/src/lib/16_in.h @@ -25,20 +25,22 @@ #ifndef __16_IN__ #define __16_IN__ - + #include "src/lib/lib_head.h" -//#include "src/lib/16_us.h" +//#include "src/lib/16_us.h" -#ifdef __DEBUG__ +//++++#ifdef __DEBUG__ #define __DEBUG_InputMgr__ -#endif - -#define KeyInt 9 // The keyboard ISR number - -// Stuff for the joystick -#define JoyScaleMax 32768 -#define JoyScaleShift 8 -#define MaxJoyValue 5000 +//++++#endif + +#define DOMO + +#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 @@ -138,7 +140,7 @@ typedef byte ScanCode; #ifdef DEMO0 typedef enum { demo_Off,demo_Record,demo_Playback,demo_PlayDone - } Demo; + } Demo; #endif typedef enum { ctrl_None, // MDM (GAMERS EDGE) - added @@ -154,10 +156,10 @@ typedef enum { motion_Right = 1,motion_Down = 1 } Motion; typedef enum { - dir_North,dir_NorthEast, - dir_East,dir_SouthEast, - dir_South,dir_SouthWest, - dir_West,dir_NorthWest, + dir_North,//dir_NorthEast, + dir_East,//dir_SouthEast, + dir_South,//dir_SouthWest, + dir_West,//dir_NorthWest, dir_None } Direction; typedef struct { @@ -167,11 +169,17 @@ typedef struct { Direction dir; } CursorInfo; typedef CursorInfo ControlInfo; + typedef struct { ScanCode button0,button1, - upleft, up, upright, + //upleft, + up, + //upright, left, right, - downleft, down, downright; + //downleft, + down + //,downright + ; } KeyboardDef; typedef struct { word joyMinX,joyMinY, @@ -197,9 +205,9 @@ static boolean JoysPresent[MaxJoys]; static boolean JoyPadPresent; -// Global variables - static boolean JoystickCalibrated=false; // MDM (GAMERS EDGE) - added - static ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added +// Global variables + static boolean JoystickCalibrated=false; // MDM (GAMERS EDGE) - added + static ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added static boolean Keyboard[NumCodes]; static boolean Paused; @@ -210,16 +218,16 @@ static boolean JoyPadPresent; static JoystickDef JoyDefs[MaxJoys]; static ControlType Controls[MaxPlayers]; - static dword MouseDownCount; + static dword MouseDownCount; #ifdef DEMO0 static Demo DemoMode = demo_Off; static byte /*_seg*/ *DemoBuffer; - static word DemoOffset,DemoSize; -#endif - -extern dword far* clockdw; - + static word DemoOffset,DemoSize; +#endif + +extern dword far* clockdw; + /* ============================================================================= @@ -271,9 +279,12 @@ static ScanCode CurCode,LastCode; static Direction DirTable[] = // Quick lookup for total direction { - dir_NorthWest, dir_North, dir_NorthEast, + //dir_NorthWest, + dir_North, + //dir_NorthEast, dir_West, dir_None, dir_East, - dir_SouthWest, dir_South, dir_SouthEast + //dir_SouthWest, + dir_South//,dir_SouthEast }; static void (*INL_KeyHook)(void); @@ -296,22 +307,24 @@ extern void IN_Startup(void),IN_Shutdown(void), IN_SetControlType(int,ControlType), IN_GetJoyAbs(word joy,word *xp,word *yp), IN_SetupJoy(word joy,word minx,word maxx, - word miny,word maxy), + word miny,word maxy), + Mouse(int x), #ifdef DEMO0 IN_StartDemoPlayback(byte __segment *buffer,word bufsize), - IN_StopDemo(void),IN_FreeDemoBuffer(void), + IN_StopDemo(void),IN_FreeDemoBuffer(void), #endif IN_Ack(void),IN_AckBack(void); extern boolean IN_UserInput(dword delay,boolean clear), - IN_IsUserInput(void) + IN_IsUserInput(void) #ifdef DEMO0 - , IN_StartDemoRecord(word bufsize) -#endif + , IN_StartDemoRecord(word bufsize) +#endif ; extern byte *IN_GetScanName(ScanCode); extern char IN_WaitForASCII(void); extern ScanCode IN_WaitForKey(void); -extern word IN_GetJoyButtonsDB(word joy); - +extern word IN_GetJoyButtonsDB(word joy); + + //static void interrupt INL_KeyService(void); #endif -- 2.39.5