OSDN Git Service

updated copyright. i am not dead just busy. i am working more on wolfenstien 3d and...
[proj16/16.git] / src / lib / 16_dbg.c
index 576f492..0c860ad 100755 (executable)
@@ -1,3 +1,25 @@
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2020 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 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 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 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\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
+\r
 #include "src/lib/16_dbg.h"\r
 \r
 #ifdef __DEBUG__\r
@@ -11,88 +33,21 @@ boolean dbg_debugpm=0;
 boolean dbg_debugca=0;\r
 #endif\r
 #ifdef __DEBUG_InputMgr__\r
-boolean dbg_testkeyin=0,dbg_testcontrolnoisy=0,dbg_nointest=0;\r
+boolean dbg_testkeyin=0,dbg_testcontrolnoisy=0,dbg_nointest=0,dbg_joymousedelta=0;\r
 #endif\r
 #ifdef __DEBUG_MAP__\r
 boolean dbg_maptext=0;\r
 byte *dbg_mapdata;\r
 #endif\r
+#ifdef __DEBUG_RF__\r
+boolean dbg_pagenorendermap=0,dbg_pagedelayrendermap=0;\r
+#endif\r
+#ifdef __DEBUG_SPRI__\r
+boolean dbg_delayanimation=0;\r
+#endif\r
 #endif //debug\r
 \r
-#ifdef __WATCOMC__\r
-// TODO: Could we also provide a build mode to emit debug to the "Bochs E9 hack?"\r
-#ifdef DEBUGSERIAL\r
-# include <stdarg.h>\r
-# include <stdlib.h>\r
-# include <stdio.h>\r
-\r
-unsigned char _DEBUG_INITed = 0;\r
-struct info_8250 *_DEBUG_uart = NULL;\r
-\r
-int _DEBUG_INIT() {\r
-       if (!_DEBUG_INITed) {\r
-               unsigned int i;\r
-               uint16_t port;\r
-\r
-               if (!init_8250()) return 0;\r
-\r
-               // what does the BIOS say the serial ports are?\r
-               probe_8250_bios_ports();\r
-               for (i=0;i < bios_8250_ports;i++) {\r
-                       port = get_8250_bios_port(i);\r
-                       if (port == 0) continue;\r
-                       probe_8250(port);\r
-               }\r
-\r
-               // what about the standard serial ports?\r
-               for (i=0;i < (sizeof(standard_8250_ports)/sizeof(standard_8250_ports[0]));i++) {\r
-                       port = standard_8250_ports[i];\r
-                       if (port == 0) continue;\r
-                       probe_8250(port);\r
-               }\r
-\r
-               // pick the first port, which is probably COM1\r
-               if (base_8250_ports == 0) return 0; // FIXME: You know "base_8250_ports" is probably a bad variable name for the max entries in info_8250_port[]\r
-               _DEBUG_uart = &info_8250_port[0];\r
-               _DEBUG_INITed = 1;\r
-\r
-               // init the COM port.\r
-               // in DOSBox-X, the "log" mode will receive our text and print it into the log file\r
-               // on real hardware, our text will likely go over a null modem cable to another PC running a serial terminal program like PuTTY or minicom.\r
-               // if nothing is connected, then the bytes go off into the ether to get lost and life goes on.\r
-               uart_8250_enable_interrupt(_DEBUG_uart,0);      // disable interrupts\r
-               uart_8250_set_FIFO(_DEBUG_uart,0x07);           // enable FIFO (why not?), also clear xmit/recv FIFO buffers, set threshhold to 1 byte\r
-               uart_8250_set_MCR(_DEBUG_uart,3);               // RTS and DTS on\r
-               uart_8250_set_line_control(_DEBUG_uart,UART_8250_LCR_8BIT | UART_8250_LCR_PARITY); // 8 bit 1 stop bit odd parity\r
-               uart_8250_set_baudrate(_DEBUG_uart,uart_8250_baud_to_divisor(_DEBUG_uart,9600)); // 9600 baud\r
-       }\r
-\r
-       return _DEBUG_INITed;\r
-}\r
-\r
-void _DEBUG(const char *msg) {\r
-       if (_DEBUG_uart != NULL) {\r
-               char c;\r
 \r
-               while ((c=(*msg++)) != 0/*NUL*/) {\r
-                       while (!uart_8250_can_write(_DEBUG_uart)); // wait for the UART to indicate readiness for our output\r
-                       uart_8250_write(_DEBUG_uart,(uint8_t)c); // then write it\r
-               }\r
-       }\r
-}\r
-\r
-static char _DEBUGF_TMP[256];\r
-\r
-void _DEBUGF(const char *fmt,...) {\r
-       va_list va;\r
-\r
-       va_start(va,fmt);\r
-       vsnprintf(_DEBUGF_TMP,sizeof(_DEBUGF_TMP),fmt,va);\r
-       _DEBUG(_DEBUGF_TMP);\r
-       va_end(va);\r
-}\r
-#endif //serial\r
-#endif //watcomc\r
 /*\r
 ================\r
 =\r
@@ -102,7 +57,7 @@ void _DEBUGF(const char *fmt,...) {
 */\r
 \r
 #pragma warn -pia\r
