]> 4ch.mooo.com Git - 16.git/blobdiff - 16/keen456/KEEN4-6/ID_RF.H
extrcted keen code remake
[16.git] / 16 / keen456 / KEEN4-6 / ID_RF.H
diff --git a/16/keen456/KEEN4-6/ID_RF.H b/16/keen456/KEEN4-6/ID_RF.H
new file mode 100755 (executable)
index 0000000..5648034
--- /dev/null
@@ -0,0 +1,169 @@
+/* Reconstructed Commander Keen 4-6 Source Code\r
+ * Copyright (C) 2021 K1n9_Duk3\r
+ *\r
+ * This file is primarily based on:\r
+ * Catacomb 3-D 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
+// ID_RF.H\r
+\r
+#define __ID_RF__\r
+\r
+#ifndef __ID_MM__\r
+#include "ID_MM.H"\r
+#endif\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                                       CONSTANTS\r
+\r
+=============================================================================\r
+*/\r
+\r
+#define        MINTICS                         2\r
+#define        MAXTICS                         5\r
+#define DEMOTICS                       3\r
+\r
+#define        MAPBORDER                       2               // map border must be at least 1\r
+\r
+#ifdef KEEN5\r
+\r
+#define        MAXSPRITES                      60              // max tracked sprites\r
+#define        MAXANIMTILES            90              // max animating tiles on screen\r
+#define MAXANIMTYPES           80              // max different unique anim tiles on map\r
+\r
+#define        MAXMAPHEIGHT            250\r
+\r
+#else\r
+\r
+#define        MAXSPRITES                      60              // max tracked sprites\r
+#define        MAXANIMTILES            90              // max animating tiles on screen\r
+#define MAXANIMTYPES           65              // max different unique anim tiles on map\r
+\r
+#define        MAXMAPHEIGHT            200\r
+\r
+#endif\r
+\r
+#define        PRIORITIES                      4\r
+#define        MASKEDTILEPRIORITY      3               // planes go: 0,1,2,MTILES,3\r
+\r
+#define TILEGLOBAL                     256\r
+#define PIXGLOBAL                      16\r
+\r
+#define        G_T_SHIFT                       8               // global >> ?? = tile\r
+#define        G_P_SHIFT                       4               // global >> ?? = pixels\r
+#define P_T_SHIFT                      4               // pixels >> ?? = tile\r
+\r
+#define        PORTTILESWIDE           21      // all drawing takes place inside a\r
+#define        PORTTILESHIGH           14              // non displayed port of this size\r
+\r
+//#define      PORTGLOBALWIDE          (21*TILEGLOBAL)\r
+//#define      PORTGLOBALHIGH          (14*TILEGLOBAL)\r
+\r
+#define UPDATEWIDE                     (PORTTILESWIDE+1)\r
+#define UPDATEHIGH                     PORTTILESHIGH\r
+\r
+\r
+//===========================================================================\r
+\r
+typedef enum {spritedraw,maskdraw} drawtype;\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                                PUBLIC VARIABLES\r
+\r
+=============================================================================\r
+*/\r
+\r
+\r
+extern boolean         compatability;                  // crippled refresh for wierdo SVGAs\r
+\r
+extern unsigned        tics;\r
+extern long            lasttimecount;\r
+\r
+extern unsigned        originxglobal,originyglobal;\r
+extern unsigned        originxtile,originytile;\r
+extern unsigned        originxscreen,originyscreen;\r
+\r
+extern unsigned        mapwidth,mapheight,mapbyteswide,mapwordswide\r
+                                       ,mapbytesextra,mapwordsextra;\r
+extern unsigned        mapbwidthtable[MAXMAPHEIGHT];\r
+\r
+extern unsigned        originxmin,originxmax,originymin,originymax;\r
+\r
+extern unsigned        masterofs;\r
+\r
+//\r
+// the floating update window is also used by the view manager for\r
+// double buffer tracking\r
+//\r
+\r
+extern byte            *updateptr;                             // current start of update window\r
+\r
+#if GRMODE == CGAGR\r
+extern byte            *baseupdateptr;\r
+#endif\r
+\r
+extern unsigned        blockstarts[UPDATEWIDE*UPDATEHIGH];\r
+extern unsigned        updatemapofs[UPDATEWIDE*UPDATEHIGH];\r
+extern unsigned        uwidthtable[UPDATEHIGH];                // lookup instead of multiple\r
+\r
+#define        UPDATETERMINATE 0x0301\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                                PUBLIC FUNCTIONS\r
+\r
+=============================================================================\r
+*/\r
+\r
+void RF_Startup (void);\r
+void RF_Shutdown (void);\r
+\r
+void RF_FixOfs (void);\r
+void RF_NewMap (void);\r
+void RF_MarkTileGraphics (void);\r
+void RF_SetScrollBlock (int x, int y, boolean horizontal);\r
+void RF_NewPosition (unsigned x, unsigned y);\r
+void RF_Scroll (int x, int y);\r
+\r
+void RF_MapToMap (unsigned srcx, unsigned srcy,\r
+                                 unsigned destx, unsigned desty,\r
+                                 unsigned width, unsigned height);\r
+void RF_MemToMap (unsigned far *source, unsigned plane,\r
+                                 unsigned destx, unsigned desty,\r
+                                 unsigned width, unsigned height);\r
+\r
+void RF_ClearBlock (int        x, int y, int width, int height);\r
+void RF_RedrawBlock (int x, int y, int width, int height);\r
+\r
+void RF_PlaceSprite (void **user,unsigned globalx,unsigned globaly,\r
+       unsigned spritenumber, drawtype draw, int priority);\r
+void RF_RemoveSprite (void **user);\r
+\r
+void RF_CalcTics (void);\r
+\r
+void RF_Refresh (void);\r
+void RF_ForceRefresh (void);\r
+void RF_SetRefreshHook (void (*func) (void) );\r
+\r
+unsigned RF_FindFreeBuffer (void);\r
+\r