]> 4ch.mooo.com Git - 16.git/commitdiff
reverted input and stuff back... walk() is broken badly
authorsparky4 <sparky4@cock.li>
Thu, 8 Dec 2016 19:53:33 +0000 (13:53 -0600)
committersparky4 <sparky4@cock.li>
Thu, 8 Dec 2016 19:53:33 +0000 (13:53 -0600)
16 files changed:
MEMINFO.16W [new file with mode: 0755]
SCROLL.16L [new file with mode: 0755]
src/0.c
src/16.c
src/inputest.c
src/lib/16_in.c
src/lib/16_in.h
src/lib/16_tdef.h
src/lib/_6_in.c [deleted file]
src/lib/_6_in.h [deleted file]
src/lib/doslib
src/lib/scroll16.c
src/scroll.c
src/vgmtest.c
src/zcroll.c
test.exe

diff --git a/MEMINFO.16W b/MEMINFO.16W
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/SCROLL.16L b/SCROLL.16L
new file mode 100755 (executable)
index 0000000..5f541f3
--- /dev/null
@@ -0,0 +1,2 @@
+WARNING: Failed to initialize DEBUG output\r
+chkmap ok      pip[0].page->tilesw=22  pip[0].page->tw=20\r
diff --git a/src/0.c b/src/0.c
index 4da93c71a6f7d354912ee2680c903c3a4ebb7469..e9dc876eca61d95c9949e1a1263e6852d2433f2b 100755 (executable)
--- a/src/0.c
+++ b/src/0.c
@@ -10,7 +10,7 @@
 \r
 static unsigned char palette[768];\r
 global_game_variables_t gvar;\r