-void ShapeTest (global_game_variables_t *gvar)\r
+void ShapeTest_(global_game_variables_t *gvar)\r
 {\r
 extern word    NumDigi;\r
 extern word    _seg *DigiList;\r
@@ -126,9 +81,9 @@ static       char    buf[10];
 //             US_Print(" Page #");\r
 //             US_PrintUnsigned(i);\r
                printf(" Page #%u", i);\r
-               if (i < (gvar->pm.fi.PMSpriteStart))\r
+//++           if (i < (gvar->pm.fi.PMSpriteStart))\r
 //                     US_Print(" (Wall)");\r
-                       printf(" (Wall)");\r
+//++                   printf(" (Wall)");\r
 /*             else if (i < (gvar->pm.fi.PMSoundStart))\r
 //                     US_Print(" (Sprite)");\r
                        printf(" (Sprite)");\r
@@ -256,8 +211,8 @@ static      char    buf[10];
 \r
 //             VW_UpdateScreen();\r
 \r
-//             while (!(scan = IN_GetLastScan()))\r
-                       scan = *IN_GetScanName(scan);\r
+               while (!(scan = gvar->in.inst->LastScan))\r
+               {}\r
 //                     SD_Poll();\r
 \r
                IN_ClearKey(scan);\r
@@ -302,3 +257,157 @@ static    char    buf[10];
        //SD_StopDigitized();\r
 }\r
 #pragma warn +pia\r
+\r
+#ifdef __WATCOMC__\r
+#ifdef __DEBUG_VL__\r
+\r
+//===========================================================================\r
+\r
+/*\r
+================\r
+=\r
+= ShowPalVarSync\r
+=\r
+================\r
+*/\r
+\r
+//#define SHOWPALVARIMODQUAD   ((spv.i)%QUADWH)\r
+#define SHOWPALVARIMOD                 ((spv.i)%TILEWH)\r
+#define SHOWPALVARIDIV                 ((spv.i)/TILEWH)\r
+#define SHOWPALVARIMODIFCOND   if((!SHOWPALVARIMOD) && spv.i)\r
+#define SHOWPALVARIDIVIFCOND           if((!SHOWPALVARIDIV) && spv.i)\r
+//<PAL_SIZE/3 && spv.i)\r
+#define SHOWPALVARPALSIZELIMIT 255\r
+\r
+spv_t ShowPalVarSync (spv_t *spv)\r
+{\r
+       spv_t           result;\r
+       result = *spv;\r
+\r
+//     if(result.paly<result.palq+TILEWH*8) result.paly+=result.mult;\r
+//     if(result.palx<result.palq+TILEWH*12) result.palx+=result.mult;\r
+//     modexClearRegion(&gvar->video.page[0], result.palx+TILEWH, result.paly+TILEWH, result.mult, result.mult, result.i);\r
+       return result;\r
+}\r
+\r
+/*\r
+================\r
+=\r
+= ShowPalVal\r
+=\r
+================\r
+*/\r
+\r
+void ShowPalVal (global_game_variables_t *gvar)\r
+{\r
+       boolean                 done                            ,err;\r
+       ScanCode                scan;\r
+       spv_t                   spv;\r
+       word ccolor = 3, xpos = gvar->video.page[0].dx, ypos = gvar->video.page[0].dy;\r
+\r
+       spv.mult=(QUADWH);\r
+       spv.palq=(spv.mult)*TILEWH;\r
+       spv.i = 0;\r
+\r
+//     IN_UserInput(1, gvar);\r
+       modexpdump(0, gvar);\r
+\r
+       for (spv.oi = 1,done = false;!done;)\r
+       {\r
+               SHOWPALVARIMODIFCOND\r
+               {\r
+                       if(err) printf("SHOWPALVARIMODIFCOND\n");\r
+                       if(spv.i==SHOWPALVARPALSIZELIMIT) spv.paly=(TILEWH*8)+spv.mult*SHOWPALVARIDIV;\r
+                       spv.palx=(TILEWH*12);\r
+               }else   spv.palx=(TILEWH*12)+spv.mult*SHOWPALVARIMOD;\r
+               if(spv.i<SHOWPALVARPALSIZELIMIT) SHOWPALVARIDIVIFCOND\r
+               {\r
+                       if(err) printf("SHOWPALVARIDIVIFCOND\n");\r
+                       spv.paly=(TILEWH*8);\r
+               }else   spv.paly=(TILEWH*8)+spv.mult*SHOWPALVARIDIV;\r
+\r
+               if((spv.palx<TILEWH*12 || spv.paly<TILEWH*8) && spv.i) err=true;\r
+               else err = false;\r
+               if(err){ printf("ERR    "); printf("%ux%u       %u\n", spv.palx, spv.paly, spv.i); }\r
+\r
+               if(spv.oi!=spv.i)\r
+               {\r
+                       modexpdump(0, gvar);\r
+                       modexClearRegion(&gvar->video.page[0], spv.palx+TILEWH, spv.paly+TILEWH, spv.mult, spv.mult, 5);\r
+                       modexClearRegion(&gvar->video.page[0], spv.palx+TILEWH+1, spv.paly+TILEWH+1, spv.mult-2, spv.mult-2, spv.i);\r
+                       spv.oi = spv.i;\r
+               }\r
+\r
+#define SHOWPALVARPRINT modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 1, ccolor, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8;\r
+               sprintf(global_temp_status_text, "%03u", spv.i); SHOWPALVARPRINT\r
+               sprintf(global_temp_status_text, "r %03u", gvar->video.palette[(spv.i*3)+0]/*>>2*/); SHOWPALVARPRINT\r
+               sprintf(global_temp_status_text, "g %03u", gvar->video.palette[(spv.i*3)+1]/*>>2*/); SHOWPALVARPRINT\r
+               sprintf(global_temp_status_text, "b %03u", gvar->video.palette[(spv.i*3)+2]/*>>2*/); SHOWPALVARPRINT\r
+               xpos = gvar->video.page[0].dx; ypos = gvar->video.page[0].dy;\r
+\r
+               while (!(scan = gvar->in.inst->LastScan))\r
+               {}\r
+\r
+               IN_ClearKey(scan);\r
+               switch (scan)\r
+               {\r
+               case sc_LeftArrow:\r
+                       if (spv.i > 0)\r
+                       {\r
+                               spv.i--;\r
+                       }\r
+                       else\r
+                       {\r
+                               spv.palx=gvar->video.page[0].sw-spv.mult;\r
+                               spv.paly=gvar->video.page[0].sh-spv.mult;\r
+                               spv.i = SHOWPALVARPALSIZELIMIT;\r
+                       }\r
+               break;\r
+               case sc_RightArrow:\r
+                       if (spv.i < SHOWPALVARPALSIZELIMIT)\r
+                       {\r
+                               spv.i++;\r
+                       }\r
+                               else\r
+                       {\r
+                               spv.palx=TILEWH*12;\r
+                               spv.paly=TILEWH*8;\r
+                               spv.i = 0;\r
+                       }\r
+               break;\r
+               case sc_UpArrow:\r
+                       if (spv.i > 0)\r
+                       {\r
+                               spv.i-=16;\r
+                       }\r
+                       else\r
+                       {\r
+                               spv.palx=gvar->video.page[0].sw-spv.mult;\r
+                               spv.paly=gvar->video.page[0].sh-spv.mult;\r
+                               spv.i = SHOWPALVARPALSIZELIMIT;\r
+                       }\r
+               break;\r
+               case sc_DownArrow:\r
+                       if (spv.i < SHOWPALVARPALSIZELIMIT)\r
+                       {\r
+                               spv.i+=16;\r
+                       }\r
+                               else\r
+                       {\r
+                               spv.palx=TILEWH*12;\r
+                               spv.paly=TILEWH*8;\r
+                               spv.i = 0;\r
+                       }\r
+               break;\r
+               case sc_W:      // Walls\r
+                       spv.i = 0;\r
+                       break;\r
+               case sc_Escape:\r
+                       done = true;\r
+                       break;\r
+               }\r
+       }\r
+//     IN_UserInput(1, gvar);\r
+}\r
+#endif //debug vl\r
+#endif //watcomc\r