]> 4ch.mooo.com Git - 16.git/blob - 16/keen456/KEEN4-6/ID_RF.H
extrcted keen code remake
[16.git] / 16 / keen456 / KEEN4-6 / ID_RF.H
1 /* Reconstructed Commander Keen 4-6 Source Code\r
2  * Copyright (C) 2021 K1n9_Duk3\r
3  *\r
4  * This file is primarily based on:\r
5  * Catacomb 3-D Source Code\r
6  * Copyright (C) 1993-2014 Flat Rock Software\r
7  *\r
8  * This program is free software; you can redistribute it and/or modify\r
9  * it under the terms of the GNU General Public License as published by\r
10  * the Free Software Foundation; either version 2 of the License, or\r
11  * (at your option) any later version.\r
12  *\r
13  * This program is distributed in the hope that it will be useful,\r
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  * GNU General Public License for more details.\r
17  *\r
18  * You should have received a copy of the GNU General Public License along\r
19  * with this program; if not, write to the Free Software Foundation, Inc.,\r
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
21  */\r
22 \r
23 // ID_RF.H\r
24 \r
25 #define __ID_RF__\r
26 \r
27 #ifndef __ID_MM__\r
28 #include "ID_MM.H"\r
29 #endif\r
30 \r
31 /*\r
32 =============================================================================\r
33 \r
34                                                         CONSTANTS\r
35 \r
36 =============================================================================\r
37 */\r
38 \r
39 #define MINTICS                         2\r
40 #define MAXTICS                         5\r
41 #define DEMOTICS                        3\r
42 \r
43 #define MAPBORDER                       2               // map border must be at least 1\r
44 \r
45 #ifdef KEEN5\r
46 \r
47 #define MAXSPRITES                      60              // max tracked sprites\r
48 #define MAXANIMTILES            90              // max animating tiles on screen\r
49 #define MAXANIMTYPES            80              // max different unique anim tiles on map\r
50 \r
51 #define MAXMAPHEIGHT            250\r
52 \r
53 #else\r
54 \r
55 #define MAXSPRITES                      60              // max tracked sprites\r
56 #define MAXANIMTILES            90              // max animating tiles on screen\r
57 #define MAXANIMTYPES            65              // max different unique anim tiles on map\r
58 \r
59 #define MAXMAPHEIGHT            200\r
60 \r
61 #endif\r
62 \r
63 #define PRIORITIES                      4\r
64 #define MASKEDTILEPRIORITY      3               // planes go: 0,1,2,MTILES,3\r
65 \r
66 #define TILEGLOBAL                      256\r
67 #define PIXGLOBAL                       16\r
68 \r
69 #define G_T_SHIFT                       8               // global >> ?? = tile\r
70 #define G_P_SHIFT                       4               // global >> ?? = pixels\r
71 #define P_T_SHIFT                       4               // pixels >> ?? = tile\r
72 \r
73 #define PORTTILESWIDE           21      // all drawing takes place inside a\r
74 #define PORTTILESHIGH           14              // non displayed port of this size\r
75 \r
76 //#define       PORTGLOBALWIDE          (21*TILEGLOBAL)\r
77 //#define       PORTGLOBALHIGH          (14*TILEGLOBAL)\r
78 \r
79 #define UPDATEWIDE                      (PORTTILESWIDE+1)\r
80 #define UPDATEHIGH                      PORTTILESHIGH\r
81 \r
82 \r
83 //===========================================================================\r
84 \r
85 typedef enum {spritedraw,maskdraw} drawtype;\r
86 \r
87 /*\r
88 =============================================================================\r
89 \r
90                                                  PUBLIC VARIABLES\r
91 \r
92 =============================================================================\r
93 */\r
94 \r
95 \r
96 extern  boolean         compatability;                  // crippled refresh for wierdo SVGAs\r
97 \r
98 extern  unsigned        tics;\r
99 extern  long            lasttimecount;\r
100 \r
101 extern  unsigned        originxglobal,originyglobal;\r
102 extern  unsigned        originxtile,originytile;\r
103 extern  unsigned        originxscreen,originyscreen;\r
104 \r
105 extern  unsigned        mapwidth,mapheight,mapbyteswide,mapwordswide\r
106                                         ,mapbytesextra,mapwordsextra;\r
107 extern  unsigned        mapbwidthtable[MAXMAPHEIGHT];\r
108 \r
109 extern  unsigned        originxmin,originxmax,originymin,originymax;\r
110 \r
111 extern  unsigned        masterofs;\r
112 \r
113 //\r
114 // the floating update window is also used by the view manager for\r
115 // double buffer tracking\r
116 //\r
117 \r
118 extern  byte            *updateptr;                             // current start of update window\r
119 \r
120 #if GRMODE == CGAGR\r
121 extern  byte            *baseupdateptr;\r
122 #endif\r
123 \r
124 extern unsigned blockstarts[UPDATEWIDE*UPDATEHIGH];\r
125 extern unsigned updatemapofs[UPDATEWIDE*UPDATEHIGH];\r
126 extern unsigned uwidthtable[UPDATEHIGH];                // lookup instead of multiple\r
127 \r
128 #define UPDATETERMINATE 0x0301\r
129 \r
130 /*\r
131 =============================================================================\r
132 \r
133                                                  PUBLIC FUNCTIONS\r
134 \r
135 =============================================================================\r
136 */\r
137 \r
138 void RF_Startup (void);\r
139 void RF_Shutdown (void);\r
140 \r
141 void RF_FixOfs (void);\r
142 void RF_NewMap (void);\r
143 void RF_MarkTileGraphics (void);\r
144 void RF_SetScrollBlock (int x, int y, boolean horizontal);\r
145 void RF_NewPosition (unsigned x, unsigned y);\r
146 void RF_Scroll (int x, int y);\r
147 \r
148 void RF_MapToMap (unsigned srcx, unsigned srcy,\r
149                                   unsigned destx, unsigned desty,\r
150                                   unsigned width, unsigned height);\r
151 void RF_MemToMap (unsigned far *source, unsigned plane,\r
152                                   unsigned destx, unsigned desty,\r
153                                   unsigned width, unsigned height);\r
154 \r
155 void RF_ClearBlock (int x, int y, int width, int height);\r
156 void RF_RedrawBlock (int x, int y, int width, int height);\r
157 \r
158 void RF_PlaceSprite (void **user,unsigned globalx,unsigned globaly,\r
159         unsigned spritenumber, drawtype draw, int priority);\r
160 void RF_RemoveSprite (void **user);\r
161 \r
162 void RF_CalcTics (void);\r
163 \r
164 void RF_Refresh (void);\r
165 void RF_ForceRefresh (void);\r
166 void RF_SetRefreshHook (void (*func) (void) );\r
167 \r
168 unsigned RF_FindFreeBuffer (void);\r
169 \r