-player_t player[1];\r
+player_t player[MaxPlayers];\r
 \r
 int main(int argc,char **argv) {\r
        struct vrl1_vgax_header *vrl_header;\r
@@ -25,7 +25,7 @@ int main(int argc,char **argv) {
 \r
        IN_Startup();\r
        IN_Default(0,&player,ctrl_Joystick);\r
-       IN_initplayer(&player);//, 0);\r
+       IN_initplayer(&player, 0);\r
 \r
        if (argc < 3) {\r
                fprintf(stderr,"drawvrl <VRL file> <palette file>\n");\r
@@ -134,7 +134,7 @@ int main(int argc,char **argv) {
 \r
                while(!IN_KeyDown(sc_Escape))\r
                {\r
-                       IN_ReadControl(/*0,*/&player);\r
+                       IN_ReadControl(0,&player);\r
                        if(IN_KeyDown(2)) modexShowPage(&(gvar.video.page[0]));\r
                        if(IN_KeyDown(3)) modexShowPage(&(gvar.video.page[1]));\r
                        if(IN_KeyDown(68))      //f10\r
index b7850faa6b70d4cee4b6de59cc3a1499b997e5e8..6ad5334f03d1566a7554375400166e9ee337a7e0 100755 (executable)
--- a/src/16.c
+++ b/src/16.c
@@ -78,7 +78,7 @@ main(int argc, char *argv[])
        start_timer(&gvar);\r
        while(ENGI_EXIT != engi_stat)\r
        {\r
-               IN_ReadControl(/*0,*/&player);\r
+               IN_ReadControl(0,&player);\r
                if(IN_KeyDown(sc_Escape)) engi_stat = ENGI_EXIT;\r
                shinku(&gvar);\r
                _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U);\r
index 52d36283cc8440eff8425d19c7c273518e26963b..cd566a344a8654469fbc650f24e679368500e250 100755 (executable)
@@ -33,12 +33,14 @@ main(int argc, char *argv[])
        //extern struct inconfig inpu;\r
        dbg_testkeyin=0;\r
        dbg_testcontrolnoisy=1;\r
-       dbg_noplayerinpu=1;\r
+       dbg_noplayerinpu=0;\r
        if(!dbg_noplayerinpu)\r
        {\r
                IN_Startup();\r
-               IN_Default(0,&player,ctrl_Joystick1);\r
-               IN_SetControlType(/*0,*/&player,ctrl_Joystick1);\r
+               //IN_Default(0,&player,ctrl_Joystick1);\r
+               //IN_SetControlType(0,&player,ctrl_Joystick1);\r
+               IN_Default(0,&player,ctrl_Keyboard1);\r
+               IN_SetControlType(0,&player,ctrl_Keyboard1);\r
        }\r
        player[0].q=1;\r
        player[0].d=2;\r
@@ -50,11 +52,11 @@ main(int argc, char *argv[])
        booleantest();\r
        //printf("nibble size is %u\n", sizeof(nibble));\r
        if(!dbg_noplayerinpu){\r
-       printf("dbg_testkeyin=%u        dbg_testcontrolnoisy=%u dbg_noplayerinpu=%u\nloop if this is not responsive then please KILL or reset machine sorry!!\n", dbg_testkeyin, dbg_testcontrolnoisy, dbg_noplayerinpu);\r
+       //printf("dbg_testkeyin=%u      dbg_testcontrolnoisy=%u dbg_noplayerinpu=%u\nloop if this is not responsive then please KILL or reset machine sorry!!\n", dbg_testkeyin, dbg_testcontrolnoisy, dbg_noplayerinpu);\r
        while(!IN_KeyDown(sc_Escape))\r
        {\r
                shinkutxt(&gvar);\r
-               IN_ReadControl(/*0,*/&player);\r
+               IN_ReadControl(0, &player);\r
                #define INC_PER_FRAME if(player[0].q&1) player[0].persist_aniframe++; if(player[0].persist_aniframe>4) player[0].persist_aniframe = 1;\r
                switch(player[0].d)\r
                {\r
index 69324ee20136d5730845805039a23d79b478f522..e5d2ec1bc455de2d8031a2982226fab3115a5c3e 100755 (executable)
@@ -506,7 +506,7 @@ INL_StartKbd()
        IN_ClearKeysDown();\r
 \r
        OldKeyVect = _dos_getvect(KeyInt);\r
-       //_dos_setvect(KeyInt,INL_KeyService);\r
+       _dos_setvect(KeyInt,INL_KeyService);\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////\r
@@ -682,7 +682,7 @@ IN_Startup()
 void\r
 IN_Default(boolean gotit,player_t *player,ControlType nt)\r
 {\r
-       //int i;\r
+       int i;\r
        if\r
        (\r
                (!gotit)\r
@@ -701,8 +701,9 @@ IN_Default(boolean gotit,player_t *player,ControlType nt)
        //in.KbdDefs[0].downleft = 0x4f;\r
        inpu.KbdDefs[0].down = 0x50;\r
        //in.KbdDefs[0].downright = 0x51;\r
-       IN_SetControlType(player,nt);\r
-       player->d=2;\r
+       IN_SetControlType(0,player,nt);\r
+       for(i=0; i>MaxPlayers;i++)\r
+               player[i].d=2;\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////\r
@@ -813,7 +814,7 @@ IN_ReadCursor(CursorInfo *info)
 //\r
 ///////////////////////////////////////////////////////////////////////////\r
 void near\r
-IN_ReadControl(player_t *player)\r
+IN_ReadControl(int pn,player_t *player)\r
 {\r
                        boolean         realdelta;\r
 #if DEMO0\r
@@ -853,7 +854,7 @@ register    KeyboardDef     *def;
        else\r
        {\r
 #endif\r
-               switch (type = player->Controls)\r
+               switch (type = player[pn].Controls)\r
                {\r
                case ctrl_Keyboard1:\r
                case ctrl_Keyboard2:\r
@@ -868,7 +869,7 @@ register    KeyboardDef     *def;
                        else if (Keyboard[def->downright])\r
                                mx = motion_Right,my = motion_Down;*/\r
 //TODO: make this into a function that the joystick AND keyboard can use wwww\r
-                       if(DIRECTIONIFELSE)//(player->info.dir == 2)\r
+                       if(DIRECTIONIFELSE)//(player[pn].info.dir == 2)\r
                        {\r
                        if(!inpu.Keyboard[def->left] && !inpu.Keyboard[def->right]){\r
                                if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down]))\r
@@ -881,7 +882,7 @@ register    KeyboardDef     *def;
                                if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left]))\r
                                        mx = motion_Right;\r
                        }else{  //2 keys pressed\r
-                                       switch (player->pdir)\r
+                                       switch (player[pn].pdir)\r
                                        {\r
                                                case 0:\r
                                                case 4:\r
@@ -897,7 +898,7 @@ register    KeyboardDef     *def;
                                                break;\r
                                        }\r
 #ifdef __DEBUG_InputMgr__\r
-                                       //if(dbg_testcontrolnoisy > 0){ printf("dir=%c ", dirchar(dir)); printf("pdir=%c        ", dirchar(player->pdir)); }\r
+                                       //if(dbg_testcontrolnoisy > 0){ printf("dir=%c ", dirchar(dir)); printf("pdir=%c        ", dirchar(player[pn].pdir)); }\r
 #endif\r
                                }\r
                        }\r
@@ -935,23 +936,23 @@ register  KeyboardDef     *def;
                dy = my;// * 127;\r
        }\r
 \r
-       player->info.x = dx;\r
-       player->info.xaxis = mx;\r
-       player->info.y = dy;\r
-       player->info.yaxis = my;\r
-       player->info.button0 = buttons & (1 << 0);\r
-       player->info.button1 = buttons & (1 << 1);\r
-       player->info.button2 = buttons & (1 << 2);\r
-       player->info.button3 = buttons & (1 << 3);\r
-//     player->info.dir = DirTable[((my + 1) * 3) + (mx + 1)];\r
+       player[pn].info.x = dx;\r
+       player[pn].info.xaxis = mx;\r
+       player[pn].info.y = dy;\r
+       player[pn].info.yaxis = my;\r
+       player[pn].info.button0 = buttons & (1 << 0);\r
+       player[pn].info.button1 = buttons & (1 << 1);\r
+       player[pn].info.button2 = buttons & (1 << 2);\r
+       player[pn].info.button3 = buttons & (1 << 3);\r
+//     player[pn].info.dir = DirTable[((my + 1) * 3) + (mx + 1)];\r
        conpee=(((my + 1) * 2) + (mx + 1))-1;\r
-       player->info.dir = DirTable[conpee];\r
+       player[pn].info.dir = DirTable[conpee];\r
 \r
-       if(DirTable[conpee]!=2) player->pdir=DirTable[conpee];\r
-       if(player->q==1 &&( dir!=2 || (mx!=motion_None || my!=motion_None)))\r
+       if(DirTable[conpee]!=2) player[pn].pdir=DirTable[conpee];\r
+       if(player[pn].q==1 &&( dir!=2 || (mx!=motion_None || my!=motion_None)))\r
        {\r
-               if(dir==2) player->d = player->info.dir;\r
-               else player->d = DirTable[dir];\r
+               if(dir==2) player[pn].d = player[pn].info.dir;\r
+               else player[pn].d = DirTable[dir];\r
        }\r
 \r
 #if DEMO0\r
@@ -981,13 +982,13 @@ register  KeyboardDef     *def;
 #endif\r
 #ifdef __DEBUG_InputMgr__\r
 if(dbg_testcontrolnoisy > 0)\r
-if(player->info.dir!=2/*(inpu.Keyboard[def->up] || inpu.Keyboard[def->down] || inpu.Keyboard[def->left] || inpu.Keyboard[def->right])*/ || player->q>1)\r
+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)\r
 {\r
-       //printf("b1=%u b2=%u b3=%u b4=%u       ", player->info.button0, player->info.button1, player->info.button2, player->info.button3);\r
-       //printf("q=%d ", player->q);\r
+       //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);\r
+       //printf("q=%d ", player[pn].q);\r
        //printf("cpee=%c ", dirchar(conpee));\r
-       printf("pdir=%c d=%c dir=%c ", dirchar(player->pdir), dirchar(player->d), dirchar(player->info.dir));\r
-       /*if(realdelta) */printf("dx=%d dy=%d   mx=%d   my=%d", player->info.x, player->info.y, player->info.xaxis, player->info.yaxis);\r
+       printf("pdir=%c d=%c dir=%c ", dirchar(player[pn].pdir), dirchar(player[pn].d), dirchar(player[pn].info.dir));\r
+       /*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);\r
        //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]);\r
        printf("\n");\r
 }\r
@@ -1001,10 +1002,10 @@ if(player->info.dir!=2/*(inpu.Keyboard[def->up] || inpu.Keyboard[def->down] || i
 //\r
 ///////////////////////////////////////////////////////////////////////////\r
 void\r
-IN_SetControlType(player_t *player,ControlType type)\r
+IN_SetControlType(word pn,player_t *player,ControlType type)\r
 {\r
        // DEBUG - check that requested type is present?\r
-       player->Controls = type;\r
+       player[pn].Controls = type;\r
 }\r
 \r
 #if DEMO0\r
@@ -1266,16 +1267,20 @@ boolean IN_qb(byte kee)
 }\r
 \r
 //init player!\r
-void IN_initplayer(player_t *player)\r
+void IN_initplayer(player_t *player, word pn)\r
 {\r
-       player->x = player->tx*TILEWH;\r
-       player->y = player->ty*TILEWH;\r
-       player->triggerx = player->tx;\r
-       player->triggery = player->ty+1;\r
-       player->q=1;\r
-       player->d=2;\r
-       player->hp=4;\r
-       player->speed=4;\r
-       player->persist_aniframe=0;\r
-       player->spt=(TILEWH/(player->speed));   //speed per tile wwww\r
+       player[pn].x = player[pn].tx*TILEWH;\r
+       player[pn].y = player[pn].ty*TILEWH;\r
+       player[pn].triggerx = player[pn].tx;\r
+       player[pn].triggery = player[pn].ty+1;\r
+/*     player[0].info.x = player[0].tx;\r
+       player[0].info.xaxis = player[0].tx*TILEWH;\r
+       player[0].info.y = player[0].ty;\r
+       player[0].info.yaxis = player[0].ty*TILEWH;*/\r
+       player[pn].q=1;\r
+       player[pn].d=2;\r
+       player[pn].hp=4;\r
+       player[pn].speed=4;\r
+       player[pn].persist_aniframe=0;\r
+       player[pn].spt=(TILEWH/(player[pn].speed));     //speed per tile wwww\r
 }\r
index 4b0030cd0c81d746dbc50896ce451390cc2d19ef..9e4bfc2e88ae047cf49024a4e5919e5818cc117a 100755 (executable)
@@ -40,8 +40,8 @@
 //if else for gfxtesting and direction\r
 //player[pn].d == 2 ||\r
 //player[pn].d != 2 ||\r
-#define DIRECTIONIFELSE        (player->info.dir == 2)//(player[pn].info.dir == 2)\r
-//#define NDIRECTIONIFELSE     (player->info.dir != 2)//(player[pn].info.dir != 2)\r
+#define DIRECTIONIFELSE        (player[pn].info.dir == 2)\r
+//#define NDIRECTIONIFELSE     (player[pn].info.dir != 2)\r
 \r
 #define        KeyInt  9       // The keyboard ISR number\r
 \r
@@ -50,7 +50,7 @@
 #define        JoyScaleShift   8\r
 #define        MaxJoyValue             5000\r
 \r
-#define        MaxPlayers      1\r
+#define        MaxPlayers              2//futre plans for multiple playable charaters and being able to alternate\r
 #define        MaxKbds         2\r
 #define        MaxJoys         2\r
 #define        MaxPads         2\r
@@ -232,7 +232,7 @@ typedef     struct
        int persist_aniframe;    /* gonna be increased to 1 before being used, so 0 is ok for default */\r
        CursorInfo      info;\r
        ControlType     Controls;\r
-       int dx, dy, delta;\r
+       int dx, dy, delta;      //TODO: what is this? ^^\r
 } player_t;\r
 \r
 /*\r
@@ -285,8 +285,8 @@ extern void IN_SetKeyHook(void (*hook)());
 extern void IN_ClearKeysDown();\r
 //static void INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy);\r
 extern void IN_ReadCursor(CursorInfo *info);\r
-extern void near IN_ReadControl(player_t *player);\r
-extern void IN_SetControlType(player_t *player,ControlType type);\r
+extern void near IN_ReadControl(int pn,player_t *player);\r
+extern void IN_SetControlType(word pn,player_t *player,ControlType type);\r
 #if DEMO0\r
 extern boolean IN_StartDemoRecord(word bufsize);\r
 extern void IN_StartDemoPlayback(byte /*__segment*/ *buffer,word bufsize);\r
@@ -303,6 +303,6 @@ extern boolean IN_UserInput(dword delay,boolean clear);
 extern boolean IN_KeyDown(byte code);\r
 extern void IN_ClearKey(byte code);\r
 extern boolean IN_qb(byte kee);\r
-void IN_initplayer(player_t *player);\r
+void IN_initplayer(player_t *player, word pn);\r
 \r
 #endif\r
index 137b0bfb87b9a0c68568391eca00d843ee704481..2ea3f9fe9e39d96d60a1a07de16b70e2923d253d 100755 (executable)
@@ -65,9 +65,10 @@ typedef struct {
 } planar_buf_t;\r
 \r
 typedef struct {\r
-       int dx, dy; //backwards compait\r
-       nibble id;      /* the Identification number of the page~ For layering~ */\r
+       /*nibble*/word id;      /* the Identification number of the page~ For layering~ */\r
        byte far* data; /* the data for the page */\r
+       word dx;                /* col we are viewing on the virtual screen */\r
+       word dy;                /* row we are viewing on the virtual screen */\r
        word sw;                /* screen width */\r
        word sh;                /* screen heigth */\r
        word tw;                /* screen width in tiles */\r
diff --git a/src/lib/_6_in.c b/src/lib/_6_in.c
deleted file mode 100755 (executable)
index 72dcadf..0000000
+++ /dev/null
@@ -1,1290 +0,0 @@
-/* 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
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License along\r
- * with this program; if not, write to the Free Software Foundation, Inc.,\r
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
- */\r
-\r
-//\r
-//     ID Engine\r
-//     ID_IN.c - Input Manager\r
-//     v1.0d1w\r
-//     By Jason Blochowiak\r
-//     Open Watcom port by sparky4\r
-//\r
-\r
-//\r
-//     This module handles dealing with the various input devices\r
-//\r
-//     Depends on: Memory Mgr (for demo recording), Sound Mgr (for timing stuff),\r
-//                             User Mgr (for command line parms)\r
-//\r
-//     Globals:\r
-//             LastScan - The keyboard scan code of the last key pressed\r
-//             LastASCII - The ASCII value of the last key pressed\r
-//     DEBUG - there are more globals\r
-//\r
-\r
-#include "src/lib/16_in.h"\r
-\r
-#ifdef __DEBUG_InputMgr__\r
-boolean dbg_testkeyin=0,dbg_testcontrolnoisy=0;\r
-#endif\r
-\r
-static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                       GLOBAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-struct inconfig\r
-{\r
-       boolean                 MousePresent;\r
-       boolean                 JoysPresent[MaxJoys];\r
-       boolean         Keyboard[NumCodes];\r
-       boolean         Paused;\r
-       char            LastASCII;\r
-       ScanCode        LastScan;\r
-\r
-       KeyboardDef     KbdDefs[MaxKbds];\r
-       JoystickDef     JoyDefs[MaxJoys];\r
-} inpu;\r
-\r
-//extern inconfig inpu;\r
-//inpu.KbdDefs = {0x1d,0x38,/*0x47,*/0x48,/*0x49,*/0x4b,0x4d,/*0x4f,*/0x50/*,0x51*/};\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                       LOCAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-\r
-#ifdef __cplusplus             /* Function must be declared C style */\r
-extern "C" {\r
-#endif\r
-\r
-static struct instat {\r
-       boolean         IN_Started;\r
-       boolean         CapsLock;\r
-       ScanCode        CurCode,LastCode;\r
-} inst;\r
-\r
-static void                    (*INL_KeyHook)(void);\r
-static void interrupt  (*OldKeyVect)(void);\r
-static char                    *ParmStringsIN[] = {"nojoys","nomouse",nil};\r
-\r
-static byte        far ASCIINames[] =          // Unshifted ASCII for scan codes\r
-                                       {\r
-//      0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\r
-       0  ,27 ,'1','2','3','4','5','6','7','8','9','0','-','=',8  ,9  ,        // 0\r
-       'q','w','e','r','t','y','u','i','o','p','[',']',13 ,0  ,'a','s',        // 1\r
-       'd','f','g','h','j','k','l',';',39 ,'`',0  ,92 ,'z','x','c','v',        // 2\r
-       'b','n','m',',','.','/',0  ,'*',0  ,' ',0  ,0  ,0  ,0  ,0  ,0  ,        // 3\r
-       0  ,0  ,0  ,0  ,0  ,0  ,0  ,'7','8','9','-','4','5','6','+','1',        // 4\r
-       '2','3','0',127,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
-                                       far ShiftNames[] =              // Shifted ASCII for scan codes\r
-                                       {\r
-//      0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\r
-       0  ,27 ,'!','@','#','$','%','^','&','*','(',')','_','+',8  ,9  ,        // 0\r
-       'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0  ,'A','S',        // 1\r
-       'D','F','G','H','J','K','L',':',34 ,'~',0  ,'|','Z','X','C','V',        // 2\r
-       'B','N','M','<','>','?',0  ,'*',0  ,' ',0  ,0  ,0  ,0  ,0  ,0  ,        // 3\r
-       0  ,0  ,0  ,0  ,0  ,0  ,0  ,'7','8','9','-','4','5','6','+','1',        // 4\r
-       '2','3','0',127,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
-                                       far SpecialNames[] =    // ASCII for 0xe0 prefixed codes\r
-                                       {\r
-//      0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\r
-       0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,        // 0\r
-       0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,13 ,0  ,0  ,0  ,        // 1\r
-       0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,        // 2\r
-       0  ,0  ,0  ,0  ,0  ,'/',0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,        // 3\r
-       0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,0  ,        // 4\r
-       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
-                                       *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
-\r
-static Direction       DirTable[] =            // Quick lookup for total direction\r
-                                       {\r
-                                               //dir_Nortinest,\r
-                                               dir_North,\r
-                                               dir_West,\r
-                                               dir_None,\r
-                                               dir_East,\r
-                                               dir_South\r
-                                               //dir_NorthEast,\r
-                                               //dir_Soutinest,\r
-                                               //,dir_SouthEast\r
-                                       };\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-//     Internal routines\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_KeyService() - Handles a keyboard interrupt (key up/down)\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void interrupt\r
-INL_KeyService()\r
-{\r
-static boolean special;\r
-               byte    k,c;\r
-               register byte temp;\r
-\r
-       k = inp(0x60);  // Get the scan code\r
-\r
-       // Tell the XT keyboard controller to clear the key\r
-       outp(0x61,(temp = inp(0x61)) | 0x80);\r
-       outp(0x61,temp);\r
-\r
-       if (k == 0xe0)          // Special key prefix\r
-               special = true;\r
-       else if (k == 0xe1)     // Handle Pause key\r
-               inpu.Paused = true;\r
-       else\r
-       {\r
-               if (k & 0x80)   // Break code\r
-               {\r
-                       k &= 0x7f;\r
-\r
-// DEBUG - handle special keys: ctl-alt-delete, print scrn\r
-\r
-                       inpu.Keyboard[k] = false;\r
-               }\r
-               else                    // Make code\r
-               {\r
-                       inst.LastCode = inst.CurCode;\r
-                       inst.CurCode = inpu.LastScan = k;\r
-                       inpu.Keyboard[k] = true;\r
-\r
-                       if (special)\r
-                               c = SpecialNames[k];\r
-                       else\r
-                       {\r
-                               if (k == sc_CapsLock)\r
-                               {\r
-                                       inst.CapsLock ^= true;\r
-                                       // DEBUG - make caps lock light work\r
-                               }\r
-\r
-                               if (inpu.Keyboard[sc_LShift] || inpu.Keyboard[sc_RShift])       // If shifted\r
-                               {\r
-                                       c = ShiftNames[k];\r
-                                       if ((c >= 'A') && (c <= 'Z') && inst.CapsLock)\r
-                                               c += 'a' - 'A';\r
-                               }\r
-                               else\r
-                               {\r
-                                       c = ASCIINames[k];\r
-                                       if ((c >= 'a') && (c <= 'z') && inst.CapsLock)\r
-                                               c -= 'a' - 'A';\r
-                               }\r
-                       }\r
-                       if (c)\r
-                               inpu.LastASCII = c;\r
-               }\r
-\r
-               special = false;\r
-       }\r
-\r
-       if (INL_KeyHook && !special)\r
-               INL_KeyHook();\r
-#ifdef __DEBUG_InputMgr__\r
-       if(dbg_testkeyin > 0) printf("%c        %u      [0x%x %u]       %u\n", c, c, k, k, inpu.Keyboard[k]);\r
-#endif\r
-       outp(0x20,0x20);\r
-}\r
-\r
-void\r
-Mouse(int x)\r
-{\r
-       //union REGS CPURegs;\r
-       //x = CPURegs.x.ax;\r
-       __asm {\r
-               mov     ax,x\r
-               int     MouseInt\r
-       }\r
-       //int86(MouseInt,&CPURegs,&CPURegs);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_GetMouseDelta() - Gets the amount that the mouse has moved from the\r
-//             mouse driver\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static void\r
-INL_GetMouseDelta(int *x,int *y)\r
-{\r
-       union REGS CPURegs;\r
-       Mouse(MDelta);\r
-       *x = CPURegs.x.cx;\r
-       *y = CPURegs.x.dx;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_GetMouseButtons() - Gets the status of the mouse buttons from the\r
-//             mouse driver\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static word\r
-INL_GetMouseButtons(void)\r
-{\r
-       union REGS CPURegs;\r
-       word    buttons;\r
-\r
-       Mouse(MButtons);\r
-       buttons = CPURegs.x.bx;\r
-       return(buttons);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_GetJoyAbs() - Reads the absolute position of the specified joystick\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_GetJoyAbs(word joy,word *xp,word *yp)\r
-{\r
-       byte    xb,yb,\r
-                       xs,ys;\r
-       word    x,y;\r
-\r
-       x = y = 0;\r
-       xs = joy? 2 : 0;                // Find shift value for x axis\r
-       xb = 1 << xs;                   // Use shift value to get x bit mask\r
-       ys = joy? 3 : 1;                // Do the same for y axis\r
-       yb = 1 << ys;\r
-\r
-// Read the absolute joystick values\r
-       __asm {\r
-               pushf                           // Save some registers\r
-               push    si\r
-               push    di\r
-               cli                                     // Make sure an interrupt doesn't screw the timings\r
-\r
-\r
-               mov             dx,0x201\r
-               in              al,dx\r
-               out             dx,al           // Clear the resistors\r
-\r
-               mov             ah,[xb]         // Get masks into registers\r
-               mov             ch,[yb]\r
-\r
-               xor             si,si           // Clear count registers\r
-               xor             di,di\r
-               xor             bh,bh           // Clear high byte of bx for later\r
-\r
-               push    bp                      // Don't mess up stack frame\r
-               mov             bp,MaxJoyValue\r
-#ifdef __BORLANDC__\r
-       }\r
-#endif\r
-loo:\r
-#ifdef __BORLANDC__\r
-       __asm {\r
-#endif\r
-               in              al,dx           // Get bits indicating whether all are finished\r
-\r
-               dec             bp                      // Check bounding register\r
-               jz              done            // We have a silly value - abort\r
-\r
-               mov             bl,al           // Duplicate the bits\r
-               and             bl,ah           // Mask off useless bits (in [xb])\r
-               add             si,bx           // Possibly increment count register\r
-               mov             cl,bl           // Save for testing later\r
-\r
-               mov             bl,al\r
-               and             bl,ch           // [yb]\r
-               add             di,bx\r
-\r
-               add             cl,bl\r
-               jnz             loo             // If both bits were 0, drop out\r
-#ifdef __BORLANDC__\r
-       }\r
-#endif\r
-done:\r
-#ifdef __BORLANDC__\r
-       __asm {\r
-#endif\r
-               pop             bp\r
-\r
-               mov             cl,[xs]         // Get the number of bits to shift\r
-               shr             si,cl           //  and shift the count that many times\r
-\r
-               mov             cl,[ys]\r
-               shr             di,cl\r
-\r
-               mov             [x],si          // Store the values into the variables\r
-               mov             [y],di\r
-\r
-               pop             di\r
-               pop             si\r
-               popf                            // Restore the registers\r
-       }\r
-\r
-       *xp = x;\r
-       *yp = y;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_GetJoyDelta() - Returns the relative movement of the specified\r
-//             joystick (from +/-127, scaled adaptively)\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static void\r
-INL_GetJoyDelta(word joy,int *dx,int *dy,boolean adaptive)\r
-{\r
-       word            x,y;\r
-       word    time;\r
-       word TimeCount = *clockw;\r
-       JoystickDef     *def;\r
-static word    lasttime;\r
-\r
-       IN_GetJoyAbs(joy,&x,&y);\r
-       def = inpu.JoyDefs + joy;\r
-\r
-       if (x < def->threshMinX)\r
-       {\r
-               if (x < def->joyMinX)\r
-                       x = def->joyMinX;\r
-\r
-               x = -(x - def->threshMinX);\r
-               x *= def->joyMultXL;\r
-               x >>= JoyScaleShift;\r
-               *dx = (x > 127)? -127 : -x;\r
-       }\r
-       else if (x > def->threshMaxX)\r
-       {\r
-               if (x > def->joyMaxX)\r
-                       x = def->joyMaxX;\r
-\r
-               x = x - def->threshMaxX;\r
-               x *= def->joyMultXH;\r
-               x >>= JoyScaleShift;\r
-               *dx = (x > 127)? 127 : x;\r
-       }\r
-       else\r
-               *dx = 0;\r
-\r
-       if (y < def->threshMinY)\r
-       {\r
-               if (y < def->joyMinY)\r
-                       y = def->joyMinY;\r
-\r
-               y = -(y - def->threshMinY);\r
-               y *= def->joyMultYL;\r
-               y >>= JoyScaleShift;\r
-               *dy = (y > 127)? -127 : -y;\r
-       }\r
-       else if (y > def->threshMaxY)\r
-       {\r
-               if (y > def->joyMaxY)\r
-                       y = def->joyMaxY;\r
-\r
-               y = y - def->threshMaxY;\r
-               y *= def->joyMultYH;\r
-               y >>= JoyScaleShift;\r
-               *dy = (y > 127)? 127 : y;\r
-       }\r
-       else\r
-               *dy = 0;\r
-\r
-       if (adaptive)\r
-       {\r
-               time = (TimeCount - lasttime) / 2;\r
-               if (time)\r
-               {\r
-                       if (time > 8)\r
-                               time = 8;\r
-                       *dx *= time;\r
-                       *dy *= time;\r
-               }\r
-       }\r
-       lasttime = TimeCount;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_GetJoyButtons() - Returns the button status of the specified\r
-//             joystick\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static word\r
-INL_GetJoyButtons(word joy)\r
-{\r
-register       word    result;\r
-\r
-       result = inp(0x201);    // Get all the joystick buttons\r
-       result >>= joy? 6 : 4;  // Shift into bits 0-1\r
-       result &= 3;                            // Mask off the useless bits\r
-       result ^= 3;\r
-       return(result);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_GetJoyButtonsDB() - Returns the de-bounced button status of the\r
-//             specified joystick\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-word\r
-IN_GetJoyButtonsDB(word joy)\r
-{\r
-       word TimeCount = *clockw;\r
-       word    lasttime;\r
-       word            result1,result2;\r
-\r
-       do\r
-       {\r
-               result1 = INL_GetJoyButtons(joy);\r
-               lasttime = TimeCount;\r
-               while(TimeCount == lasttime)\r
-               result2 = INL_GetJoyButtons(joy);\r
-       } while(result1 != result2);\r
-       return(result1);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_StartKbd() - Sets up my keyboard stuff for use\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static void\r
-INL_StartKbd()\r
-{\r
-       INL_KeyHook = 0;        // Clear key hook\r
-\r
-       IN_ClearKeysDown();\r
-\r
-       OldKeyVect = _dos_getvect(KeyInt);\r
-       _dos_setvect(KeyInt,INL_KeyService);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_ShutKbd() - Restores keyboard control to the BIOS\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static void\r
-INL_ShutKbd(void)\r
-{\r
-       pokeb(0x40,0x17,peekb(0x40,0x17) & 0xfaf0);     // Clear ctrl/alt/shift flags\r
-\r
-       _dos_setvect(KeyInt,OldKeyVect);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_StartMouse() - Detects and sets up the mouse\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static boolean\r
-INL_StartMouse(void)\r
-{\r
-       union REGS CPURegs;\r
-       if(_dos_getvect(MouseInt))\r
-       {\r
-               Mouse(MReset);\r
-               if(CPURegs.x.ax == 0xffff)\r
-                       return(true);\r
-       }\r
-       return(false);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_ShutMouse() - Cleans up after the mouse\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static void\r
-INL_ShutMouse(void)\r
-{\r
-}\r
-\r
-//\r
-//     INL_SetJoyScale() - Sets up scaling values for the specified joystick\r
-//\r
-static void\r
-INL_SetJoyScale(word joy)\r
-{\r
-       JoystickDef     *def;\r
-\r
-       def = &(inpu.JoyDefs[joy]);\r
-       def->joyMultXL = JoyScaleMax / (def->threshMinX - def->joyMinX);\r
-       def->joyMultXH = JoyScaleMax / (def->joyMaxX - def->threshMaxX);\r
-       def->joyMultYL = JoyScaleMax / (def->threshMinY - def->joyMinY);\r
-       def->joyMultYH = JoyScaleMax / (def->joyMaxY - def->threshMaxY);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_SetupJoy() - Sets up thresholding values and calls INL_SetJoyScale()\r
-//             to set up scaling values\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_SetupJoy(word joy,word minx,word maxx,word miny,word maxy)\r
-{\r
-       word            d,r;\r
-       JoystickDef     *def;\r
-\r
-       def = &(inpu.JoyDefs[joy]);\r
-\r
-       def->joyMinX = minx;\r
-       def->joyMaxX = maxx;\r
-       r = maxx - minx;\r
-       d = r / 3;\r
-       def->threshMinX = ((r / 2) - d) + minx;\r
-       def->threshMaxX = ((r / 2) + d) + minx;\r
-\r
-       def->joyMinY = miny;\r
-       def->joyMaxY = maxy;\r
-       r = maxy - miny;\r
-       d = r / 3;\r
-       def->threshMinY = ((r / 2) - d) + miny;\r
-       def->threshMaxY = ((r / 2) + d) + miny;\r
-\r
-       INL_SetJoyScale(joy);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_StartJoy() - Detects & auto-configures the specified joystick\r
-//                                     The auto-config assumes the joystick is centered\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static boolean\r
-INL_StartJoy(word joy)\r
-{\r
-       word            x,y;\r
-\r
-       IN_GetJoyAbs(joy,&x,&y);\r
-\r
-       if\r
-       (\r
-               ((x == 0) || (x > MaxJoyValue - 10))\r
-       ||      ((y == 0) || (y > MaxJoyValue - 10))\r
-       )\r
-               return(false);\r
-       else\r
-       {\r
-               IN_SetupJoy(joy,0,x * 2,0,y * 2);\r
-               return(true);\r
-       }\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_ShutJoy() - Cleans up the joystick stuff\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static void\r
-INL_ShutJoy(word joy)\r
-{\r
-       inpu.JoysPresent[joy] = false;\r
-}\r
-\r
-//     Public routines\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_Startup() - Starts up the Input Mgr\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_Startup()\r
-{\r
-       boolean checkjoys,checkmouse;\r
-       word    i;\r
-\r
-       if (inst.IN_Started)\r
-               return;\r
-\r
-       checkjoys = true;\r
-       checkmouse = true;\r
-       for (i = 1;i < _argc;i++)\r
-       {\r
-               switch (US_CheckParm(_argv[i],ParmStringsIN))\r
-               {\r
-               case 0:\r
-                       checkjoys = false;\r
-                       break;\r
-               case 1:\r
-                       checkmouse = false;\r
-                       break;\r
-               }\r
-       }\r
-\r
-       INL_StartKbd();\r
-       inpu.MousePresent = checkmouse? INL_StartMouse() : false;\r
-\r
-       for (i = 0;i < MaxJoys;i++)\r
-               inpu.JoysPresent[i] = checkjoys? INL_StartJoy(i) : false;\r
-\r
-       inst.IN_Started = true;\r
-\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_Default() - Sets up default conditions for the Input Mgr\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_Default(boolean gotit,player_t *player,ControlType nt)\r
-{\r
-       int i;\r
-       if\r
-       (\r
-               (!gotit)\r
-       ||      ((nt == ctrl_Joystick1) && !inpu.JoysPresent[0])\r
-       ||      ((nt == ctrl_Joystick2) && !inpu.JoysPresent[1])\r
-       ||      ((nt == ctrl_Mouse) && !inpu.MousePresent)\r
-       )\r
-               nt = ctrl_Keyboard1;\r
-       inpu.KbdDefs[0].button0 = 0x1c;\r
-       inpu.KbdDefs[0].button1 = 0x38;\r
-       //in.KbdDefs[0].upleft = 0x47;\r
-       inpu.KbdDefs[0].up = 0x48;\r
-       //in.KbdDefs[0].upright = 0x49;\r
-       inpu.KbdDefs[0].left = 0x4b;\r
-       inpu.KbdDefs[0].right = 0x4d;\r
-       //in.KbdDefs[0].downleft = 0x4f;\r
-       inpu.KbdDefs[0].down = 0x50;\r
-       //in.KbdDefs[0].downright = 0x51;\r
-       IN_SetControlType(0,player,nt);\r
-       for(i=0; i>MaxPlayers;i++)\r
-               player[i].d=2;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_Shutdown() - Shuts down the Input Mgr\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_Shutdown()\r
-{\r
-       word    i;\r
-\r
-       if (!inst.IN_Started)\r
-               return;\r
-\r
-       INL_ShutMouse();\r
-       for (i = 0;i < MaxJoys;i++)\r
-               INL_ShutJoy(i);\r
-       INL_ShutKbd();\r
-\r
-       inst.IN_Started = false;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_SetKeyHook() - Sets the routine that gets called by INL_KeyService()\r
-//                     everytime a real make/break code gets hit\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_SetKeyHook(void (*hook)())\r
-{\r
-       INL_KeyHook = hook;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_ClearKeyDown() - Clears the keyboard array\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_ClearKeysDown()\r
-{\r
-       //int   i;\r
-\r
-       inpu.LastScan = sc_None;\r
-       inpu.LastASCII = key_None;\r
-       memset (inpu.Keyboard,0,sizeof(inpu.Keyboard));\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     INL_AdjustCursor() - Internal routine of common code from IN_ReadCursor()\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-static void\r
-INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy)\r
-{\r
-       if (buttons & (1 << 0))\r
-               info->button0 = true;\r
-       if (buttons & (1 << 1))\r
-               info->button1 = true;\r
-\r
-       info->x += dx;\r
-       info->y += dy;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_ReadCursor() - Reads the input devices and fills in the cursor info\r
-//             struct\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_ReadCursor(CursorInfo *info)\r
-{\r
-       word    i,\r
-                       buttons;\r
-       int             dx,dy;\r
-\r
-       info->x = info->y = 0;\r
-       info->button0 = info->button1 = false;\r
-\r
-       if (inpu.MousePresent)\r
-       {\r
-               buttons = INL_GetMouseButtons();\r
-               INL_GetMouseDelta(&dx,&dy);\r
-               INL_AdjustCursor(info,buttons,dx,dy);\r
-       }\r
-\r
-       for (i = 0;i < MaxJoys;i++)\r
-       {\r
-               if (!inpu.JoysPresent[i])\r
-                       continue;\r
-\r
-               buttons = INL_GetJoyButtons(i);\r
-               INL_GetJoyDelta(i,&dx,&dy,true);\r
-               dx /= 64;\r
-               dy /= 64;\r
-               INL_AdjustCursor(info,buttons,dx,dy);\r
-       }\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_ReadControl() - Reads the device associated with the specified\r
-//             player and fills in the control info struct\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void near\r
-IN_ReadControl(int pn,player_t *player)\r
-{\r
-                       boolean         realdelta;\r
-#if DEMO0\r
-                       byte            dbyte;\r
-#endif\r
-                       word            buttons;\r
-                       int                     dx,dy;\r
-                       Motion          mx,my;\r
-                       ControlType     type;\r
-                       sword conpee;\r
-                       byte dir=DirTable[2];\r
-register       KeyboardDef     *def;\r
-\r
-       dx = dy = 0;\r
-       mx = my = motion_None;\r
-       buttons = 0;\r
-\r
-#if DEMO0\r
-       if (DemoMode == demo_Playback)\r
-       {\r
-               dbyte = DemoBuffer[DemoOffset + 1];\r
-               my = (dbyte & 3) - 1;\r
-               mx = ((dbyte >> 2) & 3) - 1;\r
-               buttons = (dbyte >> 4) & 3;\r
-\r
-               if (!(--DemoBuffer[DemoOffset]))\r
-               {\r
-                       DemoOffset += 2;\r
-                       if (DemoOffset >= DemoSize)\r
-                               DemoMode = demo_PlayDone;\r
-               }\r
-\r
-               realdelta = false;\r
-       }\r
-       else if (DemoMode == demo_PlayDone)\r
-               Quit("Demo playback exceeded");\r
-       else\r
-       {\r
-#endif\r
-               switch (type = player[pn].Controls)\r
-               {\r
-               case ctrl_Keyboard1:\r
-               case ctrl_Keyboard2:\r
-                       def = &(inpu.KbdDefs[type - ctrl_Keyboard]);\r
-\r
-/*                     if (Keyboard[def->upleft])\r
-                               mx = motion_Left,my = motion_Up;\r
-                       else if (Keyboard[def->upright])\r
-                               mx = motion_Right,my = motion_Up;\r
-                       else if (Keyboard[def->downleft])\r
-                               mx = motion_Left,my = motion_Down;\r
-                       else if (Keyboard[def->downright])\r
-                               mx = motion_Right,my = motion_Down;*/\r
-//TODO: make this into a function that the joystick AND keyboard can use wwww\r
-                       if(DIRECTIONIFELSE)//(player[pn].info.dir == 2)\r
-                       {\r
-                       if(!inpu.Keyboard[def->left] && !inpu.Keyboard[def->right]){\r
-                               if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down]))\r
-                                       my = motion_Up;\r
-                               if((inpu.Keyboard[def->down] && !inpu.Keyboard[def->up]))\r
-                                       my = motion_Down;\r
-                       }else if(!inpu.Keyboard[def->up] && !inpu.Keyboard[def->down]){\r
-                               if((inpu.Keyboard[def->left] && !inpu.Keyboard[def->right]))\r
-                                       mx = motion_Left;\r
-                               if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left]))\r
-                                       mx = motion_Right;\r
-                       }else{  //2 keys pressed\r
-                                       switch (player[pn].pdir)\r
-                                       {\r
-                                               case 0:\r
-                                               case 4:\r
-                                                       if((inpu.Keyboard[def->left] && !inpu.Keyboard[def->right])){ dir = DirTable[1]; }//mx = motion_Left; }\r
-                                                       else if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left])){ dir = DirTable[3]; }//mx = motion_Right; }\r
-                                               break;\r
-                                               case 1:\r
-                                               case 3:\r
-                                                       if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down])){ dir = DirTable[0]; }//my = motion_Up; }\r
-                                                       else if((inpu.Keyboard[def->down] && !inpu.Keyboard[def->up])){ dir = DirTable[4]; }//my = motion_Down; }\r
-                                               break;\r
-                                               default:\r
-                                               break;\r
-                                       }\r
-#ifdef __DEBUG_InputMgr__\r
-                                       //if(dbg_testcontrolnoisy > 0){ printf("dir=%c ", dirchar(dir)); printf("pdir=%c        ", dirchar(player[pn].pdir)); }\r
-#endif\r
-                               }\r
-                       }\r
-                       //input from player\r
-                       if (inpu.Keyboard[def->button0])\r
-                               buttons += 1 << 0;\r
-                       if (inpu.Keyboard[def->button1])\r
-                               buttons += 1 << 1;\r
-                       realdelta = false;\r
-                       break;\r
-               case ctrl_Joystick1:\r
-               case ctrl_Joystick2:\r
-                       INL_GetJoyDelta(type - ctrl_Joystick,&dx,&dy,false);\r
-                       buttons = INL_GetJoyButtons(type - ctrl_Joystick);\r
-                       realdelta = true;\r
-                       break;\r
-               case ctrl_Mouse:\r
-                       INL_GetMouseDelta(&dx,&dy);\r
-                       buttons = INL_GetMouseButtons();\r
-                       realdelta = true;\r
-                       break;\r
-               }\r
-#ifdef DEMO0\r
-       }\r
-#endif\r
-\r
-       if (realdelta)\r
-       {\r
-               mx = (dx < 0)? motion_Left : ((dx > 0)? motion_Right : motion_None);\r
-               my = (dy < 0)? motion_Up : ((dy > 0)? motion_Down : motion_None);\r
-       }\r
-       else\r
-       {\r
-               dx = mx;// * 127;\r
-               dy = my;// * 127;\r
-       }\r
-\r
-       player[pn].info.x = dx;\r
-       player[pn].info.xaxis = mx;\r
-       player[pn].info.y = dy;\r
-       player[pn].info.yaxis = my;\r
-       player[pn].info.button0 = buttons & (1 << 0);\r
-       player[pn].info.button1 = buttons & (1 << 1);\r
-       player[pn].info.button2 = buttons & (1 << 2);\r
-       player[pn].info.button3 = buttons & (1 << 3);\r
-//     player[pn].info.dir = DirTable[((my + 1) * 3) + (mx + 1)];\r
-       conpee=(((my + 1) * 2) + (mx + 1))-1;\r
-       player[pn].info.dir = DirTable[conpee];\r
-\r
-       if(DirTable[conpee]!=2) player[pn].pdir=DirTable[conpee];\r
-       if(player[pn].q==1 &&( dir!=2 || (mx!=motion_None || my!=motion_None)))\r
-       {\r
-               if(dir==2) player[pn].d = player[pn].info.dir;\r
-               else player[pn].d = DirTable[dir];\r
-       }\r
-\r
-#if DEMO0\r
-       if (DemoMode == demo_Record)\r
-       {\r
-               // Pack the control info into a byte\r
-               dbyte = (buttons << 4) | ((mx + 1) << 2) | (my + 1);\r
-\r
-               if\r
-               (\r
-                       (DemoBuffer[DemoOffset + 1] == dbyte)\r
-               &&      (DemoBuffer[DemoOffset] < 255)\r
-               )\r
-                       (DemoBuffer[DemoOffset])++;\r
-               else\r
-               {\r
-                       if (DemoOffset || DemoBuffer[DemoOffset])\r
-                               DemoOffset += 2;\r
-\r
-                       if (DemoOffset >= DemoSize)\r
-                               Quit("Demo buffer overflow");\r
-\r
-                       DemoBuffer[DemoOffset] = 1;\r
-                       DemoBuffer[DemoOffset + 1] = dbyte;\r
-               }\r
-       }\r
-#endif\r
-#ifdef __DEBUG_InputMgr__\r
-if(dbg_testcontrolnoisy > 0)\r
-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)\r
-{\r
-       //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);\r
-       //printf("q=%d ", player[pn].q);\r
-       //printf("cpee=%c ", dirchar(conpee));\r
-       printf("pdir=%c d=%c dir=%c ", dirchar(player[pn].pdir), dirchar(player[pn].d), dirchar(player[pn].info.dir));\r
-       /*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);\r
-       //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]);\r
-       printf("\n");\r
-}\r
-#endif\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_SetControlType() - Sets the control type to be used by the specified\r
-//             player\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_SetControlType(word pn,player_t *player,ControlType type)\r
-{\r
-       // DEBUG - check that requested type is present?\r
-       player[pn].Controls = type;\r
-}\r
-\r
-#if DEMO0\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_StartDemoRecord() - Starts the demo recording, using a buffer the\r
-//             size passed. Returns if the buffer allocation was successful\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-boolean\r
-IN_StartDemoRecord(word bufsize)\r
-{\r
-       if (!bufsize)\r
-               return(false);\r
-\r
-       MM_GetPtr((memptr *)&DemoBuffer,bufsize);\r
-       DemoMode = demo_Record;\r
-       DemoSize = bufsize & ~1;\r
-       DemoOffset = 0;\r
-       DemoBuffer[0] = DemoBuffer[1] = 0;\r
-\r
-       return(true);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_StartDemoPlayback() - Plays back the demo pointed to of the given size\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_StartDemoPlayback(byte /*__segment*/ *buffer,word bufsize)\r
-{\r
-       DemoBuffer = buffer;\r
-       DemoMode = demo_Playback;\r
-       DemoSize = bufsize & ~1;\r
-       DemoOffset = 0;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_StopDemo() - Turns off demo mode\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_StopDemo(void)\r
-{\r
-       if ((DemoMode == demo_Record) && DemoOffset)\r
-               DemoOffset += 2;\r
-\r
-       DemoMode = demo_Off;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_FreeDemoBuffer() - Frees the demo buffer, if it's been allocated\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_FreeDemoBuffer(void)\r
-{\r
-       if (DemoBuffer)\r
-               MM_FreePtr((memptr *)&DemoBuffer);\r
-}\r
-#endif\r
-\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_GetScanName() - Returns a string containing the name of the\r
-//             specified scan code\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-byte *\r
-IN_GetScanName(ScanCode scan)\r
-{\r
-       byte            **p;\r
-       ScanCode        far *s;\r
-\r
-       for (s = ExtScanCodes,p = ExtScanNames;*s;p++,s++)\r
-               if (*s == scan)\r
-                       return(*p);\r
-\r
-       return(ScanNames[scan]);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_WaitForKey() - Waits for a scan code, then clears LastScan and\r
-//             returns the scan code\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-ScanCode\r
-IN_WaitForKey()\r
-{\r
-       ScanCode        result;\r
-\r
-       while (!(result = inpu.LastScan))\r
-               ;\r
-       inpu.LastScan = 0;\r
-       return(result);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_WaitForASCII() - Waits for an ASCII char, then clears LastASCII and\r
-//             returns the ASCII value\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-char\r
-IN_WaitForASCII()\r
-{\r
-       char            result;\r
-\r
-       while (!(result = inpu.LastASCII))\r
-               ;\r
-       inpu.LastASCII = '\0';\r
-       return(result);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_AckBack() - Waits for either an ASCII keypress or a button press\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_AckBack()\r
-{\r
-       word    i;\r
-\r
-       while (!inpu.LastScan)\r
-       {\r
-               if (inpu.MousePresent)\r
-               {\r
-                       if (INL_GetMouseButtons())\r
-                       {\r
-                               while (INL_GetMouseButtons())\r
-                                       ;\r
-                               return;\r
-                       }\r
-               }\r
-\r
-               for (i = 0;i < MaxJoys;i++)\r
-               {\r
-                       if (inpu.JoysPresent[i])\r
-                       {\r
-                               if (IN_GetJoyButtonsDB(i))\r
-                               {\r
-                                       while (IN_GetJoyButtonsDB(i))\r
-                                               ;\r
-                                       return;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-\r
-       IN_ClearKey(inpu.LastScan);\r
-       inpu.LastScan = sc_None;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_Ack() - Clears user input & then calls IN_AckBack()\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-void\r
-IN_Ack()\r
-{\r
-       word    i;\r
-\r
-       if (!inst.IN_Started)\r
-               return;\r
-\r
-       IN_ClearKey(inpu.LastScan);\r
-       inpu.LastScan = sc_None;\r
-\r
-       if (inpu.MousePresent)\r
-               while (INL_GetMouseButtons())\r
-                                       ;\r
-       for (i = 0;i < MaxJoys;i++)\r
-               if (inpu.JoysPresent[i])\r
-                       while (IN_GetJoyButtonsDB(i))\r
-                               ;\r
-\r
-       IN_AckBack();\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_IsUserInput() - Returns true if a key has been pressed or a button\r
-//             is down\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-boolean\r
-IN_IsUserInput()\r
-{\r
-       boolean result;\r
-       word    i;\r
-\r
-       result = inpu.LastScan;\r
-\r
-       if (inpu.MousePresent)\r
-               if (INL_GetMouseButtons())\r
-                       result = true;\r
-\r
-       for (i = 0;i < MaxJoys;i++)\r
-               if (inpu.JoysPresent[i])\r
-                       if (INL_GetJoyButtons(i))\r
-                               result = true;\r
-\r
-       return(result);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-//     IN_UserInput() - Waits for the specified delay time (in ticks) or the\r
-//             user pressing a key or a mouse button. If the clear flag is set, it\r
-//             then either clears the key or waits for the user to let the mouse\r
-//             button up.\r
-//\r
-///////////////////////////////////////////////////////////////////////////\r
-boolean\r
-IN_UserInput(dword delay,boolean clear)\r
-{\r
-       word TimeCount = *clockw;\r
-       word    lasttime;\r
-\r
-       lasttime = TimeCount;\r
-       do\r
-       {\r
-               if (IN_IsUserInput())\r
-               {\r
-                       if (clear)\r
-                               IN_AckBack();\r
-                       return(true);\r
-               }\r
-       } while (TimeCount - lasttime < delay);\r
-       return(false);\r
-}\r
-\r
-boolean IN_KeyDown(byte code)\r
-{\r
-       return inpu.Keyboard[code];\r
-}\r
-\r
-void IN_ClearKey(byte code)\r
-{\r
-       inpu.Keyboard[code] = false;\r
-       if(code == inpu.LastScan)\r
-               inpu.LastScan = sc_None;\r
-       }\r
-\r
-boolean IN_qb(byte kee)\r
-{\r
-#ifdef __DEBUG_InputMgr__\r
-//     if(dbg_testkeyin > 0) printf("%u\n", inpu.Keyboard[kee]);\r
-#endif\r
-       if(inpu.Keyboard[kee]==true) return 1;\r
-       else return 0;\r
-}\r
-\r
-//init player!\r
-void IN_initplayer(player_t *player, word pn)\r
-{\r
-       player[pn].x = player[pn].tx*TILEWH;\r
-       player[pn].y = player[pn].ty*TILEWH;\r
-       player[pn].triggerx = player[pn].tx;\r
-       player[pn].triggery = player[pn].ty+1;\r
-/*     player[0].info.x = player[0].tx;\r
-       player[0].info.xaxis = player[0].tx*TILEWH;\r
-       player[0].info.y = player[0].ty;\r
-       player[0].info.yaxis = player[0].ty*TILEWH;*/\r
-       player[pn].q=1;\r
-       player[pn].d=2;\r
-       player[pn].hp=4;\r
-       player[pn].speed=4;\r
-       player[pn].persist_aniframe=0;\r
-       player[pn].spt=(TILEWH/(player[pn].speed));     //speed per tile wwww\r
-}\r
diff --git a/src/lib/_6_in.h b/src/lib/_6_in.h
deleted file mode 100755 (executable)
index eb1650e..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/* 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
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License along\r
- * with this program; if not, write to the Free Software Foundation, Inc.,\r
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
- */\r
-\r
-//\r
-//     ID Engine\r
-//     ID_IN.h - Header file for Input Manager\r
-//     v1.0d1w\r
-//     By Jason Blochowiak\r
-//     Open Watcom port by sparky4\r
-//\r
-\r
-#ifndef        __16_IN__\r
-#define        __16_IN__\r
-\r
-#include <string.h>\r
-#include "src/lib/16_head.h"\r
-#include "src/lib/16_timer.h"\r
-#ifdef __WATCOMC__     //borland C BCEXMM.EXE\r
-#include "src/lib/16_dbg.h"\r
-#include "src/lib/16_sprit.h"\r
-//#include "src/lib/bitmap.h"  //old format\r
-#endif\r
-#ifdef __DEBUG__\r
-#define        __DEBUG_InputMgr__\r
-extern boolean dbg_testkeyin,dbg_testcontrolnoisy;\r
-#endif\r
-\r
-//if else for gfxtesting and direction\r
-//player[pn].d == 2 ||\r
-//player[pn].d != 2 ||\r
-#define DIRECTIONIFELSE        (player[pn].info.dir == 2)\r
-//#define NDIRECTIONIFELSE     (player[pn].info.dir != 2)\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        MaxPads         2\r
-#define        NumCodes        128\r
-\r
-typedef        byte            ScanCode;\r
-#define        sc_None                 0\r
-#define        sc_Bad                  0xff\r
-#define        sc_Return               0x1c\r
-#define        sc_Enter                sc_Return\r
-#define        sc_Escape               0x01\r
-#define        sc_Space                0x39\r
-#define        sc_BackSpace    0x0e\r
-#define        sc_Tab                  0x0f\r
-#define        sc_Alt                  0x38\r
-#define        sc_Control              0x1d\r
-#define        sc_CapsLock             0x3a\r
-#define        sc_LShift               0x2a\r
-#define        sc_RShift               0x36\r
-#define        sc_UpArrow              0x48\r
-#define        sc_DownArrow    0x50\r
-#define        sc_LeftArrow    0x4b\r
-#define        sc_RightArrow   0x4d\r
-#define        sc_Insert               0x52\r
-#define        sc_Delete               0x53\r
-#define        sc_Home                 0x47\r
-#define        sc_End                  0x4f\r
-#define        sc_PgUp                 0x49\r
-#define        sc_PgDn                 0x51\r
-#define        sc_F1                   0x3b\r
-#define        sc_F2                   0x3c\r
-#define        sc_F3                   0x3d\r
-#define        sc_F4                   0x3e\r
-#define        sc_F5                   0x3f\r
-#define        sc_F6                   0x40\r
-#define        sc_F7                   0x41\r
-#define        sc_F8                   0x42\r
-#define        sc_F9                   0x43\r
-#define        sc_F10                  0x44\r
-#define        sc_F11                  0x57\r
-#define        sc_F12                  0x59\r
-\r
-#define        sc_1                    0x02\r
-#define        sc_2                    0x03\r
-#define        sc_3                    0x04\r
-#define        sc_4                    0x05\r
-#define        sc_5                    0x06\r
-#define        sc_6                    0x07\r
-#define        sc_7                    0x08\r
-#define        sc_8                    0x09\r
-#define        sc_9                    0x0a\r
-#define        sc_0                    0x0b\r
-\r
-#define        sc_A                    0x1e\r
-#define        sc_B                    0x30\r
-#define        sc_C                    0x2e\r
-#define        sc_D                    0x20\r
-#define        sc_E                    0x12\r
-#define        sc_F                    0x21\r
-#define        sc_G                    0x22\r
-#define        sc_H                    0x23\r
-#define        sc_I                    0x17\r
-#define        sc_J                    0x24\r
-#define        sc_K                    0x25\r
-#define        sc_L                    0x26\r
-#define        sc_M                    0x32\r
-#define        sc_N                    0x31\r
-#define        sc_O                    0x18\r
-#define        sc_P                    0x19\r
-#define        sc_Q                    0x10\r
-#define        sc_R                    0x13\r
-#define        sc_S                    0x1f\r
-#define        sc_T                    0x14\r
-#define        sc_U                    0x16\r
-#define        sc_V                    0x2f\r
-#define        sc_W                    0x11\r
-#define        sc_X                    0x2d\r
-#define        sc_Y                    0x15\r
-#define        sc_Z                    0x2c\r
-\r
-#define        key_None                0\r
-#define        key_Return              0x0d\r
-#define        key_Enter               key_Return\r
-#define        key_Escape              0x1b\r
-#define        key_Space               0x20\r
-#define        key_BackSpace   0x08\r
-#define        key_Tab                 0x09\r
-#define        key_Delete              0x7f\r
-\r
-#define        key_LSuper                      0x5b\r
-#define        key_RSuper                      0x5c\r
-#define        key_Menu                        0x5d\r
-\r
-//     Stuff for the mouse\r
-#define        MReset          0\r
-#define        MButtons        3\r
-#define        MDelta          11\r
-\r
-#define        MouseInt        0x33\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_Keyboard,\r
-                                                       ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2,\r
-                                               ctrl_Joystick,\r
-                                                       ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2,\r
-                                               ctrl_Mouse,\r
-                                       } ControlType;\r
-typedef        enum            {\r
-                                               motion_Left = -1,motion_Up = -1,\r
-                                               motion_None = 0,\r
-                                               motion_Right = 1,motion_Down = 1\r
-                                       } Motion;\r
-typedef        enum            {\r
-                                               dir_North,//dir_NorthEast,\r
-                                               dir_West,//dir_Nortinest,\r
-                                               dir_None,\r
-                                               dir_East,//,dir_SouthEast,\r
-                                               dir_South,//dir_Soutinest,\r
-                                       } Direction;\r
-typedef        struct          {\r
-                                               boolean near    button0,button1,button2,button3;\r
-                                               int     near            x,y;\r
-                                               Motion  near    xaxis,yaxis;\r
-                                               Direction near  dir;\r
-                                       } CursorInfo;\r
-\r
-typedef        struct          {\r
-                                               ScanCode near   button0,button1,\r
-                                                                       //upleft,\r
-                                                                       up,\r
-                                                                       down,\r
-                                                                       left,\r
-                                                                       right\r
-                                                                       //upright,\r
-                                                                       //downleft,\r
-                                                                       //,downright\r
-                                                                       ;\r
-                                       } KeyboardDef;\r
-typedef        struct          {\r
-                                               word    near    joyMinX,joyMinY,\r
-                                                                       threshMinX,threshMinY,\r
-                                                                       threshMaxX,threshMaxY,\r
-                                                                       joyMaxX,joyMaxY,\r
-                                                                       joyMultXL,joyMultYL,\r
-                                                                       joyMultXH,joyMultYH;\r
-                                       } JoystickDef;\r
-\r
-typedef        struct\r
-{\r
-       int x; //player exact position on the viewable map\r
-       int y; //player exact position on the viewable map\r
-       int tx; //player tile position on the viewable map\r
-       int ty; //player tile position on the viewable map\r
-       int triggerx; //player's trigger box tile position on the viewable map\r
-       int triggery; //player's trigger box tile position on the viewable map\r
-       int sheetsetx; //NOT USED YET! player sprite sheet set on the image x\r
-       int sheetsety; //NOT USED YET! player sprite sheet set on the image y\r
-       byte d;         //direction to render sprite!! wwww\r
-       byte q;         //loop variable for anumation and locking the playing to compleate the animation cycle to prevent issues with misalignment www\r
-       byte near pdir; //previous direction~\r
-       //byte near kd[2];      //array of arrow key pressed\r
-       word speed;             //player speed!\r
-       word spt;               //speed per tile\r
-//0000 planar_buf_t huge *data; //supposively the sprite sheet data\r
-//     planar_buf_t data; //supposively the sprite sheet data\r
-////0000----\r
-#ifdef __WATCOMC__\r
-       struct sprite   *spri;  //supposively the sprite sheet data\r
-       memptr          gr;\r
-#endif\r
-       bitmap_t *data;         //supposively the sprite sheet data//old format\r
-       sword hp; //hitpoints of the player\r
-       int persist_aniframe;    /* gonna be increased to 1 before being used, so 0 is ok for default */\r
-       CursorInfo      info;\r
-       ControlType     Controls;\r
-} player_t;\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                       GLOBAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-/*extern struct inconfig\r
-{\r
-       boolean                 MousePresent;\r
-       boolean                 JoysPresent[MaxJoys];\r
-       boolean         Keyboard[NumCodes];\r
-       boolean         Paused;\r
-       char            LastASCII;\r
-       ScanCode        LastScan;\r
-\r
-       KeyboardDef     KbdDefs[MaxKbds];\r
-       JoystickDef     JoyDefs[MaxJoys];\r
-} inpu;*/\r
-\r
-#ifdef DEMO0\r
-               static Demo             DemoMode = demo_Off;\r
-               static byte /*_seg*/    *DemoBuffer;\r
-               static word             DemoOffset,DemoSize;\r
-#endif\r
-\r
-//     Internal routines\r
-extern void interrupt INL_KeyService();\r
-extern void Mouse(int x);\r
-//static void INL_GetMouseDelta(int *x,int *y);\r
-//static word INL_GetMouseButtons(void);\r
-extern void IN_GetJoyAbs(word joy,word *xp,word *yp);\r
-//static void INL_GetJoyDelta(word joy,int *dx,int *dy,boolean adaptive);\r
-//static word INL_GetJoyButtons(word joy);\r
-extern word IN_GetJoyButtonsDB(word joy);\r
-//static void INL_StartKbd(void);\r
-//static void INL_ShutKbd(void);\r
-//static boolean INL_StartMouse(void);\r
-//static void INL_ShutMouse(void);\r
-//static void INL_SetJoyScale(word joy);\r
-extern void IN_SetupJoy(word joy,word minx,word maxx,word miny,word maxy);\r
-//static boolean INL_StartJoy(word joy);\r
-//static void INL_ShutJoy(word joy);\r
-extern void IN_Startup();\r
-extern void IN_Default(boolean gotit,player_t *player,ControlType nt);\r
-extern void IN_Shutdown();\r
-extern void IN_SetKeyHook(void (*hook)());\r
-extern void IN_ClearKeysDown();\r
-//static void INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy);\r
-extern void IN_ReadCursor(CursorInfo *info);\r
-extern void near IN_ReadControl(int pn,player_t *player);\r
-extern void IN_SetControlType(word pn,player_t *player,ControlType type);\r
-#if DEMO0\r
-extern boolean IN_StartDemoRecord(word bufsize);\r
-extern void IN_StartDemoPlayback(byte /*__segment*/ *buffer,word bufsize);\r
-extern void IN_StopDemo(void);\r
-extern void IN_FreeDemoBuffer(void);\r
-#endif\r
-extern byte *IN_GetScanName(ScanCode scan);\r
-extern ScanCode IN_WaitForKey();\r
-extern char IN_WaitForASCII();\r
-extern void IN_AckBack();\r
-extern void IN_Ack();\r
-extern boolean IN_IsUserInput();\r
-extern boolean IN_UserInput(dword delay,boolean clear);\r
-extern boolean IN_KeyDown(byte code);\r
-extern void IN_ClearKey(byte code);\r
-extern boolean IN_qb(byte kee);\r
-void IN_initplayer(player_t *player, word pn);\r
-\r
-#endif\r
index 8037bba4c38f750e1599530d77e41ca1f80a6134..e3437c7296b618a363f5452ebf90a8c5cf0558fa 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 8037bba4c38f750e1599530d77e41ca1f80a6134
+Subproject commit e3437c7296b618a363f5452ebf90a8c5cf0558fa
index cb014fd06bf126206eedaa47b6c2b776be4bfeae..06c7fe957142d27bff756850dbeb8e4a30da9369 100755 (executable)
 \r
 void walk(map_view_t *pip, player_t *player, word pn)\r
 {\r
+//                     modexLeave();\r
+//                     IN_Shutdown();\r
+//                     exit(-5);\r
+\r
        #define INC_PER_FRAME if(player[pn].q&1) player[pn].persist_aniframe++; if(player[pn].persist_aniframe>4) player[pn].persist_aniframe = 1;\r
        //printf("player[%d].d=%d\n", pn, player[pn].d);\r
        switch(player[pn].d)\r
index c92469cb0f30ea5fc2429acde1fd99b8b207f144..114cad0f1da08c73362e3139c186d1afa584900e 100755 (executable)
@@ -29,7 +29,7 @@
 //#define FADE\r
 #define MODEX  //this is for mode x initiating\r
 \r
-boolean dbg_noplayerinpu=1;\r
+//boolean dbg_noplayerinpu=1;\r
 \r
 //word far *clock= (word far*) 0x046C; /* 18.2hz clock */\r
 //bitmap_t *p;\r
@@ -42,7 +42,7 @@ float t;
 sword bakapee;\r
 pan_t pan;\r
 //debugswitches\r
-boolean panswitch=1;\r
+boolean panswitch=0;//1\r
 //extern boolean pageflipflop=1;\r
        unsigned int i;\r
        const char *cpus;\r
@@ -65,34 +65,7 @@ void main(int argc, char *argv[])
        if(argv[1]) bakapee = atoi(argv[1]);\r
        else bakapee = 1;\r
 \r
-       // DOSLIB: check our environment\r
-       probe_dos();\r
-\r
-       // DOSLIB: what CPU are we using?\r
-       // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.\r
-       //      So this code by itself shouldn't care too much what CPU it's running on. Except that other\r
-       //      parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for\r
-       //      the CPU to carry out tasks. --J.C.\r
-       cpu_probe();\r
-\r
-       // DOSLIB: check for VGA\r
-       if (!probe_vga()) {\r
-               printf("VGA probe failed\n");\r
-               return;\r
-       }\r
-       // hardware must be VGA or higher!\r
-       if (!(vga_state.vga_flags & VGA_IS_VGA)) {\r
-               printf("This program requires VGA or higher graphics hardware\n");\r
-               return;\r
-       }\r
-\r
-       if (_DEBUG_INIT() == 0) {\r
-#ifdef DEBUGSERIAL\r
-               printf("WARNING: Failed to initialize DEBUG output\n");\r
-#endif\r
-       }\r
-       _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log\r
-       _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U);\r
+       Startup16(&gvar);\r
 \r
        pan.pn=1;\r
 \r
@@ -125,7 +98,7 @@ void main(int argc, char *argv[])
        if(!dbg_noplayerinpu)\r
        {\r
        IN_Startup();\r
-       IN_Default(0,&player,ctrl_Joystick);\r
+       IN_Default(0,&player,ctrl_Keyboard1);\r
        //IN_Default(1,&player,ctrl_Joystick);\r
        }\r
 \r
@@ -184,7 +157,7 @@ void main(int argc, char *argv[])
        //default player position on the viewable map\r
        player[0].tx = mv[0].tx + mv[0].page->tilemidposscreenx;\r
        player[0].ty = mv[0].ty + mv[0].page->tilemidposscreeny;\r
-       IN_initplayer(&player);//, 0);\r
+       IN_initplayer(&player, 0);\r
        //IN_initplayer(&player, 1);\r
 \r
 #ifndef        SPRITE\r
@@ -228,9 +201,9 @@ void main(int argc, char *argv[])
        //when player[0].tx or player[0].ty == 0 or player[0].tx == 20 or player[0].ty == 15 then stop because that is edge of map and you do not want to walk of the map\r
 \r
        //player movement\r
-               IN_ReadControl(/*0,*/&player);\r
+               IN_ReadControl(0, &player);\r
        if(!panswitch){\r
-               walk(mv, player, 0);\r
+               walk(mv, &player, 0);\r
        }else{\r
                panpagemanual(mv, player, 0);\r
                //printf("      player[0].q: %d", player[0].q); printf("        player[0].d: %d\n", player[0].d);\r
index 2760ac0da95d46d8219b6404ab206cf534321767..6ca69aa171500740207d82ab8d016364a5ab5884 100755 (executable)
@@ -64,7 +64,7 @@ main(int argc, char *argv[])
        while(!IN_KeyDown(sc_Escape))\r
        //while(!kbhit())\r
        {\r
-               IN_ReadControl(/*0,*/&player);\r
+               IN_ReadControl(0,&player);\r
                UpdateSoundEngine();\r
        }\r
        StopMusic();\r
index 10f87f6683df713bc9ea5052df767d8dfa53c356..b08fcf7a77a4df14d64da31e538752fc6e781fbc 100755 (executable)
 #include "src/lib/16_dbg.h"\r
 \r
 #define MODEXZ\r
-boolean dbg_noplayerinpu=1;\r
+//boolean dbg_noplayerinpu=1;\r
 \r
 //TODO: known issues the array dependent mv stuff and player arrays\r
 global_game_variables_t gvar;\r
 static map_t map;\r
-player_t *player;\r
-map_view_t *mv;\r
+player_t player[MaxPlayers];\r
+map_view_t mv[4];\r
 float t;\r
 sword bakapee;\r
 pan_t pan;\r
@@ -64,10 +64,9 @@ void main(int argc, char *argv[])
        pan.pn=0;\r
        // OK, this one takes hellova time and needs to be done in farmalloc or MM_...\r
        //TODO: USE MM AND CA AND PM WWWWWWWW\r
-       player = malloc(sizeof(player_t));\r
-       player->ent = malloc(sizeof(entity_t));\r
-       player->ent->spri = malloc(sizeof(struct sprite));\r
-       player->ent->spri->spritesheet = malloc(sizeof(struct vrs_container));\r
+       player[0].ent = malloc(sizeof(entity_t));\r
+       player[0].ent->spri = malloc(sizeof(struct sprite));\r
+       player[0].ent->spri->spritesheet = malloc(sizeof(struct vrs_container));\r
 \r
        // create the map\r
        fprintf(stderr, "testing map load~      ");\r
@@ -78,12 +77,12 @@ void main(int argc, char *argv[])
 \r
        // data\r
        printf("loading sprite\n");\r
-       read_vrs(&gvar, "data/spri/chikyuu.vrs", player->ent->spri->spritesheet); printf("sprite loaded\n");\r
+       read_vrs(&gvar, "data/spri/chikyuu.vrs", player[0].ent->spri->spritesheet); printf("sprite loaded\n");\r
 \r
        //      input!\r
 if(!dbg_noplayerinpu)\r
 {\r
-       IN_Default(0, player,ctrl_Joystick); printf("IN_defaulted\n");\r
+       IN_Default(0, &player,ctrl_Keyboard1); printf("IN_defaulted\n");\r
 }\r
 \r
        // save the palette\r
@@ -112,29 +111,29 @@ if(dbg_noplayerinpu)
 {\r
        //sprintf(&gvar.pee, "press a key for video setup");\r
        strcpy(global_temp_status_text, "press a key for video setup");\r
-       modexprint(mv->page, 0, 64, 1, 7, 0, global_temp_status_text);\r
+       modexprint(mv[0].page, 0, 64, 1, 7, 0, global_temp_status_text);\r
        getch();\r
 }\r
        modexHiganbanaPageSetup(&gvar.video);\r
-       mv->page = &gvar.video.page[0];\r
-       mv->map = &map;\r
-       mv->video = &gvar.video;\r
-       mv->pan = &pan;\r
-       player->ent->spri->x = player->ent->spri->y = 20;\r
+       mv[0].page = &gvar.video.page[0];\r
+       mv[0].map = &map;\r
+       mv[0].video = &gvar.video;\r
+       mv[0].pan       = &pan;\r
+       player[0].ent->spri->x = player[0].ent->spri->y = 20;\r
 \r
        // set up paging\r
        //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen\r
-       mapGoTo(mv, 0, 0);\r
+       mapGoTo(&mv, 0, 0);\r
 #endif\r
 \r
        //TODO: put player in starting position of spot\r
        //default player position on the viewable map\r
-       player->tx = mv->tx + mv->page->tilemidposscreenx;\r
-       player->ty = mv->ty + mv->page->tilemidposscreeny;\r
-       IN_initplayer(player);  printf("player inited\n");\r
+       player[0].tx = mv[0].tx + mv[0].page->tilemidposscreenx;\r
+       player[0].ty = mv[0].ty + mv[0].page->tilemidposscreeny;\r
+       IN_initplayer(&player, 0);      printf("player inited\n");\r
 \r
-       i = set_anim_by_id(player->ent->spri, 11);\r
-       print_anim_ids(player->ent->spri);\r
+       i = set_anim_by_id(player[0].ent->spri, 11);\r
+       print_anim_ids(player[0].ent->spri);\r
        if (i == -1)\r
        {\r
 #ifdef FADE\r
@@ -148,31 +147,32 @@ if(dbg_noplayerinpu)
 #endif\r
        exit(-4);\r
        }\r
-       //animate_spri(&(player->ent->spri));\r
+       //animate_spri(&(player[0].ent->spri));\r
        printf("spri ok\n");\r
 \r
-       modexShowPage(mv->page);//!(gvar.video.p)\r
+       modexShowPage(mv[0].page);//!(gvar.video.p)\r
        shinku_fps_indicator_page = 0; // we're on page 1 now, shinku(). follow along please or it will not be visible.\r
 #ifdef FADE\r
        modexFadeOn(4, gpal);\r
 #endif\r
        printf("LOOP\n");\r
        if(!dbg_noplayerinpu)\r
-       while(!IN_KeyDown(sc_Escape) && player->hp>0)\r
+       while(!IN_KeyDown(sc_Escape) && player[0].hp>0)\r
        {\r
                shinku(&gvar);\r
                //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square\r
                //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction\r
-               //when player->tx or player->ty == 0 or player->tx == 20 or player->ty == 15 then stop because that is edge of map and you do not want to walk of the map\r
+               //when player[0].tx or player[0].ty == 0 or player[0].tx == 20 or player[0].ty == 15 then stop because that is edge of map and you do not want to walk of the map\r
 \r
                //player movement\r
-               IN_ReadControl(player);\r
+               IN_ReadControl(0, &player);\r
                if(!panswitch){\r
-                       walk(player->ent, mv);\r
+                       walk(player[0].ent, mv);\r
+                       //walk(mv, &player, 0);\r
                }\r
 \r
                //the scripting stuff....\r
-/*             if(((mv->map->data[(player->triggerx-1)+(map.width*(player->triggery-1))] == 0) && IN_KeyDown(0x1C))||(player->tx == 5 && player->ty == 5))\r
+/*             if(((mv[0].map->data[(player[0].triggerx-1)+(map.width*(player[0].triggery-1))] == 0) && IN_KeyDown(0x1C))||(player[0].tx == 5 && player[0].ty == 5))\r
                {\r
                        short i;\r
                        for(i=800; i>=400; i--)\r
@@ -181,14 +181,14 @@ if(dbg_noplayerinpu)
                        }\r
                        nosound();\r
                }\r
-               if(player->q == (TILEWH/(player->speed))+1 && player->info.dir != 2 && (player->triggerx == 5 && player->triggery == 5)){ player->hp--; }\r
+               if(player[0].q == (TILEWH/(player[0].speed))+1 && player[0].info.dir != 2 && (player[0].triggerx == 5 && player[0].triggery == 5)){ player[0].hp--; }\r
 */             //debugging binds!\r
-               if(IN_KeyDown(2)){ modexShowPage(mv->page); pan.pn=0; }\r
-               if(IN_KeyDown(25)){ modexpdump(mv->page);\r
+               if(IN_KeyDown(2)){ modexShowPage(mv[0].page); pan.pn=0; }\r
+               if(IN_KeyDown(25)){ modexpdump(mv[0].page);\r
                         IN_UserInput(1,1);\r
                }       //p\r
 #ifdef FADE\r
-               if(IN_KeyDown(24)){ modexPalUpdate0(gpal); paloffset=0; modexpdump(mv->page); IN_UserInput(1,1); }\r
+               if(IN_KeyDown(24)){ modexPalUpdate0(gpal); paloffset=0; modexpdump(mv[0].page); IN_UserInput(1,1); }\r
                if(IN_KeyDown(22)){\r
                        printf("2paloffset      =       %d\n", paloffset/3);\r
                        IN_UserInput(1,1);\r
@@ -209,12 +209,12 @@ if(dbg_noplayerinpu)
                }\r
                if(IN_KeyDown(67))      //f9\r
                {\r
-                       modexClearRegion(mv->page, 0, 0, mv->page->width, mv->page->height, 2);\r
+                       modexClearRegion(mv[0].page, 0, 0, mv[0].page->width, mv[0].page->height, 2);\r
                }\r
                if(IN_KeyDown(66))      //f8\r
                {\r
-       //              modexDrawSprite(mv->page, 16, 16, p);\r
-                       modexDrawSprite(mv->page, 32+48, 16, (player->data));\r
+       //              modexDrawSprite(mv[0].page, 16, 16, p);\r
+                       modexDrawSprite(mv[0].page, 32+48, 16, (player[0].data));\r
                }\r
                //TODO fmemtest into page\r
                /*if(IN_KeyDown(4+1))   //4\r
@@ -229,8 +229,8 @@ if(dbg_noplayerinpu)
                if(IN_KeyDown(10)){ modexPalOverscan(rand()%56); modexPalUpdate1(dpal); IN_UserInput(1,1); }\r
                //if(IN_KeyDown(11)){ modexPalOverscan(15); }\r
 #endif\r
-               if((player->q==1) && !(player->x%TILEWH==0 && player->y%TILEWH==0)) break;      //incase things go out of sync!\r
-               player->hp = 0;\r
+               if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break;        //incase things go out of sync!\r
+               player[0].hp = 0;\r
        }\r
 \r
        else\r
@@ -250,18 +250,18 @@ if(dbg_noplayerinpu)
        Shutdown16(&gvar);\r
        printf("\nProject 16 zcroll.exe. This is just a test file!\n");\r
        printf("version %s\n", VERSION);\r
-       printf("tx: %d  ", mv->tx);\r
-       printf("ty: %d\n", mv->ty);\r
+       printf("tx: %d  ", mv[0].tx);\r
+       printf("ty: %d\n", mv[0].ty);\r
        printf("\n");\r
        printf("player vars:\n");\r
-       printf("        x: %d", player->x); printf("    y: %d\n", player->y);\r
-       //if(player->hp==0) printf("%d wwww\n", player->y+8);\r
-       //else printf("\nplayer->y: %d\n", player->y);\r
-       printf("        tx: %d", player->tx); printf("  ty: %d\n", player->ty);\r
-       printf("        triggx: %d", player->triggerx); printf("        triggy: %d\n", player->triggery);\r
-       printf("        hp: %d", (player->hp)); printf("        q: %d", player->q);     printf("        player.info.dir: %d", player->info.dir);        printf("        player.d: %d ", player->d);\r
-               printf("        pdir=%d\n", player->pdir);\r
-       printf("        tile data value at player trigger position: %d\n\n", mv->map->data[(player->triggerx-1)+(map.width*(player->triggery-1))]);\r
+       printf("        x: %d", player[0].x); printf("  y: %d\n", player[0].y);\r
+       //if(player[0].hp==0) printf("%d wwww\n", player[0].y+8);\r
+       //else printf("\nplayer[0].y: %d\n", player[0].y);\r
+       printf("        tx: %d", player[0].tx); printf("        ty: %d\n", player[0].ty);\r
+       printf("        triggx: %d", player[0].triggerx); printf("      triggy: %d\n", player[0].triggery);\r
+       printf("        hp: %d", (player[0].hp));       printf("        q: %d", player[0].q);   printf("        player.info.dir: %d", player[0].info.dir);      printf("        player.d: %d ", player[0].d);\r
+               printf("        pdir=%d\n", player[0].pdir);\r
+       printf("        tile data value at player trigger position: %d\n\n", mv[0].map->data[(player[0].triggerx-1)+(map.width*(player[0].triggery-1))]);\r
        printf("Virtual Screen: %dx", gvar.video.page[0].width);        printf("%d      ", gvar.video.page[0].height);\r
        printf("Screen: %dx", gvar.video.page[0].sw);   printf("%d\n", gvar.video.page[0].sh);\r
        printf("virtual tile resolution: %dx", gvar.video.page[0].tilesw);      printf("%d      ", gvar.video.page[0].tilesh);\r
@@ -274,7 +274,7 @@ if(dbg_noplayerinpu)
        //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk);\r
        //0000printf("gvar.video.clk=%f", gvar.video.clk);\r
        printf("\n");\r
-       //printf("map.width=%d  map.height=%d   map.data[0]=%d\n", mv->map->width, mv->map->height, mv->map->data[0]);\r
+       //printf("map.width=%d  map.height=%d   map.data[0]=%d\n", mv[0].map->width, mv[0].map->height, mv[0].map->data[0]);\r
 \r
        printf("\n");\r
        switch(detectcpu())\r
index fc489c2c5f4537dd2ef1aeda66015b68eb8b02a2..434bf1a81eaecb8f725b55ee6e474c72a0a7aa27 100755 (executable)
Binary files a/test.exe and b/test.exe differ